相关技术介绍
- 开发环境:Windows 10
- 数据库管理系统:Mysql
- 开发工具:Intel IDEA
- 运行环境:Windows 10以及更高版本
二、系统需求分析
2.1 业务流程
用户登陆到系统后,在本系统中可以选择进行考试成绩录入、补考成绩录入、重修成绩录入,或查看总评成绩单、补考通知单、补考成绩单、重修通知单、重修成绩单、优秀学生名单等…
2.2 功能需求
- 用户能够登入本系统
- 用户可以在系统中录入考试成绩
- 用户可以在系统中录入补考成绩
- 用户可以在系统中录入重修成绩
- 用户可以在系统中查看总评成绩单
- 用户可以在系统中查看补考通知单
- 用户可以在系统中查看补考成绩单
- 用户可以在系统中查看重修通知单
- 用户可以在系统中查看重修成绩单
- 用户可以在系统中查看优秀学生名单
2.3 信息需求
- 进行成绩录入时不允许存在列值为空
- 进行成绩录入时需保证学生学号、姓名、选课的一致性
2.4 安全性与完整性需求
数据库上信息的安全性由数据库管理系统进行保证,完整性则主要由编程语句来体现。
2.5 数据字典
2.6 系统结构
各模块功能说明:
- 系统登录:该系统使用时需登录
- 成绩录入:用于录入各类成绩
- 考试成绩录入:用于登录入考试成绩及平时成绩
- 补考成绩录入:用于录入补考成绩
- 重修成绩录入:用于录入重修成绩
- 信息查询:用于查询各种信息
- 总评成绩:用于输出总评成绩。其中:总评成绩=30%*平时成绩+70*考试成绩
- 补考通知单:用于输出补考名单,即总评成绩不到60分的学生
- 补考成绩单:用于输出补考学生的成绩
- 重修通知单:用于输出重修名单,及总评成绩 < 60且补考成绩也 < 60的学生
- 重修成绩单:用于输出重修学生的成绩
- 优秀学生名单:用于输出优秀学生。及该学生每科总评成绩均大于60
- 退出系统:退出系统
三、概念模型设计
E-R图
四、逻辑结构设计
学生信息表(学号,姓名,性别,班级,专业)
- 主键:学号
- 外键:无
- 非空:学号、姓名
选课表(学号,课程号,课程名)
- 主键:无
- 外键:学号、课程号
- 非空:学号、课程号
课程表(课程号,课程名,课程学分,上课时间)
- 主键:课程号
- 外键:无
- 非空:课程号,课程名
成绩表(学号,课程号,课程名,平时成绩,考试成绩,补考成绩,重修成绩,总评成绩)
- 主键:无
- 外键:学号、课程号
- 非空:无
五、物理结构设计
建立数据库表
下面使用Mysql可视化工具Navicate进行建库、建表操作。
六、数据库连接与应用
6.1 Java中通过JDBC连接数据库
关键代码如下:
static{try{if(conn==null){Class.forName(driver).newInstance();conn=DriverManager.getConnection(dbUrl,dbUser,dbPwd);}}catch(ClassNotFoundExceptione){e.printStackTrace();JOptionPane.showMessageDialog(null,"数据库连接异常!");System.exit(0);}catch(Exceptione){e.printStackTrace();}}
6.2 数据库的运行与维护
登录界面
主界面
选择界面
信息查询界面
查询的SQL语句如下:
Stringsql="select student.s_no,student.s_name,score.c_name "+"from student,score "+"where student.s_no=score.s_no and score.final_score<60";
考试成绩录入
录入的SQL语句如下:
Stringsql="Insert "+"into score(s_no, c_no, c_name, ord_score, exam_score, final_score) "+"values(?, ?, ?, ?, ?, ?)";
七、收获与体会
通过本次的数据库课程设计,我进一步的了解了数据库的开发和使用,与看课本学习不同的是,这次是动手实践去做,而不仅仅局限于课本上的理论知识,更加进一步加深了对数据库的理解,同时也对Java语法、JDBC使用更加熟练。