一、项目简介
- 功能描述:系统用以管理学生成绩等相关信息,支持用户登录,数据采用数据库存储,可对学生成绩等相关信息进行增删查改,支持分别对所有学生各科成绩画出柱状分布图,能随机生成10万条测试数据写入数据库和文本文件(每科成绩以80分为中心正太分布)。
- 个人负责任务:GUI界面设计,数据库连接,功能5、6、8。
二、功能架构图
三、个人任务介绍
1. GUI界面设计
2. 数据库连接
数据库连接采用druid数据库连接池
导入jar包
druid配置信息
druid工具类
使用JdbcTemplate操作数据库
导入jar包
JdbcTemplate主要提供以下方法
-
execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句;
-
update方法及batchUpdate方法:update方法用于执行增删改等语句,batchUpdate方法用于执行批处理相关语句;
-
query方法及queryForXXX方法:用于执行查询相关语句;
-
call方法:用于执行存储过程、函数相关语句。
批量添加数据
- 需要注意:要在URL中加入rewriteBatchedStatements=true语句,否则就算使用batchUpdate方法,实际上也没有起到批量添加的效果;对于添加10万条数据而言,若使用update方法一条条添加,效率十分低需要等待非常久的时间。
查询数据
- 使用query方法和BeanPropertyRowMapper实现类,将查询结果封装成指定对象再添加进列表。
- 需要注意:因为基本数据类型不能赋值nul,所以指定对象属性的数据类型要为引用数据类型的封装类。
3. 生成学生学习情况报表
POI技术所需jar包
图形界面
输出至excel文件
关键代码
4. 生成柱状分布图
JFreeChart所需jar包
图形效果
- 通过jtable选中某行后右键单击即可生成柱状图。
关键代码
5. 随机生成10万条测试数据
图形界面
写入文本文件
写入数据库
- 数据库中,将student表的id设置为主键并从20210000001开始自增,建表代码如下。
关键代码
- 随机生成成绩时,使用nextGaussian()方法生成N(0,1)标准正太分布,逆用正太分布标准化公式将其乘标准差8再加期望80,得到N(80,64)正态分布。
- 需要控制成绩小于100.0。
- 使用Calendar类获得当前系统时间,再将其减去若干天,获得一个大概区间内的时间范围,如图将区间约控制在[1998,2001]。
- 使用Stirng.format()将日期标准化为yyyy-mm-dd的格式,使其与数据库数据格式相统一。
- 随机得到性别,可设置男女比例,名字根据性别不同而有所不同。
- 随机生成姓名,存储常用姓氏以及男女名字的常用字,通过随机的方式将姓和名进行排列组合、控制名字长度。
- 清空原有数据,获取随机数据,写入jtable,写入文本文件,批量写入数据库。
- 清空当前学生数据,使用"TRUNCATE TABLE student"语句删除数据库中的表信息更加高效,该语句将表删除并重新创建一个一模一样的的新表。
- 清空表后要将学号的自增值初始化。
- 编写updateTable()方法,当进入SystemJFrame时,将数据库的数据同步到jtable进行展示。