一、前言:
-
第四次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分。