結對項目
| 這個作業屬於哪個課程 | < 網工1934-軟件工程 > |
|---|---|
| 這個作業要求在哪里 | 作業要求 |
| 這個作業的目標 | 實現一個自動生成小學四則運算題目的命令行程序 |
隊員: 3119005398周晉軒 3119005369高子淇
本項目已上傳結對項目github
last更新:添加圖形化界面並生成.exe可執行文件
一、psp表格
| PSP | Personal Software Process Stages | 預估耗時(分鍾 | 實際耗時(分鍾) |
|---|---|---|---|
| Planning | 計划 | 30 | 20 |
| Estimate | 估計這個任務需要多少時間 | 30 | 10 |
| Development | 開發 | 1000 | 360 |
| Analysis | 需求分析(包括學習新技術) | 120 | 30 |
| Design Spec | 生成設計文檔 | 30 | 10 |
| Design Review | 設計復審 | 30 | 20 |
| Coding Standard | 代碼規范 (為目前的開發制定合適的規范) | 60 | 30 |
| Design | 具體設計 | 10 | 5 |
| Coding | 具體編碼 | 120 | 120 |
| Code Review | 代碼復審 | 20 | 5 |
| Test | 測試(自我測試,修改代碼,提交修改) | 60 | 30 |
| Reporting | 報告 | 30 | 40 |
| Test Repor | 測試報告 | 20 | 10 |
| Size Measurement | 計算工作量 | 10 | 10 |
| Postmortem & Process Improvement Plan | 事后總結, 並提出過程改進計划 | 30 | 15 |
| Total | 總計 | 2000 | 600 |
二、效能分析
生成題目答案模式下,要用到計算模塊生成答案;閱卷模式下,也要用到計算模塊檢查正誤。因此無論何種模式下cal()計算函數是最頻繁調用也是消耗最大的函數
生成題目和答案模式下的性能分析

閱卷模式下的性能分析

三、設計實現過程
核心思想
使用fractions*模塊將算式中的數字實例化並替換為Fraction類,保持分數運算、輸出、讀取。實際上是字符串替換和exce()*的運用
*fractions 模塊提供了分數類型的支持
*exec 執行儲存在字符串或文件中的 Python 語句
主要函數及作用
- cal()計算模塊
- getqst()生成題目
- getans()生成答案
- check()閱卷模塊


四、代碼說明
本程序將功能分為兩塊:生成模式和閱卷模式,命令行參數-n-r為生成模式,-e-a為閱卷模式

五、測試運行
命令行輸入展示
生成模式 main.py -n 10 -r 10
閱卷模式 main.py -e Exercises.txt -a Answers.txt

生成文件展示


本程序支持生成10000道題目的生成

項目小結
周晉軒:本次結對項目是本人為數不多合作開發的經歷之一,在這次結對項目中,我和隊友首先明確了項目主要結構和總體方向,然后在開發中積極討論和互相學習,相信我們都從合作中得到了許多經驗,感受到合作帶來的效率提升,經隊友指出也發現了各自在開發中的許多不足之處。雖然在合作過程中還是不可避免地走了不少彎路,但是我認為我們都在享受其過程和完成項目后的喜悅!
高子淇:這次項目一開始覺得很簡單,后來分工開始寫自己部分的時候,發現需要考慮問題非常多,尤其是符號處理和括號優先級。還有在處理減法非負的問題以及在除數位置上的減法非零問題都花了比較多的時間。兩個人合作完成度很高,基本上問題都在討論后得到了解決,學到了如何完成一個多人項目
