1.项目简介
系统用以管理学生成绩等相关信息,支持用户登录,数据采用数据库存储,可对学生成绩等相关信息进行增删查改,支持分别对所有学生各科成绩画出柱状分布图,能随机生成10万条测试数据写入数据库和文本文件(每科成绩以80分为中心正太分布)。
2.成员介绍
组员 | 职务 | 任务 | 链接 |
---|---|---|---|
郭楠 | 组长 | 实现了用户的登录注册,验证码的实现,以及对学生成绩数据的删除,修改,查询(基于学号),模糊查询(基于姓名),排序,运用poi包导出数据至Excel,画出每个学生成绩的柱形图,以及最后对代码的整合和分包工作。 | https://www.cnblogs.com/GoodNanmu/articles/17041937.html |
宋春雨 | 组员 | 实现了添加学生信息,添加学生成绩功能(按列输入,即输入所有学生的某一门科目的成绩并可以在三门成绩都输入是计算总分和平均分),随机生成十万个测试数据并导出为txt文件并存入数据库 | https://www.cnblogs.com/scy03/p/17042491.html |
3.本项目的git地址
https://gitee.com/chun-chun228/student-management-system
4.git提交记录
5.前期调查
除了常规的注册登录,还有如下所示的增删改查
此外我们在此基础上增加了排序,将数据通过poi导出,以及生成柱状图
6.功能架构图
7.功能介绍
7.1 登录与注册
简述:先注册后登录,登录输入密码时采用密码加密的形式更符合现实要求,登录界面也进行适当的了美化。
7.2 进入主页面
7.3 添加学生
简述:添加学生时,学号自动生成(且唯一)不可自己输入由系统自动生成,手动输入姓名、年龄、出生年月日和性别,然后将该学生的信息写入数据库。
7.4录入学生成绩
简述:录入学生成绩时采用按列输入即录入所有学生的某一科目的成绩,需要向数据库批量输入数据,而且只有三门科目的成绩都不为空时系统自动计算总分和平均分,界面采取滚动页面,方便录入。
7.5 查询信息
简述:根据sql语句在数据库里进行查找,当查找到符合条件的学生之后,直接把查找的结果放回到结果集。
- 根据学号查询某个学生的信息
- 根据姓名进行模糊查询
7.6 修改、删除信息
简述:选中一行学生的信息进行修改和删除,并将之存入数据库里面。
7.7 生成柱状图
简述:选中某一行,形成由该生各科成绩形成的柱状图
需要导入三方jar包:
7.8 生成成绩报表
简述:在选定某一科目下,以升序或降序排序,能够显示在面板上,并且可以输出到excel文件中。
导入三方jar包:poi包
7.9 生成测试数据
- 随机生成成绩时,使用nextGaussian()方法生成N(0,1)标准正太分布,逆用正太分布标准化公式将其乘标准差8再加期望80,得到N(80,64)正态分布。
- 使用Calendar类获得当前系统时间,再将其减去若干天,获得一个大概区间内的时间范围,如图将区间约控制在[1998,2001]。使用Stirng.format()将日期标准化为yyyy-mm-dd的格式,使其与数据库数据格式相统一。
- 随机得到性别,可设置男女比例,名字根据性别不同而有所不同。
- 随机生成姓名,存储常用姓氏以及男女名字的常用字,通过随机的方式将姓和名进行排列组合、控制名字长度。
- 清空原有数据,获取随机数据,写入jtable,写入文本文件,批量写入数据库。
- 清空当前学生数据,使用"TRUNCATE TABLE student"语句删除数据库中的表信息更加高效,该语句将表删除并重新创建一个一模一样的的新表。
- 清空表后要将学号的自增值初始化。
8.不足与展望
(1)GUI的界面没有很美观,对于用户来说GUI界面不但要美观还要逻辑清晰,便于用户操作。
(2)录入学生成绩时需要按列输入,代码的书写比较冗余暂时还没有找到优化的方法。
(3)生成10万测试数据时,要存入数据库时因为使用一条一条输入,所以运行时速度很慢,暂时还没 有找到提升速度的方法。
总的来说,这次课设对我们来说无疑是巨大的挑战,我们挑灯夜战至今,一路上磕磕碰碰,虽然功能还没有完善,但我们仍然收获慢慢,希望在不远的将来,我们可以这个系统完善,优化。