coding.net地址:https://git.coding.net/zhaorx1998/zrx.demo.git
测试步骤 :1.打开src文件夹
2.命令处行输入:javac -encoding utf-8 Main.java(回车)
3.输入java Main 20(回车)
4.产生result.txt文件
【项目开发流程简介】
一、需求分析:
(1)程序接受参数n后,可生成n道加减乘除四则运算练习题,每个数字在0~100之间,运算符3~5个之间
(2)每个习题至少要包含2运种算符
(3)练习题中不得出现负数和小数
(4)练习题生成好后,将你的学号与生成的n道练习题及其对应的正确答案输出到文件“result.txt”中
二、功能的设计、实现及代码展示:
(1)实现运算符3~5个之间,将两个运算符、三个运算符、四个运算符的固定公式进行循环操作,随机产生3~5个运算符的随机四则运算题目,及相应答案
String rstring1; Random r=new Random(); int p=r.nextInt(3); if(p==0){ for(int i=0;i<3;i++) { Random rand=new Random(); if(i!=1)a[i]=rand.nextInt(3); else a[i]=rand.nextInt(2); } rstring1=num[0]+""+operator[a[0]]+""+num[1]+""+operator[a[1]]+""+num[2]+""+operator[a[2]]+""+num[3]; ArrayList<String> expression1=new ArrayList<String>();//运算式 } else if(p==1){ for(int i=0;i<2;i++) { Random rand=new Random(); if(i!=1)a[i]=rand.nextInt(3); else a[i]=rand.nextInt(2); } rstring1=num[0]+""+operator[a[0]]+""+num[1]+""+operator[a[1]]+""+num[2]; ArrayList<String> expression2=new ArrayList<String>();//运算式 }else{ for(int i=0;i<4;i++) { Random rand=new Random(); if(i!=1)a[i]=rand.nextInt(4); else a[i]=rand.nextInt(2); } rstring1=num[0]+""+operator[a[0]]+""+num[1]+""+operator[a[1]]+""+num[2]+""+operator[a[2]]+""+num[3]+""+operator[a[3]]+""+num[4]; ArrayList<String> expression=new ArrayList<String>();//运算式 }
(2)加减乘除的先后运算顺序,list容器存储数字和符号,用数组存储加减乘除,random随机产生符号,用数字大小判断符号优先级(此部分是参照了一些博主的博文完成的,是这次项目中遇到的比较难的部分)
(3)练习中不得出现负数:在输出处进行“过滤”,带有负数的运算会被“过滤”掉
try{ System.out.println("请输入要生成的算式个数:"); PrintStream ps = new PrintStream("result.txt");// 创建一个打印输出流 System.setOut(ps); System.out.println("2016012010"); int num=0; int corr=0; num=in1.nextInt(); for(int i=0;i<num;i++){ corr+=cre(); if(flag==0){ i--; flag=1; } }
List<String> list = s.list; String oo=s.yunsuan(list); if(Float.valueOf(oo)>=0.000000001){ System.out.println(rstring1+ "="+oo); }else{ flag=0; }
三、结果展示:
实现:学号与生成的n道练习题及其对应的正确答案输出到文件“result.txt”中
四、PSP数据:
SP2.1 |
Personal Software Process Stages |
Time : SeniorStudent(min) |
Time : SDE(min) |
Planning |
计划 |
20 |
35 |
Estimate |
估计这个任务需要多少时间 |
10 |
20+ |
Development |
开发 |
1000 |
1200+ |
Analysis |
需求分析 (包括学习新技术) |
420 |
700+ |
Design Spec |
生成设计文档 |
0 |
0 |
Design Review |
设计复审 |
0 |
0 |
Coding Standard |
代码规范 |
30 |
20 |
Design |
具体设计 |
30 |
50 |
Coding |
具体编码 |
450 |
600 |
Code Review |
代码复审 |
30 |
40 |
Test |
测试 |
40 |
50 |
Reporting |
报告 |
180 |
300 |
|
测试报告 |
120 |
240 |
|
计算工作量 |
30 |
20 |
|
事后总结 并提出过程改进计划 |
30 |
40 |
五、总结
这次的项目比我预计要花费的时间多了一半,很费劲儿,多半时间都在学习实现功能的方法上。从刚开始自己有了大概的思路,然后去看一些相关博客,学习一些相关的知识和方法,再到自己敲代码,还有最后的调bug,每一个环节都很不容易,一步一坎,边学边做,感觉到自己的知识储备和实践能力的匮乏,曾尝试用布尔方法识别运算符来实现附加的括号功能,因为作业截止时间有限,至今没有成功。为自己Java水平的low而深感痛心,直到完成这个项目,心里还是很堵,感觉自己还有很多的不足,在整个项目从头到尾我都在思考和学习,虽然基础一般,但也在尽自己最大的努力做好这个项目,在过程中还是有一些收获的,之后会再多加尝试和努力的!