代码链接:https://github.com/devilwjy/Code.Demo
需求分析:
1.程序可接收一个输入参数n,然后随机产生n道加减乘除练习题,每个数字在 0 和 100 之间,运算符在3个到5个之间。
2.每个练习题至少要包含2种运算符。
3.练习题在运算过程中不得出现负数与非整数,比如不能出 3/5+2=2.6,2-5+10=7等算式。
4.练习题生成好后,将学号与生成的n道练习题及其对应的正确答案输出到文件“result.txt”中,不要输出额外信息,文件目录与程序目录一致。
当程序接收的参数为4时,以下为输出文件示例:
功能设计:
1.从键盘输入一个数值,并生成相应数量的四则运算练习题。
2.数值的范围为1到100,运算符的范围是+,-,*,/。
3.数值的个数为3个,运算符的个数为2个。
4.运算过程中不得出现负数与非整数。
5.将学号、生成的四则运算练习题并及计算答案输出到名为“Result.txt”的文档中。
设计实现:
测试运行:
核心代码:
以第一个运算符为“/”为例
1 //第一个运算符为“/” 2 else{ 3 if(data1%data2==0 && data2!=0)//判断data1能否被data2整除,且除数data2不能为0 4 { 5 if(operator[num2]=="+")//乘除的优先级高于加减,所以可以顺着往下计算 6 { 7 result=data1/data2+data3; 8 System.out.println(str+"="+result); 9 10 } 11 else if(operator[num2]=="-") 12 { 13 if(data1/data2>=data3)//判断data1/data2的商是否大于data3 14 { 15 result=data1/data2-data3; 16 System.out.println(str+"="+result); 17 18 } 19 else{ 20 number++;//不符合条件就将表达式的个数加1,进行下一个表达式的计算 21 } 22 } 23 else if(operator[num2]=="*") 24 { 25 result=data1/data2*data3; 26 System.out.println(str+"="+result); 27 28 } 29 else{ 30 int result1=data1/data2; 31 if(result1%data3==0 && data3!=0)//判断data1/data2的商能否整除data3,且data3不能为0 32 { 33 result=data1/data2/data3; 34 System.out.println(str+"="+result); 35 36 } 37 else{ 38 number++; 39 } 40 } 41 } 42 else{ 43 number++; 44 } 45 }
总结:
本次实验我的实现过程很简单,而且有很大的局限性,只能生成含有三个数、两个运算符的四则运算练习题。一开始我的想法是将随机生成的四则运算放在一个字符串里,根据逆波兰式运算,将中缀表达式转换成后缀表达式,然后存储在栈中,但是最后没能成功,只好用一种极为简单的方式实现这个实验。说来有些惭愧,有点投机取巧之嫌,不过我的编程能力很差,纵然仔细研究了网上博客中的代码,还是写不出想要实现的方法。虽然很遗憾,但我也只能做到这儿了,不能说问心无愧,只能表明以前用的功太少了,以后回尽力改正,养成良好的习惯。
PSP |
任务内容 |
计划完成需要的时间(min) |
实际完成需要的时间(min) |
Planning |
计划 |
10 |
12 |
Estimite |
估计任务所需时间,并规划大致工作步骤 |
10 |
15 |
Development |
开发 |
100 |
120 |
Analysis |
需求分析 (包括学习新技术) |
8 |
6 |
Design Spec |
生成设计文档 |
6 |
5 |
Design Review |
设计复审(和同事审核设计文档) |
6 |
5 |
Coding Standard |
代码规范(为目前的开发指定合适的规范) |
5 |
5 |
Design |
具体设计 |
12 |
14 |
Coding |
具体编码 |
40 |
46 |
Code Review |
代码复审 |
12 |
15 |
Test |
测试(自我测试,修改代码,提交修改) |
15 |
12 |
Reporting |
报告 |
12 |
10 |
Test Report |
测试报告 |
5 |
5 |
Size Measurement |
计算工作量 |
3 |
3 |
Postmortem & Process Improvement Plan |
事后总结,并提出过程改进计划 |
5 |
8 |