第一次做業

 需求分析:git

1. 控制生成題目的個數
2. 控制題目中數值(天然數、真分數和真分數分母)的範圍
3. 生成的題目中若是存在形如e1 ÷ e2的子表達式,那麼其結果應是真分數
4. 每道題目中出現的運算符個數不超過3個。
5. 程序一次運行生成的題目不能重複, 生成的題目存入執行程序的當前目錄下的Exercises.txt文件,格式以下:
     1. 四則運算題目1
     2. 四則運算題目2
6. 在生成題目的同時,計算出全部題目的答案,並存入執行程序的當前目錄下的Answers.txt文件,格式以下:
    1. 答案1
    2. 答案2
    特別的,真分數的運算以下例所示:1/6 + 1/8 = 7/24。
7. 程序應能支持一萬道題目的生成。
8. 程序支持對給定的題目文件和答案文件,斷定答案中的對錯並進行數量統計,並會輸出全部題目中重複的題目,輸入參數以下:
 統計結果輸出到文件Grade.txt,格式以下:  
 Correct: 5 (1, 3, 5, 7, 9)
 Wrong: 5 (2, 4, 6, 8, 10)
 Repeat:2
 RepeatDetail:
 (1)   2,45+32  Repeat 3,32+45                    
 (2)   5,3+(2+1)  Repeat 7,1+2+3

 

功能設計:數組

1.在控制檯輸入題目的數量及生成數的範圍dom

2.在文本中記錄全部生成的題目函數

3.在文本中記錄每道題對應的正確答案學習

4.把正確答案和作題者輸入的答案進行對比,在文本中計算出正確和錯誤的題目數量並標記題號測試

 

設計實現:ui

Fraction:分數格式的結構體編碼

MathMethod.cs:數學公式方法類,提供對應的計算方法spa

Fraction Add(Fraction f1, Fraction f2):分數的加法方法.net

Fraction Sub(Fraction f1, Fraction f2):分數的減法方法

Fraction Mul(Fraction f1, Fraction f2):分數的乘法方法

Fraction Div(Fraction f1, Fraction f2):分數的除法方法

Fraction Simplify(Fraction f):分數的化簡方法

// 用最大公約數化簡
public static Fraction Simplify(Fraction f)
{           
    int GCD;
    int temp, remain;
    Fraction store=f;
    if (f.deno < f.nume)
    {
        temp = f.deno;
        f.deno = f.nume;
        f.nume = temp;
    }
    while (f.nume != 0)
    {
        remain = f.deno % f.nume;
        f.deno = f.nume;
        f.nume = remain;
    }

    GCD = f.deno;
    store.deno = store.deno/GCD;
    store.nume = store.nume/GCD;
    return store;
}

 

測試運行:

控制檯:

Exercises文件:

Answers文件:

Grade文件:

 

我的軟件過程:

PSP2.1 Personal Software Process Stages Time Senior Student Time
Planning 計劃 5 5
· Estimate 估計這個任務須要多少時間 650 360
Development 開發 300 180
· Analysis 需求分析 (包括學習新技術) 5 5
· Design Spec 生成設計文檔 0 0
· Design Review 設計複審 10 10
· Coding Standard 代碼規範 5 5
· Design 具體設計 10 20
· Coding 具體編碼 300 150
· Code Review 代碼複審 30 15
· Test 測試(自我測試,修改代碼,提交修改) 30 90
Reporting 報告 30 40
· 測試報告 2 2
· 計算工做量 2 2
· 並提出過程改進計劃 3 3

 

代碼地址

https://git.coding.net/HangZhe/HomeWork1.git 

 

小結:

最近一些事情真的讓我有點忙不過來,致使此次做業我花的時間其實不多,有一些功能沒有實現,只是作了簡單的兩個操做數的整數和分數運算,後續會補齊。學到的東西仍是有的,好比使用Split(char a)函數能夠把一個字符串以字符a爲分界線進行劃分,劃分的結果是一個字符串數組,每一小段都是一個數組元素,還有就是對C#的文件操做方面應用的更加熟練,對文件的寫入要一次完成比較好,後面要加入的括號運算能夠先在一個隨機的運算數前面生成左括號,而後在這個運算數的後面再取一個隨機的數前面加上右括號,對於括號的運算個人思路是使用上學期編譯原理的知識轉換爲逆波蘭式,查重應該使用棧來實現。

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息