軟導作業之個人實戰——四則運算練習軟件項目報告

Coding.net源碼倉庫地址:https://git.dev.tencent.com/Aha_Liang/myCalculator.git

測試步驟:

1.進入src文件夾

2.在命令行輸入javac -encoding utf-8 Main.java

3.回車再輸入java Main 50

4.回車,將會在根目錄下(與src同級)產生result.txt

目錄

一、需求分析

二、功能設計 

三、設計實現

四、算法詳解

五、測試運行

六、PSP


一、需求分析

    1.程序可從命令行接收一個輸入參數n,然後隨機產生n道加減乘除練習題。

    2.每個數字在 0 和 100 之間,運算符在3個到5個之間。

    3.每個練習題至少要包含2種運算符。

    4.所出的練習題在運算過程中不得出現負數與非整數。

    5.將學號與生成的n道練習題及其對應的正確答案輸出到文件“result.txt”中。

    6.支持有括號的運算式,包括出題與求解正確答案。算式中存在的括號必須大於2個,且不得超過運算符的個數。

    7.支持真分數的加減法,並且每個分數都化到最簡

二、功能設計 

       能夠根據用戶輸入的參數n隨機產生n道符合要求的練習題,自動算出答案,並將式子與答案以文檔的形式呈現。並實現附加功能:支持有括號的運算、支持真分數的加減運算。

三、設計實現

整個項目共設計了五個類:

    Main類:主類,負責接收命令行的參數並啓動程序

    CreateFile類:負責產生result.txt文件,並將學號和產生的練習題寫入文件

    SimpleCalculator類:負責隨機產生一條帶括號的至少2種運算符四則運算的式子,且有3-5個運算符

    ProperFraction類:負責產生真分數式子並計算答案

    Calculator類:負責篩選運算過程中不產生負數和小數的式子,並計算答案

五個類之間的調用關係:

 每個類中的重要函數:

SimpleCalculator類:

      calculatorInteger():整數生成器

      index(int operatorCount,int operatorTotal, Random random):產生運算符下標數組,並保證至少有2個不同的運算符

      stitchingFormula(int operatorCount, int[] operatorNum, int[] operatorIndex):拼接式子

ProperFraction類:

       properFraction():真分數生成器

       greatFactor(int x,int y):求最大公因數,用於化簡

Calculator類:

        NBL(String str):結合了調度場算法和逆波蘭表達式的求值,計算出式子的答案

        calculate(int a, int b, String stmp):計算式子每一部分的運算,排除運算過程中出現小數和負數的式子

四、算法詳解

關於調度場算法和逆波蘭表達式(即後綴表達式)的求值

       調度場算法的作用是將中綴表達式變爲後綴表達式,它需要一個隊列來裝後綴表達式和一個棧來裝符號。先從左到右遍歷中綴表達式的每個符號和數字,若是數字就入隊;若是符號,則判斷其與棧頂符號的優先級,若該符號是右括號或其優先級低於棧頂符號,則棧頂元素依次出棧並輸出進入隊列,並將當前符號進棧,一直到最終輸出後綴表達式。

    逆波蘭表達式求值步驟(只需要一個棧):

    1.先初始化一個空棧,開始遍歷後綴表達式。

    2.如果字符是一個操作數,則令其入棧。

    3.如果字符是個運算符,則彈出棧裏的兩個操作數(一定會有兩個數在棧裏,因爲是後綴表達式),進行運算,再把結 果入棧。

    4.到後綴表達式末尾,從棧中彈出結果。

五、測試運行

進入src文件夾,在命令行輸入javac -encoding utf-8 Main.java 將類編譯成class文件,再輸入java Main 50運行class文件。

這裏先做一個非法輸入和越界測試,如輸入java Main e或java Main 1200:

再正常輸入如java Main 50,將會在根目錄下(與src同級)產生result.txt文件: 

六、PSP

PSP2.1

任務內容

計劃共完成需要的時間(h)

實際完成需要的時間(h)

Planning

計劃

27

35

·        Estimate

·   估計這個任務需要多少時間,並規劃大致工作步驟

27

35

Development

開發

24

29

·        Analysis

·         需求分析 (包括學習新技術)

6

8

·        Design Spec

·         生成設計文檔

0

0

·        Design Review

·         設計複審 (和同事審覈設計文檔)

0

0

·        Coding Standard

·         代碼規範 (爲目前的開發制定合適的規範)

0

0

·        Design

·         具體設計

2

3

·        Coding

·         具體編碼

6

11

·        Code Review

·         代碼複審

2

2

·        Test

·         測試(自我測試,修改代碼,提交修改)

8

11

Reporting

報告

3

6

·         Test Report

·         測試報告

2

5

·         Size Measurement

·         計算工作量

0.5

0.5

·         Postmortem & Process Improvement Plan

·         事後總結, 並提出過程改進計劃

0.5

0.5

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章