學習做學生管理系統——java swing+Mysql 第四章 終章(主功能的實現)

上一章內容:
學習做學生管理系統——java swing+Mysql 第三章(註冊功能+優化代碼)

這一章是終章,主要進行管理系統的主功能的實現。

本章只講解:表格讀取數據庫,添加和刪除。
看完這章,其他的功能基本可以相應的自己進行添加

先說從上一章過來的教學
當你做好登錄界面後,怎麼實現登錄後進入管理界面。
dispose是用於關閉窗口的(登陸成功就可以關掉登錄界面)
例子代碼:

JFrame jf=new JFrame
Manage ma=new Manage();//新開一個manage類用於存放管理界面的運行代碼,並引入到登錄界面的類中
jf.dispose();//關閉登錄界面,放到你覺得你需要的位置
ma.run();//緊跟關閉代碼,界面關閉,就運行manage類的管理界面

接下來就是構建管理界面
我們新建一個類,我這裏用manage類
正常程序,構建界面

public static void run() {
		JFrame jf=new JFrame("學生管理系統");
		jf.setSize(900, 700);
		JPanel jp=new JPanel();//製作界面
		jf.add(jp);
		JButton add = new JButton("增加");
		JButton del = new JButton("刪除");
		jp.add(add);
		jp.add(del);
		Mysql sql=new Mysql();//存放數據庫帳號密碼信息的類

第一步:表格讀取數據庫

在這裏我們需要的是一個動態表格,可以隨着數據的增加而變化行數的。
在構建表格時候,還要設定好這個表格跟數據庫表的表字段名是一樣的。

假設我們新建了一個學生信息表,有兩個信息一個是id一個是名字
在這裏插入圖片描述
在代碼中,我們先定義表格需要的行和列

//rowData用來存放行數據
//columnNames存放列名
static Vector rowData;
static Vector columnNames;

定義後,我們再在run()函數中緊跟界面代碼後面添加列名,對應表的設置來創建
Vector不懂的,可以相應的百度

columnNames=new Vector();
columnNames.add("學號");
columnNames.add("姓名");
rowData = new Vector();

設置完後,給這個行列上點色,在這裏如果是隻讀取固定表的就可以按照我的代碼來上色,如果是想執行先選擇表再讀取,就不能按照我的代碼,則需要先寫讀取功能再將讀取的數據代入讀取功能中
讀取功能(就是一個簡單的連接數據庫讀取表格)

		Connection ct=null;
		PreparedStatement ps=null;
		try {
			Class.forName(sql.JDBC_DRIVER);
			ct=DriverManager.getConnection(sql.DB_URL,sql.USER,sql.PASS);					
			ps=ct.prepareStatement("select * from studentmanage.student");	//有讀取功能需要的可以在這個選擇語句上進行修改				
			ResultSet rs=ps.executeQuery();
			while(rs.next()){
				//rowData可以存放多行
				Vector hang=new Vector();
				for(int i=1;i<3;i++)
					hang.add(rs.getString(i));	
				//加入到rowData
				rowData.add(hang);
			}
		} catch (Exception e1) {
			e1.printStackTrace();
			System.exit(0);
		}

做到這一步就是給行和列安排好讀取的數據了,接下來就是將他呈現在管理界面上面

//初始化Jtable
JTable jt = new JTable(rowData,columnNames);//表格創建
DefaultTableModel tableModel = (DefaultTableModel) jt.getModel();//設置默認表格模版
//初始化 jsp
JScrollPane jsp = new JScrollPane(jt);//設置滾動面板
jp.add(jsp);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

代碼正確就會是這樣的
在這裏插入圖片描述
如果你關掉運行的程序,出現如下提示
在這裏插入圖片描述
這個沒有事,不影響運行,只是會可能影響到你的一些代碼的提示而已。想解決的可以百度一下,我是放着沒管。

表格和按鈕這些的位置,我是沒有進行修改的,如有需要可以自己進行佈局修改。

第二步:添加和刪除
直接上代碼

		add.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				tableModel.addRow(new Vector());//增加
			}
		});
		del.addActionListener(new ActionListener(){	 
			@Override
			public void actionPerformed(ActionEvent arg0) {
				// 刪除指定行
				int rowcount = jt.getSelectedRow();
				if(rowcount >= 0){
					tableModel.removeRow(rowcount);
				}
			}
		});

很容易明白的功能代碼了。

結尾
上個完整的代碼


import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;


public class Manage {
	//rowData用來存放行數據
	//columnNames存放列名
	static Vector rowData;
	static Vector columnNames;
	public static void run() {
		JFrame jf=new JFrame("學生管理系統");
		jf.setSize(900, 700);
		JPanel jp=new JPanel();//製作界面
		jf.add(jp);
		JButton add = new JButton("增加");
		JButton del = new JButton("刪除");
		jp.add(add);
		jp.add(del);
		Mysql sql=new Mysql();
		columnNames=new Vector();
		columnNames.add("學號");
		columnNames.add("姓名");
		rowData = new Vector();
		Connection ct=null;
		PreparedStatement ps=null;
		try {
			Class.forName(sql.JDBC_DRIVER);
			ct=DriverManager.getConnection(sql.DB_URL,sql.USER,sql.PASS);					
			ps=ct.prepareStatement("select * from studentmanage.student");					
			ResultSet rs=ps.executeQuery();
			while(rs.next()){
				//rowData可以存放多行
				Vector hang=new Vector();
				for(int i=1;i<3;i++)
					hang.add(rs.getString(i));	
				//加入到rowData
				rowData.add(hang);
			}
		} catch (Exception e1) {
			e1.printStackTrace();
			System.exit(0);
		}
		//初始化Jtable
		JTable jt = new JTable(rowData,columnNames);
		DefaultTableModel tableModel = (DefaultTableModel) jt.getModel();
		//初始化 jsp
		JScrollPane jsp = new JScrollPane(jt);
		jp.add(jsp);
		jf.setVisible(true);
		jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		add.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				tableModel.addRow(new Vector());//增加
			}
		});
		del.addActionListener(new ActionListener(){	 
			@Override
			public void actionPerformed(ActionEvent arg0) {
				// 刪除指定行
				int rowcount = jt.getSelectedRow();
				if(rowcount >= 0){
					tableModel.removeRow(rowcount);
				}
			}
		});
	}
}

其他功能有需要的可以自己模仿格式自己寫的,大致的成品就是這樣,如果學了網絡的功能,可以稍加修改後繼續使用,終章就這樣結束了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章