一、需求分析
在这个计算机发展迅速的时代,好像生活中用到计算机的地方都变得很轻松很方便,所以为了方便教师和孩子之间的沟通,以及提高孩子的学习成绩,方便孩子的学习过程,同时教师也会轻松很多,设计了以下程序。
二、功能设计
·基本功能:自动生成四则运算题
·扩展功能:可以控制结果的取值范围
生成的题保存在txt文件里
题目数量可以用户自己选择
三、设计实现
设计一个Test类,在Test类里定义几个变量来fanwei、geshu、fushu、chengchu来接收键盘输入的数字,来判断用户的要求,当用户做出选择时,进入if语句,来执行判断其他条件的分支。以此来完成程序的实现。
四、测试运行
![](https://i-blog.csdnimg.cn/blog_migrate/2457693040622cef2ba43ccab54dae54.png)
![](https://i-blog.csdnimg.cn/blog_migrate/964855960caeb601d3aec9d80ec48a5b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/00c2401a70f650798e29215ed963a6fc.png)
![](https://i-blog.csdnimg.cn/blog_migrate/447dcddeaa65452c6269d9970c2620bf.png)
![](https://i-blog.csdnimg.cn/blog_migrate/73dcb56ce776bf696412344e8a962293.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d49c320d31a72711e86b5eacc319b2a4.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d8d3c763adbf8b99a18b0546fe61c21c.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e0a2b6b128d679fc7581d44fd36509ef.png)
五、代码片段
1.从键盘接收用户所做出的需求选择
1 System.out.println("请输入题目个数:"); 2 Scanner reader=new Scanner(System.in);//控制题目数量 3 int geshu=reader.nextInt(); 4 5 System.out.println("是否含有乘除法");//控制题目操作符 6 System.out.println("1、含有乘除法\t2、不含乘除法"); 7 Scanner sc=new Scanner(System.in); 8 int chengchu=sc.nextInt(); 9 10 System.out.println("操作数范围:");// 控制题目结果取值范围 11 System.out.println("1、100以内\t2、1000以内"); 12 Scanner scn=new Scanner(System.in); 13 int fanwei=scn.nextInt(); 14 15 System.out.println("是否含有负数");//控制题目是否含有负数 16 System.out.println("1、不含有负数\t2、含有负数"); 17 Scanner scan=new Scanner(System.in); 18 int fushu=scan.nextInt();
2.主要循环,判断用户所输入的需求,执行相应代码。
1 for(int i=0;i<geshu;i++){ 2 Random random1=new Random(); 3 int first1=random1.nextInt(100); //随机生成第一个100以内的数 4 int second1=random1.nextInt(100); //随机生成第二个100以内的数 5 int yunsuanfu1=random1.nextInt(4); //随机生成一个4以内的数用来访问数组里的运算符+-*/ 6 7 8 char b1= a1[yunsuanfu1]; 9 int result1=0; //定义result1变量来存储最后计算得到的结果 10 switch(b1){ //判断生成的是什么运算符,并计算结果 11 case '+':result1=first1+second1;break; 12 case '-':result1=first1-second1;break; 13 case '*':result1=first1*second1;break; 14 case '/':result1=first1/second1;break; 15 } 16 17 18 19 if(fanwei==1){ //当用户要求算数结果在100以内时 20 if(result1>=100){ //判断结果是否在100以内,如果不是,再进行一次循环 21 i--; 22 } 23 else{ 24 System.setOut(ps); 25 System.out.println(first1+" "+b1+second1+"="); //如果结果在100以内,就输出 26 } 27 } 28 else if(fanwei==2){ //当客户要求算数结果在1000以内时 29 if(result1>=1000){ //判断是否在1000以内,如果不是,再进行一次循环 30 i--; 31 }else{ 32 System.setOut(ps); 33 System.out.println(first1+" "+b1+second1+"="); //如果结果在1000以内,就输出 34 } 35 }
3.输出到txt文档里
1 PrintStream ps = new PrintStream("D:/result.txt"); 2 System.setOut(ps); 3 System.out.println(first1+" "+b1+second1+"=");
六、总结
先分析程序需要实现什么功能,有一个大体的思路,对程序的框架做一个思考,然后进行实践,把最外层的功能写出来,再在里面加相应的功能。
七、PSP
PSP | 任务内容 | 计划共需要多久(min) | 实际多久(min) |
Planning | 计划 | 20 | 10 |
Estimate | 估计这个任务需要多少时间,并规划大致工作步骤 | 10 | 15 |
Development | 开发 | 90 | 120 |
Analysis | 需求分析 | 10 | 10 |
Design Spec | 生产设计文档 | 10 | 5 |
Design Review | 设计复审 | 5 | 5 |
Coding Standard | 代码规范 | 20 | 30 |
Design | 具体设计 | 30 | 50 |
Coding | 具体编码 | 90 | 150 |
Code Review | 代码复审 | 10 | 15 |
Test | 测试 | 10 | 15 |
Reporting | 报告 | 30 | 20 |
Text Report | 测试报告 | 10 | 15 |
Size Measurement | 计算工作量 | 5 | 7 |
Postmortem&Process Improvement Plan | 事后总结 ,并提出过程改进计划 | 5 | 5 |
我的基础不是特别好,所以在代码编写的过程中浪费了比较多的时间,要去网上查一些资料,查一些代码,测试时候也出现了一些错误,但是也都找到并成功修改了。个人觉得还是知识有所欠缺吧,所以以后会好好去学习这方面的知识。