1. 程式人生 > >小學四則運算練習軟件項目報告

小學四則運算練習軟件項目報告

IT system 批評 gpo 軟件工程 ade else txt post

Github的倉庫主頁鏈接地址:https://github.com/cy0325/CulClation.git


一、實驗要求

軟件基本功能要求如下:
  • 程序可接收一個輸入參數n,然後隨機產生n道加減乘除練習題,每個數字在 0 和 100 之間,運算符是3-4個。
  • 為了讓小學生得到充分鍛煉,每個練習題至少要包含2種運算符。同時,由於小學生沒有分數與負數的概念,你所出的練習題在運算過程中不得出現負數與非整數,比如不能出 3/5+2=2.6,2-5+10=7等算式。
  • 練習題生成好後,將你的學號與生成的n道練習題及其對應的正確答案輸出到文件“result.txt中,不要輸出額外信息,文件目錄與程序目錄一致。
  • 當程序接收的參數為4時,以下為輸出文件示例。

技術分享圖片

軟件附加功能要求如下:(請有余力的同學完成)
  • 支持有括號的運算式,包括出題與求解正確答案。註意,算式中存在的括號必須大於2個,且不得超過運算符的個數。
  • 擴展程序功能支持真分數的出題與運算,例如:1/6 + 1/8 + 2/3= 23/24。註意在實現本功能時,需支持運算時分數的自動化簡,比如 1/2+1/6=2/3,而非4/6。

二、需求分析

  • 本實驗要求隨機生成四則運算,並給出答案。為了簡化程序的復雜性,隨機生成整型數組,然後把四個符號存入到數組,隨機取下標,調用JavaScript函數庫計算結果即可。之後將四則運算和學號姓名保存到TXT文檔中。

三、功能實現

1、實現了隨機生成5位數的隨機運算。

2、每個數字在0-100之間。

3、完成了基本的運算。

4、運用輸出流將學號姓名和四則運算及其結果保存到result.txt中。


四、設計實現

技術分享圖片

在main函數中先調用隨機函數生成有五位數的隨機數組,將四則運算符存放到數組中,調用隨機函數生成四個對應的數組下標,將整型數組中的數個四則運算符隨機匹配,調用JavaScript函數庫,計算所得結果,輸出即可。


五、測試運行

技術分享圖片技術分享圖片


六、核心代碼

 1         ScriptEngine javascript = new ScriptEngineManager().getEngineByName("JavaScript");
2 PrintStream ps = null; 3 String exp="";//表達式 4 double result = 0; //結果 5 char[] c={‘+‘,‘-‘,‘*‘,‘/‘}; 6 //文件操作 7 try { 8 File file =new File("./result.txt"); 9 ps = new PrintStream(new FileOutputStream(file)); 10 } catch (FileNotFoundException e) { 11 e.printStackTrace(); 12 } 13 //輸入 14 Scanner sc=new Scanner(System.in); 15 System.out.println("請輸入你要產生幾個表達式:"); 16 int number=sc.nextInt(); 17 ps.println("201571030101 曹陽"); 18 for(int j=0;j<number;j++) 19 { 20 //產生隨機數數組 21 int[] array = new int[5]; 22 Random r = new Random(); 23 for (int i = 0, n = array.length; i < n; i++) 24 { 25 array[i] = r.nextInt(100); 26 } 27 // System.out.println(Arrays.toString(array)); 28 Random ran = new Random(); 29 int index=ran.nextInt(c.length); 30 int index1=ran.nextInt(c.length); 31 int index2=ran.nextInt(c.length); 32 int index3=ran.nextInt(c.length); 33 exp = String.valueOf(""+array[0]+c[index]+array[1]+c[index1]+array[2]+c[index2]+array[3]+c[index3]+array[4]); 34 try { 35 result = Double.parseDouble(String.valueOf(javascript.eval(exp))); 36 } catch (ScriptException e) { 37 e.printStackTrace(); 38 } 39 if(Math.floor(result)==result&&result>0&&result<99999) { 40 System.out.println(exp + "=" + (int) result); 41 ps.println(exp + "=" + (int) result); 42 } 43 else j--; 44 45 } 46 47

七、總結

本次實驗,我明白了軟件工程的龐大性,以及設計一個程序所花費的時間並不是想象中那麽少的,雖然這個實驗完成了,但是還是有部分設計不太符合題目要求,希望老師指正批評。


八、展示PSP

PSP2.1

任務內容

計劃完成需要的時間(min)

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

Planning

計劃

30

40

Estimate

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

30

30

Development

開發

200

300

Analysis

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

15

30

Design Spec

生成設計文檔

10

20

Design Review

設計復審 (和同事審核設計文檔)

10

20

Coding Standard

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

5

10

Design

具體設計

30

30

Coding

具體編碼

100

120

Code Review

代碼復審

10

20

est

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

10

20

Reporting

報告

30

60

Test Report

測試報告

25

30

Size Measurement

計算工作量

2

3

Postmortem & Process

Improvement Plan

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

3

10


小學四則運算練習軟件項目報告