借鑑文章:html
一.需求分析git
1.用戶畫像算法
用戶羣體:小學生數據結構
用戶特徵:年齡小、處於數學初級學習階段框架
用戶需求:獲取四則運算題目、答題、查看統計結果post
2.功能需求學習
1. 使用 -n 參數控制生成題目的個數,使用 -r 參數控制題目中數值(天然數、真分數和真分數分母)的範圍
2.每道題目中的運算符個數不超過3個
3. 題目和運算結果中若是出現假分數應用真分數表示
4.將生成的題目存入Exercise.txt,題目答案存入Answer.txt,用戶作題結果存入Grade.txt
5.程序支持1萬道題目的生成
6.對生成的題目進行查重測試
二.功能設計優化
基本功能:生成表達式、表達式查重、生成標準答案、提交答案、統計結果spa
拓展功能:輸入參數合法性檢測及錯誤提示、buttonclick快捷打開txt文件
高級功能:軟件圖形交互界面
三.設計實現
(部分代碼截圖)
1.生成表達式二叉樹:
構建二叉樹,將運算數放入葉子節點,運算符放入非葉子節點,遞歸生成表達式tree.getroot().s
2.生成標準答案:後序遍歷二叉樹生成四則運算表達式,並計算出答案tree.getroot().value
3.表達式查重:樹結構調整爲左子樹永遠比右子樹大,再依次比較樹的高度、運算符數量、樹的結構
4.將表達式、答案、統計結果分別存入Exercises.txt、Answers.txt、Grade.txt
5.假分數轉換成真分數:
四.測試結果
五.源代碼
項目地址:https://gitee.com/Linzhiyuan666/math.git
六.小結
本實驗加深了我對數據結構、編譯原理知識、面向對象思想的理解與掌握,在實驗過程當中也遇到了諸多問題,尤爲是如何作到準確且高效率地實現對10000道題目的查重,經過調整樹結構、優化查重算法最終解決了該問題。因爲對C#比較瞭解故採用.Net Framwork框架順便實現了軟件圖形交互界面,使其使用起來更加方便、體驗感更好,在設計圖形交互界面過程當中作了諸多體驗感的優化,如參數合法性檢測與錯誤提示、ButtonClick快捷打開txt文件、表達式與答案內容預覽的ListView、界面排版等,這些都加深了我對產品設計的理解與掌握。