Github源码地址链接:https://github.com/ijinping/SIZEYUNSUAN
一.项目要求:
尝试按照《构建之法》第2章中2.3所述PSP流程,使用JAVA编程语言,独立完成一个包含3到5个数字的四则运算练习的命令行软件开发。
二.需求分析
- 程序可接收一个输入参数n,然后随机产生n道加减乘除练习题,每个数字在 0 和 100 之间,运算符在3个到5个之间。
- 为了让小学生得到充分锻炼,每个练习题至少要包含2种运算符。同时,由于小学生没有分数与负数的概念,你所出的练习题在运算过程中不得出现负数与非整数,比如不能出 3/5+2=2.6,2-5+10=7等算式。
- 练习题生成好后,将你的学号与生成的n道练习题及其对应的正确答案输出到文件“result.txt”中,不要输出额外信息,文件目录与程序目录一致。当程序接收的参数为4时,以下为输出文件示例。
201571030107
(78*23)-(6*91) = 1248
(3+36)*(34-21) = 507
(15*81)*(14+87) = 122715
(95-4)+(37-30) = 98
支持有括号的运算式,包括出题与求解正确答案。注意,算式中存在的括号必须大于2个,且不得超过运算符的个数。
三.功能设计
- 程序可接收一个输入参数n
- 可以随机产生n道四则运算练习题
- 生成的数字范围为0-100
- 要求至少包含2种运算符,即运算符个数为2个或两个以上,可知随机产生的数字至少有3个
- 不能出现负数与小数
四.设计实现
五.测试运行
六.核心代码
public static void main(String[] args) { // TODO Auto-generated method stub int x = 0,y,i; String m="201571030308"; String a1; int d1=0; String d = null; System.out.println("输入学号开始"); Scanner scan1=new Scanner(System.in); a1=scan1.next(); if(a1.equals(m)){ System.out.println("请输入题目的数量"); Scanner scan2=new Scanner(System.in); x=scan2.nextInt(); int daan[]=new int [x]; System.out.println("请输入数值的范围"); y=scan2.nextInt(); for(i=0;i<x;i++){ int a=(int)(Math.random()*y);//随机生成一个1-10的整数 int b=(int)(Math.random()*y);//随机生成一个1-10的整数 int n=(int)(Math.random()*30)*2;//随机生成一个1-60的偶数 int c=(int)(Math.random()*4);
System.out.println("是否显示答案(显示请输入1)"); if(scan2.nextInt()==1){ for(i=0;i<x;i++){ System.out.print(daan[i]+" "); } } } System.out.println("是否显示答案(显示请输入1)"); if(scan1.nextInt()==1){ for(i=0;i<x;i++){ System.out.print(args[i]+" "); } } }
七.总结
在设计较这个程序的时候,我采用了自顶向下的方法,将这个问题划分为几三个部分,第一部分是程序随机生成的题数,第二部分是具体生成的题的“样式”,第三部分是设计计算生成随机题的答案。每一部分又再细化分解,直到分解为较好解决问题为止。
第一次如此认真的查找信息,寻找资料的来完成这个程序,虽然很辛苦,但收获颇多
八.展示PSP
PSP2.1 |
任务内容 |
计划完成需要的时间(min) |
实际完成需要的时间(min) |
Planning |
计划 |
20 |
30 |
· Estimate |
· 估计这个任务需要多少时间,并规划大致工作步骤 |
20 |
30 |
Development |
开发 |
240 |
270 |
·· Analysis |
需求分析 (包括学习新技术) |
30 |
40 |
· Design Spec |
· 生成设计文档 |
20 |
20 |
· Design Review |
· 设计复审 (和同事审核设计文档) |
10 |
15 |
· Coding Standard |
代码规范 (为目前的开发制定合适的规范) |
30 |
40 |
· Design |
具体设计 |
10 |
12 |
· Coding |
具体编码 |
36 |
90 |
· Code Review |
· 代码复审 |
7 |
9 |
· Test |
· 测试(自我测试,修改代码,提交修改) |
13 |
21 |
Reporting |
报告 |
55 |
50 |
·· Test Report |
· 测试报告 |
15 |
10 |
· Size Measurement |
计算工作量 |
15 |
20 |
· Postmortem & Process Improvement Plan |
· 事后总结 ,并提出过程改进计划 |
15 |
|
---恢复内容结束---