【Java:JDBC+MySQL实现学生信息管理系统】

此次使用Java JDBC+MySQL数据库实现一个简易的学生管理系统(没有前端界面)。


前言

Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标。我们通常说的JDBC是面向关系型数据库的。摘自百度百科–jdbc


现使用JDBC+MySQL实现简易的学生信息管理系统,主要设计学生信息查询、添加学生、修改学生信息、删除学生等功能。
提示:以下是本篇文章正文内容,下面案例可供参考

一、数据库设计

在StuMIS数据库中创建如下表格:
学生信息表
SQL代码如下:

create database StuIMS default CHARACTER set utf8mb4;-- 创建数据库
use StuIMS; 
-- 创建学生表
create table Student(
	studentID char(8) not null primary key, -- 学号
	studentName varchar(30) not null, -- 姓名
	studentSex char(4) not null default '男', -- 性别
	studentBirthday date not null default '2002-1-1', -- 出生日期
	credit int not null default 0, -- 学分
	studentClass char(6) not null -- 班级编号
)

数据库创建完成后,向数据表中添加部分测试数据,代码如下:

insert into Student values('20210101','张三',default,default,0,'202101'),
('20210122','李明',default,'2003-9-15',0,'202101'),
('20210203','王敏','女','2003-6-25',0,'202102'),
('20210218','刘洋',default,'2002-7-08',0,'202102'),
('20210310','刘洋','女','2003-1-29',0,'202103'),
('20210405','江民',default,'2000-12-29',0,'202104'),
('20210436','王军',default,'2002-10-10',0,'202104'),
('20210501','李玉军',default,default,0,'202105'),
('20210502','王红娟','女','2004-1-1',0,'202105');

二、Java代码编写实现

1.创建项目,引入JDBC的.jar包

下载数据库的驱动包,可以到官网下载:驱动下载
在这里插入图片描述
下载完成后,将压缩包解压到桌面。
使用eclipse创建一个名为Student的java项目,点击项目右键,找到Build Path—>>Configure Path…
在这里插入图片描述
在这里插入图片描述
点击添加.jar包,找到刚刚解压的文件,选择拓展名为(.jar)的文件。
在这里插入图片描述
点击添加,应用即可。
添加完成后,在项目中新建MainTest类,用于编写Java代码。

2.创建连接驱动方法

在MainTest中创建public Connection getConnection()方法,用于创建数据库的链接驱动。(信息的添加、删除、修改、查询都需要连接数据库,创建连接方法,可以减少代码的冗余。)
代码如下(示例):

public Connection getConnection() throws SQLException, ClassNotFoundException {
		String Driver = "com.mysql.cj.jdbc.Driver";
		String url="jdbc:mysql://localhost:3306/StuIMS";
		String user="root";
		String pwd="123456";
		Class.forName(Driver);//加载驱动
		Connection con = DriverManager.getConnection(url,user,pwd);//建立连接
		if(con.isClosed()) {
			System.err.println("数据库连接失败。");
			return null;
		}else {
			System.out.println("连接成功。");
			return con;
		}
	}

该处使用的url网络请求的数据。

3、查询所有数据


定义SelectAll()方法查询所有学生数据。
代码示例如下:

public void SelectAll() throws ClassNotFoundException, SQLException {
		Connection con = getConnection();//调用getConnection()方法获取数据库连接对象
		PreparedStatement ps = con.prepareStatement("select * from Student");//创建预处理对象执行SQL查询语句
		ResultSet rs = ps.executeQuery();//查询结果集
		System.out.println("  学号\t\t姓名\t  性别\t    生日\t\t学分");
		while(rs.next()) {//遍历结果集
			//使用ResultSet的get方法获取集合中的值,参数为数据库中的字段名
			System.out.println(rs.getString("studentID")+"\t"+rs.getString("studentName")+"\t  "+rs.getString("studentSex")+"\t  "
					+rs.getString("studentBirthday")+"\t"+rs.getString("credit")+"\t");
		}
	}

4、插入学生数据

定义public int insertStudent(int num)方法向数据库中添加数据。int num为一次添加的学生的数量。
实例代码如下:

public int insertStudent(int num) throws ClassNotFoundException, SQLException {
		Connection con = getConnection();
		String sql = "insert into Student values(?,?,?,?,0,'202105')";//定义SQl语句,班级编号和学分不需手动插入。
		PreparedStatement ps = con.prepareStatement(sql);//执行SQL语句
		Scanner sc = new Scanner(System.in);
		int count=0;//定义变量保存修改的行数
		for(int i=1;i<=num;i++) {
			System.out.println("请输入第"+i+"个学生的学号:");
			String ID = sc.next();
			System.out.println("请输入第"+i+"个学生的姓名:");
			String name = sc.next();
			System.out.println("请输入第"+i+"个学生的性别:");
			String sex = sc.next();
			System.out.println("请输入第"+i+"个学生的生日:");
			String birthday = sc.next();
			//将输入的值传入,执行SQL,添加数据
			ps.setString(1, ID);
			ps.setString(2, name);
			ps.setString(3, sex);
			ps.setString(4, birthday);
			//executeUpdate()方法的返回值为受影响的行数(插入的数据行数),如果返回值为1,则表示数据插入成功(一次循环执行一次插入)
			if(ps.executeUpdate()==1) {//
				count++;//插入成功,将count值加一
			}else {
				System.out.println("数据插入失败。");
				break;
			}
		}
		return count;//返回受影响的行数
	}

5、修改学生信息

定义public int updateStudent(String ID)方法,根据学号(唯一,不可重复)修改学生数据信息。
示例代码如下:

public int updateStudent(String ID) throws ClassNotFoundException, SQLException {
		Connection con = getConnection();
		String sql="update Student set studentName=?,studentSex=?,studentBirthday=? where studentID="+ID;
		//定义SQL语句修改信息,允许修改的字段值为姓名、性别、出生日期,学号不允许修改。
		PreparedStatement ps = con.prepareStatement(sql);
		Scanner sc = new Scanner(System.in);
		int count=0;
		System.out.println("请输入学生的姓名:");
		String name = sc.next();
		System.out.println("请输入学生的性别:");
		String sex = sc.next();
		System.out.println("请输入学生的生日:");
		String birthday = sc.next();
		ps.setString(1, name);
		ps.setString(2, sex);
		ps.setString(3, birthday);
		count = ps.executeUpdate();
		return count;//返回受影响的行数
	}

6、删除学生数据

定义public int deleteStudentByID(String ID)方法删除学生。根据学号执行删除操作。
示例代码如下:

public int deleteStudentByID(String ID) throws ClassNotFoundException, SQLException {
		Connection con = getConnection();
		Scanner sc = new Scanner(System.in);
		PreparedStatement psS = con.prepareStatement("select * from Student where studentID="+ID);
		ResultSet rs = psS.executeQuery();
		//根据学号查询需要删除的学生的信息
		System.out.println("即将删除的学生的信息:");
		System.out.println("  学号\t\t姓名\t  性别\t    生日\t\t学分");
		while(rs.next()) {
			System.out.println(rs.getString("studentID")+"\t"+rs.getString("studentName")+"\t  "+rs.getString("studentSex")+"\t  "
					+rs.getString("studentBirthday")+"\t"+rs.getString("credit")+"\t");
		}
		System.out.println("请确认信息是否无误(y/Y)?");
		char ch1 = sc.next().charAt(0);
		//
		if(ch1=='Y'||ch1=='y') {
			System.out.println("请确认是否删除(y/Y)?");
			char ch2 = sc.next().charAt(0);
			if(ch2=='y'||ch2=='Y') {//确认删除后,执行删除操作
				PreparedStatement psD = con.prepareStatement("delete from Student where studentID="+ID);
				int  count  = psD.executeUpdate();
				return count;//返回受影响的行数
			}else {
				System.out.println("删除取消。");
				return 0;
			}
		}else {
			System.out.println("信息有误,请重新选择......");
			return -1;
		}
		
	}

7、menu方法

定义public int menu()方法打印菜单选项。
示例代码如下:

public int menu() {
		Scanner sc = new Scanner(System.in);
		System.out.println("******************************欢迎使用学生信息管理系统******************************");
		System.out.println("\t\t功能列表如下:");
		System.out.println("\t\t1、查询学生信息。");
		System.out.println("\t\t2、添加学生信息。");
		System.out.println("\t\t3、修改学生信息。");
		System.out.println("\t\t4、删除学生信息。");
		System.out.println("\t\t5、退出系统。");
		System.out.println("请选择你需要的功能:");
		return sc.nextInt();
	}

8、main方法

public static void main(String[] args) throws ClassNotFoundException, SQLException {
		MainTest m = new MainTest();//实例化当前类的对象,调用其他成员方法
		Scanner sc = new Scanner(System.in);
		while(true) {
			int ch = m.menu();//调用菜单选项,获取用户的选择
			switch(ch) {//使用Switch结构根据用户输入执行不同功能
			case 1:m.SelectAll();break;//查询所有信息
			case 2:
				System.out.println("请输入需要添加的学生的数量:");
				int n = sc.nextInt();
				int countInsert = m.insertStudent(n);//获取插入成功的数据行数
				//如果插入成功行数与用户输入相等,则表示成功。还有事务回滚和提交操作没有实现,感兴趣的朋友可以自行添加实现这个功能。
				if(countInsert==n) {
					System.out.println("学生信息添加成功!");
				}else {
					System.out.println("信息输入有误,学生添加失败。");
				}
				break;
			case 3:
				System.out.println("请输入需要修改的学生的学号:");
				String IDUpdate= sc.next();
				int countUpdate = m.updateStudent(IDUpdate);
				if(countUpdate==1) {//学号唯一,一个学号对应一条数据
					System.out.println("学生信息修改成功。");
				}
				break;
			case 4:
				System.out.println("请输入需要删除的学生的学号:");
				String IDDelete = sc.next();
				int countDelete = m.deleteStudentByID(IDDelete);
				if(countDelete==1) {
					System.out.println("删除成功。");
				}else {
					System.out.println("删除失败。");
				}
				break;
			case 5:
				System.out.println("感谢使用,系统退出中......");
				System.exit(0);//退出执行
			default:System.err.println("请选择相应的功能......");
			}
			System.out.println("请输入回车键继续......");
			sc.nextLine();
		}
	}

总结

以上就是学生管理系统的全部内容,其中有部分功能并未完全实现,例如插入学生数据时,并未控制事务的提交,某一条数据插入失败时,之前的数据也会自动提交,逻辑上还不是很完整,如果有感兴趣的朋友可以自行进行完善。删除数据和修改数据时逻辑也还有欠缺。
码字不易,感谢阅读。
完整代码奉上:

package test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;

@SuppressWarnings("resource")
public class MainTest {

	public static void main(String[] args) throws ClassNotFoundException, SQLException {
		MainTest m = new MainTest();
		Scanner sc = new Scanner(System.in);
		while(true) {
			int ch = m.menu();
			switch(ch) {
			case 1:m.SelectAll();break;
			case 2:
				System.out.println("请输入需要添加的学生的数量:");
				int n = sc.nextInt();
				int countInsert = m.insertStudent(n);
				if(countInsert==n) {
					System.out.println("学生信息添加成功!");
				}else {
					System.out.println("信息输入有误,学生添加失败。");
				}
				break;
			case 3:
				System.out.println("请输入需要修改的学生的学号:");
				String IDUpdate= sc.next();
				int countUpdate = m.updateStudent(IDUpdate);
				if(countUpdate>0) {
					System.out.println("学生信息修改成功。");
				}
				break;
			case 4:
				System.out.println("请输入需要删除的学生的学号:");
				String IDDelete = sc.next();
				int countDelete = m.deleteStudentByID(IDDelete);
				if(countDelete>0) {
					System.out.println("删除成功。");
				}else {
					System.out.println("删除失败。");
				}
				break;
			case 5:System.out.println("感谢使用,系统退出中......");;System.exit(0);
			default:System.err.println("请选择相应的功能......");
			}
			System.out.println("请输入回车键继续......");
			sc.nextLine();
		}
	}
	public int menu() {
		Scanner sc = new Scanner(System.in);
		System.out.println("******************************欢迎使用学生信息管理系统******************************");
		System.out.println("\t\t功能列表如下:");
		System.out.println("\t\t1、查询学生信息。");
		System.out.println("\t\t2、添加学生信息。");
		System.out.println("\t\t3、修改学生信息。");
		System.out.println("\t\t4、删除学生信息。");
		System.out.println("\t\t5、退出系统。");
		System.out.println("请选择你需要的功能:");
		return sc.nextInt();
	}
//	连接数据库
	public Connection getConnection() throws SQLException, ClassNotFoundException {
		String Driver = "com.mysql.cj.jdbc.Driver";
		String url="jdbc:mysql://localhost:3306/StuIMS";
		String user="root";
		String pwd="123456";
		Class.forName(Driver);
		Connection con = DriverManager.getConnection(url,user,pwd);
		if(con.isClosed()) {
			System.err.println("数据库连接失败。");
			return null;
		}else {
			System.out.println("连接成功。");
			return con;
		}
		
	}
//	查询所有数据
	public void SelectAll() throws ClassNotFoundException, SQLException {
		Connection con = getConnection();
		PreparedStatement ps = con.prepareStatement("select * from Student");
		ResultSet rs = ps.executeQuery();
		System.out.println("  学号\t\t姓名\t  性别\t    生日\t\t学分");
		while(rs.next()) {
			System.out.println(rs.getString("studentID")+"\t"+rs.getString("studentName")+"\t  "+rs.getString("studentSex")+"\t  "
					+rs.getString("studentBirthday")+"\t"+rs.getString("credit")+"\t");
		}
	}
//	插入数据
	public int insertStudent(int num) throws ClassNotFoundException, SQLException {
		Connection con = getConnection();
		String sql = "insert into Student values(?,?,?,?,?,'202105')";
		PreparedStatement ps = con.prepareStatement(sql);
		Scanner sc = new Scanner(System.in);
		int count=0;
		for(int i=1;i<=num;i++) {
			System.out.println("请输入第"+i+"个学生的学号:");
			String ID = sc.next();
			System.out.println("请输入第"+i+"个学生的姓名:");
			String name = sc.next();
			System.out.println("请输入第"+i+"个学生的性别:");
			String sex = sc.next();
			System.out.println("请输入第"+i+"个学生的生日:");
			String birthday = sc.next();
			System.out.println("请输入第"+i+"个学生的学分:");
			int credit = sc.nextInt();
			ps.setString(1, ID);
			ps.setString(2, name);
			ps.setString(3, sex);
			ps.setString(4, birthday);
			ps.setInt(5, credit);
			if(ps.executeUpdate()>0) {
				count++;
			}else {
				System.out.println("数据插入失败。");
				break;
			}
		}
		return count;
	}
//	修改数据
	public int updateStudent(String ID) throws ClassNotFoundException, SQLException {
		Connection con = getConnection();
		String sql="update Student set studentName=?,studentSex=?,studentBirthday=? where studentID="+ID;
		PreparedStatement ps = con.prepareStatement(sql);
		Scanner sc = new Scanner(System.in);
		int count=0;
		System.out.println("请输入学生的姓名:");
		String name = sc.next();
		System.out.println("请输入学生的性别:");
		String sex = sc.next();
		System.out.println("请输入学生的生日:");
		String birthday = sc.next();
//		System.out.println("请输入学生的学分:");
//		int credit = sc.nextInt();
		ps.setString(1, name);
		ps.setString(2, sex);
		ps.setString(3, birthday);
//		ps.setInt(4, credit);
		count = ps.executeUpdate();
		return count;
	}
	public int deleteStudentByID(String ID) throws ClassNotFoundException, SQLException {
		Connection con = getConnection();
		Scanner sc = new Scanner(System.in);
		PreparedStatement psS = con.prepareStatement("select * from Student where studentID="+ID);
		ResultSet rs = psS.executeQuery();
		System.out.println("即将删除的学生的信息:");
		System.out.println("  学号\t\t姓名\t  性别\t    生日\t\t学分");
		while(rs.next()) {
			System.out.println(rs.getString("studentID")+"\t"+rs.getString("studentName")+"\t  "+rs.getString("studentSex")+"\t  "
					+rs.getString("studentBirthday")+"\t"+rs.getString("credit")+"\t");
		}
		System.out.println("请确认信息是否无误(y/Y)?");
		char ch1 = sc.next().charAt(0);
		if(ch1=='Y'||ch1=='y') {
			System.out.println("请确认是否删除(y/Y)?");
			char ch2 = sc.next().charAt(0);
			if(ch2=='y'||ch2=='Y') {
				PreparedStatement psD = con.prepareStatement("delete from Student where studentID="+ID);
				int  count  = psD.executeUpdate();
				return count;
			}else {
				System.out.println("删除取消。");
				return -1;
			}
		}else {
			System.out.println("信息有误,请重新选择......");
			return -1;
		}
		
	}
}












  • 45
    点赞
  • 239
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
压缩包含使用说明,windows端在文件资源管理器中 点击create.bat支持一键建表,其他系统可以使用 createtables.sql里面的sql语句进行数据库 欢迎使用学生信息管理系统(管理员端) 本系统支持添加,删除,修改等实用功能 方便您更好的管理学生数据 【I】管理员端 一,选择数据库 通过右上角的数据库菜单栏可以选择当前操 作的数据库 二,添加教师,学生,教师,学生成绩(管理员) 1)通过管理员窗口的左侧按钮可以按需添加 学生,教师,管理员,学生成绩等信息 2)通过下方按钮“添加行”来新建空行,然 后手动输入数据,再点击“保存”按钮将表 单上传到数据库。 (注意:如果格式不正确,比如通过该方法上传 的数据可能会发生错误,所以方法2只适合管 理员使用) 3)支持批量添加行(注意:如果有一行错误,所 有操作将被回滚) 4)为学生添加老师,进入选择学生数据库,在 某一个学生行单击右键,选择“添加老师”,即 可为该id的学生添加老师 5)为学生添加课程,进入学生数据可以,在某一 学生行单击右键,选择“修改成绩”,可以进入 成绩修改窗口(管理员端),输入学生id, 为学生添加任意课程,也可为课程添加或修改删除 成绩 三,删除 在表格中使用鼠标选中一些数据行,然后点击 左侧“删除”按钮,即可删除表单中的数据 四,修改 双击表格,输入数据,按回车保存,然后点击 右下角“保存修改”按钮,将表单上传到数据 库中。(注意:因为学生成绩信息是以二进制 形式储存,所以请不要直接在表格中修改) 五,排序 在表格某一列点击排序按钮,对当前选择的表单 按该列进行排序,右上角排序选择框可以决定排 序的方向是升序还是逆序。 【II】教师端 1)教师基本信息 教师信息将显示在表格左侧 2)查看学生列表 单击“我的学生”,表格中将显示该教师的所有 学生 3)在表格中右击某一个学生,将进入成绩修改窗 口(教师端),支持为当前学生添加或修改当前 教师所教科目的学生成绩 4)查看成绩表 单击“成绩表”,表格中显示该教师所有学生的 成绩信息。 【III】学生端 1)学生基本信息 学生信息将显示在表格左侧 2)查看成绩 单击“学业成绩”,表格中将显示学生所有成绩 3)查看老师 单击“我的老师”,表格中将显示学生所有老师 的基本信息。
学生信息管理系统是一种常见的应用程序,它可以用于管理学生的个人信息、课程信息、成绩信息等。MySQL是一种流行的关系型数据库管理系统,Java是一种广泛使用的编程语言。将MySQLJava结合使用可以实现一个功能强大的学生信息管理系统。以下是实现学生信息管理系统的一些步骤: 1.设计数据库表结构,包括学生表、课程表、成绩表等。可以使用Navicat等工具来创建和管理数据库表。 2.使用Java编写程序来连接MySQL数据库,并实现对学生信息、课程信息、成绩信息等的增删改查操作。可以使用mysql-connector-java等库来连接MySQL数据库。 3.使用IDEA等开发工具来编写和调试Java程序,并将程序打包成可执行文件。 4.部署程序到服务器上,并配置好相关的环境变量和数据库连接信息。 5.测试程序是否能够正常运行,并进行必要的调试和优化。 以下是一个简单的Java程序示例,用于连接MySQL数据库并查询学生信息: ```java import java.sql.*; public class StudentInfo { public static void main(String[] args) { try { // 加载MySQL驱动程序 Class.forName("com.mysql.jdbc.Driver"); // 连接MySQL数据库 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/student", "root", "password"); // 创建Statement对象 Statement stmt = conn.createStatement(); // 查询学生信息 ResultSet rs = stmt.executeQuery("SELECT * FROM student_info"); // 输出查询结果 while (rs.next()) { System.out.println(rs.getString("name") + "\t" + rs.getInt("age") + "\t" + rs.getString("gender")); } // 关闭连接 rs.close(); stmt.close(); conn.close(); } catch (Exception e) { e.printStackTrace(); } } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

toMontain

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值