基于JDBC的学生信息管理系统的实现

  • 功能说明
  • 数据库系统实现
    • 0.建表过程
    • 1.新生入学信息添加,学生信息修改
    • 2.课程信息维护(增加新课程,修改课程信息,删除没有选课的课程信息)
    • 3.录入学生成绩,修改学生成绩
    • 4. 按系统计学生的平均成绩、最好成绩、最差成绩、优秀率、不及格人数。
    • 5. 按系对学生成绩进行排名,同时显示出学生、课程和成绩信息。
  • 核心代码部分
    • 1.连接MySQL数据库
    • 2.SQL查询
    • 3.SQL更新和插入
  • 总结

功能说明

工程代码:代码下载链接
(1) 新生入学信息增加,学生信息修改。
(2) 课程信息维护
(3) 录入学生成绩,修改学生成绩。
(4) 按系统计学生的平均成绩、最好成绩、最差成绩、优秀率、不及格人数。
(5) 按系对学生成绩进行排名,同时显示出学生、课程和成绩信息。
(6) 输入学号,显示该学生的基本信息和选课信息。

数据库系统实现

本实验基于JDBC,MySQL实现,图形界面使用Java Swing。初始化调用DriverManager类的静态函数getConnection获得数据库连接,通过连接对象的createStatement()函数获得表达式对象,进一步通过表达式对象的executeQuery()函数获得执行结果,存在ResultSet类的对象中。

0.建表过程

create table student(sno char(9) primary key,sname char(5),ssex enum(’男’,’女’,’未知’),sbirth year,sdept char(5));
create table course(cno char(3) primary key,cname varchar(20),ccredit float);
create table sc(sno char(9),cno char(3),grade smallint);

1.新生入学信息添加,学生信息修改

打开可视化图形界面,默认显示全部学生的信息

select * from student;


在顶部输入框输入学号,姓名,性别,出生年份,院系信息,点击插入按钮可插入学生信息,除学号外,其他信息都可以为空,数据库系统将检查学号的完整性,若不满足完整性检查,应用程序将弹出对话框提示。
如:插入一个已有的学号:


插入的学号不满足9位数字的要求:

插入成功后,应用程序将弹出对话框提示,显示SQL语句,并更新表格:

修改学生信息时,只需双击要修改的表项,输入要修改的值即可,数据库将检查修改数据的完整性,若满足完整性要求,应用程序将弹出对话框提示修改成功并显示SQL语句,否则将弹出对话框提示相应的错误:


查询学籍信息时,只需在输入框输入需要查询的信息,点击查询按钮,数据库将进行模糊查询,并将查询结果显示:

2.课程信息维护(增加新课程,修改课程信息,删除没有选课的课程信息)

点击顶部按钮课程管理,可进行课程信息维护,默认执行

select * from course;


在顶部输入框输入课程号,课程名,学分,点击插入按钮可插入课程信息,除课程号外,其他信息都可以为空,数据库将对输入的信息进行完整性检查,若满足完整性要求应用程序将弹出对话框显示对应的SQL语句并更新表格,否则将显示错误信息:
正确情况:

错误情况:

课程信息修改方式与学籍管理操作方式相同:

课程信息的查询与学籍信息操作相同:

删除没有选课的课程信息,点击课程管理界面的删除按钮,数据库将扫描没有选课的课程,并将其删除。

3.录入学生成绩,修改学生成绩

点击顶部成绩管理按钮,应用程序显示所有学生所有课程的成绩,默认执行

select a.sno,a.sname,b,cno,b,cname,c.grade from student a,course b,sc c where a.sno=c.sno and b.cno=c.cno;


在顶部输入框中输入学号,课程号,成绩可插入学生成绩,数据库将检查数据完整性,满足完整性要求的即插入到数据库中,应用程序更新表格


修改学生成绩的方式与课程管理,学籍管理的操作相同:

4. 按系统计学生的平均成绩、最好成绩、最差成绩、优秀率、不及格人数。

考虑到实际意义,用户必须输入院系名和课程名(课程名可模糊匹配 )才可计算该院系该课程的平均成绩,最好、最差成绩,优秀率和不及格人数。
应用程序首先通过数据库获得该院系选修该课程的学生人数,平均成绩,最好成绩,最差成绩。再对选出的所有成绩计数,计数优秀的人数和不及格的人数,优秀率=优秀的人数/总人数x100%,最后输出结果:


5. 按系对学生成绩进行排名,同时显示出学生、课程和成绩信息。

考虑到实际意义,用户必须输入院系名和课程名(课程名可模糊匹配 )才可计显示该院系该课程的排名信息。

核心代码部分

1.连接MySQL数据库

  1. 需先导入MySQL的JDBC依赖库,这个库可以很方便下载到,下载后导入到eclipse工程中;
  2. 定义MySQL类,作为SQL操作的工具类,构造函数定义如下
public MySql() {// 驱动程序名String driver = "com.mysql.cj.jdbc.Driver";// URL指向要访问的数据库名mydataString url = "jdbc:mysql://localhost:3306/e4?serverTimezone=UTC";//这个部分根据情况修改// MySQL配置时的用户名String user = "root";// MySQL配置时的密码String password = "123456";// 加载驱动程序try {Class.forName(driver);// 1.getConnection()方法,连接MySQL数据库!!con = DriverManager.getConnection(url, user, password);if (!con.isClosed()) {System.out.println("数据库连接成功!");statement = con.createStatement();}} catch (ClassNotFoundException e) {// TODO 自动生成的 catch 块System.out.println("找不到驱动");e.printStackTrace();} catch (SQLException e) {// TODO 自动生成的 catch 块e.printStackTrace();}}
  1. 由于JDBC的查询语句和更新语句采用不同的函数,故定义查询函数和更新函数
public ResultSet select(String sql) throws SQLException {return statement.executeQuery(sql);}public void update(String sql) throws SQLException {statement.executeUpdate(sql);}

2.SQL查询

构造String类型的SQL语句,交由MySQL类的select函数执行,由一个ResultSet的对象保存结果,通过该对象的getString(“列名”)获得对应列的值,如

String sno = "'" + rs.getString("sno") + "'";
String sname = "'" + rs.getString("sname") + "'";
String ssex = "'" + rs.getString("ssex") + "'";
String sbirth = "'" + rs.getString("sbirth").substring(0, 4) + "'";
String sdept = "'" + rs.getString("sdept") + "'";

3.SQL更新和插入

与SQL查询类似,但更新和插入都使用MySQL类的update函数执行

String sql = "insert into student (sno,sname,ssex,sbirth,sdept) values (" + sno + "," + sname + "," + ssex + ","+ sbirth + "," + sdept + ")";try {mySql.update(sql);lblRes.setText("<html>" + lblString + sql + "</html>");}

总结

这是一次数据库系统原理的实验,在本次实验中,我利用JDBC连接MySQL数据库设计了一个学生-课程-成绩管理系统,在数据库系统设计中遵循的概念结构设计和逻辑结构设计。
在实验中使用了Java提供的JDBC连接MySQL数据库,出现过一些问题。比如连接数据库出现错误,无法读出数据或数据是乱码,经检查是编码方式的问题;数据库无法更新数据,是因为使用的execute函数的问题等。

[Java]基于JDBC的学生信息管理系统的实现相关推荐

  1. Java课程设计-基于Swing的学生信息管理系统

    Java课程设计-基于Swing的学生信息管理系统 1.介绍 2.相关技术 3.项目地址 4.所需环境 5.安装教程 6.运行截图 7.相关博客 本代码是整理其他人项目,如有问题请及时联系笔者. 1. ...

  2. 基于SSM的学生信息管理系统

    基于SSM的学生信息管理系统 摘要 随着互联网技术和国内教育行业持续高速地发展,管理员为了能够更加方便地管理学生信息,学生信息管理系统被开发出来的目的是为了能够更加方便管理学生信息,一个良好的学生信息 ...

  3. 基于swing+awt学生信息管理系统

    源码编号:F-A02 项目类型:Java SE项目(awt+swing)开源免费 项目名称:基于swing+awt学生信息管理系统(manager) 当前版本:V1.0.1版本 主要技术:java.a ...

  4. C语言涉及数组的大作业,c语言大作业_基于数组的学生信息管理系统.doc

    . . word完美格式 <C语言程序设计实训1>报告 设 计 题 目: 基于数组的学生信息管理系统 学 院 名 称: 科学技术学院 专 业: 软件工程 班 级: 108班 姓 名: 大神 ...

  5. 基于html5的学生管理系统,基于HTML5的学生信息管理系统的设计与实现

    [摘要] 目前学校依然使用人工对学生信息进行管理,没有相关的学生信息管理系统,虽然学校硬件和网络设施已经提高,但对网络的利用最多也就是用QQ来传送文件及信息,效率低下,这种状态急需改变. 基于这种现状 ...

  6. 复习Java第一个项目学生信息管理系统 04(权限管理和动态挂菜单功能) python简单爬数据实例Java面试题三次握手和四次挥手生活【记录一个咸鱼大学生三个月的奋进生活】016

    记录一个咸鱼大学生三个月的奋进生活016 复习Java(学生信息管理系统04权限管理和动态挂菜单功能) 改写MainFrame的构造方法 新增LoginFrame的验证登录是否成功的代码 新增Logi ...

  7. 基于JavaSwing开发学生信息管理系统(SQLServer数据库版本) 毕业设计 课程设计 大作业

    基于JavaSwing开发学生信息管理系统(SQLServer数据库版本):   (大作业) 开发环境: Windows操作系统 开发工具: MyEclipse+Jdk+SQLServer数据库 运行 ...

  8. Java项目开发,学生信息管理系统

    Java项目开发,学生信息管理系统 @author:Mr.Gu @date:2020/5/31 开发时间大二年级,数据结构综合实习 文章目录 Java项目开发,学生信息管理系统 开发效果 开发要求 开 ...

  9. html实现学生系统,基于HTML5的学生信息管理系统的设计与实现

    摘要: 目前学校依然使用人工对学生信息进行管理,没有相关的学生信息管理系统,虽然学校硬件和网络设施已经提高,但对网络的利用最多也就是用QQ来传送文件及信息,效率低下,这种状态急需改变. 基于这种现状, ...

最新文章

  1. c++ 遍历list_数据结构之图的遍历,一篇文章get全部考点
  2. JSP中文乱码问题终极解决方案
  3. 全球及中国汽车流通行业营销模式及十四五竞争格局展望报告2021-2027年
  4. Qt Creator管理会议
  5. ab压力测试(了解ab工具,实验对网页进行测试)
  6. Faste R-CNN的安装及测试
  7. 龙芯.NET正式发布 稳步推进生态建设
  8. [十二省联考 2019] 异或粽子(可持久化字典树 + 二叉堆)
  9. LaTeX的编译速度优化方案
  10. 将time_t格式的字符串转换成具体的时间, 存放在SystemTime结构体中
  11. 安卓应用安全指南 4.7 使用可浏览的意图
  12. MapReduce的API介绍
  13. 让nginx支持php
  14. TimescaleDB 简单试用
  15. 全网疯传!传智播客java基础入门第二版pdf
  16. MyBatis与JPA的区别是什么
  17. 如何设计艺术字体,可以从这两个方面入手
  18. URL中经常出现的百分号22是什么意思
  19. 飞马(PEGASUS):Google最新的摘要汇总模型
  20. 论文阅读:Reasoning about Object Affordances in a Knowledge Base Representation

热门文章

  1. VC6注册/注销系统快捷键/热键
  2. symbol的基本使用方式
  3. 既然选择了远方,就只顾风雨兼程!
  4. 自动驾驶入门技术(10)—— 高精地图(HAD MAP)
  5. 怎样查看内存条的频率,3200MHz会满频率吗?
  6. 带有谓词和流的实际Java
  7. c语言怎么在doc运行,C语言位运行.doc
  8. iOS 微信 音视频自动播放 原生接口WeixinJSBridge API(一些整理 小技巧)
  9. 特征值分解用于数据压缩(matlab实现)
  10. Win10夜间模式无效