学习做学生管理系统——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);
				}
			}
		});
	}
}

其他功能有需要的可以自己模仿格式自己写的,大致的成品就是这样,如果学了网络的功能,可以稍加修改后继续使用,终章就这样结束了

发布了14 篇原创文章 · 获赞 42 · 访问量 5889

猜你喜欢

转载自blog.csdn.net/qq_42451456/article/details/100096982
今日推荐