世上無難事,只要肯攀登

Git地址 個人Git
Git用戶名 dwyy666
學號後五位 62307
博客地址 個人博客
做業連接 我的第2次做業:熟悉使用工具

做業背景簡介

    阿超家裏的孩子上小學一年級了,這個暑假老師給家長們佈置了一個做業:家長天天要給孩子出一些合理的,但要有些難度的四則運算題目,而且家長要對孩子的做業打分記錄。
  html

    做爲程序員的阿超心想,既然天天都須要出題,那何不作一個能夠自動生成小學四則運算題目與解決題目的命令行 「軟件」呢。他把老師的話翻譯一下,就造成了這個軟件的需求:java

    程序接收一個命令行參數 n,而後隨機產生 n 道加減乘除(分別使用符號+-*/來表示)練習題,每一個數字在 0 和 100 之間,運算符在 2 個 到 3 個之間。因爲阿超的孩子才上一年級,並不知道分數。因此軟件所出的練習題在運算過程當中不得出現非整數,好比不能出現 3÷5+2=2.6 這樣的算式。
  c++

    練習題生成好後,將生成的 n 道練習題及其對應的正確答案輸出到一個文件 subject.txt 中。當程序接收的參數爲4時,如下爲一個輸出文件示例。git

13+17-1=29
    11*15-5=160
    3+10+4-16=1
    15÷5+3-2=4

Part一、配置環境

   1. VS2017安裝與配置

     因爲以前的學習過程當中已經安裝過VS2017,這裏就再也不展現安裝過程,除了安裝比較耗時以外(它太龐大了),安裝起來應該沒有什麼難度。
程序員

   2. Git安裝

     因爲以前沒有操做過Git,因此每一步都是走的當心翼翼,參考ChildishChange助教的教程一步步操做。沒想到,上來就遇到了讓我抓狂的問題!!在下載Git的時候,從官網給定的連接下載巨慢,並且還下載失敗!!在這裏耽誤了好久好久,最後經過面向百度解決問題,終於找到一種可行的辦法。github

     即經過瀏覽器f12查看網頁源代碼,找到下載連接網址,直接複製網址到迅雷新建下載任務,十秒鐘搞定!接下來就傻瓜式安裝瘋狂next就完事兒了!Git安裝成功!

算法

   3. Github項目克隆

    雖然以前使用過Github,可是僅限於在上面學習前輩的代碼,從沒使用Github的倉庫上傳代碼,因此,此次就體驗了代碼倉庫的拷貝以及代碼上傳管理。首先,進入阿超的倉庫,點擊右上角的Fork,將阿超的四則運算庫拷貝到本身的同名倉庫,以下圖所示
編程

    能夠看到,本身也擁有了一個同名倉庫
c#

    再利用Git將項目克隆到本地,在這裏最好是在一個新目錄下建立一個文件夾
數組

    體驗完從Github上克隆項目,就準備開始新建本身的項目吧!

Part二、代碼設計

  • 大概思路:產生隨機數,拼接算式,打印文件

  • 首先建立一個getNum類,來產生隨機數,這裏須要產生四組隨機數,兩組做爲數值,一組做爲運算符數組的標記下標,一組做爲運算符個數。

    private static char[] size = { '+', '-', '*', '/' };
      public string getnum()
      {
          int x, y, z, t;
    
          Random random = new Random();
          z = random.Next(2, 4);
          //做爲隨機運算符個數
    
          string str;
          x = random.Next(0, 100);
          //做爲隨機數值
          str = Convert.ToString(x);
    
          for (int i = 0; i < z; i++)
          {
               t = random.Next(0, 4);
               //做爲隨機運算符下標
               y = random.Next(0, 100);
               str += size[t] + Convert.ToString(y);
               //拼接字符串
               System.Threading.Thread.Sleep(50);
               //因爲時間間隔過短,須要設置程序睡眠
          }
          return str;
      }
  • 而後建立一個寫入文件writeFile類,調用StreamWriter方法,在這裏加入一個容錯判斷機制,若是成功,則寫入文件,不然寫入失敗。

    public void writefile(string str)
      {
    
          try
          {
              StreamWriter sw = new StreamWriter("e:\\test.txt", true);
              sw.WriteLine(str);
              sw.Close();
          }
          catch (Exception e)
          {
              Console.WriteLine("文件寫入失敗!");
          }  
      }
  • 最後寫的是調用方法主函數,在這裏判斷除數爲0以及結果爲負數的時候,從新生成

    //若是結果含有小數點,或者表達式中有除以0,或者結果爲負數則再次獲取一個計算式
      if (result.ToString().Contains(".") || str.Contains("/0") || int.Parse(result.ToString()) < 0)
      continue;
  • 運行結果如圖所示

Part三、單元測試

  • 首先建立一個單元測試項目,經過在如今項目的解決方案右鍵—>添加—>新建項目選擇單元測試項目。如圖

  • 在單元測試項目裏,還須要添加對被測試項目的引用

  • 在這裏經過學習書上內容,須要將全部的類寫成public共有類,才能夠進行單元測試
  • 開始測試,如圖

Part四、斷點調試及迴歸測試

   1. 斷點調試

  • 設斷點調程序應該是從咱們開始編程就在使用了,剛開始可能用的編譯器是vc++,後面到vs2017,這裏就不得不提vs2017這個IDE,雖然他很是龐大,可是總體的使用體驗真的很棒!斷點調試功能很是強大(稍微感慨了一下,言歸正傳)
  • 首先設置起始斷點,在對應代碼行左邊欄輕輕一點,斷點就設置好了!能夠選擇快捷鍵F5進入調試界面,如圖

  • 下一步,根據邏輯能夠選擇逐語句、逐過程進行調試

  • 這裏還能夠調出不少監視器,能夠查看內存、cpu使用、監視變量等等

   2.迴歸測試

  • 迴歸測試是一種系統範圍的測試,旨在確保系統某個部分的微小變化不會破壞系統中其餘地方的現有功能。這很重要,由於沒有迴歸測試,頗有可能將預期的修復程序引入到一個系統中,這個系統會產生比他們解決的問題更多的問題。——百度

  • 在我看來,就是在單元測試優化程序事後再次進行的單元測試,因此,在我修改完代碼以後再次運行單元測試程序,步驟與上文一致,就再也不貼圖了(貼圖好難)

Part五、效能分析

  • VS 自帶性能分析工具,能夠執行直接在VS中執行書寫的項目,也能夠追蹤生成的可執行文件(須要其它文件,如pdb),二者的操做差很少,主要在執行分析時有點區別。

  • 性能分析首先要執行分析並生成分析報告。VS開始性能分析的快捷鍵爲 ALT+F2,也可使用菜單工具欄,有兩處入口,以下圖所示:
  • 「分析」 -> 「性能探查器」

  • 開始分析

  • 診斷報告

  • 這裏咱們還能夠生成詳細診斷報告

  • 點擊函數,能夠查看函數內方法被調用佔CPU的效率

Part六、上傳代碼

  • 首先經過Git輸入git add .和git commit -m "魏家田201731062307"命令對本地倉庫進行修改,如圖

  • 利用git push上傳Git hub,在這裏須要登陸一下Git hub的帳號

  • push完以後,登陸Git hub帳號能夠看到個人倉庫已經有了剛剛上傳的文件,而後咱們就能夠向源倉庫發起Pull Request,如圖,上傳成功,到這裏,阿超的四則運算項目告一段落。

Part七、總結感悟

    終於寫完了,說實話,c#有點生澀了。編程測試上傳再加寫博客,耗費了我全部的課餘時間,通宵寫代碼,開始掉頭髮??

    收穫

    1.再一次鍛鍊個人心理承受能力,下載Git、程序調不通,尤爲是當百度尋求解決辦法無解的時候,心態是真的爆炸,不過還好,耐着凌晨3:00實驗室空無一人的孤獨總算是寫完了。

    2.初步瞭解了程序的測試流程,以及根據測試結果調整代碼優化的做用,可是距離熟練利用還須要深刻學習,

    3.近一年沒寫c#了,經過此次學習,又一次加深了對語言理解,不管是java仍是c#,思想都是同樣的,就是須要一點時間去適應c#和vs,get到了一個很是強大的dataTable.compute()方法,它能夠用來計算傳遞篩選條件的當前行上的給定表達式,免去了手寫算法的困難。

相關文章
相關標籤/搜索