天天看點

四則運算題目生成程式

a.需求分析

看了大家對于本課程的目标和規劃,很多同學都希望能提高自己的實踐能力,沒有捷徑可走,就是練習、練習再練習!那麼就從第一個個人項目開始吧,用一周的時間完成一個基于控制台的四則運算程式,實作一個自動生成國小四則運算題目的指令行程式

從《建構之法》第一章的 “程式” 例子出發,像阿超那樣,花二十分鐘寫一個能自動生成國小四則運算題目的指令行 “軟體”,滿足以下需求:

    1. 除了整數以外,還要支援真分數的四則運算,真分數的運算,例如:1/6 + 1/8 = 7/24
    2. 運算符為 +, −, ×, ÷
    3. 并且要求能處理使用者的輸入,并判斷對錯,打分統計正确率。
    4. 要求能處理使用者輸入的真分數, 如 1/2, 5/12 等
    5. 使用 -n 參數控制生成題目的個數,例如執行下面指令将生成10個題目

      Myapp.exe -n 10

b.功能設計

  • 基本功能 :生成表達式,運算結果,對比答案及題目重複查找

c.設計實作

MathStart  控制台的輸入輸出,将表達式寫入檔案,引用需要使用的類,将表達式的key存放入hashtable判重

Express     生成表達式,運算結果,判斷表達式是否不符合要求,生成表達式的key。

Operator   運算符優先級定義,為Express運算結果提供幫助。

AnswerLogin   對比答案是否正确,可比對小數,正整數,分數,帶分數,若不是以上則輸入失效,要求重新輸入。

d.代碼說明

四則運算題目生成程式

num,oper随機生成。

四則運算題目生成程式

括号一定在數字的左右兩邊,按左括号,數字,右括号,運算符的順序加入表達式;

tranExp是将表達式轉為字尾表達式,友善計算。

四則運算題目生成程式

運算的過程代碼短,行數多,簡述一下,就是将字尾表達式中,取數字放入a數組中,遇到運算符取a中兩個數,結果放回a中。像棧一樣先進後出。

四則運算題目生成程式

在字尾表達式中遇到‘+’或‘*’時,判斷前面兩個數值大小,将小的數放到前面。生成一個String的key。

缺陷,隻能判斷符号兩邊是數字的,不能判斷符号邊是表達式的如:(1+2)+(1/2)與(1/2)+(1+2)。

四則運算題目生成程式

以上判定答案輸入,根據正規表達式驗證輸入是否符合要求,符合則設定inputErr=false。當輸入是小數時得到他的精度。分數精度為0.

當是分數時判斷是否分母大于分子,不能再約分,分子分母不能為零。

最後進入Login,判定答案是否正确。

e.測試運作

四則運算題目生成程式
四則運算題目生成程式

6 repeat 9 即第7與第10重複。後面更改一下。

 psp

PSP2.1 Personal Software Process Stages Time Senior Student Time
Planning 計劃 20
Estimate 估計這個任務需要多少時間 5
Development 開發 4000
Analysis 需求分析 (包括學習新技術) 10
Design Spec 生成設計文檔 50
Design Review 設計複審 2 1
Coding Standard 代碼規範
Design 具體設計 30
Coding 具體編碼 4500 4700
Code Review 代碼複審 8
Test 測試(自我測試,修改代碼,送出修改) 120
Reporting 報告 60
測試報告 24 45
計算工作量 3
并提出過程改進計劃

代碼倉庫位址:https://coding.net/u/lxdapp/p/opertor/git