仓库原地址:https://coding.net/u/zcy0521/p/Software1/git?public=true
一、需求分析
1、做题者需要首先输入自己的学号
2、输入参数n,生成n道四则运算题目,n的大小要在1 ~ 1000内的整数。
3、随机生成数字,数字的大小在0 ~ 100 之间。
4、随机生成运算符 加、减、乘、除,每道题至少要有两种运算符,最好在3 ~ 5种之间。
5、运算的结果和过程中不可以出现小数或者是分数。
6、随机出的n道题目不可以出现重复题目。
二、功能分析
- 程序可接收一个输入参数n,然后随机产生n道加减乘除(分别使用符号+ - * ÷来表示)练习题,每个数字在 0 和 100 之间,运算符在3个到5个之间。
- 为了让小学生得到充分锻炼,每个练习题至少要包含2种运算符。同时,由于小学生没有分数与负数的概念,你所出的练习题在运算过程中不得出现负数与非整数,比如不能出 3÷5+2=2.6,2-5+10=7等算式。
- 练习题生成好后,将你的学号与生成的n道练习题及其对应的正确答案输出到文件“result.txt”中,不要输出额外信息,文件目录与程序目录一致。
- 当程序接收的参数为4时,以下为一个输出文件示例。
2018010203
13+17-1=29
11*15-5=160
3+10+4-16=1
15÷5+3-2=4
1、做题者要能够先输入对应学号
2、接受参数n,需要可以按照做题者的需求给予相应的题目量,N的大小要是1 ~1000 内的整数
3、随机生成的运算式中的数字为 0 ~100 内的整数,运算过程中不可以出现假分数、负数等超纲问题
4、需要可以在result.txt文件中输出做题者的学号以及所出题目的正确答案
5、运算式题目不可以重复
三、设计实现
由于本人编程能力有限,所以代码写的比较简单,不能拓展到多个运算符,我的主要写了四个类 分别为 Jiajian 、Chengchu 、Hunhe 、Size ,
Jiajian 类主要用于计算有两个运算符的四则运算,
Chengchu 类主要用于运算有三个运算符的四则运算,
Hunhe类主要用于 有四个运算符的四则运算,
Size主要用于有四个运算符的四则运算。
其中 Jiajian 类写在了main方法中,用Math中的random()方法生成字符以及数字,其他各类自成一个java文件。当你输入的格式不符合要求时,就会调用showme()方法结束运算。
四、测试运行
首先是main函数,因为我对于随机生成函数不是特别熟悉,所以我将程序分成几个类来运算,分别计算运算符个数不同的四则运算通过输入用户想要做的四则运算的类型来输出相应的题目
1 package software; 2 import java.util.*; 3 4 public class Sizeyunsuan { 5 6 public static void main(String[] args) { 7 System.out.println("请输入你的学号: "); 8 Scanner g = new Scanner(System.in); 9 int xuehao = g.nextInt(); 10 System.out.println("0表示结束运算,1代表两个运算符的四则运算,2代表三个运算符的四则运算,3四个运算符的四则运算,4五个运算符的四则运算 请选择:"); 11 Yunsuan bn=new Yunsuan(); 12 Jiajian an=new Jiajian(); 13 Chengchu cn=new Chengchu(); 14 Hunhe dn=new Hunhe(); 15 Size en=new Size(); 16 Scanner in = new Scanner(System.in); 17 int L=in.nextInt(); 18
当用户输入相应的数字后,就会调用相应的类进行计算,以上代码是之前的,原来我是想要一行输出十个运算的运算式,就用了两个for循环,外层N/10来决定行数,内层用 j<10 的x循环来决定每一行的个数为10,本意是为了让输出的运算式看起来更加工整,但是后来发现这样题目的个数就只能让输入10的倍数,否则就会出现一些错误,所以后来我就把两层循环去掉了,只用一个 i< N 这一个循环
1 if(L==1) 2 { 3 System.out.println("当M=10时表示个位数的加减运算,M=100时表示两位数的加减运算...请选择"); 4 int M=in.nextInt(); 5 an.setM(M); 6 System.out.println("请输入需要打印多少道题,10的倍数:"); 7 int N=in.nextInt(); 8 an.setN(N); 9 an.Showme(); 10 }
因为运算的题目有要求,运算式中的数字不可以超过100,但也不能小于0,因此,我把区间的数字分成了个位数和两位数供用户选择,通过Math类中random方法生成符合条件的数字
1 int a=(int)(Math.random()*M)+1;
以下为运算输出结果
1 请输入你的学号: 2 3 2016012011 4 0表示结束运算,1代表两个运算符的四则运算,2代表三个运算符的四则运算,3四个运算符的四则运算,4五个运算符的四则运算 请选择: 5 6 3 7 "当M=10时表示个位数的加减运算,M=100时表示两位数的加减运算...请选择" 8 9 100 10 请输入需要打印多少道题,10的倍数: 11 12 50 13 67+90*18*90+75= 14 49-19*96*65*15= 15 79*50*83+35-64= 16 63-48-17-75/40= 17 14/87+52-41+74= 18 99-72-97/2-67= 19 57-46+38*30-99= 20 7-89*90+55+53= 21 68+45/5+21+34= 22 11-34/79*7-41= 23 55+15+80+71/70= 24 29*94+28/8*77= 25 6*30-63*42-35= 26 62*96*66+68-11= 27 69-36*39+16*100= 28 20-4/14+88/37= 29 60*92+60-12*6= 30 88-48-20+30+39= 31 76*71+30-77*66= 32 40/55+90+37-82= 33 17/11/36*84*8= 34 31+27+34+16/81= 35 29-25/87+4+70= 36 96*40+87+59*17= 37 34+62/20-91+62= 38 42*58-97-34*38= 39 26-60-86-83+34= 40 63+75*84+39+8= 41 85-33*35+92+53= 42 10-7+57+76*45= 43 1*76/76+38/10= 44 55-80/44/66/11= 45 76+48+98-64/81= 46 28/36/52*62/78= 47 81-96/34+37*80= 48 75*2/86/71-79= 49 57-34+58-23-81= 50 67*39*98-35*37= 51 10*53+64-72+85= 52 45*3-69+3/20= 53 89/6*7*64-48= 54 95*37-88-15*59= 55 81*5/49+2+69= 56 59+42/43/75-39= 57 13/98/32+68+86= 58 36/32/51+68+19= 59 35-62-22-13+42= 60 34*32-27/87+78= 61 35*55*57/53/97= 62 29+31/30/59*34=
五、总结
通过这一次的作业的学习,我更加认识到了自己的不足之处,也更加正视自己缺点,代码能力太弱了,一些功能根本不会写,即使是看了一些别人的代码,也还是存在看不懂的情况,短短的时间又不可能把之前的所有都补上,所以我一度产生了放弃的想法,认为反正我怎么想也不可能完成的,这个任务对于我来就是不可能完成的,这么难,觉得我怎么可能写的出来,也产生了很多的负面情绪,一次次的否定自己,但是看见大家都在努力的去做,又觉得自己也应该尝试一下,即使做不出来,完不成要求,但我努力过了,就不会后悔,也想不给自己留下遗憾,所以我尝试了,可能结果差强人意,但我尽自己的能力去学习了,在之后也会更加努力的去学习,没有什么是可以一蹴而就的,争取把之前落下的一点点的都补上,可能这次作业做得不是特别符合老师的老师的要求,有一些功能也还没有实现,但我真的是尽了自己的努力了,希望下次可以做的好。
六、PSP
PSP2.1 |
任务内容 |
计划共完成需要的时间(h) |
实际完成需要的时间(h) |
Planning |
计划 |
1 |
1.5 |
· Estimate |
· 估计这个任务需要多少时间,并规划大致工作步骤 |
1 |
2.5 |
Development |
开发 |
2 |
3 |
· Analysis |
· 需求分析 (包括学习新技术) |
0.5 |
1 |
· Design Spec |
· 生成设计文档 |
1 |
1 |
· Design Review |
· 设计复审 (和同事审核设计文档) |
0.5 |
3 |
· Coding Standard |
· 代码规范 (为目前的开发制定合适的规范) |
1 |
3 |
· Design |
· 具体设计 |
2 |
7 |
· Coding |
· 具体编码 |
5 |
10 |
· Code Review |
· 代码复审 |
0.5 |
9 |
· Test |
· 测试(自我测试,修改代码,提交修改) |
1 |
2 |
Reporting |
报告 |
0.5 |
6 |
· Test Report |
· 测试报告 |
1 |
2 |
· Size Measurement |
· 计算工作量 |
1 |
1 |
· Postmortem & Process Improvement Plan |
· 事后总结, 并提出过程改进计划 |
1 |
3 |