面向对象程序设计综合性实验题目学生考试成绩分析程序实验时间指导老师专业年级姓名学号内容要求:1.基本数据:(1)班级:程序能处理若干班级,每个班级包括的属性有:年级、专业、班和若干学生。
(2)学生:每个班级包含多名学生,学生属性有:学号和姓名。
(3)课程:程序能处理多门课程,每个课程属性:课程编号、名称、学分、学时。
2.数据存储:基本数据能搞保存在文件中。
3.功能要求:(1)基本数据输入:程序提供界面(推荐实现GUI)能够建立并输入班级、学生和课程的信息。
(2)考试成绩输入:程序提供界面(推荐实现GUI),指定班级、课程后,输入该班所有学生的该门课程的考试成绩。
(3)成绩查询:输入学号和课程后,能够显示该学生的考试成绩。
(4)成绩分析:指定班级和课程后,对该班的该课程进行以下3个方面的分析:·分数分析:最高分、最低分、平均分。
·分数段分析:分别统计0-59、60-69、70-79、80-89、90-100的学生人数和所占的百分比。
·图形分析:生成考试成级的统计图(柱状图和圆饼图)。
评语及成绩:项目/分数 A B C D E 比重%内容完成情况√□□□□25%系统分析设计√□□□□30%程序设计水平√□□□□20%实验报告撰写√□□□□10%实验总结√□□□□5%其他(功能)√□□□□10%总评成绩(一)系统分析:本系统为学生考试成绩分析系统,系统要求可以让用户输入若干学生的基本信息、课程信息,还有对应的课程成绩。
而主要功能则是可以实现按条件进行相应学生的成绩查询和按条件进行成绩的分析,并且能够通过绘制柱状图与圆饼图来显示相应结果。
因此,我设计了3个保存数据的类,分别是年级班级类、学生类以及课程类,其中学生类继承了课程类,而年级班级类则继承学生类。
每当新建一条信息(一个学生的信息),则新建一个年级班级类,在内部会自动新建一个学生类以及课程类,用于记录一个学生的信息。
本系统采用了窗口GUI来实现,因此大量采用了按钮、文本框、单选按钮、滚动窗口等等,所以必不可少的当然是不少的监听器与对应的实现方法。
(二)系统设计:1.基本数据:Class—Grade : String—major : String—classname : String—Student : Student+getGrade() : String+getStudent() : Student+getClassname() : String+getMajor() : String+setGrade(Grade : String) : void+setClassname(classname : String) : void +setMajor(major : String) : voidStudent—StudentID : String—StudentName : String—Course : Course—couseMark : double+getCourse() : Course+getCouseMark () : double+getStudentID () : String+getStudentName () : String+setCouseMark (couseMark : double) : void+setStudentID (StudentID : String) : void+setStudentName (StudentName : String) : voidCourse—coureNumber : String—courseName : String—coureScore : double—courseHour : double+getCoureNumber () : String+getCoureScore () : double+getCourseHour () : double+getCourseName () : String+setCoureNumber (coureNumber : String) : void +setCoureScore (coureScore: double) : void+setCourseHour (courseHour: double) : void+setCourseName(courseName : String) : voidjava.io.Serializable2.主要方法实现及其他类(总共有20个,简单罗列5个):AnalysisExamination +readFile() : voidAnalysisGUI2—jbtStatistical : JButton —jbtMarkStep : JButton —jbtDrawPicture : JButtonDeleteGUI—DeleteGUI : JFrame —jrbStudentID : JRadioButton —jrbStudentName : JRadioButton —jrbClassName : JRadioButton —jtfText : JTextField —LbForShowMessage : JLabel —LB0 : JLabel—LB00 : JLabel (static) —jbtConfirm : JButton —jbtDelete : JButton —jchkBold : JCheckBox —jchkItalic : JCheckBox —jrbRed : JRadioButton —jrbBlue : JRadioButton —jrbBlack : JRadioButton —ClassForSelect : Class[] (static) —countForSelect : int (static)DeleteGUI2—DeleteGUI2 : JFrame—jtfSetNumber : JTextField—jlbSetNumber : JLabel—jlbSetNumber2 : JLabel—jbtConfirm : JButton—GetNumber : intDrawHistogramGUI—useForDrawing : JFrame—Mark : int[]—Grade : String—Major : String—ClassName : String—count : intJFrame(三)系统实现:1.显示全部信息:利用窗口进行显示,而该窗口由菜单栏、滚动窗口、单选按钮和复选按钮组成。
菜单栏用于选择按条件显示,滚动窗口则用于显示相关信息,单选按钮则用于选择字体颜色,复选按钮则用于选择字体是否加粗或者倾斜。
而显示内容则用标签存放每个学生的相关信息,则每条信息都用十个标签来显示。
2.输入基本信息:当鼠标点击输入基本信息按钮时,则弹出一个窗口让用户进行输入。
当满足一切条件后则创建一个新的Class对象来存放该条信息;如果有某个条件不满足,则停留在输入窗口,让用户进行修改。
3.输入成绩:一开始创建基本信息时候,分数是默认为-1的,所以当用户指定年级、班名、专业、课程名称后,系统则会显示满足条件的所有学生的信息,然后让用户进行分数的输入,如果输入的内容满足条件则把分数存入对象中,否则提示错误,让用户重新输入。
4.信息管理:(I)。
修改信息:当点击修改信息按钮,会弹出一个窗口。
除了选择修改的条件的单选按钮,窗口所有按钮一开始都是不可用的。
但选择完条件后,输入文本框、提示的标签与提交的确定按钮则会开启,让用户输入数据。
输入完数据后,中间的滚动窗口则会显示出相应的信息,并且对于字体相关显示属性的按钮也会开启,确认修改按钮同时也开启。
当点击进行修改按钮后,会弹出一个窗口,让用户输入要修改的信息,然后在选择修改什么内容,然后相应的文本框与提示标签也开启,当满足一切条件后,则会将用户输入的修改的内容写入记录中,并且把修改后的内容及时显示在记录板上。
(II)。
删除信息:与修改信息基本一样。
5.按条件进行排序:当点击此按钮,则弹出一个窗口。
此窗口是显示窗口的“强化”,只是在左下角添加了选择排序的条件的单选按钮而已,但选择完条件后,系统将排序后的结果显示在中间的滚动窗口中。
6.成绩查询:当用户点击了此按钮,则弹出一个窗口,让用户输入学生的学号和课程的名称,然后系统进行搜索,如果搜索到则在该窗口显示相应的成绩,否则就弹出提示窗口。
7.成绩分析:当点击此按钮后,则弹出窗口让用户输入年级、班级、专业、课程名称,如果找到记录则再弹出一个窗口,让用户选择成绩分析的功能。
当点击显示对应的按钮则弹出相应的提示。
当点击了绘图按钮,则会继续询问用户要绘制柱状图还是圆饼图,然后画出相应的图案。
8.保存数据到文件:点击此按钮时,系统就会将数据序列化,然后以对象的形式写入文件当中。
9.数字时钟:数字时钟是默认打开的,当用户关闭了后,可以按此按钮进行打开。
若在打开状态继续按此按钮,则会提示相应的提示,告诉用户时钟已经打开了,不需要再次打开。
(四)系统测试:1.自动读取文件:(I)文件不存在或者文件里面没有信息时候:(II)文件读取成功:2.主界面:3.显示所有信息:4.基本数据输入:5.成绩输入:6.信息管理:7.修改信息、删除信息的主窗口:8.修改信息、删除信息的子窗口:9.按条件排序:10.成绩查询:11.成绩分析:12.成绩分析子窗口:13.绘制柱状图:14.圆饼图:(五)实验总结:这次综合实验可以说受益良多。
因为不仅仅能够把这学期老师上课讲到的所有内容都运用、操作一遍,另外还能让我了解到更多的额外内容。
这个小小的、算是简单的程序,运用到了类的概念、继承的运用,以及图形用户界面的简单实用,还有绘制图画的简单操作。
我真是感谢这次实验,原本我对绘制图片一点概念都没有,对画图一律不懂,不知道从何入手。
但是经过这次实验后,我对绘图有了进一步的了解,现在对于绘图并不感到害怕。
其实画图几乎都是一样的,都是使用直线,圆,矩形,扇形,多边形等等来构造出一幅比较复杂的图片。
所以说,只要你明白了画图的基本原理,以及对绘图这个类有一定的了解,那么你就基本能绘出一幅漂亮的图片。
这次综合实验,按照题目意思,我是用了所推荐的GUI来实现本系统。
老师上课讲的窗口事件、按钮事件等我都用到了,但是在做的时候,我发现只用上那些是远远不够的。
就是因为这样,我就自己学了另外的一些内容,包括滚动窗口的使用,菜单栏与菜单子选项,单选按钮,复选按钮,列表框等等的使用。
所以通过这次实验,我学到了更多知识,这样为下学期的课程设计提供了良好的基础。