南昌空大學第一次PTA小結blog

搞笑的啊發表於2024-04-21

不相同與上學期的C語言,java在物件導向與程序導向,安全性與垃圾回收,跨平臺性,速度與效率,應用領域,語法特性等方面存在顯著的差異,而且java也是我們軟體工程以後所使用的基礎,接下來我分享第一次作業的總結。
本次作業分為以下部分:
(1)總結三次題目集的知識點、題量、難度等情況。

(2)設計與分析:重點對題目的提交原始碼進行分析。

(3)採坑心得:對原始碼的提交過程中出現的問題及心得進行總結。

(4)改進建議:對相應題目的編碼改進給出自己的見解,做到可持續改進。

(5)總結:對本階段三次題目集的綜合性總結,學到了什麼,哪些地方需要進一步學習及研究。

1.三次作業的內容:
第一次作業的要求模擬場景:
1)單張試卷的資訊處理
2)詳細內容:輸入試卷中試題的資訊(編號、題目、標準答案)
輸出試題每一題的答題資訊以及最後每一題的判題結果。

第二次的作業要求模擬場景:
1)多張試卷、多張答卷的資訊處理
2)詳細內容:
輸入試題的資訊(編號、題目、標準答案)、試卷引用資訊(試卷號、引用的題目
號-分值)、答卷資訊(試卷號、答案)
輸出試題每一題的答題、判題資訊以及最後每一題的判分結果、總分

第三次的作業的要求模擬場景:
1)多張試卷、多張答卷的資訊處理,
新增:學生資訊、刪除題目資訊以及多種異常輸入的監測,如答案為空字元、僅
有學生資訊沒有答案內容的空白卷、試卷引用、試題引用錯誤等。
2)詳細內容:
輸入試題的資訊(編號、題目、標準答案)、試卷引用資訊(試卷號、引用的題目
號-分值)、答卷資訊(試卷號、答案)、學生資訊(學號、姓名)、刪除題目資訊(題
號)
輸出試題每一題的答題、判題資訊以及最後每一題的判分結果、總分。輸入中出現
各類錯誤時輸出對應錯誤資訊

2.三次作業的設計與分析:
第一次作業:
1)題目類(Question):用於儲存一道題目的資訊以及處理的方法。

題目類(用於封裝單個題目的資訊):
屬性:題目編號、題目內容、標準答案-standardAnswer
方法:資料讀寫set\get方法、
判題方法(答案-answer):判斷答案-answer是否符合標準答案-standardAnswer

2)試卷類(TestPaper):儲存和處理一張試卷的資訊以及處理的方法。

試卷類(用於封裝整套題目的資訊)
屬性:題目列表(題目類的物件集合)、題目數量
方法:判題方法(題號-num、答案-answer):判斷答案-answer是否符合對應題號的題目標準答案-standardAnswer
儲存題目(題號-num、題目-question):將題目儲存到題目列表中,儲存位置與num要能對應

3)答卷類(AnswerPaper):儲存和處理一張答卷的資訊以及處理的方法。

答卷類(用於封裝答題資訊)
屬性:試卷(試卷類的物件)、答案列表(儲存每一題的答案)、判題列表(儲存每一題的判題結果true/false)
方法:判題方法(題號-num):判斷答案列表中第num題的結果是否符合試卷中對應題號的題目標準答案
輸出方法(題號-num):按照題目的格式要求,輸出題號為num的題目的內容和答題結果。
儲存一個答案(題號-num,答案-answer):儲存題號為num的題目的答題結果answer。

第一次的思路比較簡單,在類中加入了輸入,輸出以及儲存和判斷的方法,然後在主函式中是從鍵盤中獲取題目資訊,再儲存相關資訊,最後根據條件按不同方式輸出結果就行了。

第二次作業:
1)題目類(Question):用於儲存一道題目的資訊以及處理的方法。

題目類(用於封裝單個題目的資訊):
屬性:題目編號、題目內容、標準答案-standardAnswer
方法:資料讀寫set\get方法、
判題方法(答案-answer):判斷答案-answer是否符合標準答案-standardAnswer

2)試卷類(TestPaper):儲存和處理一張試卷的資訊以及處理的方法。

試卷類(用於封裝整套題目的資訊)
屬性:題目列表(題目類的物件集合)、題目數量,題目總分,試卷題號列表
方法:判題方法(題號-num、答案-answer):判斷答案-answer是否符合對應題號的題目標準答案-standardAnswer
儲存題目(題號-num、題目-question):將題目儲存到題目列表中,儲存位置與num要能對應;HashMap介面,key為題目編號,value為題目分值;題目總分值的計算。;獲得總分。

3)答卷類(AnswerPaper):儲存和處理一張答卷的資訊以及處理的方法。

答卷類(用於封裝答題資訊)
屬性:試卷(試卷類的物件)、答案列表(儲存每一題的答案)
方法:判題方法(題號-num):判斷答案列表中第num題的結果是否符合試卷中對應題號的題目標準答案,判斷答案順序是否與試卷答案相同。
輸出方法(題號-num):按照題目的格式要求,輸出題號為num的題目的內容和答題結果。
儲存一個答案(題號-num,答案-answer):儲存題號為num的題目的答題結果answer。

第二次作業在第一次的基礎上之上新增了判斷總分資訊,判分結果,題目答案資訊是否少於試卷標題數量,試卷號是否錯誤。並且我需要逐個逐個的分析輸入資訊,然後處理該字串,並儲存。然後再根據題目的判斷要求來輸出資訊。輸出較於第一次作業的話就是多了個總分判斷。

第三次作業:
1)題目類(Question):用於儲存一道題目的資訊以及處理的方法。(與系列 1 相同,無變化)

題目類(用於封裝單個題目的資訊):
屬性:題目編號、題目內容、標準答案-standardAnswer,題目對應的答案列表
方法:資料讀寫set\get方法、
判題方法(答案-answer):判斷答案-answer是否符合標準答案-standardAnswer;判斷是否為有效題目

2)試卷類(TestPaper):儲存和處理一張試卷的資訊以及處理的方法。

試卷類(用於封裝整套題目的資訊)
屬性:題目列表(題目類的物件集合)、題目數量,題目總分,試卷題號列表
方法:判題方法(題號-num、答案-answer):判斷答案-answer是否符合對應題號的題目標準答案-standardAnswer
儲存題目(題號-num、題目-question):將題目儲存到題目列表中,儲存位置與num要能對應;HashMap介面,key為題目編號,value為題目分值;題目總分值的計算。;獲得總分。

3)答卷類(AnswerPaper):儲存和處理一張答卷的資訊以及處理的方法。

答卷類(用於封裝答題資訊)
屬性:試卷(試卷類的物件)、答案列表(儲存每一題的答案),學生學號,答卷的試卷列表
方法:判題方法(題號-num):判斷答案列表中第num題的結果是否符合試卷中對應題號的題目標準答案,判斷答案順序是否與試卷答案相同。
輸出方法(題號-num):按照題目的格式要求,輸出題號為num的題目的內容和答題結果。
儲存一個答案(題號-num,答案-answer):儲存題號為num的題目的答題結果answer。

4)學生類(Student):儲存和處理一個學生的資訊

學生類(用與封裝學生資訊)
屬性:學生姓名,學生學號
方法:sette/getter方法

5)刪除類(Delete):儲存和處理一個刪除題目的資訊

刪除類(用於封裝刪除題目資訊)
屬性:刪除題目號
方法:setter/getter方法

6)試卷題目類(Question_Paper):用於儲存試卷中的題目資訊。由於試卷中的題目序號與題
目本身的題號不一致。且題目在不同試卷中的分值可能不一樣,因此,設計試卷題目類。

試卷類(用於封裝試卷題目資訊)
屬性:題目順序號,題目(題目類的物件),題目分值
方法:判斷題目是否得分。

7)答案類(Answer):用於儲存答卷中一道答案的資訊。

答案類(用於封裝答案資訊)
屬性:試卷題目(試卷題目類的物件),答案
方法:判斷每一道題的正確性,判斷每一道題的得分,計算總分,判斷答案對應的題目是否失效

8)合法類(Valid):用於判斷輸入是否合法

合法類:(用於封裝輸入資訊)
屬性:字串
方法:用正規表示式判斷輸入的資訊是否合法。

第三次作業因為沒有嚴格按照單一職責原則,只設定了題目類,試卷類,答案類,學生類,刪除類,導致在主函式中的判斷方法有很多,進行判斷時還要重新一個個的去呼叫方法,導致一個判斷裡面有好多括號,很長,自己有時候也會看花眼,等下次作業重新設計,嚴格遵循單一職責原則。

3.踩坑心得:
1.在處理字串時下標值沒有處理好,導致執行時出現一開始沒有仔細去解讀題目資訊,沒有嚴格按照題目資訊輸出,導致一開始的結構設計出現了問題,然後後面寫完之後又要重新回去修改,浪費了很多時間。

2.在處理字串時下標值沒有處理好,導致執行時出現索引越界                  

3.類設計要合理,這樣可以避免程式碼的不斷地複用。儘量實現一個類一個功能。

4.改進建議:
不能只設定簡單的幾個類,而是要根據題目資訊按照單一職責原則來設計,不能在全部一股腦的放進主函式中,而是要在類設計中就有處理方法和判斷方法。

5.總結:
從這三次作業中我學習到了類與類之間的關係,java裡的單一職責原則,開閉原則,迪米特法則,也認識到了大學該如何去學,不能再和之前一樣想要等老師慢慢領著走。
這三次的作業我完成的都不是很好,因為之前沒有接觸過這門語言,然後很多知識點都要自己透過網路去自主學習,但是之前的學習經歷都是跟著老師按部就班地走,所有很多知識點學了之後不知道該如何運用到實踐中去,自己也練習的不夠,一看到作業就怕,就像老師上課講的鴕鳥一樣,去逃避,而不是去想辦法去克服和解決。前面沒有完成好,沒學紮實,但是後面的題目又是在之前的基礎上擴充套件,這就導致後面越學就越困難,這是個惡性迴圈啊,吐了。
作業模式和上課感覺都挺好的,老師講的也還不錯,不會像一些老師一樣上課很枯燥,沒學好的原因主要還是自己的問題,沒有去踏實的解決問題。下次一定要把完成度提上來,做得更好。

相關文章