《系統分析與設計》我的的二次做業:熟悉實用工具

GIT地址 個人GIT地址
GIT用戶名 linlsj
學號後五位 62311
博客地址 個人博客主頁
做業連接 個人做業連接

環境配置過程

關於這次做業我選擇Visual Studio 2015這個工具,根據我的需求,我在微軟官網上面下載了Visual Studio 2015的鏡像文件。解壓事後,內部文件如圖所示:html

雙擊vs_community.exe文件進行安裝,經過設置安裝路徑等一系列操做事後(這裏,我的建議將vs安裝到硬盤中,不要安裝到系統盤中,由於vs這個軟件仍是挺大的),進入到選擇安裝模塊的界面,以下圖git

這裏根據我的需求選擇相應的模塊就好,固然我在這裏選擇所有安裝(即安裝全部模塊)。在等待四五個小時後vs2015就安裝完成了,此時你就能夠打開vs2015進行界面、背景等開發環境的主題屬性的設置。程序員

代碼設計思路

代碼實現背景

阿超家裏的孩子上小學一年級了,這個暑假老師給家長們佈置了一個做業:家長天天要給孩子出一些合理的,但要有些難度的四則運算題目,而且家長要對孩子的做業打分記錄。做爲程序員的阿超心想,既然天天都須要出題,那何不作一個能夠自動生成小學四則運算題目與解決題目的命令行 「軟件」呢。他把老師的話翻譯一下,就造成了這個軟件的需求:github

  • 程序接收一個命令行參數n,而後隨機產生n道加減乘除(分別使用符號+-*/來表示)練習題,每一個數字在0100之間,運算符在2個到 3個之間。
  • 因爲阿超的孩子才上一年級,並不知道分數。因此軟件所出的練習題在運算過程當中不得出現非整數,好比不能出現 3÷5+2=2.6 這樣的算式。
  • 練習題生成好後,將生成的 n 道練習題及其對應的正確答案輸出到一個文件subject.txt中。
  • 當程序接收的參數爲4時,如下爲一個輸出文件示例。編程

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

此次阿超選擇使用他最拿手的 C# 語言來完成這樣的需求,工欲善其事必先利其器,第一步就須要先安裝一個好用的 IDE ,在這裏我選擇使用vs2015。數組

代碼設計思路

  1. 根據需求分析,程序須要接收一個參數n,用來肯定題目的數量咱們選擇使用int n = Convert.Toint32(Console.ReadLine())這一語句實現參數n的獲取,而後定義一些接下來會用到的變量。
  2. 因爲涉及到四則運算,所以我選擇建立一個長度爲4 的字符數組用來存放運算符char[] op = {'+', '-', '*', '/'};
  3. 根據題目要求,須要隨機產生 n道加減乘除的練習題,其中涉及到了隨機數的生成,故又建立隨機生成函數對象Random dt = new Random();
  4. 因爲c#中的Random函數生成的是僞隨機數,爲了解決這一問題,我選擇用網絡

    a = rd.Next(0,100);
    c = rd.Next(2,4);
    這樣的方式生成真正的隨機數,避免生成僞隨機數(經過使用不一樣的範圍來強制生成不一樣的隨機數)。
  5. 題目的儲存,我選擇用字符串的形式儲存,使用c#中字符串的拼接特性以及循環結構dom

    1. str = Convert.ToString(a);
    
    2. for (int j = 0; j < c; j++)
    {
        m = rd.Next(0, 4);
        b = rd.Next(0, 100);
        str += op[m] + Convert.ToString(b);
    }
    實現題目的儲存。
  6. 接下來須要計算結果,當時首先想到的是分割字符串生成字符數組而後進行計算,後面考慮到實現的難度比較大,所以放棄了這一作法,而後經過網絡尋找c#的計算方法,終於找到了DataTable這一個模塊,能夠經過使用其中的Compute方法完成字符串中的加減乘除的運算,方法實現ssh

    DataTable dt = new DataTable();
    end = dt.Compute(str,"")
    其中end的數據類型是object,經過使用end來存儲最後的運算結果。
  7. 阿超的孩子剛上小學一年級,尚未接觸過度數,他並不知道小數(分數)的形式,以及根據運算規則,除數不能爲0,還需知足運算結果不能出現負數。所以須要判斷題目是否知足要求

    if (end.ToString().Contains(".") || str.Contains("/0") || int.Parse(end.ToString()) < 0)
        continue;

    若是包含,則使用continue語句跳事後續操做。

  8. 題目以及答案的問題已經解決了,接下來就涉及到文件的操做,使用一個字符串將整個題目的信息都儲存進去st = str.Replace("/", "÷") + "=" + end.ToString();,因爲小學一年級,沒有接觸過/這種除號,我選擇用÷替換掉/,而後使用StreamWriter模塊進行對.txt的操做

    StreamWriter streamWriter = new StreamWriter("test.txt", true);
    streamWriter.WriteLine(st);
    streamWriter.Close();

    實現將題目輸出到文件中的操做。

具體代碼實現

代碼運行結果

GitHub

GitHub的使用

  1. 首先在GitHub網站首頁註冊一個GitHub帳號。使用該帳號登陸成功後,進入阿超的倉庫中,進行克隆操做。進入阿超的倉庫後,點擊右上角的 Fork ,將阿超的四則運算庫拷貝到本身的同名倉庫中,以下圖所示:

  2. 拷貝成功後,不難發現咱們有了一個同名倉庫,若是你電腦上面尚未Git,那麼你能夠選擇點擊圖片中右側的綠色按鈕,進行Git的下載安裝。

  3. 打開Git Bash,輸入git clone <你所須要克隆的項目地址> ,敲擊回車,等待響應,而後就完成克隆了。

  4. 接下來因爲首次使用Git,所以咱們須要配置本身的我的郵箱與Commit名(注:這裏的郵箱和用戶名最好和GitHub帳號一致

  5. 配置完成後,接下來可使用git add .以及git commit -m "咱們命名的分支"進行文件保存工做。

  6. 在完成Git倉庫的保存工做後,咱們能夠經過git status命令查看當前倉庫狀態。

  7. 接着咱們使用git push提交命令將文件提交到GitHub中去,會彈出下列登陸界面,登陸事後便可傳送文件。

    而後等待文件上傳,直至完成項目的上傳工做。

GitHub使用過程當中的問題

Git在以前就已經配置好了,可是歷來沒有使用過,仍是比較陌生的。困住個人仍是Git的本地項目的上傳,剛開始沒有idb_rsa.pub文件,所以在GitHub上面一完成不了SSH keys的建立。後面經過百度,使用$ssh-keygen -t rsa -C "你的郵箱名"命令完成了該文件的建立,若是沒設置ssh keys,就建立新的ssh keys,否則git不能上傳本地項目。當時就是由於這一緣由因此一直不能完成代碼的提交。若是你是第一次使用Git上傳本地項目,你能夠參考這篇博客來完成本地項目的上傳。

項目測試

不過,個人代碼只有一個Main()函數,這個是有就只有修改個人代碼了,修改後的代碼形式如圖

  • 主函數

  • 題目生成函數

  • 存儲題目函數

單元測試

經過單元測試能夠保證這一模塊能被人放心的調用,讓這一模塊定義明確,模塊內部的改變不會影響其餘模塊,並且模塊的質量能獲得穩定的、量化的保證。在這裏,我使用vs2015來對我編寫的函數進行測試

  1. 這個時候咱們能夠在編寫的函數中直接輕擊鼠標右鍵,選擇建立單元測試

  2. 而後出現這樣的彈窗,接下來根據自身需求進行設置

  3. 隨後咱們須要修改代碼,修改file_opTests.cs中的內容

  4. 接下來點擊運行,查看運行結果便可。

迴歸測試

迴歸測試就是在修改了原有代碼的狀況下,從新對該模塊進行測試肯定這次修改沒有引入新的錯誤或致使其餘代碼產生錯誤。修改file_op類中的方法事後,對其從新進行單元測試,須要知足單元測試的正確性,步驟與單元測試一致,file_op修改後的代碼:

迴歸測試代碼

心得體會

  1. 經過這次對vs2015以及Git工具的使用,瞭解了Git這一分佈式版本控制系統,並實際上手操做。使用Git咱們能夠方便地恢復咱們一些文件的前版本,方便了文件的管理和利用,不用擔憂錯誤操做致使的文件內容丟失。
  2. 在編碼過程當中,c#中有不少模塊我都是不知道的,例如Data Table模塊我以前徹底不知道,經過這一次的編程練習,對於這一模塊我有了初步的瞭解。
  3. 還有以前並不知道單元測試迴歸測試這兩個功能,之前就只是單純的進行代碼的調試與修改,經過單步調試尋找錯誤,並無考慮過我編寫的模塊被別人調用。歷來沒有考慮過模塊的質量問題。
  4. 經過這次編程,我以爲之後的編碼不能只是單純的爲了去實現某一個功能,在編程的過程當中還須要考慮到代碼的健壯性和可重用性。
  5. Random模塊的使用中應該注意,咱們所生成的數是僞隨機數,咱們應該採起必定的措施來限制它(例如:使用隨機數種子、或者經過不一樣範圍內生成隨機數)。
  6. 在Git的操做中必定要注意是否有SSH keys,若是沒有必定要新建一個,否則不能將項目上傳到GitHub裏面去。
相關文章
相關標籤/搜索