• 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进行展示。
  • 相关阅读:
    C#如何调用非托管的C++Dll
    CList 点击表头排序 (3)两种排序的第二种
    CList 点击表头排序 (2)两种排序方法中其中一种
    CList 点击表头排序 (1)SortItems函数
    CListCtrl 隔行变色
    C++去掉字符串中首尾空格和所有空格
    Dialog和FormView如何派生通用类
    STL中erase()的陷阱
    socket 笔记(一)
    prettyJson V7.1 使用
  • 原文地址:https://www.cnblogs.com/c4412/p/14333872.html
Copyright © 2020-2023  润新知