zoukankan      html  css  js  c++  java
  • 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进行展示。
  • 相关阅读:
    [POJ]poj2632(模拟)
    [EOJ]2019 ECNU XCPC March Selection #2
    [POJ]POJ1328(trie)
    卡特兰数相关总结
    2019海亮夏令营随笔
    树上数数 题解
    护卫小队 题解
    洛谷 P2966 [USACO09DEC]牛收费路径Cow Toll Paths 题解
    洛谷 P4735 最大异或和
    登峰造极 题解
  • 原文地址:https://www.cnblogs.com/c4412/p/14333872.html
Copyright © 2011-2022 走看看