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

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

standard txt文件 for循環 width 2-2 留下 txt 其他 表示

倉庫原地址:https://coding.net/u/zcy0521/p/Software1/git?public=true

一、需求分析

1、做題者需要首先輸入自己的學號

2、輸入參數n,生成n道四則運算題目,n的大小要在1 ~ 1000內的整數。

3、隨機生成數字,數字的大小在0 ~ 100 之間。

4、隨機生成運算符 加、減、乘、除,每道題至少要有兩種運算符,最好在3 ~ 5種之間。

5、運算的結果和過程中不可以出現小數或者是分數。

6、隨機出的n道題目不可以出現重復題目。

二、功能分析

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

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

1、做題者要能夠先輸入對應學號

2、接受參數n,需要可以按照做題者的需求給予相應的題目量,N的大小要是1 ~1000 內的整數

3、隨機生成的運算式中的數字為 0 ~100 內的整數,運算過程中不可以出現假分數、負數等超綱問題

4、需要可以在result.txt文件中輸出做題者的學號以及所出題目的正確答案

5、運算式題目不可以重復

三、設計實現

由於本人編程能力有限,所以代碼寫的比較簡單,不能拓展到多個運算符,我的主要寫了四個類 分別為 Jiajian 、Chengchu 、Hunhe 、Size ,

Jiajian 類主要用於計算有兩個運算符的四則運算,

Chengchu 類主要用於運算有三個運算符的四則運算,

Hunhe類主要用於 有四個運算符的四則運算,

Size主要用於有四個運算符的四則運算。

其中 Jiajian

類寫在了main方法中,用Math中的random()方法生成字符以及數字,其他各類自成一個java文件。當你輸入的格式不符合要求時,就會調用showme()方法結束運算。

四、測試運行

首先是main函數,因為我對於隨機生成函數不是特別熟悉,所以我將程序分成幾個類來運算,分別計算運算符個數不同的四則運算通過輸入用戶想要做的四則運算的類型來輸出相應的題目

 1 package software;
 2 import java.util.*;
 3 
 4 public class Sizeyunsuan {
 5     
 6         public static void main(String[] args) {
 7             System.out.println("請輸入你的學號:  ");
 8              Scanner g = new Scanner(System.in);
 9              int xuehao = g.nextInt();
10             System.out.println("0表示結束運算,1代表兩個運算符的四則運算,2代表三個運算符的四則運算,3四個運算符的四則運算,4五個運算符的四則運算 請選擇:");
11             Yunsuan bn=new Yunsuan();
12             Jiajian an=new Jiajian();
13             Chengchu cn=new Chengchu();
14             Hunhe dn=new Hunhe();
15             Size en=new Size();
16             Scanner in = new Scanner(System.in);
17             int L=in.nextInt();
18          

當用戶輸入相應的數字後,就會調用相應的類進行計算,以上代碼是之前的,原來我是想要一行輸出十個運算的運算式,就用了兩個for循環,外層N/10來決定行數,內層用 j<10 的x循環來決定每一行的個數為10,本意是為了讓輸出的運算式看起來更加工整,但是後來發現這樣題目的個數就只能讓輸入10的倍數,否則就會出現一些錯誤,所以後來我就把兩層循環去掉了,只用一個 i< N 這一個循環

 1 if(L==1)
 2             {
 3                 System.out.println("當M=10時表示個位數的加減運算,M=100時表示兩位數的加減運算...請選擇");
 4                 int M=in.nextInt();
 5                 an.setM(M);
 6                 System.out.println("請輸入需要打印多少道題,10的倍數:");
 7                 int N=in.nextInt();
 8                 an.setN(N);
 9                 an.Showme();
10             }

因為運算的題目有要求,運算式中的數字不可以超過100,但也不能小於0,因此,我把區間的數字分成了個位數和兩位數供用戶選擇,通過Math類中random方法生成符合條件的數字

1 int a=(int)(Math.random()*M)+1;

以下為運算輸出結果

 1 請輸入你的學號:  
 2 
 3 2016012011
 4 0表示結束運算,1代表兩個運算符的四則運算,2代表三個運算符的四則運算,3四個運算符的四則運算,4五個運算符的四則運算 請選擇:
 5 
 6 3
 7 "當M=10時表示個位數的加減運算,M=100時表示兩位數的加減運算...請選擇"
 8 
 9 100
10 請輸入需要打印多少道題,10的倍數:
11 
12 50
13 67+90*18*90+75= 
14 49-19*96*65*15= 
15 79*50*83+35-64= 
16 63-48-17-75/40= 
17 14/87+52-41+74= 
18 99-72-97/2-67= 
19 57-46+38*30-99= 
20 7-89*90+55+53= 
21 68+45/5+21+34= 
22 11-34/79*7-41= 
23 55+15+80+71/70= 
24 29*94+28/8*77= 
25 6*30-63*42-35= 
26 62*96*66+68-11= 
27 69-36*39+16*100= 
28 20-4/14+88/37= 
29 60*92+60-12*6= 
30 88-48-20+30+39= 
31 76*71+30-77*66= 
32 40/55+90+37-82= 
33 17/11/36*84*8= 
34 31+27+34+16/81= 
35 29-25/87+4+70= 
36 96*40+87+59*17= 
37 34+62/20-91+62= 
38 42*58-97-34*38= 
39 26-60-86-83+34= 
40 63+75*84+39+8= 
41 85-33*35+92+53= 
42 10-7+57+76*45= 
43 1*76/76+38/10= 
44 55-80/44/66/11= 
45 76+48+98-64/81= 
46 28/36/52*62/78= 
47 81-96/34+37*80= 
48 75*2/86/71-79= 
49 57-34+58-23-81= 
50 67*39*98-35*37= 
51 10*53+64-72+85= 
52 45*3-69+3/20= 
53 89/6*7*64-48= 
54 95*37-88-15*59= 
55 81*5/49+2+69= 
56 59+42/43/75-39= 
57 13/98/32+68+86= 
58 36/32/51+68+19= 
59 35-62-22-13+42= 
60 34*32-27/87+78= 
61 35*55*57/53/97= 
62 29+31/30/59*34= 

五、總結

通過這一次的作業的學習,我更加認識到了自己的不足之處,也更加正視自己缺點,代碼能力太弱了,一些功能根本不會寫,即使是看了一些別人的代碼,也還是存在看不懂的情況,短短的時間又不可能把之前的所有都補上,所以我一度產生了放棄的想法,認為反正我怎麽想也不可能完成的,這個任務對於我來就是不可能完成的,這麽難,覺得我怎麽可能寫的出來,也產生了很多的負面情緒,一次次的否定自己,但是看見大家都在努力的去做,又覺得自己也應該嘗試一下,即使做不出來,完不成要求,但我努力過了,就不會後悔,也想不給自己留下遺憾,所以我嘗試了,可能結果差強人意,但我盡自己的能力去學習了,在之後也會更加努力的去學習,沒有什麽是可以一蹴而就的,爭取把之前落下的一點點的都補上,可能這次作業做得不是特別符合老師的老師的要求,有一些功能也還沒有實現,但我真的是盡了自己的努力了,希望下次可以做的好。

六、PSP

PSP2.1

任務內容

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

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

Planning

計劃

1

1.5

· Estimate

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

1

2.5

Development

開發

2

3

· Analysis

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

0.5

1

· Design Spec

· 生成設計文檔

1

1

· Design Review

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

0.5

3

· Coding Standard

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

1

3

· Design

· 具體設計

2

7

· Coding

· 具體編碼

5

10

· Code Review

· 代碼復審

0.5

9

· Test

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

1

2

Reporting

報告

0.5

6

· Test Report

· 測試報告

1

2

· Size Measurement

· 計算工作量

1

1

· Postmortem & Process Improvement Plan

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

1

3

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