Java课程设计——学生信息管理系统
学生成绩管理系统是广泛使用的一种信息管理系统,在学生成绩管理系统中,需要能处理各班信息、各班下属学生的个人信息及每个学生学习成绩信息。班级信息包括班级编号、班级名称,学生信息包括学号、姓名、性别、所属班级、联系方式等,及各门课程的成绩。与班级相关的操作是查看已有班级、新增班级、修改班级名称、删除班级、录入新生信息等;与学生相关的操作是查看已有学生、修改学生基本信息、删除学生、录入成绩、修改成绩、根
1 项目介绍
1.1 概述
学生成绩管理系统是广泛使用的一种信息管理系统,在学生成绩管理系统中,需要能处理各班信息、各班下属学生的个人信息及每个学生学习成绩信息。班级信息包括班级编号、班级名称,学生信息包括学号、姓名、性别、所属班级、联系方式等,及各门课程的成绩。与班级相关的操作是查看已有班级、新增班级、修改班级名称、删除班级、录入新生信息等;与学生相关的操作是查看已有学生、修改学生基本信息、删除学生、录入成绩、修改成绩、根据姓名、学号、班级、课程等多条件查询学生成绩,并可以依据多种条件进行排序。
1.2 平台、语言和工具
-
程序编写语言:Java、SQL
-
开发平台:Eclipse Mars.2、Navicat 11.0.17
-
使用工具:C3P0、Log4j
-
运行环境:jre1.7_80、MySql 5.7
1.3 技术细节
1.3.1 图形
-
本程序的UI使用Java原生的GUI界面,按钮在下排
-
统一使用JOptionPane类的信息提示窗口
-
子窗口弹出时父窗口无法点击
-
所有的窗口在关闭时使用dispose();而不是setvisible,保证在窗口关闭时释放该窗口的资源
-
去除窗口对象实例化时的引用,利用JVM的垃圾销毁机制节省内存
1.3.2 Java编程
-
内部类:所有的监听器类都用内部类实现,可以使外部无法访问这个内部类,也方便了对其外部类的监听
-
后台架构:程序使用仿MVC架构实现,为view、model(po)、service、util、dao五层。使得变成风格更加清晰、模块化,便于抽离和拓展
-
模板方法模式:所有的dao类继承一个IOToSQL类作为baseDao,baseDao是一个抽象类,里面有增删查改四个基本的未实现方法和一些封装的实现方法,具体类dao继承并实现具体的抽象方法
-
反射:模板方法遍历数据库使用反射原理,传入resaultSet,用newinstance()获取某个po相应的对象,再获取其get、set方法,最后返回需要的po类对象的Map集,再转换成List
-
泛型编程:dao抽象类使用了Java泛型,提高父类整体的抽象程度
-
JDBC连接池:池化数据库连接,提高连接的利用率和程序运行的效率。
2 程序结构
2.1 后台架构
程序使用仿MVC架构实现,整个程序分为view、model(po)、service、util、dao五层:
-
Dao层:和数据库交互的层次,由于使用未封装的JDBC,所以本程序的dao层也是持久层
-
Service:业务逻辑处理层,负责对dao层异常处理、view层数据校验、业务流程控制、业务逻辑处理
-
Model:实体类层,所有的业务实体类都会存放在这里。比如老师、管理员
-
View:显示层,所有有关GUI的类,以及窗口跳转处理都在这里
-
Util:工具类层,所有使用到的一些工具方法,例如数据库连接的获取、关闭,字符串的正则判断、长度判断、空判断、字符拼接,view层表格处理等都在此封装。由于是工具方法,所以这里的方法都用static字段修饰
其中,dao为数据层,util/po/service为业务逻辑层,view为显示层。
图形层通过业务逻辑层获取数据层的数据,降低了耦合,实现模块化编程
整体架构如下图所示:
3 数据库表结构
3.1 数据库ER图表
-
Course:课程表,有课程id(主键)、课程名、学分三个字段
-
Score:分数表,有分数id(student表外键)、课程表主键id的关联外键、分数、学分
-
Student:学生表,学生学号id(主键)、学生名、学生年级、学生班级、手机号、邮箱
-
user:用户id(主键)、用户名、密码、身份(管理员还是老师)
3.2 数据库表的外键
-
多对多:Student和course有多对多的关系,使用中间表score作为关联实现这种多对多的关系
-
一对多:student和score、course和score都是一对多的关系,由于这个程序的特殊性,可以将多对多的映射表作为score表实现
-
所有的外键都是级联删除属性,删除一条主数据时,有关联外键的数据也会一同删除。比如删除一个学生时,会将其所有的分数信息删除
3 程序功能展示
3.1 整体结构
3.2 支持两种身份的用户注册、登录
对所有的输入都有进行正则校验,用户名有2-6位中文和6-18位英文或数字限制,且不能输入特殊符号;密码有6-18位英文或数字限制。
3.3 修改密码
对原有密码进行更改,对密码同样有正则判断。
3.4 对学生的增删查改
可以对学生的信息进行修改、学生查询、增加删除。所有输入操作均有防暴力输入和正则判断。
3.4.1 增加学生
已存在的学号不能重复添加。
3.4.2 姓名输入过长、有特殊符号、非纯中英文、含有数字
3.4.3 班级数字过大、非数字
3.4.4 可以对学生删除操作
3.4.5 模糊查询学生信息
3.4.6 成绩管理和查询
3.4.7 查询成绩
3.4.8 课程更改
3.5 权限管理
老师可以增删学生、查看修改成绩、升级成管理员账户;管理员可以修改学生课程、学分和老师账户的管理。
3.6 删除普通老师用户
高级用户模式
删除确认,此时数据库还有这个用户
删除成功后,用户消失
老师账户登录,没有高级权限
权限升级
对于高级用户
4 业务流程
5 文件结构
更多推荐
所有评论(0)