《高级Java编程技术》课程实验报告
院(系)名称:计算机学院专业班级:09计科 3 班
学号:姓名:
实验题目:实验10继承与多态
实验日期:2011/11/29实验(上机)学时:2
一、实验内容、要求
1.实验内容:计算课程成绩
2.要求:
编写应用程序,读入以下风格的文本文件,并显示最后的课程成绩,根据列出的公式,对于本科生和研究生,课程成绩的计算方法不同。
输入的文本格式如下:
(1)用单独的一行表示一个学生的信息。
(2)每行使用下面的格式:
<Type><Name> <Test1> <Test2> <Test3>
其中,<Type>指明学生是研究生,还是本科生;<Name>指明学
生的姓和名;<Testi>指明是第i次测试成绩。
(3)“END”指明输入的结束。
字母的大小写不重要。
公式如下:
学生类型评分方案
本科生通过,如果(test1+test2+test3)/3>=70
研究生通过,如果(test1+test2+test3)/3>=80
实现一个类完成以下功能:
(1)读入输入文本文件。
(2)计算课程成绩。
(3)输出结果。
我们将用五个增量步骤开发此程序:
(1)以程序结构开始,定义ComputeGrades类的框架。
(2)实现printResult方法,定义实现printResult所必需的任何其他方法。
(3)实现computerGrades方法,定义实现computerGrades所必需的任何其他方法。
(4)实现readDate方法,定义实现readDate所必需的任何其他方
法。
(5)最后完成并改进。
二、所采用的数据结构
如:线性表,二叉树,树,图等。
你在此用到了啥样的数据结构就写啥。
无数据结构。
三、实验的主要模块(或函数)及其功能
函数分块及各块主要功能的文字描述
ComputGrades类:这是本程序的主类,且是MainWindow的子类。
MainWindows本身是Jframe的子类,并且又将其自身放在屏幕中间的功能。
ComputGrades类包含的方法如下:
1、构造方法。
生成任意大小的数组,让程序员在构造方法中传递数组的
大小,不在构造方法中生成数组。
2、printResult方法。
将学生信息机计算出来的成绩输出到OutputBox
对象。
private void printResult()
3、conputeGrade方法。
扫描Student对象数组,并计算课程成绩。
private void computeGrade()
4、readData方法。
打开文本文件,并从中读取数据,从输入数据生成
Student对象的数组。
如果此操作成功,则返回true。
private boolean readData()
5、processDate方法。
显示自身,并执行三个主要任务。
public void processData()
6、buildRoster方法。
每次从指定的文件读取一行数据,对于每行数据,
生成一个相应的学生对象。
如果行中的数据与指定的格式不相符,则忽略此行。
private boolean buildRoster(String filename)
7、createStudent方法。
如果输入行中的类型是U或G,则通过调用
newStudentWithData方法生成学生对象。
如果成功,则返回生成的学生,否则,返回unll。
private Student createStudent(String line)
8、newStudentWithData 方法。
通过重复调用StringTokenizer 对象的
nextToken 方法,该方法生成UndergraduateStudent 或GraduateStudent 对象,并将对象赋给此对象。
四、主要模块(或函数)的算法思想和程序框图
上面三中的各块的具体算法实现文字描述或框图。
ComputeGrades 的程序图:
五、程序运行时的输入数据(随机产生的数据要求输出显示),输出结果
1、(1)打开保存有学生成绩信息的文件,此文件所有行的格式都正确:
MainWindow OutputBox ComputeGrades Gradute UnderGradute
没有显示 系统类
(2)输出结果:
2、(1)打开保存有学生成绩信息的文件,此文件某些行的格式不正确,例如:第四行的Mary Hin和Mick Taylor的格式有错,缺少一次成绩:
(2)程序的处理结果将会把格式有错的两行忽略掉,输出结果为:。