GIT地址 | https://github.com/Chengxiaoxi-299 |
GIT用戶名 | Chengxiaoxi-299 |
學號後五位 | 61404 |
博客地址 | https://www.cnblogs.com/chengxiao299 |
做業連接 | https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass1/homework/2793 |
一.項目背景git
阿超家裏的孩子上小學一年級了,這個暑假老師給家長們佈置了一個做業:家長天天要給孩子出一些合理的,但要有些難度的四則運算題目,而且家長要對孩子的做業打分記錄。程序員
做爲程序員的阿超心想,既然天天都須要出題,那何不作一個能夠自動生成小學四則運算題目與解決題目的命令行 「軟件」呢。他把老師的話翻譯一下,就造成了這個軟件的需求:github
n
道加減乘除(分別使用符號+-*/
來表示)練習題,每一個數字在 0
和 100
之間,運算符在 2
個 到 3
個之間。3÷5+2=2.6
這樣的算式。n
道練習題及其對應的正確答案輸出到一個文件 subject.txt
中。2、項目完成過程設計模式
1.配置環境dom
本項目使用 Visual Studio 2015 完成。函數
因之前完成過C#項目,且安裝過程當中無任何問題,已配置完成,這次直接使用未從新配置。性能
2.克隆項目單元測試
(本人在此以前已申請GitHub帳號,在此略過註冊過程;而且已安裝git,故安裝過程亦省略)測試
1.成功登錄後,拷貝這次項目中指定的班級倉庫https://github.com/Jupi4ter/AchaoCalculatorspa
2.拷貝成功
3.使用git拷貝項目到本地
3.代碼設計
1.程序接收一個命令行參數 n,而後隨機產生 n
道加減乘除(分別使用符號+-*/
來表示)練習題,每一個數字在 0
和 100
之間,運算符在 2
個 到 3
個之間。
1 //產生運算式 2 public static string MakeFormula() 3 { 4 5 string result = null; 6 Random random = new Random(); 7 8 int Number = (int)random.Next(0, 101); 9 int op_count = (int)random.Next(2, 4); 10 result += Number; 11 12 for (int i = 0; i < random.Next(2, 4); i++) 13 { 14 Number = (int)random.Next(0, 101); 15 op_count = (int)random.Next(0, 4); 16 result = result + Operator[op_count] + Number; 17 } 18 19 return result; 20 }
2.因爲阿超的孩子才上一年級,並不知道分數。因此軟件所出的練習題在運算過程當中不得出現非整數,好比不能出現 3÷5+2=2.6
這樣的算式。
1 //計算運算式 2 public static string Solve(string formula) 3 { 4 5 DataTable dt = new DataTable(); 6 object ob = null; 7 ob = dt.Compute(formula, ""); 8 9 while (ob.ToString().Contains(".") || formula.Contains("/0")) //判斷是否存在小數和除0操做 10 { 11 12 formula = MakeFormula(); 13 ob = dt.Compute(formula, ""); 14 } 15 while (Convert.ToInt32(ob) < 0 || ob.ToString().Contains(".")) //結果出現負數或小數,則從新生成 16 { 17 formula = MakeFormula(); 18 ob = dt.Compute(formula, ""); 19 } 20 return formula + "=" + ob.ToString(); 21 }
3.練習題生成好後,將生成的 n
道練習題及其對應的正確答案輸出到一個文件 subject.txt
中。
1 //保存至本地 2 try 3 { 4 StreamWriter sw = new StreamWriter(@"G:\subject.txt"); 5 sw.Write(finalResult); 6 sw.Close(); 7 } 8 catch 9 { 10 Console.WriteLine("Error saving text file!"); 11 }
4.單元測試
step 1 將全部類和函數的訪問修飾符改成 public;
step 2 在須要測試的位置右鍵建立單元測試
step 3 右鍵運行測試或從菜單欄中找到測試→運行全部測試
注意:單元測試設計多個測試用例測試最佳,單個用例經過並不能說明函數必定正確。
5.斷點
設置斷點: 在要設置斷點的行號旁用鼠標單擊一下出現下圖中的小紅點便可
單步運行:設置好斷點以後啓動Debug模式
設置監視:方法以下圖所示
條件斷點:設置方法以下圖
6.迴歸測試
迴歸測試是指修改了舊代碼後,從新進行測試以確認修改沒有引入新的錯誤或致使其餘代碼產生錯誤。自動迴歸測試將大幅下降系統測試、維護升級等階段的成本。
7.效能分析
點擊 IDE 頂部菜單欄中的 分析
,便可看到 性能探查器
。勾選CPU使用率
輸入較大的N,探查效果更佳
點擊 建立詳細的報告,以下圖
8.上傳代碼
step 1 使用 git add 和 git commit 命令對本地倉庫進行修改
step 2 使用 git push origin <branch> 命令上傳至遠程倉庫
step 3 登錄遠程倉庫,點擊 New pull request 按步驟經過申請
項目總結
在本次任務中
在代碼設計過程當中
初次分析需求後考慮使用棧實現,在後期實現過程當中認爲過於繁瑣後,採用瞭如今的設計思路完成了功能需求。屬於邊寫邊改模型,感覺到了該模型的缺點:效率低下,代碼混亂等。
在之後的項目中