一、前言:
-
第四次pta作业:
1.知识点:考察类的继承,抽象类的使用。
2.题量:3道简单题,1道迭代难题。
3.难度:这次最后一道题在上次的基础上添加了题目的种类( eg: 选择题、填空题 )等,难度增加的还行,不算太难也不算太容易。 -
第五次pta作业:
1.知识点:考察类实现Comparable接口,重写compareTo方法。类的属性基本计算。
2.题量:3道简单题,1道迭代难题。
3.难度:这次最后一道题在上次的基础上添加了多张试卷和答卷。在第一次的基础上难度增加的不算太大。 -
第三次pta作业:
1.知识点:类的封装性,日期类的基本使用,类间关系的设计。
2.题量:2道简单题,1道迭代的难题。
3.难度:感觉最后一题这次难度在第二次作业上大幅加大。
二、设计分析
- 第一次pta作业:
1.Question 类:该类是一个抽象类,表示一个问题,包含的属性:
content (String):题目内容即题面;
kind (String):题目的种类、比如有选择题填空题等;
isValid (boolean):该题是否存在,在构造时初始化为true,如果该题被删除则改成false;
num (STring):该题目的编号,在试卷引用题目的时候用该题的编号;
standardAnswer(String):题目的标准答案,在判断题目的时候用来对比答案;
包含方法:
1.void disabled():该方法用来删除题目。
2.int judge(STring):该方法是抽象方法,继承给子类Override该方法,因为不同的题目有着不同的判题方法。
2.QuesitonK 类:该类好像表示是一个填空题,反正是一种题目,继承自Question类,没有自己特有的属性;方法就只有一个Override父类的judge方法。
3.QuesitonN 类:该类好像表示是一个计算题,反正是一种题目,继承自Question类,没有自己特有的属性;方法就只有一个Override父类的judge方法。
4.QuesitonZ 类:该类好像表示是一个选择题,反正是一种题目,继承自Question类,没有自己特有的属性;方法就只有一个Override父类的judge方法。
5.QuestionPaper类:该类表示一个试卷上的题目,包含的属性:
question (Question):该试卷题目的具体题目内容;
isValid (boolean):该题目是否在试卷上纯在,在构造时初始化为true,如果该题被删除则改成false;
score (int):该题目满分的分数;
num (String):该题目在试卷上的编号,也就是第几题;
该类包含的方法:
1.void disabled():该方法用来删除题目。
6.TestPaper 类:表示一张试卷,包含的属性:
isValid (boolean):该试卷是否存在,在构造时初始化为true,如果该题被删除则改成false;
testID (String):该试卷的编号,在学生引答题的时候用该试卷的编号;
sum (int):该试卷的总分;
questionAmount (int):该试卷的题目数量;
quetions (HashMap<String,QuestiongPaper> ):该试卷所包含的题目;
包含的方法:
1.void disable():该方法用来删除试卷。
2.void print()://该方法是调试时输出该试卷数据的方法,在该题目中并没什么用;
3.void addQuestion(Stirng, QuestionPaper):该方法用来给试卷添加题目,传入题目的编号和该题目,将其添加到试卷里;
7.Answer 类:该类表示一个回答,包含的属性:
question (QuestionPaper):表示该回答的问题;
answer (Stirng):表示该回答的具体回答内容;
mark (String):表示该回答的结果,有正确(true)、部分正确 (partially correct)、以及错误 (false);
score (int):表示该回答所获得的分数,根据mark的不同获得该问题不同的总分;
该类没有设计方法。
8.AnswerSheet 类:该类表示一个答卷,包含的属性:
studentID (String):表示回答该答卷的学生学号;
isValid (boolean):该回答是否存在,在构造时初始化为true,如果该题被删除则改成false;
testID (String):表示答卷所对应的试卷编号;
testPaper (TestPaper):表示表示答卷所对应的试卷;
包含的方法:
1.void addAnswer(String,Answer):该方法用来给答卷添加回答,传入回答的题目编号和该回答,将其添加到答卷中;
2.void disable():该方法用来删除答卷。
3.printQAs():输出该答卷的回答;
4.printScore():输出该答卷的分数;
5.compareTo(AnswerSheet):用来给答卷排序;
9.Student 类:表示一个学生,包含的属性:
name (Stirng):该学生的名字;
id (String):该学生的学号;
10.InputMatching 类:有许多的用来匹配输入的静态方法,具体方法可以在类图中了解。
11.ParseInput 类:该类用来将输入解析成具体实体类。
12.Main 类:用来输入输出,以及一个静态方法alterFullScore()用来判断一张试卷的满分是否是100分。