1. 程式人生 > 其它 >中小學數學卷子自動生成程式--分析隊友程式碼

中小學數學卷子自動生成程式--分析隊友程式碼

一、主要內容

學習本專案中隊友的程式碼,分析對方程式碼優缺點。

二、專案要求

1. 命令列輸入使用者名稱和密碼,兩者之間用空格隔開(程式預設小學、初中和高中各三個賬號,具體見附表),如果使用者名稱和密碼都正確,將根據賬戶型別顯示“當前選擇為XX出題”,XX為小學、初中和高中三個選項中的一個。否則提示“請輸入正確的使用者名稱、密碼”,重新輸入使用者名稱、密碼;

  2. 登入後,系統提示“準備生成XX數學題目,請輸入生成題目數量(輸入-1將退出當前使用者,重新登入):”,XX為小學、初中和高中三個選項中的一個,使用者輸入所需出的卷子的題目數量,系統預設將根據賬號型別進行出題。每道題目的運算元在1-5個之間,運算元取值範圍為1-100;

  3. 題目數量的有效輸入範圍是“10-30”(含10,30,或-1退出登入),程式根據輸入的題目數量生成符合小學、初中和高中難度的題目的卷子(具體要求見附表)。同一個老師的卷子中的題目不能與以前的已生成的卷子中的題目重複(以指定資料夾下存在的檔案為準,見5);

  4. 在登入狀態下,如果使用者需要切換型別選項,命令列輸入“切換為XX”,XX為小學、初中和高中三個選項中的一個,輸入項不符合要求時,程式控制臺提示“請輸入小學、初中和高中三個選項中的一個”;輸入正確後,顯示“”系統提示“準備生成XX數學題目,請輸入生成題目數量”,使用者輸入所需出的卷子的題目數量,系統新設定的型別進行出題;

  5. 生成的題目將以“年-月-日-時-分-秒.txt”的形式儲存,每個賬號一個資料夾。每道題目有題號,每題之間空一行;

附表-1:賬戶、密碼

附表-2:小學、初中、高中題目難度要求

三、結果測試

四、隊友程式碼結構分析

隊友寫了三個檔案,定義了三個類,通過對類物件的呼叫實現各種功能(不完全截圖);

五、優缺點分析

優點:

1、隊友的程式碼功能齊全,執行出來的介面很清晰,每一步的命令列提示都很清晰;還有額外功能比如註冊新使用者等,對使用者十分友好;

2、編碼格式規範,比如變數名稱可以很清晰地瞭解該變數的含義,同時採用大小寫混合的方式,相對於以前所用abc的變數命名,更有利開發的順利進行,在今後的工程實踐中應該增加自己程式碼的可讀性,否則將會增加後期程式碼維護人員的工作量,導致工程效率的降低。這方面我一定要想他學習,我的程式碼最大的缺點就是不甚規範。

3、方法的呼叫層層遞進,邏輯性很強,使得方法的編寫更加簡潔,易懂,同時提高了程式碼的重用性,而不是像我一樣在函式中編寫了很多重複程式碼,使得工作量大大增加;比如main方法中只調用了showMenu方法,但是在showMenu方法中,隊友通過呼叫其他的方法來實現對所有功能。

4、擴充套件性較強,在原有程式碼的基礎上進行註冊使用者,增加新功能等都十分方便。

5、對java方法的熟練度很高,還有連結串列相關知識運用很熟練,比如將歷史題目用字串的連結串列儲存,從而實現查重的功能,相對來說,我用C++寫的程式碼就沒有這麼多C++庫函式的使用,增加了部分工作量。

缺點:

1、對於生成的檔案儲存路徑最好有提示,否則尋找起來有些不方便,對於程式設計師來說,或許可以理解生成檔案在原始碼目錄下,但是對於使用者來說,檔案路徑的提示會更加清晰明瞭。

2、對於註釋方面,隊友只寫了一部分方法功能的提示,對於變數的宣告定義沒有做出說明,這樣其他人在閱讀時就需要牢記每個變數的含義,在他人對程式碼進行維護時,會產生過多的理解時間,有效的程式碼註釋可以幫助後期維護人員更好理解作者思路,提高工程的效率。

3、對於變數名方面,雖然上面有一部分變數的命名很規範,但是在少量地方使用了變數含義的縮寫,這樣雖然給開發人員減少了一部分工作量,但是在後期維護和其他開發人員拓展方面帶來不少困難。

六、總結心得

這次個人專案程式設計給我帶來了很多收穫,首先在分析了隊友的程式碼之後,意識到自己程式碼的很多缺點,比如說C++編碼格式不規範;以及在程式碼中過多使用了條件語句的判斷,這使得專案工作量增加很多,而且函式中有很多重複的程式碼,程式碼過於冗雜,對後期開發人員讀程式碼造成了一定的困難;以及自己面向物件的思想與邏輯沒有那麼熟練。同時,我也得到了一定的實踐經驗,從需求分析到設計開發,到測試執行,都是自己一個人完成,在獲得成就感的同時,也接受著一個不規範程式設計的後果,有好的設計經驗,也有壞的心路體會。在接下來的結對程式設計中,我要做的就應該是提高自己的面向物件的思維與能力,增強團隊協作能力,在實踐中不斷學習,鞏固,提高,共同開發出功能齊全,效能優良的專案。