数学题自动生成系统_第1页
数学题自动生成系统_第2页
数学题自动生成系统_第3页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、.目录一、需求分析2二、概要设计3三、详细设计4 3.1 系统E-R图.4 3.2 关系模式. 43.3系统数据流图.53.4基本数据类型操作.5四、调试分析13五、用户手册13六、测试数据14七、附录171、 需求分析小学生数学练习题目自动生成系统要求:编写一个能够自动生成小学生数学练习题目的程序。设计一个程序,能够根据用户的选择生成“10以内加法”、“10以内减法”、“20以内加法”、“20以内减法”、“100以内加法”、“100以内减法”、“100以内乘法”、“100以内除法”8种类型的题目,要求每个题目能够随机生成。此外,用户还能输入答题的数量。答完题后,即可查看统计答题情况,对于答错

2、的题,可显示正确答案。答题数据要求保存到文件中,并可调出查看。 1.1将该系统分割为五个大致模块,主要是由用户信息,题目信息和历史成绩信息相互连接而成,用数据库的方式对其进行记录。 1.2.通过分析可以依次实现,选择题型->设置题目数量->产生随机题目->用户答题->显示答题结果->查询历史答题结果等一系列具体操作。 可简约为: 1.2.1 用户打开系统成功后,则可以开始进行对所具有不同类题目的选择,实现学生自主选题 1.2.3 在选择题目后,便可自主的对其进行填写答题数目 1.2.4 在点击按键“设置”之后,点击“下一题”系统会自动生成显示所选题型的题目 1.3

3、 通过对Java语言的运用,将其与数据库进行对接,则可以完成对系统的实现。而且可以直接在运行成功的界面上进行一系列的具体操作。二、概要设计小学生数学练习题目自动生成系统主要包括用户信息、题目信息、选题情况信息、答题信息、历史成绩信息五个功能模块。2.1 用户信息模板 用户信息模块主要包括用户的信息以及用户的实施操作。 用户信息模块包括:用户姓名,用户编号,所属班级,用户性别,联系电话,家庭住址等相关信息。用户的实施操作:用户可以通过其包含的相关信息,与其他模块进行连接,可以在此系统中依次的进行题型选择,用户答题,显示正确答案以及记录历史答题信息等功能。2.2 题目信息模块 题目信息模块主要实现

4、对数学练习题目信息的管理记录。 题目信息模块主要包括:题目编号,甲空,题目题型,乙空,正确结果等相关信息。2.3 选题情况信息模块 选题情况信息模块主要实现对所具有的题目项目进行管理记录,根据对用户的基础信息和题目信息的相应连接可以实现不同用户对题型的选择,从而可以形成不同的题型,生成相对应的试卷。 选题情况信息模块主要包括:用户编号,题目题型,题目编号等相关信息。2.4 答题信息模块 答题信息模块主要是为了实现与选题情况信息进行对接,根据实现后的答题信息可以直接录入到系统中进行记录。 答题信息模块主要包括:用户编号,题目题型,题目编号,所填答案等相关信息。2.5 历史成绩信息模块 历史成绩信

5、息模块主要是通过与选题情况信息模块相连接,实现小学生对数学练习习题答题历史成绩的记录。 历史成绩信息模块主要包括:用户编号,答题时间,正确数目,错误数目等相关信息。三、详细设计3.1 系统E-R图在系统功能作了详细分析后,可以从中抽象出系统E-R模型,如图:答题内容3.2关系模式将E-R图转化为关系模型:User(user_id,user_nam,user_class,user_tel) Timu(timu_id,timu_one,timu_two,timu_true) History(user_id,answer_time,true_no,flase_no)3.3系统数据流图3.4基本数据类

6、型操作界面设计(设置不同按钮、文本大小以及字体类型大小等):area=new JTextArea(42,100);teacherZhang=new Teacher(this);teacherZhang.setMaxInteger(100);setLayout(new FlowLayout();setSize(1300,500);menubar=new JMenuBar();menu1=new JMenu("难度设置");menu2=new JMenu("历史档案");grade1=new JMenuItem("10以内加法");gra

7、de2=new JMenuItem("10以内减法");grade3=new JMenuItem("20以内加法");grade4=new JMenuItem("20以内减法");grade5=new JMenuItem("100以内加法");grade6=new JMenuItem("100以内减法");grade7=new JMenuItem("100以内乘法");grade8=new JMenuItem("100以内除法");message=new

8、JLabel("你还没有回答呢");Start=new JButton("下一题");giveAnswer=new JButton("提交答案");item=new JMenuItem("答题记录");Qcount=new JLabel("题目数量");set=new JButton("设置");Text1=new JTextField(5);Text1.setText("0");textOne=new JTextField(5);textTwo=new

9、JTextField(5);textResult=new JTextField(5);operatorLabel=new JLabel(" ");final FileDialog filedialog_load=new FileDialog(this,"打开文件对话框",FileDialog.LOAD);add(Qcount);add(Text1);add(set);operatorLabel.setFont(new Font("Arial",Font.BOLD,20);menu1.add(grade1);menu1.add(grad

10、e2);menu1.add(grade3);menu1.add(grade4);menu1.add(grade5);menu1.add(grade6);menu1.add(grade7);menu1.add(grade8);menu2.add(item);menubar.add(menu1);menubar.add(menu2);setJMenuBar(menubar);add(textOne);add(operatorLabel);add(textTwo);add(new JLabel("=");add(textResult);add(giveAnswer);add(me

11、ssage);add(Start);add(area);textResult.requestFocus();textOne.setEditable(false);textTwo.setEditable(false);对不同按钮设置不同监视器: Start.setActionCommand("getProblem"); textResult.setActionCommand("answer"); giveAnswer.setActionCommand("answer"); teacherZhang.setJTextField(textO

12、ne,textTwo,textResult); teacherZhang.setJLabel(operatorLabel,message); Start.addActionListener(teacherZhang); giveAnswer.addActionListener(teacherZhang); textResult.addActionListener(teacherZhang); setVisible(true); validate(); setDefaultCloseOperation(DISPOSE_ON_CLOSE);对不同情况下的选择设置不同符号及能产生的最大随机数: gr

13、ade1.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) teacherZhang.setOperator("+"); teacherZhang.setMaxInteger(10); );grade2.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) teacherZhang.setOperator("-"); teacherZ

14、hang.setMaxInteger(10); );grade3.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) teacherZhang.setOperator("+"); teacherZhang.setMaxInteger(20); );grade4.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) teacherZhang.setOpera

15、tor("-"); teacherZhang.setMaxInteger(20); );grade5.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) teacherZhang.setOperator("+"); teacherZhang.setMaxInteger(100); );grade6.addActionListener(new ActionListener() public void actionPerformed(ActionE

16、vent e) teacherZhang.setOperator("-"); teacherZhang.setMaxInteger(100); );grade7.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) teacherZhang.setOperator("*"); teacherZhang.setMaxInteger(100); );grade8.addActionListener(new ActionListener() publi

17、c void actionPerformed(ActionEvent e) teacherZhang.setOperator("/"); teacherZhang.setMaxInteger(100); );对答题记录设置监视器:item.addActionListener(new ActionListener()Override/ TODO Auto-generated method stubpublic void actionPerformed(ActionEvent e)if(e.getSource()=item)filedialog_load.setVisible(

18、true);area.setText(null);String s;if(filedialog_load.getFile()!=null)tryFile file=new File(filedialog_load.getDirectory(),filedialog_load.getFile();FileReader file_reader=new FileReader(file); BufferedReader in=new BufferedReader(file_reader);while(s=in.readLine()!=null)area.append(s+'n');in

19、.close();file_reader.close();catch (IOException e1);对“设置”创建监视器: set.addActionListener(new ActionListener()Overridepublic void actionPerformed(ActionEvent e) / TODO Auto-generated method stubint n=0;area.setText(null);n=Integer.parseInt(Text1.getText();if(n=0)JOptionPane.showMessageDialog( null,"

20、;请输入题目数量!","提示",JOptionPane.OK_OPTION);elseteacherZhang.setNum(n);String s=String.valueOf(n);area.append(s+'n'););设置监视器从而控制答题数量:public void actionPerformed(ActionEvent e)/ TODO Auto-generated method stubString str=e.getActionCommand();tryif(str.equals("getProblem")&a

21、mp;&k<num)textOne.setText("+ak);textTwo.setText("+bk);operatorLabel.setText(operator);message.setText("请回答");textResult.setText(null);else if(str.equals("getProblem")&&k=num)JOptionPane.showMessageDialog( null,"答题结束","提示",JOptionPane.O

22、K_OPTION);SaveFile(operator);通过if_else循环来计算统一答题情况:if(str.equals("answer") String answer=textResult.getText();int result=Integer.parseInt(answer);ck=result;if(operator.equals("+")if(result=ak+bk)message.setText("回答正确");k+;setIsRight(true);x+;else String s="答案:"

23、+String.valueOf(ak+bk);message.setText(s);k+;setIsRight(false);y+;else if(operator.equals("-")if(result=ak-bk)setIsRight(true);message.setText("回答正确");k+;x+;else setIsRight(false);String s="答案:"+String.valueOf(ak-bk);message.setText(s);k+;y+;else if(operator.equals(&quo

24、t;*")if(result=ak*bk)setIsRight(true);message.setText("回答正确");k+;x+;else setIsRight(false);String s="答案:"+String.valueOf(ak*bk);message.setText(s);k+;y+;else if(operator.equals("/")if(result=ak/bk)setIsRight(true);message.setText("回答正确");ck=result;k+;x+;e

25、lse setIsRight(false);String s="答案:"+String.valueOf(ak/bk);message.setText(s);k+;y+;catch(NumberFormatException ex)message.setText("请输入数字字符"); catch (IOException e1) / TODO Auto-generated catch blocke1.printStackTrace();该函数能够产生随机数:public void setNum(int n)num=n;for(int i=0;i<n

26、;i+)ai=random.nextInt(maxInteger)+1;bi=random.nextInt(maxInteger)+1;保存文件,能够借此找到历史答题情况:public void SaveFile(String str) throws IOException FileWriter fw=null;tryFile file=new File("station.txt"); fw=new FileWriter(file,true);catch(IOException e)e.printStackTrace();PrintWriter pw=new PrintWr

27、iter(fw);pw.flush();Date date = new Date(0161,8, 22);Date nowTime=date;trypw.println("答题时间:"+nowTime);for(int j=0;j<num;j+)pw.println(aj+str+bj+"作答"+cj);pw.println("正确题数:"+x+" "+"错误题数:"+y);pw.println();pw.close();fw.close();catch(IOException e)e.p

28、rintStackTrace();public void setIsRight(boolean T)this.isRight=T;主函数算法:package SYSTEM;class MyFrame public static void main(String args) MathSystem frame; frame=new MathSystem(); frame.setTitle("小学生数学题目自动生成系统"); 四、调试分析1. 没有建立相应的监视器,将两个不同的类连接起来,不能产生随机数,无法进行之后的操作2. 没有设置参数,从而不能控制答题数目,导致可以一直答题

29、,没有限度。之后,设置了单独参数,利用for循环,当大于输入答题数量时,循环结束,系统无法再产生随机题3. 没有设置数据从而对答题情况进行统计,调试后,在判断回答正确否的地方,添加两个数据,分别对对错进行累加,则可以最后显示答题情况4. 在历史答题情况中没有把之前的答题情况分隔开来,导致查看起来很繁琐,在保存内容中添加了时间类Date,则可以显示每次回答问题的时间五、用户手册 本程序的运行环境为windows操作系统 进入演示程序后,即显示对话形式的操作过程,可开始进行系统运行用户对于所要回答的题目类型进行选择,可以分别选择八种不同类型的算术类型选择题型后,用户自主输入所要回答的题目数量,点击

30、“设置”进行保存,以控制后面答题数目 按“下一题”开始后,程序自动生成所选择的题型题目,用户可对此在相对应的空中进行答题在回答一定数目后,点击“下一题”,系统会提示“答题结束”在答题结束之后,可以点击菜单项“历史答题”,选择相对应的文件保存地址,可显示之前的答题记录进行下一个小学生数学练习题目自动生成界面或退出程序。六、测试数据 1、点击运行,打开界面:2、在菜单项选择想要选择的题型:3、填所要要答题数目,店“设置”保存,点击“下一题”便可随机生成所要题目:4、用户答题,当回答正确时,显示如下:5、用户答题,当回答错误时,显示如下:6、当回答题目到达要求时,继续如上操作,显示答题结束:7、点击

31、菜单项“历史档案”,弹出打开文件对话框,选择所要的文件:8、所显示的历史答题档案:七、附录源程序:package SYSTEM;import java.awt.FileDialog;import java.awt.FlowLayout;import java.awt.Font;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.BufferedReader;import java.io.File;import java.io.FileReader;import java.io

32、.IOException;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JOptionPane;import javax.swing.JTextArea;import javax.swing.JTextField;public class MathSystem extends JFra

33、me/* * */private static final long serialVersionUID = 1L;JMenuBar menubar;JMenu menu1,menu2;JMenuItem grade1,grade2,grade3,grade4,grade5,grade6,grade7,grade8,item;JTextField textOne,textTwo,textResult,Text1;JButton Start,giveAnswer,overanswer,set;JLabel operatorLabel,message;Teacher teacherZhang;JLa

34、bel Qcount;int L=0,K=0;JTextArea area;public MathSystem()area=new JTextArea(42,100);teacherZhang=new Teacher(this);teacherZhang.setMaxInteger(100);setLayout(new FlowLayout();setSize(1300,500);menubar=new JMenuBar();menu1=new JMenu("难度设置");menu2=new JMenu("历史档案");grade1=new JMenuI

35、tem("10以内加法");grade2=new JMenuItem("10以内减法");grade3=new JMenuItem("20以内加法");grade4=new JMenuItem("20以内减法");grade5=new JMenuItem("100以内加法");grade6=new JMenuItem("100以内减法");grade7=new JMenuItem("100以内乘法");grade8=new JMenuItem("

36、100以内除法");message=new JLabel("你还没有回答呢");Start=new JButton("下一题");giveAnswer=new JButton("提交答案");item=new JMenuItem("答题记录");Qcount=new JLabel("题目数量");set=new JButton("设置");Text1=new JTextField(5);Text1.setText("0");textOne=new

37、 JTextField(5);textTwo=new JTextField(5);textResult=new JTextField(5);operatorLabel=new JLabel(" ");final FileDialog filedialog_load=new FileDialog(this,"打开文件对话框",FileDialog.LOAD);add(Qcount);add(Text1);add(set);operatorLabel.setFont(new Font("Arial",Font.BOLD,20);menu1

38、.add(grade1);menu1.add(grade2);menu1.add(grade3);menu1.add(grade4);menu1.add(grade5);menu1.add(grade6);menu1.add(grade7);menu1.add(grade8);menu2.add(item);menubar.add(menu1);menubar.add(menu2);setJMenuBar(menubar);add(textOne);add(operatorLabel);add(textTwo);add(new JLabel("=");add(textRes

39、ult);add(giveAnswer);add(message);add(Start);add(area);textResult.requestFocus();textOne.setEditable(false);textTwo.setEditable(false); Start.setActionCommand("getProblem"); textResult.setActionCommand("answer"); giveAnswer.setActionCommand("answer"); teacherZhang.setJT

40、extField(textOne,textTwo,textResult); teacherZhang.setJLabel(operatorLabel,message); Start.addActionListener(teacherZhang); giveAnswer.addActionListener(teacherZhang); textResult.addActionListener(teacherZhang); setVisible(true); validate(); setDefaultCloseOperation(DISPOSE_ON_CLOSE); grade1.addActi

41、onListener(new ActionListener() /设置不同情况下的不同符号 public void actionPerformed(ActionEvent e) teacherZhang.setOperator("+"); teacherZhang.setMaxInteger(10); /控制不同情况的最大随机数 );grade2.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) teacherZhang.setOperator("-&

42、quot;); teacherZhang.setMaxInteger(10); );grade3.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) teacherZhang.setOperator("+"); teacherZhang.setMaxInteger(20); );grade4.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) teach

43、erZhang.setOperator("-"); teacherZhang.setMaxInteger(20); );grade5.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) teacherZhang.setOperator("+"); teacherZhang.setMaxInteger(100); );grade6.addActionListener(new ActionListener() public void actionP

44、erformed(ActionEvent e) teacherZhang.setOperator("-"); teacherZhang.setMaxInteger(100); );grade7.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) teacherZhang.setOperator("*"); teacherZhang.setMaxInteger(100); );grade8.addActionListener(new Action

45、Listener() public void actionPerformed(ActionEvent e) teacherZhang.setOperator("/"); teacherZhang.setMaxInteger(100); );item.addActionListener(new ActionListener() /设置答题记录的监视器Override/ TODO Auto-generated method stubpublic void actionPerformed(ActionEvent e)if(e.getSource()=item)filedialog

46、_load.setVisible(true);area.setText(null);String s;if(filedialog_load.getFile()!=null)tryFile file=new File(filedialog_load.getDirectory(),filedialog_load.getFile();FileReader file_reader=new FileReader(file); /读取字符输入流BufferedReader in=new BufferedReader(file_reader); /缓冲字符输入流while(s=in.readLine()!=

47、null)area.append(s+'n');in.close();file_reader.close();catch (IOException e1);set.addActionListener(new ActionListener() /设置“设置”监视器,要求答题数目填写不能为空Overridepublic void actionPerformed(ActionEvent e) / TODO Auto-generated method stubint n=0;area.setText(null);n=Integer.parseInt(Text1.getText();if

48、(n=0)JOptionPane.showMessageDialog( null,"请输入题目数量!","提示",JOptionPane.OK_OPTION);elseteacherZhang.setNum(n);String s=String.valueOf(n);area.append(s+'n'););package SYSTEM;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.File;import java

49、.io.FileWriter;import java.io.IOException;import java.io.PrintWriter;import java.sql.Date;import java.util.Random;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JTextArea;import javax.swing.JTextField;class Teacher implements ActionListener String operator=" public boolean isRight; int num=0; int k=0; int x=0,y=0; Random random; int maxInteger; JTextField textOne,textTwo,textResult; JLabel operatorLabel,message; JTextArea ARE; MathSystem M; int a=new int100; int b=new int100; int c=new int100; Teacher(MathSystem M) this.M=M; for(int i=0;i&l

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论