湖南大學結對編程個人項目互評


一、簡介

本博客為對謝英褀同學(以下簡稱謝Sir)的個人項目代碼的互評

二、代碼結構分析

  • 代碼目錄:

個人項目是利用Java開發一個中小學數學卷子自動生成程序,整體設計到了登錄,切換登錄,出題,題目查重以及文件的讀寫。謝sir的代碼目錄結構如上所示,分為了三個模塊User,Login,以及Paper。

  • 代碼分模塊介紹:

User模塊:

User類是對用戶的抽象,有三個屬性:

type:該教師所屬的學校類型(小學/初中/高中) username:用戶名 password:密碼

Login模塊:

Login類用於實現用戶的登錄和模式切換操作

其中包含了:

Login無參構造函數:將9個默認賬戶添加至defaultAccounts數組

accountMatch函數:用於用戶名、密碼的正確性判斷並返回登陸匹配的User實例對象

loginByAccount函數:用於實現用戶的登錄操作並返回成功登錄的User實例對象

Menu函數:向用戶提供操作的菜單,方便用戶進行輸入的操作

 

 

Paper模塊:

Paper類實現生成題目到指定文件的操作,其中包含了所有的出題邏輯模塊和查重模塊,以及對文件的輸出寫入

由於代碼量過長,這里簡單描述一下模塊包含的函數及其功能:

checkDuplicate函數:通過HashSet,用於判斷某個題目是否已出現過

bracketsAdder函數:在生成好的式子里面隨即加入一對括號的操作

...(后續源碼請上謝Sir個人博客)

juniorOperatorsAdder函數:隨即添加平方、平方根

...

highOperatorsAdder函數:為傳入的題目在隨機位置添加sin、cos、tan

...

paperGenerator函數:生成試卷並打包文件的主要操作

...

三、代碼優缺點分析

  • 代碼優點分析

  1. 簡潔高效,在出題部分,采用了 小學題目生成——在小學題目上隨即加括號——在前提上隨即加高級運算符^2和√——在前提上隨即加sin,cos,tan。這樣每個模塊不用重復代碼也不用刻意抽象處無用的模塊函數,十分高效很明了,總代碼量在出題部分也只有200行左右,是我的一半(可惡,被他裝到了);

  2. 整體的設計很聰明,通過Menu生成整個命令行的操作界面供用戶閱讀和使用,在需要進行交互的時候調用函數完成功能實現,整體代碼閱讀觀感很符合邏輯,易讀性高;

  3. 模塊化的設計方便維護和檢索bug,十分適合雙人任務結對開發時邏輯復用;

  • 代碼缺點分析:

  1. 括號只能插入一對,沒有做到真正的數量隨機化,雖然簡化了代碼開發,但如果操作數要求高於5個並且隨機化時,只插入一對括號會讓式子變得比較簡單(我指的小學的,初高中那種沒人算得出來的);

  2. 操作界面提示不明顯:

    這一步之后用戶是既可以輸入“切換為小學/初中/高中”,也可以直接輸入題目數量如“26”的,這里不給提示會讓老師不知道在什么時候可以切換模式(雖然切換模式這個功能需求本來就有些奇怪)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM