基于命令行的学生成绩管理系统
基于命令行的学生成绩管理系统
本项目代码基于命令行的学生成绩管理系统
一、实验目的
本次实验的目的是掌握Java企业级应用开发工具的使用方法,掌握Java面向对象程序编程技术,掌握常用工具类的使用。理解和使用设计模式。
设计开发完成一个基于命令行的软件。
抄袭计0分。
二、实验项目内容
1、创建类实现基本对象和他们关系的管理。包括学生、教学班、课程、成绩、教师等。学生至少包含学号、姓名、性别等信息。教学班至少包含教师、课程名字、总人数、教学班号、开课学期等信息。课程至少包含课程编号、课程名字等信息。教师至少包含教师编号、姓名等信息。可以根据自己的分析设计增加其他类。
2、随机生成学生,数量不少于100。课程数量不少于3门。一个教学班有一个教师上一门课程,一个教学班的学生数量不少于20。教师数量不少于6个。一门课至少有两个老师上课。每个学生至少选择3门课程。一个学生在一个教学班上一门课,考试后取得一个成绩。一门课的成绩构成有4部分构成,包括平时成绩、期中考试、实验成绩和期末考试成绩,然后计算出综合成绩。自定义各项成绩的产生策略,均为整数。
3、给出一个主菜单,选择菜单项执行各项功能。例如执行一个菜单命令,可以生成一个教学班的所有学生的平时成绩。分阶段模拟教学过程,第一步,生成初始化数据,包括教师,学生、课程,教学班等;第二步,学生选课,自定义选课策略,为每门课程的教学班安排学生。第三步,获得平时成绩,期中成绩,实验成绩,期末成绩,最后计算综合成绩,要记录成绩取得的时间。
4、能够格式规范地显示一个教学班的学生的成绩,可以根据学号排序,可以根据成绩排序。可以统计学生各科、总成绩的分数段分布。可以通过名字或者学号查询一个学生的所有科目的成绩和总成绩。可以按照学号、各科成绩和总成绩对所有学生进行排名显示。
5、可以实现自己的扩展功能或自定义功能。注意操作使用的方便性,注意类和类之间的关系。充分利用继承,多态等特性,使用上抽象类,接口,注解,Lambda表达式,泛型,内部类等设计元素,使用好集合类。注意程序的总执行流程和分支执行流程。注意设计思想的表达,注意优化代码结构,优化类的职责分工,注意使用设计模式。代码有注释。
6、在报告中注明自己的创新点、特色等。
提交:(1)本实验报告,(2)源代码压缩文件zip,(3)软件演示的MP4视频,视频大小不超过20M,视频请在QQ浏览器测试能否正常播放。注意源代码加注释。注意文件名称的规范性。文件名:学号姓名1.docx,学号姓名1.zip, 学号姓名1.mp4。三个文件分别提交。
三、实验过程
1、 设计实体类(Entity)及ER图
由实验项目内容可以提取出六个类:学生类(Student)、教师类(Teacher)、课程类(Course)、教学班类(CourseClass)、课程成绩类(CourseScore),其中学生类和教师类可以继承自人员类(Person),这样就设计好所有实体类
- Person:人员类,包含姓名、性别、年龄等信息。
- Student:学生类,包含学号、年级等信息,学生数量不少于100。
- Teacher:教师类,包含教师编号等信息,教师数量不少于6。
- Course:课程类,包含课程编号、课程名字、学分、成绩权重等信息,且课程数量不少于3。
- CourseClass:教学班类,包含教师、课程、总人数、教学班号、开课学期等信息。
- CourseScore:课程成绩类,包含平时成绩、期中考试、实验成绩、期末考试成绩和综合成绩。
类之间的关系:
1)学生类(Student)和教师类(Teacher)继承人员类(Person)。
2)学生类(Studen)与课程类(Course)之间是选课关系,且为多对多。一个学生可以选择多门课程,一个课程可以有多名学生,并且学生至少选择三门课程,一个课程可以没有学生选择。
3)学生类(Student)和课程成绩类(CourseScor)之间是考试关系,且为一对多。一个学生在一门课程中有一个成绩记录,但一个学生可以有多门课程的成绩记录。
4)学生类(Student)和教学班类(CourseClass)之间是参加关系,且为多对多。一个学生可以参加多个教学班,一个教学班可以有多个学生。并且其中教学班至少有20个学生,每个学生因为至少有三门课程,所以至少有三个教学班
5)教师类(Teacher)和课程类(Course)之间是教授关系,且为多对多。一个教师可以教授多门课程,一个课程可以由多个教师教授,并且一门课至少有两个老师上课。
6)教师类(Teacher)和教学班类(CourseClass)之间是负责关系,且为一对多。一个教师可以负责多个教学班,但一个教学班只能有一个负责教师。
7)课程类(Course)和教学班类(CourseClass)之间是开设关系,且为一对多。一门课程可以开设多个教学班,但是一个教学班只能有一个对应课程。
8)课程类(Course)和课程成绩类(CourseScore)之间是成绩记录关系,且为一对多。一门课程可以有多个成绩记录,但一个成绩记录只能对应一门课程。
ER图: