项目四 学生信息管理系统(团队项目)
1录入学生基本信息的功能;
2查询学生基本信息的功能;
3修改学生基本信息的功能;
4删除学生基本信息的功能;
5显示所有学生信息的功能。
项目总体框架
建立数据库->建立GUI->写事件监听
(1)数据库:为了增强系统的可移植性及数据的安全性,系统采用部署于腾讯云服务器上的MySQL数据库存储数据。
(2)后端:链接数据可,写事件监听来实现数据的增删改查等功能。
(3)前端;采用JavaSwing绘制GUI界面
数据库设计
GUI设计(举例(使用JAVAswing))
登录界面
初始账号密码为admin
给两个按钮(登录和重置)添加监听器,重写函数(举例)
dl.addActionListener(new ActionListener() {//登录
@Override
public void actionPerformed(ActionEvent e) {
userid = unField.getText();
password = pwField.getText();
if(userid.equals("admin")&&password.equals("admin")) {
self.setVisible(false);
// JOptionPane.showMessageDialog(null, "登录成功", "登录情况",JOptionPane.PLAIN_MESSAGE);
new StuManager();
} else {
JOptionPane.showMessageDialog(null, "账号或密码错误!", "登录情况",JOptionPane.PLAIN_MESSAGE);
}
}
});
d2.addActionListener(new ActionListener() {//重置
@Override
public void actionPerformed(ActionEvent e) {
unField.setText("");
pwField.setText("");
}
});
主界面
sql设计(监听的重写)
查询记录:
public void actionPerformed(ActionEvent arg0) {
//判断是哪个按钮被点击
if(arg0.getSource() == jb1){
System.out.println("用户希望被查询...");
int index = searchType.getSelectedIndex();
String sql = new String();
if(index == 0){
sql = "select * from stu ";
}
else if(index == 1){
//因为把对表的数据封装到StuModel中,可以比较简单的完成查询
String Id =this.jtf1.getText().trim();
//写一个sql语句
sql = "select * from stu where stuId = '"+Id+"' ";
}
else if(index == 2){
String name =this.jtf1.getText().trim();
sql = "select * from stu where stuName = '"+name+"' ";
}
else if(index == 3){
String sex =this.jtf1.getText().trim();
sql = "select * from stu where stuSex = '"+sex+"' ";
}
else if(index == 4){
String age =this.jtf1.getText().trim();
sql = "select * from stu where stuAge = '"+age+"' ";
}
else if(index ==5){
String jg =this.jtf1.getText().trim();
sql = "select * from stu where stuJG= '"+jg+"' ";
}
else if(index ==6){
String bj =this.jtf1.getText().trim();
sql = "select * from stu where stuBJ= '"+bj+"' ";
}
//构建一个数据模型类,并更新
sm = new StuModel(sql);
strRS=String.valueOf(sm.getRowCount());
jtf2.setText(strRS);
//更新jtable
jt.setModel(sm);
}
添加记录:
数据库也会同步更新数据
//一、弹出添加界面
else if(arg0.getSource() == jb2){
System.out.println("添加...");
StuAddDiag sa = new StuAddDiag(this,"添加学生",true);
//重新再获得新的数据模型,
sm = new StuModel();
strRS=String.valueOf(sm.getRowCount());
jtf2.setText(strRS);
jt.setModel(sm);
}else if(arg0.getSource() == jb4){
删除记录(类似添加记录):
//1.得到学生的ID
int rowNum = this.jt.getSelectedRow();//getSelectedRow会返回给用户点中的行
//如果该用户一行都没有选,就返回-1
if(rowNum == -1){
//提示
JOptionPane.showMessageDialog(this, "请选中一行");
return ;
}
//得到学术ID
String stuId = (String)sm.getValueAt(rowNum, 0);
//连接数据库,完成删除任务
try{
//1.加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//2.连接数据库
String url = "jdbc:mysql://localhost:3306/student";
String user = "root";
String passwd = "111111";
ct = DriverManager.getConnection(url, user, passwd);
// System.out.println("连接成功");
ps = ct.prepareStatement("delete from stu where stuId = ?");
ps.setString(1,stuId);
ps.executeUpdate();
JOptionPane.showMessageDialog(null, "删除成功", "删除情况",JOptionPane.PLAIN_MESSAGE);
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if(rs!= null){
rs.close();
rs = null;
}
if(ps!= null){
ps.close();
ps = null;
}
if(ct != null){
ct.close();
ct = null;
}
} catch(Exception e){
e.printStackTrace();
}
}
sm = new StuModel();
strRS=String.valueOf(sm.getRowCount());
jtf2.setText(strRS);
//更新jtable
jt.setModel(sm);
}else if(arg0.getSource() == jb3){
// System.out.println("11111");
修改记录:
//三、用户希望修改
int rowNum = this.jt.getSelectedRow();
if(rowNum == -1){
//提示
JOptionPane.showMessageDialog(this, "请选择一行");
return ;
}
//显示对话框
// System.out.println( "12435");
StuUpDiag su = new StuUpDiag(this, "修改学生信息", true, sm, rowNum);
sm = new StuModel();
jt.setModel(sm);
}
}
项目实现及结果分析
用户注册及登录
测试数据:用户名:admin;密码:admin
数据库中数据更新:
查询数据
输入框为空,即默认查询所有学生数据
输入学生学号,进精准查询(原因是学号是主键)
添加学生信息
测试数据:
学号110 名字警察叔叔 性别 男 年龄 30籍贯china 联系方式110 班级暂无
商品表中数据更新:
修改信息
测试数据:
学号110 名字警察叔叔 性别 男 年龄 30籍贯china 联系方式110 班级暂无
学生表中数据更新:
删除信息
测试数据:
学号110 名字警察叔叔 性别 男 年龄 18籍贯china 联系方式110 班级暂无
学生表中数据更新,已无此信息:
实验总结
(1)通过sql语言,实现数据信息的增删改查功能。利用高级语言设计良好的的用户界面,实现通过用户界面操作数据库中信息。
(2)本项目利用MySQL、JAVA等实现了基本的数据增删改查功能,但有些功能模块还会出现bug,需要优化缓存。
(3)我负责搭建数据库和编写后端代码,过程中遇到了非常多的难题和BUG,通过我和我们小组成员不断的努力后,终于完成了学生管理系统的搭建。