计应191(西)第五组 张潭
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();
}
}
}
口算题卡开发 |
预计时间 |
实际记录 |
计划 |
12 |
10 |
|
10 |
10 |
开发 |
80 |
73 |
|
12 |
8 |
|
8 |
10 |
|
10 |
7 |
|
8 |
3 |
|
16 |
13 |
|
21 |
22 |
|
9 |
10 |
报告 |
7 |
5 |
|
3 |
3 |
|
2 |
1 |
|
2 |
1 |
总共花费的时间 |
103 |
93 |