小学生口算题答题系统———计应193第六组栗亚文
计划: (0.50小时)
- 首先输入用户名登录答题系统
- 程序随机产生10道根据用户选择的范围和要求的四则运算题
- 开始答题时,同时计时器开始计时
- 答题完毕后提交答案,显示做题情况和答题时间
- 程序根据用户答题情况进行后台记录
需求分析:(用户故事)
作为一名一年级小学生的家长,我希望制作一个出题软件,完成100以内的整数的混合加减法题随机产生,以此来提升孩子的学习进度以及计算水平为以后的学习奠定基础,以便减轻我的家庭负担
生成设计文档
(主要类说明)
Operation类:
重要属性:两个操作数、正确答案、用户答案
重要方法:抽象方法operation,用于对操作数的运算。
+、-、*、/类继承于Operation类,重写operation方法。减法和除法还要保证除数不能为0等。
MyExGUI类:
界面的布局、按钮事件的监听、倒计时的实现等等。
ArithmeticTest8类,调用MyExGUI。(不知道把所有东西都写在MyExGUI是不是正确的做法)
技术难点:
随机产生100以内的正整数
随机产生加减符号
减法为负值的算式要剔除
任务一
随机产生一组(10个)算题---产生算式,剔除不够减,循环产生
任务二
显示一组算题,选择、解答界面,提交按钮,同步计时(秒)
任务三
显示对错,统计正确性,统计时间
代码规范
根据eclipse的代码规范来编写
具体程序设计
主要功能说明
输入用户名后可以点击开始做题按钮,出题时每次出十题,提交后会显示答案。可以选择重做或再次开始做题(不同的题)
输入用户名后可以点击查看记录按钮,查看自己历次做题记录。
每次做题时会有倒计时显示,需要在120s内做完,如果时间到了还没提交则会自动提交。
主要代码:
Operation 类 package 四则运算; import java.io.File; import java.io.FileNotFoundException; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; public abstract class Operation { protected int op1,op2,remainder,usersRemainder,n,correctAnswer,usersAnswer,maxInt=1; protected String ch; protected long minRange,maxRange; public Operation(String ch,int n) { super(); this.ch = ch; this.n = n; } public abstract void operation(); public abstract void isNumRight(); public abstract void setRange(); protected void getRanNum() { op1 = (int)(Math.random()*Math.pow(10,n)); op2 = (int)(Math.random()*Math.pow(10,n)); } public void setUsersAnswer(int usersAnswer,int usersRemainder) //throws Exception { /*setRange(); if(usersAnswer < minRange || usersAnswer > maxRange) throw new NumberTooBigException("答案范围应为"+minRange+"到"+maxRange);*/ this.usersAnswer = usersAnswer; this.usersRemainder = usersRemainder; } public void setUsersAnswer(int usersAnswer) //throws Exception { setUsersAnswer(usersAnswer,0); } public String isCorrect() { if(usersAnswer == correctAnswer) return "回答正确"; else return "回答错误"; } public String printQuestion() { getRanNum(); isNumRight(); return op1+" "+ch+" "+op2+" ="; } public String ptintQA() { operation(); return "答案:"+op1+" "+ch+" "+op2+" = "+correctAnswer; } public void writeToFile(File aFile) { try { PrintWriter out = new PrintWriter(new FileWriter(aFile,true)); out.println("题目:"+op1+" "+ch+" "+op2); out.println("你的答案:"+usersAnswer + " "+ "正确答案:"+correctAnswer); out.close(); }catch(FileNotFoundException e){ System.err.println("File not found!" ); }catch(IOException e2){ e2.printStackTrace(); } }}
运行截图
总结
实现提前先做好计划,写代码时认真规范,做好复审和测试工作。
工作时间比
口算题卡开发 |
预计时间 |
实际记录 |
计划 |
10 |
10 |
|
10 |
10 |
开发 |
86 |
73 |
|
12 |
8 |
|
8 |
10 |
|
12 |
7 |
|
8 |
3 |
|
16 |
13 |
|
21 |
22 |
|
9 |
10 |
报告 |
7 |
5 |
|
3 |
3 |
|
2 |
1 |
|
2 |
1 |
总共花费的时间 |
103 |
93 |