Java课程设计——学生成绩管理

一、项目简介

  1. 功能描述:系统用以管理学生成绩等相关信息,支持用户登录,数据采用数据库存储,可对学生成绩等相关信息进行增删查改,支持分别对所有学生各科成绩画出柱状分布图,能随机生成10万条测试数据写入数据库和文本文件(每科成绩以80分为中心正太分布)。
  2. 个人负责任务: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进行展示。
posted @ 2021-01-28 19:16  Po1s0n  阅读(220)  评论(0编辑  收藏  举报