写在前面: 我是「虐猫人薛定谔」,一个不满足于现状,有梦想,有追求的00后
本博客主要记录和分享自己毕生所学的知识,欢迎关注,第一时间获取更新。
不忘初心,方得始终。❤❤❤❤❤❤❤❤❤❤
设计要求
使用Java设计实现一个带有GUI界面的学生成绩管理系统。基本功能包括:
-
增添、删除、修改学生基本信息:学号、姓名、出生日期、专业课程分数;
-
统计优秀、良好、中等、及格、不及格的人数百分比,并以柱状图、饼图呈现
【说明:可以使用SWING、AWT自己绘制;也可以使用开源类库,如JFreeChart】 -
按学号查询学生及成绩;
-
按照成绩分数排序;
-
提供数据存储功能(不使用数据库,全部使用流操作文件完成)
思路
程序界面的主背景使用的是暗灰色(个人比较喜欢的背景颜色),而面板背景用的是亮灰色(与暗灰色形成对比),程序是使用idea开发,除了绘制饼图和柱状图部分用了开源类库JFreeChart外,其余代码均为自己实现。
Main类是该程序的入口,MainFrame类中实现程序的主要框架,该类继承自JFrame,Student类对学生进行抽象,其成员包括学号、姓名、出生日期和课程,其中课程是用HashMap来存放的,Key为课程名,Value为课程成绩。
Management类用一个ArrayList来存放学生,该类对外提供添加学生信息、删除学生信息、修改学生信息、从文件导入学生信息等方法。Resource类为资源加载类,该类加载一些图片资源,这些资源用来装饰面板中的按钮。
为了实现定制排序,分别实现了按照学号、姓名、成绩排序的Comparator类,剩余类均为面板类,这些类继承自JPanel,上面添加相应的组件来实现对应的功能,其中LeftPanel为界面左侧面板,上面放了具有相应功能的按钮,用来控制各个面板之间的切换(通过设置各个面板的可见性来实现)
Panel1 ———— 添加学生信息
Panel2 ———— 删除学生信息
Panel3 ———— 修改学生信息
Panel4 ———— 查询学生信息
Panel5 ———— 统计课程成绩
数据的存储是依靠流操作文件来实现的,Management类和Student类均实现了Serializable接口,在程序窗口关闭之前,会将arrayList(存放学生的容器)写入文件,在程序启动的时候,先将数据文件读入,再启动窗口界面,从而实现数据的存储功能
目录结构
效果展示
添加学生信息
删除学生信息
修改学生信息
查找学生信息
统计成绩
从文件导入学生信息(文件需要满足指定的格式)
代码
蒟蒻写博客不易,加之本人水平有限,写作仓促,错误和不足之处在所难免,谨请读者和各位大佬们批评指正。
如需转载,请署名作者并附上原文链接,蒟蒻非常感激
名称:虐猫人薛定谔
博客地址:https://blog.csdn.net/Deep___Learning