《为梦想,永不止步》团队最新作业

需求分析:即使老师已经给出了题目,也要对题目的需求做分析。

尝试按照《构建之法》第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/323/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,这个环节重要的是让自己看到自己的估计和实际消耗时间,哪个环节耗时最多,哪个环节估计和实践相差巨大?为什么?

 

猜你喜欢

转载自www.cnblogs.com/WANGJ4/p/9153244.html
今日推荐