第二次做業-熟悉使用工具

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,而後隨機產生 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拷貝項目到本地

  • step 1 複製項目地址

  • step 2 使用Git命令軟件克隆到本地

 

  • step 3 打開文件夾,新建一個文件夾,命名爲本身的github用戶名

3.代碼設計


  •  step 1 新建項目文件

  • step 2 代碼分析設計

1.程序接收一個命令行參數 n,而後隨機產生 n 道加減乘除(分別使用符號+-*/來表示)練習題,每一個數字在 0 和 100 之間,運算符在 2 個 到 3 個之間。

  • 使用 Random類,產生隨機數;Random.Next()函數規定範圍
 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 這樣的算式。

  • 經過判斷操做字符串中是否含有「.」和」/0「來避免小數運算和除零異常;
  • 經過判斷結果是否小於零和是否存在」.「避免結果出現負數或小數。     
 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 按步驟經過申請

 

項目總結


 在本次任務中

  • 熟悉了git的基本操做
  • 瞭解了單元測試、迴歸測試、效能分析等基本功能

 在代碼設計過程當中

        初次分析需求後考慮使用棧實現,在後期實現過程當中認爲過於繁瑣後,採用瞭如今的設計思路完成了功能需求。屬於邊寫邊改模型,感覺到了該模型的缺點:效率低下,代碼混亂等。

在之後的項目中

  • 更加認真的分析項目需求,選擇較好的設計模式,避免邊寫邊改的狀況發生
  • 充分利用單元測試檢測代碼的可靠性
相關文章
相關標籤/搜索