JAVA课程设计小学数学算数测试软件.doc

上传人:wux****ua 文档编号:9357059 上传时间:2020-04-05 格式:DOC 页数:31 大小:245KB
返回 下载 相关 举报
JAVA课程设计小学数学算数测试软件.doc_第1页
第1页 / 共31页
JAVA课程设计小学数学算数测试软件.doc_第2页
第2页 / 共31页
JAVA课程设计小学数学算数测试软件.doc_第3页
第3页 / 共31页
点击查看更多>>
资源描述
软 件 学 院课程设计报告书课程名称 面向对象程序设计 设计题目 小学数学测试软件 专业班级 学 号 姓 名 指导教师 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.setEnabled(true);jbEnd.setEnabled(false);/jbTest.setEnabled(false);JOptionPane.showMessageDialog( null , 题目数:+x+,测试得分:+(10*trueAnswer), , JOptionPane.INFORMATION_MESSAGE);/统计信息对话框 else if(e.getSource()=jbExit)/退出游戏按钮System.exit(0);public static void main(String args)EnglishGame y=new EnglishGame();y.showMe();y.setLocationRelativeTo(null);/窗体在屏幕中央打开 6功能模块实现6、1符号选择模块 首先,符号选择只能有一个符号,所以选择单选按钮来实现符号选择功能,先建立一个标签为符号选择标签。然后建立四个单选按钮,并用group方法实现其单选功能。最后注册监听器,用ItemListener监听器实现。6、2 运算范围选择模块 实现方法同符号选择模块,为单选按钮,注册ItemListener监听器。6、3 题号与正确题数 定义两个int型变量,将题号和正确题数传递给这两个变量。6、4 题目生成 用Math.Random()*a生成随机数,将其赋值给两个int型变量。6、5 答案输入框建立一个输入框,将答案输入的时候,可获得答案,将答案与之前定义的answer进行比较,比较结果相同时正确题数加1,题号加1,生成新题目。7运行与测试 7、1 10以内加法运算 当用户想进行10以内的加法运算的时候,先选择运算符号为加号,然后选择运算范围。如果用户不选择运算范围和运算符号的话,直接点击开始测试会弹出“请先选择运算符号和运算范围”的对话框。选择符号与范围之后,点击开始测试,题号会自动加1,题目会生成10以内的加法运算,填完答案后,点击下一题按钮8总结与展望 通过本次的课程设计,我学会了很多。从最开始的不知道自己的主要目标到逐步掌握java的运行原理,我的基础知识和技能得到了提高。尤其是在监听器设置方面的问题,我掌握了很多知识在设计过程中,我学到了许多,也发现了自己的不足。最明显的收获就是理解和较熟练的掌握了javaApplet图形界面的基本方法,尤其在布局方面学到很多,以前布局很乱并且很多布局都是无效的,因此我学会了如何布局。此次课程设计中,我懂得了在今后社会的发展和学习实践过程中,一定要拼搏努力,不能遇到问题就退缩,一定要不厌其烦地发现问题所在,然后一一进行解决,只有这样,才能获得最终的胜利。不然,是将永远不能获得成功的,也不能得到社会及他人对自己的认可!课程设计诚然是一门专业课,让我的专业知识以及专业技能上得到提升,同时又是一门讲道课,一门辩思课,给了我许多道、很多思,给了我莫大的空间。我认为,在此次实践中,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。更重要的是,我们学会了很多学习的方法。而这正是以后最实用的知识。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。参考文献1 刘万军,郑少京,王松波,梁清华.JAVA6程序设计实践教程M.第1版, 北京:清华大学出版社,2009 2Y.Daniel Liang.Java语言程序设计(基础篇)M.第8版, 机械工业出版社出版社,2011成绩评定成绩 教师签字
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!