小学生口算题答题系统———计应193第六组栗亚文

小学生口算题答题系统———计应193第六组栗亚文

计划: (0.50小时)

  1. 首先输入用户名登录答题系统
  2. 程序随机产生10道根据用户选择的范围和要求的四则运算题
  3. 开始答题时,同时计时器开始计时
  4. 答题完毕后提交答案,显示做题情况和答题时间
  5. 程序根据用户答题情况进行后台记录


需求分析:(用户故事)
作为一名一年级小学生的家长,我希望制作一个出题软件,完成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();

        }       

}}

 

运行截图

 小学生口算题答题系统———计应193第六组栗亚文

 

 

总结

实现提前先做好计划,写代码时认真规范,做好复审和测试工作。

 

工作时间比

口算题卡开发

预计时间

实际记录

计划

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

上一篇:四则运算个人工作流程,计应193,第三组,刘晨龙


下一篇:【DB笔试面试193】在Oracle中,集群安装过程中的$GRID_HOME/root.sh脚本的作用是什么?