此次的做业是用java来写一个四则运算练习软件,虽然已经在大一的时候学过Java这门课程,但我并无学的很好,甚至因为在这半年里没有代码的练习,忘记了不少基础知识,因此这样的做业对我来讲有些困难。刚开始的时候不知道该如何让下手,也致使写做业的时间有些仓促,在看过先教做业的几个同窗的代码以后才开始动手。在此感谢宇欣给个人帮助,她详细给我解释了如何运用java将简单等式链接起来,如何运算,如何测试,还交给我若是增长括号的解决方法,虽然我没有实现这个功能,可是在这次做业的完成过程当中,我学到了不少。java
一、软件基本功能:git
程序可接收一个输入参数n,而后随机产生n道加减乘除(分别使用符号+-*÷来表示)练习题,每一个数字在 0 和 100 之间,运算符在3个到5个之间。算法
二、用户需求:dom
为了让小学生获得充分锻炼,每一个练习题至少要包含2种运算符。同时,因为小学生没有分数与负数的概念,你所出的练习题在运算过程当中不得出现负数与非整数,好比不能出 3÷5+2=2.6,2-5+10=7等算式。函数
三、基本要求:学习
练习题生成好后,将你的学号与生成的n道练习题及其对应的正确答案输出到文件“result.txt”中,不要输出额外信息,文件目录与程序目录一致。测试
总体思路:在这里我采用的是宇欣教给个人方法,先用Math.random()生成两个随机数进行加减乘除的运算生成简单式,因为在运算过程当中要保证能整除和不出现负数,因此再用+或*链接几个简单式就能够获得有3-5个运算符的式子,而后利用栈来运算答案。代码中共用到了四个函数,分别实现了:两个数的四则运算题目、将运算符增长至3-5个、实现n个混合四则运算、计算答案。编码
一、生成运算式spa
int x = (int) (Math.random() * 100);// 产生100之内的随机数 int y = (int) (Math.random() * 100); int z = (int) (Math.random() * 4);// 产生整数0到3 if (z == 1) { if (x < y) { int temp = x; x = y; y = temp; } } if (z == 3) {// 若是是除法,保证能整除 y = (int) (Math.random() * 20) + 1; x = (int) (Math.random() * 6) * y; } String m = x + op[z] + y; if (op[z].equals("-") || op[z].equals("+")) { flag = 1; } return m;
二、产生3-5个运算符.net
String question = ""; for (int i = 0; i < p; i++) { if (i < p - 1) { String con = op1[(int) (Math.random() * 2)]; question += MakeQuestion1() + con; } else { question += MakeQuestion1(); } flag = 0; }
三、产生n个混合运算
for (int i = 0; i < n; i++) { MakeQuestion3(); if(ifsame==1||answer==1){ i--; ifsame=0; answer=0; } }
此次项目中遇到了一些小的问题,好比在刚开始运行的时候没有注意到题目要求,须要保证整除,因而在计算一些除法问题时出现了错误,以及个人自学能力太差,不少地方都要向同窗请教,并且没有看懂老师提供的调度场算法,但愿老师在课上的时候能够讲解一下。完成这次做业的过程当中,也让我意识到本身在时间分配上的不足,以及了解了一个项目的制做过程,学到了不少经验,相信在下次的做业中,能够作到更合理的时间分配,以及学习利用老师提供的资源。
PSP2.1 |
任务内容 |
计划共完成须要的时间(min) |
实际完成须要的时间(min) |
Planning |
计划 |
15 |
20
|
Estimate |
估计这个任务须要多少时间,并规划大体工做步骤 |
10 |
8 |
Development |
开发 |
360 |
900 |
Analysis |
需求分析 (包括学习新技术) |
6 |
8 |
Design Spec |
生成设计文档 |
0 |
0 |
Design Review |
设计复审 (和同事审核设计文档) |
30 |
20 |
Coding Standard |
代码规范 (为目前的开发制定合适的规范) |
10 |
8 |
Design |
具体设计 |
30 |
40 |
Coding |
具体编码 |
300 |
360 |
Code Review |
代码复审 |
30 |
15 |
Test |
测试(自我测试,修改代码,提交修改) |
30 |
20 |
Reporting |
报告 |
60 |
90 |
Test Report |
测试报告 |
5 |
3 |
Size Measurement |
计算工做量 |
10 |
10 |
Postmortem & Process Improvement Plan |
过后总结, 并提出过程改进计划 |
3 |
3 |