结对编程前对队友程序的分析与对比总结
生活随笔
收集整理的這篇文章主要介紹了
结对编程前对队友程序的分析与对比总结
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
- 1. 項目需求
- 1.1 項目名稱
- 1.2 用戶
- 1.3 功能
- 2. 對隊友程序的分析
- 2.1 主要流程分析
- 2.2 主要函數分析
- 2.3 優點
- 2.4 缺點
- 3. 與自己的程序比較
- 4. 個人項目總結
- 4.1 收獲
- 4.2 總結
1. 項目需求
1.1 項目名稱
中小學數學卷子自動生成程序
1.2 用戶
小學、初中、高中老師
1.3 功能
(1)附表1–用戶名及密碼
(2)附表2–小學、初中、高中題目難度要求
2. 對隊友程序的分析
2.1 主要流程分析
2.2 主要函數分析
(1)參數:無。
(2)功能:顯示主菜單,進行操作選項的選擇 0-退出 1-登陸。
(3)實現:輸出提示+接收選項命令后使用if-else語句進行判斷。
(4)調用函數:無。
(1)參數:無。
(2)功能:接收由鍵盤輸入的用戶名和密碼信息。
(3)實現:接收一個字符串(用戶名+一個空格+密碼)。
(4)調用函數:check_userright(login_username, login_password)檢查用戶名和密碼是否正確。
(1)參數:String x–輸入的用戶名;String y–輸入的密碼。
(2)功能:將傳入的用戶名和密碼與設置好的9個用戶名進行比對,如果和其中的一個相同則進入下一個登錄界面,進行產生題目數量的合理性檢查;如果和9個設置好的用戶名均不相同,則需要重新輸入。
(3)實現:在一個for循環中,調用user[i].checkmessage函數,如果用戶名和密碼均相同,則調用menu2函數,進行下一個功能,同時將難度等級作為menu2的參數傳入;如果均不相同,則調用login,從新輸入用戶名和密碼。
(4)調用函數:user[i].checkmessage獲取已設置好的9個用戶名和密碼;menu2進入下一個功能;login再次輸入用戶名和密碼;getLevel返回難度等級(小學、初中、高中)。
(1)參數:String x–用戶名;String y–難度等級(小學、初中、高中)。
(2)功能:第二界面菜單,進行產生題目數量合理性檢查
(3)實現:首先選擇是切換卷子類型還是直接出題:如果切換卷子類型,則重新設置難度參數;輸入題目數量時如果輸入-1,則調用menu函數,返回到最初的主界面菜單;如果輸入[10,30]則調用display函數,進行出題;如果輸入超出前兩個范圍,則重新輸入。
(4)調用函數:menu返回最初登陸界面;display進行出題。
(1)參數:String username–用戶名;String level–難度等級(小學、初中、高中);int paper_num–題目數量。
(2)功能:重復操作出題步驟和切換難度步驟。
(3)實現:輸入題目數量具體判斷和menu2中相同。
(4)調用函數:無。
(1)參數:String x–輸入的難度等級(小學、初中、高中)。
(2)功能:接收傳入的難度參數,根據難度獲取卷子。
(3)實現:根據難度等級的不同,調用不同的獲取試卷函數:小學paper_create_p(x);初中paper_create_m(x);高中paper_create_s(x)。
(4)調用函數:paper_create_p(x)小學難度試卷;paper_create_m(x)初中難度試卷;paper_create_s(x)高中難度試卷。
(1)參數:String x–難度(小學、初中、高中)。
(2)功能:出一張試卷。
(3)實現:調用小學難度出題函數Q_create_p(x)。
(4)調用函數:Q_create_p(x)小學難度出題。
(1)參數:String x–難度(小學、初中、高中)。
(2)功能:出一張試卷。
(3)實現:調用初中難度出題函數Q_create_m(x)。
(4)調用函數:Q_create_m(x)初中難度出題。
(1)參數:String x–難度(小學、初中、高中)。
(2)功能:出一張試卷。
(3)實現:調用高中難度出題函數Q_create_s(x)。
(4)調用函數:Q_create_s(x)高中難度出題。
(1)參數:String username–用戶名;String level–難度(小學、初中、高中);int paper_num–出題數量)。
(2)功能:在對應用戶的文件夾下產生一張試卷(含查重)。
(3)實現:獲取時間作為文件名稱;創建對應名稱文件夾;調用paper_level函數隨機生成一張試卷;查重:獲取文件夾下每一個文件的名稱,進入每一個文件獲取每一行題目和剛剛生成的題目進行對比(不含題號),如果重復則重新生成一道題目,如果均沒有重復則寫入文件中;此過程重復9次(張三1、2、3,李四1、2、3,王五1、2、3)。在創建完試卷后判斷下一步的功能:重新登陸(調用menu函數)或者繼續生成試卷(調用menu3函數)。
(4)調用函數:paper_level根據等級產生試卷;menu重新接受登陸的用戶名和密碼;menu3再次生成試卷。
(1)參數:String x–難度(小學、初中、高中),int y --運算符的數量。
(2)功能:向題目中合適的位置添加括號。
(3)實現:記下所有可能的左右括號的位置隨機添加并檢查合理性。
(4)調用函數:無。
(1)參數:String x–難度(小學、初中、高中)。
(2)功能:隨機生成一道小學難度的題目。
(3)實現:隨機生成運算符的數量(題目的額長度);每次隨機生成一個操作數并一個運算符(存在一個數組中),將每次生成的內容寫入一個字符串中形成一個題目;最后調用add_bracket進行括號的添加。
(4)調用函數:add_bracket添加括號。
(1)參數:String x–難度(小學、初中、高中)。
(2)功能:隨機生成一道初中難度的題目。
(3)實現:隨機生成運算符的數量(題目的額長度);每次隨機生成一個操作數并一個運算符(存在一個數組中),將每次生成的內容寫入一個字符串中形成一個題目;調用add_bracket進行括號的添加;判斷根號和平方的位置,如果不合理進行相應的調整。
(4)調用函數:add_bracket添加括號。
(1)參數:String x–難度(小學、初中、高中)。
(2)功能:隨機生成一道高中難度的題目。
(3)實現:隨機生成運算符的數量(題目的額長度);每次隨機生成一個操作數并一個運算符(存在一個數組中),將每次生成的內容寫入一個字符串中形成一個題目;調用add_bracket進行括號的添加;判斷根號和平方的位置,如果不合理進行相應的調整;判斷sin cos tan的位置,如果不合理進行相應的調整。
(4)調用函數:add_bracket添加括號。
2.3 優點
將一些普遍性的功能進行了函數的封裝(添加括號,菜單界面等),減少了一些代碼的重復,使代碼的長度減少,減輕了代碼的贅余。
用戶名和密碼等信息不能直接獲取,需要用特定的函數返回才可以獲取,保證了信息的安全性。
設置了美觀的菜單界面,用戶登陸系統后每次輸入前都會有文字提示輸入的內容和格式,還可以在功能中進行選擇,體驗感良好。
2.4 缺點
雖然對一些功能進行了封裝,但是還有一些功能也可以封裝成一個函數,比如在初中難度出題時可以在調用已有的小學難度出題函數的基礎上增加初中難度的要求,同理,在高中難度出題時可以調用初中函數并增加高中的難度要求,這樣可以使代碼更加剪短,閱讀更加方便。
一些函數的參數為x、y這樣的隨意字母,閱讀起來很不直觀,不能直接獲得此參數的用途和功能等有效信息。
3. 與自己的程序比較
我們都是用的Java,很多功能的思考方式都相同(查重、創建文件、設置用戶名和密碼信息、將信息設置為私有只能通過函數調用等),但是我的程序中沒有添加菜單界面,只有每次輸入前的提示,在用戶體驗感方面需要加強。我們有相同的問題都是代碼過長,封裝性不夠高,導致程序閱讀起來很困難,這一點在結對編程時希望我們可以共同努力。
4. 個人項目總結
4.1 收獲
4.2 總結
這次的個人項目讓我真切的感受到了“做中學”的含義,在做項目前我會的只是Java這門語言的簡單編程規則,在項目進行的過程中,我不斷被需要的技術卡住,每次都需要停下來學一學相關的知識技能,然后繼續編程。在這次個人項目中,我的能力得到了很快的提升,我已經可以基本適應這種“一遍做一遍學,學完立刻做”的模式,讓我對接下來要進行的結對編程和團隊項目有了一些信心,希望我可以在后面的項目中可以更快更好提升自己,掌握更多知識技能!
總結
以上是生活随笔為你收集整理的结对编程前对队友程序的分析与对比总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一些常用的gcc指令(持续更新)
- 下一篇: PerfLab(直接在服务器上完成)