目录
项目地址:https://download.csdn.net/download/mini_malism_/88761590?spm=1001.2014.3001.5503
运行环境
编译器: Intellij IDEA + JDK 17
数据库:DataGrip + MySQL
功能介绍
(1) 学生信息管理: 学生的个人信息(如姓名、性别、出生日期、联系方式等)
(2) 学籍档案管理:用于管理学生的学籍档案,包括学生的学历层次、专业、入学方式、学籍变动等信息。
(3) 信息查询和统计分析:提供各种查询功能,方便教师、家长和学校管理人员查看学生的相关信息;同时能够进行数据的统计和分析,为学校决策提供参考。
数据库设计与实现
这个实验使用了JDBC和MySQL来实现学生学籍管理系统,并且使用Java Swing来创建图形界面。在初始化过程中,我们通过调用DriverManager类的静态函数getConnection来获取数据库连接。然后,我们使用连接对象的createStatement()函数来获取表达式对象,通过表达式对象的executeQuery()函数来执行查询操作,并将结果存储在ResultSet类的对象中。这样,我们就能够方便地处理和展示学生学籍管理系统的数据。
数据库表定义
create table student
(
number varchar(20) null comment '学号',
name varchar(20) null comment '姓名',
sex varchar(20) null comment '性别',
school varchar(20) null comment '学院',
major varchar(20) null comment '专业',
class varchar(20) null comment '班级'
);
在该数据库中学生学号为主键!!!
项目整体结构
页面UI设计
本项目实现Java swing图形库创建图形化界面,采用卡片式布局(Card Layout)将所有操作均封装于操作菜单中,通过点击操作菜单中的不同选项可跳转至不同的页面实现不同的功能。
代码如下图所示:
public void init() {
//设置窗口的各个属性
this.setBounds(450,200,750,550);//设置窗口初始位置以及大小
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置窗口的关闭模式,关闭窗口时程序结束
this.setResizable(false);//设置窗口不能被调整大小
JLabel lblTitle=new JLabel("欢迎使用学籍管理系统",JLabel.CENTER);
lblTitle.setFont(new Font("宋体",Font.ITALIC,30));
//添加各容器在卡片中
pnlMain.add(lblTitle,"first");
pnlMain.add(pnlstuenter,"second");
pnlMain.add(pnlstuupdate,"third");
pnlMain.add(pnlfindstu,"fourth");
pnlMain.add(pnldelstu,"fifth");
this.add(pnlMain,BorderLayout.CENTER);
this.setVisible(true);//设置窗口可见
}
根据面向对象思想,将每个菜单页封装为不同的对象,加入至卡片布局中。
数据库的连接
需先导入MySQL的JDBC依赖库,这个库可以很方便下载到,下载后导入到ideal工程中;
如图所示:
导入jar包成功后定义MySQL类,作为SQL操作的工具类,构造函数定义如下:
Connection con;
Statement stmt;
ResultSet rs;
String sql;
String URL="jdbc:mysql://localhost:3306/java";
String USER="root";
String password="ai2004131";
public Connection getCon() {
return con;
}
public DBConnection() {
try {
//1,加载驱动器类
Class.forName("com.mysql.cj.jdbc.Driver");
//2.获得数据库的连接对象
con=DriverManager.getConnection(URL,USER,password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
利用SQL进行查询操作
我们可以构造一个字符串类型的SQL语句,然后使用MySQL类的select函数来执行该语句。执行结果会被保存在一个ResultSet对象中,我们可以通过该对象的getString("列名")方法来获取指定列的值。这样,我们就能够方便地查询数据库并且获得所需的数据。(学号为主键)
public ResultSet findByNumber(String number){//通过学号查找学生信息
if(con!=null){
try {
stmt=con.createStatement();
sql="select * from student where number='"+number+"'";
rs=stmt.executeQuery(sql);
if(rs.next()){
return rs;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
return null;
}
利用SQL进行删除操作
public boolean deleteByNum (String num) {// 通过学号删除学生信息
sql="DELETE FROM student WHERE number='"+num+"'";
try {
stmt=con.createStatement();
if(stmt.executeUpdate(sql)>0)
return true;
else
return false;
} catch (SQLException e) {
e.printStackTrace();
}
return false;
}
这段代码是一个用于通过学号删除学生信息的方法。具体解释如下:
-
方法名:deleteByNum,表示按照学号进行删除操作。
-
参数:String类型的num,表示要删除的学生的学号。
-
SQL语句:使用DELETE FROM语句,从名为"student"的表中删除学号为给定num值的记录。构造的SQL语句为"DELETE FROM student WHERE number='学号值'"。
-
执行SQL语句:通过调用con.createStatement()方法创建Statement对象stmt,然后使用stmt.executeUpdate(sql)执行SQL语句。
-
执行结果判断:如果执行结果大于0,则表示删除成功,返回true;否则,返回false。
-
异常处理:捕获SQLException异常并打印异常信息。
-
默认返回false:如果在try块中的代码发生异常或执行结果不大于0,则默认返回false。
总的来说,这段代码的作用是在数据库的"student"表中根据给定的学号删除相应的学生信息,并返回操作是否成功的布尔值。
利用SQL语句显示所有学生信息
public ResultSet findAll() {//查询所有记录
sql="select*from student";
try {//3.利用连接对象,获得statement语句对象
stmt=con.createStatement();
//4.执行crud(增删改查)
rs=stmt.executeQuery(sql);
String [] sb;
return rs;
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
这段代码是一个用于查询数据库中所有记录的方法。具体解释如下:
-
方法名:findAll,表示查询所有记录。
-
SQL语句:使用SELECT * FROM语句,从名为"student"的表中查询所有记录。构造的SQL语句为"SELECT * FROM student"。
-
执行SQL语句:通过调用con.createStatement()方法创建Statement对象stmt,然后使用stmt.executeQuery(sql)执行SQL查询语句。
-
执行结果保存:将查询结果保存在ResultSet对象rs中。
-
返回结果:返回ResultSet对象rs,以便在调用该方法的地方进行进一步处理和使用。
-
异常处理:捕获SQLException异常并打印异常信息。
-
默认返回null:如果在try块中的代码发生异常,则默认返回null。
总的来说,这段代码的作用是在数据库的"student"表中查询所有的记录,并将结果保存在ResultSet对象中返回,以便在其他地方进行处理和使用
项目运行效果展示
录入学生信息
修改学生信息
查询学生信息
删除学生信息
显示所有学生信息
项目地址:https://download.csdn.net/download/mini_malism_/88761590?spm=1001.2014.3001.5503