2016012061 小学四则运算练习软件项目报告
小学四则运算练习软件项目报告
代码地址:https://git.coding.net/yangyc061/personal-project.git
一、需求分析
设计并编写一个java程序,使之能够实现小学四则运算自动出题,同时,要能够给出正确答案。
二、功能设计
(1)基本功能:
1.程序可接收一个输入参数n,然后随机产生n道加减乘除(分别使用符号+-*÷来表示)练习题。
2.每个数字在 0 和 100 之间,运算符在3个到5个之间。
3.每个练习题至少要包含2种运算符。
4.练习题在运算过程中不得出现负数与非整数,比如不能出 3÷5+2=2.6,2-5+10=7等算式。
5.当程序接收的参数为4时,以下为一个输出文件示例:
(2)扩展功能:
练习题生成好后,将自己的学号与生成的n道练习题及其对应的正确答案输出到文件“result.txt”中,不要输出额外信息,文件目录与程序目录一致。
三、设计实现
1.利用Math.random()随机生成100以内的四个数
2.利用Math.random()随机生成四则运算符号
3.用户输入题目的数量,产生相应数量的四则运算表达式
4.输出结果到result.txt文件
四、算法详解
1.随机生成操作数与运算符
//生成四个随机数和运算符
int a=(int)(Math.random()*100);
int b=(int)(Math.random()*100);
int c=(int)(Math.random()*100);
int d=(int)(Math.random()*100);
int x=(int)(Math.random()+1);
2.提示用户输入题目数量
input = new Scanner(System.in); int n=0; System.out.println("文件创建成功!请输入四则运算练习题的数量:"); //提示用户输入四则运算题的数量 try { n=input.nextInt(); if(n>1000||n<1){ System.out.println("对不起,只允许输入1-1000之间的整数!"); //判断用户输入的题目数量是否合法 return; //结束运行 } }catch (Exception e){ //判断用户的输入是否不是数字 System.out.println("对不起,只允许输入1-1000之间的数字!"); return; //结束运行 }
3.生成result.txt文件记录结果
File writename = new File("../result.txt"); //建立result文件来保存运算产生的结果" writename.createNewFile(); out = new BufferedWriter(new FileWriter(writename)); out.write("2016012061\r\n"); //向文件中输入学号
五、测试运行
1.命令行输出
2.result.txt文件输出
六、部分代码展示
private static Scanner input; private static BufferedWriter out; public static void main(String []args) throws IOException{ input = new Scanner(System.in); int n=0; System.out.println("文件创建成功!请输入四则运算练习题的数量:"); //提示用户输入四则运算题的数量 try { n=input.nextInt(); if(n>1000||n<1){ System.out.println("对不起,只允许输入1-1000之间的整数!"); //判断用户输入的题目数量是否合法 return; //结束运行 } }catch (Exception e){ //判断用户的输入是否不是数字 System.out.println("对不起,只允许输入1-1000之间的数字!"); return; //结束运行 } File writename = new File("../result.txt"); //建立result文件来保存运算产生的结果" writename.createNewFile(); out = new BufferedWriter(new FileWriter(writename)); out.write("2016012061\r\n"); //向文件中输入学号 for(int i=0;i<n;i++) //使用for循环随机生成n个四则运算表等式 { //生成四个随机数和运算符 int a=(int)(Math.random()*100); int b=(int)(Math.random()*100); int c=(int)(Math.random()*100); int d=(int)(Math.random()*100); int x=(int)(Math.random()+1); switch(x) { case 0: while(true){ d= (int) (Math.random()*100+1 ); //保证 分母不为零 if(c%d==0) { System.out.println(a+"+"+b+"+"+c+"÷"+d+"="); out.write(a+"+"+b+"+"+c+"÷"+d+"="+(a+b+c/d)+"\r\n"); break; } }
七、PSP展示
PSP |
任务内容 |
计划共完成需要的时间(min) |
实际完成需要的时间(min) |
Planning |
计划 |
30 |
30 |
· Estimate |
· 估计这个任务需要多少时间,并规划大致工作步骤 |
30 |
30 |
Development |
开发 |
360 |
459 |
· Analysis |
· 需求分析 (包括学习新技术) |
10 |
10 |
· Design Spec |
· 生成设计文档 |
10 |
6 |
· Design Review |
· 设计复审 (和同事审核设计文档) |
4 |
6 |
· Coding Standard |
· 代码规范 (为目前的开发制定合适的规范) |
6 |
5 |
· Design |
· 具体设计 |
10 |
12 |
· Coding |
· 具体编码 |
300 |
400 |
· Code Review |
· 代码复审 |
10 |
10 |
· Test |
· 测试(自我测试,修改代码,提交修改) |
10 |
10 |
Reporting |
报告 |
15 |
15 |
· Test Report |
· 测试报告 |
8 |
7 |
· Size Measurement |
· 计算工作量 |
2 |
3 |
· Postmortem & Process Improvement Plan |
· 事后总结, 并提出过程改进计划 |
5 |
5 |
八、总结
经过这一次项目的练习,我深刻意识到自己编码能力的低下。因为,对于这样的一个问题,我一开始简直就是毫无头绪,随后,有了些许想法之后,但我对于JAVA语言,可以说是基本不懂,于是我还得上网查阅,询问同学。最后,对于这个项目,我还得反反复复,大量的查看别的已经提交了这个作业的同学的代码,以他们的代码来作为参考,获得思路。同时,我也在此声明,由于我实在不会编写这个程序,所以我就对郑栋同学的代码做了借鉴与参考(链接地址:https://git.coding.net/moyuming/XiangMu.git)。总体来说,题目所要求的功能,经过我向同学的请教与别人作业的参考,我还是勉强实现了,但是,跟其他同学比起来,我的项目也一定还有不足之处,对此,我也深感遗憾,实在抱歉!
其次,我的实践能力也确实低下,虽然很快就下载好了项目要求的jdk和jre,同时通过上网查阅相关资料,也很快就配置好了环境变量,但是,对于下载的ecllipse却不会使用,还得向同学请教,这就算了,也不知道是什么时候,什么原因,一不小心就把eclipse的console视图给关闭了,所以我还以为是eclipse出问题了,上网查也查不出是什么原因,最后就卸载了又重装,就这样反复了两次,最后总算终于知道是什么原因了,想一想,我还真是够愚蠢的。
所以,经过这一次的经验与教训,我意识到自己确实还存在着很大的不足,虽然,我不能说是立马就能克服这些不足,但是,我会去一点一点的克服它,去弥补它。