1. 程式人生 > >《為夢想,永不止步》團隊最新作業

《為夢想,永不止步》團隊最新作業

ida and 目前 參數 lpad cat 總結 得到 與運算

需求分析:即使老師已經給出了題目,也要對題目的需求做分析。

嘗試按照《構建之法》第2章中2.3所述PSP流程,使用JAVA編程語言,獨立完成一個包含3到5個數字的四則運算練習的命令行軟件開發題目參考:http://www.cnblogs.com/xinz/p/7417960.html 軟件基本功能要求如下:
  • 程序可接收一個輸入參數n,然後隨機產生n道加減乘除練習題,每個數字在 0 和 100 之間,運算符在3個到5個之間。
  • 為了讓小學生得到充分鍛煉,每個練習題至少要包含2種運算符。同時,由於小學生沒有分數與負數的概念,你所出的練習題在運算過程中不得出現負數與非整數,比如不能出 3/5+2=2.6,2-5+10=7等算式。
  • 練習題生成好後,將你的學號與生成的n道練習題及其對應的正確答案輸出到文件“result.txt中,不要輸出額外信息,文件目錄與程序目錄一致。
  • 當程序接收的參數為4時,以下為輸出文件示例。

技術分享圖片

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

功能設計:

  • 每個數的值在0和100之間,運算符在3~到5個之間。
  • 每個練習題至少包含兩種運算符。
  • 練習題在運算過程中不得出現負數與非整數。

設計實現:使用Rondom類包含的方法,使用一個和當前系統時間對應的相對時間有關的數字作為種子數。

測試運行:技術分享圖片

核心代碼:

技術分享圖片
 1 import java.text.DecimalFormat;
 2 import java.util.Scanner;
 3 public class Zhidao {
 4     
 5     public static void main(String[] args) {
 6         String condition = "";
 7         Zhidao zhidao = new Zhidao();
 8         do{
 9         Scanner scanner = new Scanner(System.in);
10         try{
11         System.out.print("請輸入第一個數:");
12         double x = scanner.nextDouble();
13         System.out.print("請輸入第二個數:");
14         double y = scanner.nextDouble();
15         System.out.print("請輸入運算符:");
16         String s = scanner.next();
17         char z = s.charAt(0);
18         zhidao.yunsuan(x, y, z);
19         }catch(Exception e){
20             System.out.println("請輸入正確的數據!");
21         }
22         System.out.print("是否繼續?continue:繼續,任意字符:結束");
23         condition = scanner.next();
24     
25         }while("continue".equals(condition));
26     }
27     
28     public static void yunsuan(double x,double y,Character z){
29         DecimalFormat r=new DecimalFormat(); 
30         r.applyPattern("#0.00");
31         if(z.equals(‘+‘)){
32             System.out.println(x+"+"+y+"=" + r.format((x+y)));
33         } else if(z.equals(‘-‘)){
34             System.out.println(x+"-"+y+"=" + r.format((x-y)));
35         } else if(z.equals(‘*‘)){
36             System.out.println(x+"*"+y+"=" + r.format((x*y)));
37         } else if(z.equals(‘/‘)){
38             if(y==0){
39                 System.out.println("被除數不能為0");
40             } else{
41                 System.out.println(x+"/"+y+"=" + r.format((x/y)));
42             }
43     
44         }else{
45             System.out.println("無法識別改運算符");
46         }
47     }
48 }
技術分享圖片

6.PSP:

PSP2.1

任務內容

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

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

Planning

計劃

365

380

Estimate

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

20

20

Development

開發

80

80

Analysis

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

25

20

Design Spec

生成設計文檔

15

20

Design Review

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

10

10

Coding Standard

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

10

13

Design

具體設計

15

22

Coding

具體編碼

100

125

Code Review

代碼復審

10

10

Test

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

25

20

Reporting

報告

15

15

Test Report

測試報告

12

10

Size Measurement

計算工作量

5

5

Postmortem & Process Improvement Plan

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

23

20

總結:通過這次實驗,看到了自己的很多問題,最重要的是JAVA基礎真的不過關,需要重新抓一下了,還有就是做好前期工作吧,感覺前期工作做好之後,後面真的會輕松很多。

展示PSP,這個環節重要的是讓自己看到自己的估計和實際消耗時間,哪個環節耗時最多,哪個環節估計和實踐相差巨大?為什麽?

《為夢想,永不止步》團隊最新作業