JAVA课程设计小学数学算数测试软件.doc_第1页
JAVA课程设计小学数学算数测试软件.doc_第2页
JAVA课程设计小学数学算数测试软件.doc_第3页
JAVA课程设计小学数学算数测试软件.doc_第4页
JAVA课程设计小学数学算数测试软件.doc_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

软 件 学 院课程设计报告书课程名称 面向对象程序设计 设计题目 小学数学测试软件 专业班级 学 号 姓 名 指导教师 2014年 6月目 录1 设计时间32 设计目的33 设计题目34设计任务34、1 基本功能35 设计内容35.1问题描述35.总体设计45.3详细设计45.4测试与分析55.5 程序代码76、功能模块实现296、1符号选择模块296、2 运算范围选择模块296、3 题号与正确题数296、4 题目生成296、5 答案输入框307运行与测试307、1 10以内加法运算308总结与展望30参考文献31成绩评定311 设计时间2014年6月17日20日2 设计目的面向对象程序设计这门学科需要很强的实践动手能力,本次课程设计旨在锻炼自己的动手能力。加强JAVA语言的应用能力,全面地学习JAVA语言,熟练编写过程。掌握基本的实验设计方法,以及基本的应用知识。3 设计题目设计一个小学算术运算测试软件4设计任务4、1 基本功能 设计GUI界面,通过选择不同运算符(如加减法、乘除法)及运算数的范围(如10以内、100以内等)后随机产生指定书目(10道,20道等)的运算式子,测试提交后自动评分,根据不同测试结果给出提示(如“你真棒”,”继续努力”等)。5 设计内容 5.1问题描述 对于小学生来说,涉及到的数学运算不多,可以设计一个简单的数学运算测试小软件,来练习算术能力,帮助小学生提高运算技巧。5.1.1基本要求设计GUI界面,通过选择不同运算符(如加减法、乘除法)及运算数的范围(如10以内、100以内等)后随机产生指定书目(10道,20道等)的运算式子,测试提交后自动评分,根据不同测试结果给出提示(如“你真棒”,”继续努力”等)。5.2总体设计5.2.1 包的描述本程序导入了java.awt.BorderLayout包,java.awt.Color包,java.awt.GridLayout包,java.awt.event.ActionEvent包,java.awt.event.ActionListener包,java.text.DecimalFormat包,javax.swing.JButton包,javax.swing.JFrame包,javax.swing.JPanel包,javax.swing.JTextField包5.2.2 类的设计 定义一个主类,在里面定义构造方法,还有监听器等组件5.3详细设计5.3.1 主要组件设计根据要求软件要能选择运算符号,还有运算范围。能根据测试者做对的题数给予鼓励运算符号选择界面,有四种符号,都分别用单选按钮来实现,再注册事件监听器。运算范围界面,有两种,同样用单选按钮来实现,注册事件监听器。题号,正确题数,题目分别是三个标签。答案输入框是一个文字输入框。开始测试,完成测试,结束测试是三个注册了事件监听器的按钮。 5.3.2页面设计本软件采用了GirdLayout(4,6)布局设计组件的排布界面图5.4测试与分析举几个例子1. 选择10以内的加法进行测试,运行图见5-4-1。图5-4-1选择100以内的乘法运算,运行图见5-4-2。图5-4-2完成测试,运行图见5-4-3。图5-4-3测试没及格,运行图见5-4-4。图5-4-45.5 程序代码import java.awt.*;import java.awt.event.*;import javax.swing.*; class EnglishGame extends JFrame implements ActionListener,ItemListener public JLabel jlQuestion1;/题目标题 public JLabel jlQuestion2;/题目内容 public JLabel jlAnswer;/答案标题 public JLabel jlW;/题号 public JLabel jlT;/正确数 public JButton jbStart;/开始游戏 public JButton jbEnd;/停止游戏 public JButton jbExit;/退出游戏 public JTextField jtfAnswer;/输入答案 public int m,n,l,answer,trueAnswer,x,y=6,a=0,b=0;/随机数m、n,计数参数 public JRadioButton radioButton1; public JRadioButton radioButton2; public JRadioButton radioButton3; public JRadioButton radioButton4; public JRadioButton radioButton5; public JRadioButton radioButton6; public ButtonGroup group1; public ButtonGroup group2; public EnglishGame() /构造函数,设计面板 this.radioButton1=new JRadioButton(加法运算 +); radioButton1.addItemListener(this); this.radioButton2=new JRadioButton(减法运算 -); radioButton2.addItemListener(this); this.radioButton3=new JRadioButton(乘法运算 *); radioButton3.addItemListener(this); this.radioButton4=new JRadioButton(除法运算 /); radioButton4.addItemListener(this); this.group1=new ButtonGroup(); group1.add(radioButton1);group1.add(radioButton2);group1.add(radioButton3);group1.add(radioButton4);radioButton1.addItemListener(this);radioButton2.addItemListener(this);radioButton3.addItemListener(this);radioButton4.addItemListener(this); this.radioButton5=new JRadioButton(10以内的运算); this.radioButton6=new JRadioButton(100以内的运算); this.group2=new ButtonGroup(); group2.add(radioButton5);group2.add(radioButton6);radioButton5.addItemListener(this);radioButton6.addItemListener(this); this.x=0;/参数初始化 this.trueAnswer=0; this.setTitle(小学生算术运算测试软件);/控件初始化 this.setLayout(new GridLayout(4,6);/7行2列布局 this.jlQuestion1=new JLabel(); jlQuestion1.setText(题目:); this.jlQuestion2=new JLabel(); this.jlAnswer=new JLabel(); jlAnswer.setText(答案:); /ImageIcon icon=new ImageIcon(QQ图片大兵.png); this.jbStart=new JButton(开始测试); jbStart.addActionListener(this);/添加事件监听器 this.jbEnd=new JButton(完成测试); jbEnd.setEnabled(false);/开始时不可用 jbEnd.addActionListener(this);/添加事件监听器 this.jbExit=new JButton(退出游戏); jbExit.addActionListener(this);/添加事件监听器 this.jtfAnswer=new JTextField(); jlW=new JLabel(); jlW.setText(题号:+x); jlT=new JLabel(); jlT.setText(正确提交:+trueAnswer); /控件第一行 this.add(new JLabel(请选择运算符:); this.add(radioButton1); this.add(radioButton2); this.add(radioButton3); this.add(radioButton4); /控件第二行 this.add(new JLabel(请选择运算范围:); this.add(radioButton5); this.add(new JLabel(); this.add(new JLabel(); this.add(radioButton6); /控件第三行 this.add(jlW);/添加控件 题号 1 this.add(jlT);/正确数 2 this.add(new JLabel(); this.add(jlQuestion1);/题目标题 2 this.add(jlQuestion2);/题目内容 3 /控件第四行 this.add(jbStart);/开始游戏 this.add(jbEnd);/停止游戏 this.add(jbExit);/退出游戏 this.add(jlAnswer);/答案标题 4 this.add(jtfAnswer);/输入答案 5 public void creatQuestion1()/新建题目,10以内加法 this.m=(int)(Math.random()*11);/随机运算数this.n=(int)(Math.random()*11);answer=m+n;/加法结果this.jlQuestion2.setText(m+n+=?);/使label显示题目内 public void creatQuestion2() /新建题目,10以内减法 this.m=(int)(Math.random()*11);/随机运算数this.n=(int)(Math.random()*11);answer=m-n; /减法结果this.jlQuestion2.setText(m+-+n+=?);/使label显示题目内容 public void creatQuestion3()/新建题目,10以内乘法 this.m=(int)(Math.random()*11);/随机运算数this.n=(int)(Math.random()*11);answer=m*n;/乘法结果this.jlQuestion2.setText(m+*+n+=?);/使label显示题目内容 public void creatQuestion4() /新建题目,10以内除法 this.m=(int)(Math.random()*11);/随机运算数this.n=(int)(Math.random()*11);answer=(int)(m/n);/除法结果this.jlQuestion2.setText(m+/+n+=?);/使label显示题目内容 public void creatQuestion5() /新建题目,100以内加法 this.m=(int)(Math.random()*101);/随机运算数this.n=(int)(Math.random()*101);answer=m+n;/加法结果this.jlQuestion2.setText(m+n+=?);/使label显示题目内容 public void creatQuestion6() /新建题目,100以内加减法 this.m=(int)(Math.random()*101);/随机运算数this.n=(int)(Math.random()*101);answer=m-n;/减法结果this.jlQuestion2.setText(m+-+n+=?);/使label显示题目内容 public void creatQuestion7() /新建题目,100以内乘法 this.m=(int)(Math.random()*101);/随机运算数this.n=(int)(Math.random()*101);answer=m*n;/乘法结果this.jlQuestion2.setText(m+*+n+=?);/使label显示题目内容 public void creatQuestion8() /新建题目,100以内除法 this.m=(int)(Math.random()*101);/随机运算数this.n=(int)(Math.random()*101);answer=(int)(m/n);/除法结果this.jlQuestion2.setText(m+/+n+=?);/使label显示题目内容 public void test() /检测函数,检测是否做到10道题 if(this.x=y) /如果做够数目 jlW.setText(题号:0);/界面初始化 jlT.setText(正确提交:0); jbStart.setText(开始测试); this.jtfAnswer.setText();this.jlQuestion2.setText(); if(trueAnswer(int)(y*0.6) JOptionPane.showMessageDialog( null , 你真棒,及格了!题目数:+y+,测试得分:+(10*trueAnswer), , JOptionPane.INFORMATION_MESSAGE);/弹出统计对话框 else JOptionPane.showMessageDialog( null , 努力吧,小盆友,沒及格 题目数:+y+,测试得分:+(10*trueAnswer), , JOptionPane.INFORMATION_MESSAGE);/弹出统计对话框 x=0;/数据初始化 trueAnswer=0;jbStart.setEnabled(true);/设置对应按钮是否可用jbEnd.setEnabled(false); public void showMe()/窗体显示函数 this.setSize(800,500);/窗体大小 this.setVisible(true);/窗体可见 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/窗体关闭方式 public void itemStateChanged(ItemEvent e) if(e.getSource() = radioButton1)a=1;else if(e.getSource() = radioButton2)a=2;else if(e.getSource() = radioButton3)a=3;else if(e.getSource() = radioButton4)a=4;else if(e.getSource() = radioButton5)b=1;else if(e.getSource() = radioButton6)b=2;public void actionPerformed(ActionEvent e) /事件处理if(e.getSource()=jbStart)/开始游戏或下一题按钮if(jbStart.getText()=开始测试)/按钮为开始游戏jbStart.setText(第一题);jbEnd.setEnabled(true);/设置按钮可用x+;jlW.setText(题号:+x);jbEnd.setEnabled(true);/设置按钮可用else if(a=0)&(b=0)JOptionPane.showMessageDialog( null , 请先选择运算符号和运算范围, , JOptionPane.INFORMATION_MESSAGE);/提示正确else if(jbStart.getText()=第一题)&(a=1)&(b=1)creatQuestion1();jbStart.setText(下一题);else if(jbStart.getText()=第一题)&(a=2)&(b=1)creatQuestion2();jbStart.setText(下一题);else if(jbStart.getText()=第一题)&(a=3)&(b=1)creatQuestion3();jbStart.setText(下一题);else if(jbStart.getText()=第一题)&(a=4)&(b=1)creatQuestion4();jbStart.setText(下一题);else if(jbStart.getText()=第一题)&(a=1)&(b=2)creatQuestion5();jbStart.setText(下一题);else if(jbStart.getText()=第一题)&(a=2)&(b=2)creatQuestion6();jbStart.setText(下一题);else if(jbStart.getText()=第一题)&(a=3)&(b=2)creatQuestion7();jbStart.setText(下一题);else if(jbStart.getText()=第一题)&(a=4)&(b=2)creatQuestion8();jbStart.setText(下一题);else if(jbStart.getText()=第一题)&(a=1)&(b=1)creatQuestion1();jbStart.setText(下一题);else if(jbStart.getText()=下一题)&(a=1)&(b=1)int q=Integer.parseInt(jtfAnswer.getText(); System.out.println(answer); System.out.println(trueAnswer);try if(q=answer)/答案正确 trueAnswer+;/正确回答数增一creatQuestion1();/新建题目x+;jlW.setText(题号:+x);jlT.setText(正确提交:+trueAnswer);test();/判断题目总数this.jtfAnswer.setText();/答案输入框置空 else /答案错误System.out.println(chuo);x+;jlW.setText(题号:+x);jlT.setText(正确提交:+trueAnswer);test();/判断题目总数this.jtfAnswer.setText();catch(NumberFormatException nfe)/转换异常处理JOptionPane.showMessageDialog( null , 输入有误!, , JOptionPane.ERROR_MESSAGE);/提示有误jlW.setText(题号:+x);jlT.setText(正确提交:+trueAnswer);test();/测试题目总数是否够10jlW.setText(题号:+x);jlT.setText(正确提交:+trueAnswer);else if(jbStart.getText()=下一题)&(a=2)&(b=1)int q=Integer.parseInt(jtfAnswer.getText(); System.out.println(answer); System.out.println(trueAnswer);try if(q=answer)/答案正确 trueAnswer+;/正确回答数增一creatQuestion2();/新建题目x+;jlW.setText(题号:+x);jlT.setText(正确提交:+trueAnswer);test();/判断题目总数this.jtfAnswer.setText();/答案输入框置空 else /答案错误System.out.println(chuo);x+;jlW.setText(题号:+x);jlT.setText(正确提交:+trueAnswer);test();/判断题目总数this.jtfAnswer.setText();catch(NumberFormatException nfe)/转换异常处理JOptionPane.showMessageDialog( null , 输入有误!, , JOptionPane.ERROR_MESSAGE);/提示有误jlW.setText(题号:+x);jlT.setText(正确提交:+trueAnswer);test();/测试题目总数是否够10jlW.setText(题号:+x);jlT.setText(正确提交:+trueAnswer);else if(jbStart.getText()=下一题)&(a=3)&(b=1)int q=Integer.parseInt(jtfAnswer.getText(); System.out.println(answer); System.out.println(trueAnswer);try if(q=answer)/答案正确 trueAnswer+;/正确回答数增一creatQuestion3();/新建题目x+;jlW.setText(题号:+x);jlT.setText(正确提交:+trueAnswer);test();/判断题目总数this.jtfAnswer.setText();/答案输入框置空 else /答案错误System.out.println(chuo);x+;jlW.setText(题号:+x);jlT.setText(正确提交:+trueAnswer);test();/判断题目总数this.jtfAnswer.setText();catch(NumberFormatException nfe)/转换异常处理JOptionPane.showMessageDialog( null , 输入有误!, , JOptionPane.ERROR_MESSAGE);/提示有误jlW.setText(题号:+x);jlT.setText(正确提交:+trueAnswer);test();/测试题目总数是否够10jlW.setText(题号:+x);jlT.setText(正确提交:+trueAnswer);else if(jbStart.getText()=下一题)&(a=4)&(b=1)int q=Integer.parseInt(jtfAnswer.getText(); System.out.println(answer); System.out.println(trueAnswer);try if(q=answer)/答案正确 trueAnswer+;/正确回答数增一creatQuestion4();/新建题目x+;jlW.setText(题号:+x);jlT.setText(正确提交:+trueAnswer);test();/判断题目总数this.jtfAnswer.setText();/答案输入框置空 else /答案错误System.out.println(chuo);x+;jlW.setText(题号:+x);jlT.setText(正确提交:+trueAnswer);test();/判断题目总数this.jtfAnswer.setText();catch(NumberFormatException nfe)/转换异常处理JOptionPane.showMessageDialog( null , 输入有误!, , JOptionPane.ERROR_MESSAGE);/提示有误jlW.setText(题号:+x);jlT.setText(正确提交:+trueAnswer);test();/测试题目总数是否够10jlW.setText(题号:+x);jlT.setText(正确提交:+trueAnswer);else if(jbStart.getText()=下一题)&(a=1)&(b=2)int q=Integer.parseInt(jtfAnswer.getText(); System.out.println(answer); System.out.println(trueAnswer);try if(q=answer)/答案正确 trueAnswer+;/正确回答数增一creatQuestion5();/新建题目x+;jlW.setText(题号:+x);jlT.setText(正确提交:+trueAnswer);test();/判断题目总数this.jtfAnswer.setText();/答案输入框置空 else /答案错误System.out.println(chuo);x+;jlW.setText(题号:+x);jlT.setText(正确提交:+trueAnswer);test();/判断题目总数this.jtfAnswer.setText();catch(NumberFormatException nfe)/转换异常处理JOptionPane.showMessageDialog( null , 输入有误!, , JOptionPane.ERROR_MESSAGE);/提示有误jlW.setText(题号:+x);jlT.setText(正确提交:+trueAnswer);test();/测试题目总数是否够10jlW.setText(题号:+x);jlT.setText(正确提交:+trueAnswer);else if(jbStart.getText()=下一题)&(a=2)&(b=2)int q=Integer.parseInt(jtfAnswer.getText(); System.out.println(answer); System.out.println(trueAnswer);try if(q=answer)/答案正确 trueAnswer+;/正确回答数增一creatQuestion6();/新建题目x+;jlW.setText(题号:+x);jlT.setText(正确提交:+trueAnswer);test();/判断题目总数this.jtfAnswer.setText();/答案输入框置空 else /答案错误System.out.println(chuo);x+;jlW.setText(题号:+x);jlT.setText(正确提交:+trueAnswer);test();/判断题目总数this.jtfAnswer.setText();catch(NumberFormatException nfe)/转换异常处理JOptionPane.showMessageDialog( null , 输入有误!, , JOptionPane.ERROR_MESSAGE);/提示有误jlW.setText(题号:+x);jlT.setText(正确提交:+trueAnswer);test();/测试题目总数是否够10jlW.setText(题号:+x);jlT.setText(正确提交:+trueAnswer);else if(jbStart.getText()=下一题)&(a=3)&(b=2)int q=Integer.parseInt(jtfAnswer.getText(); System.out.println(answer); System.out.println(trueAnswer);try if(q=answer)/答案正确 trueAnswer+;/正确回答数增一creatQuestion7();/新建题目x+;jlW.setText(题号:+x);jlT.setText(正确提交:+trueAnswer);test();/判断题目总数this.jtfAnswer.setText();/答案输入框置空 else /答案错误System.out.println(chuo);x+;jlW.setText(题号:+x);jlT.setText(正确提交:+trueAnswer);test();/判断题目总数this.jtfAnswer.setText();catch(NumberFormatException nfe)/转换异常处理JOptionPane.showMessageDialog( null , 输入有误!, , JOptionPane.ERROR_MESSAGE);/提示有误jlW.setText(题号:+x);jlT.setText(正确提交:+trueAnswer);test();/测试题目总数是否够10jlW.setText(题号:+x);jlT.setText(正确提交:+trueAnswer);else if(jbStart.getText()=下一题)&(a=4)&(b=2)int q=Integer.parseInt(jtfAnswer.getText(); System.out.println(answer); System.out.println(trueAnswer);try if(q=answer)/答案正确 trueAnswer+;/正确回答数增一creatQuestion8();/新建题目x+;jlW.setText(题号:+x);jlT.setText(正确提交:+trueAnswer);test();/判断题目总数this.jtfAnswer.setText();/答案输入框置空 else /答案错误System.out.println(chuo);x+;jlW.setText(题号:+x);jlT.setText(正确提交:+trueAnswer);test();/判断题目总数this.jtfAnswer.setText();catch(NumberFormatException nfe)/转换异常处理JOptionPane.showMessageDialog( null , 输入有误!, , JOptionPane.ERROR_MESSAGE);/提示有误jlW.setText(题号:+x);jlT.setText(正确提交:+trueAnswer);test();/测试题目总数是否够10jlW.setText(题号:+x);jlT.setText(正确提交:+trueAnswer);else if(e.getSource()=jbEnd) /中途结束游戏按钮jlW.setText(题号:0);/界面初始化jlT.setText(正确提交:0);jbStart.setText(开始游戏);this.jlQuestion2.setText();jbStart.

温馨提示

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

评论

0/150

提交评论