职场文秘网

首页 > 哲学范文 > 三个代表 / 正文

小学算术运算测试程序JAVA课程设计报告

2020-12-22 00:07:39

面向对象程序设计(JAVA)课程设计说明书 学院名称:
计算机与信息工程学院 班级名称:
20XX级计算机科学与技术 题 目:
小学算术运算测试程序 面向对象程序设计(JAVA)课程设计任务书 学 院 计算机与信息工程学院 专 业 20XX级计算机科学与技术 课程名称 面向对象程序设计(JAVA) 题 目 小学算术运算测试程序 完成期限 2018年01月02日至2018年01月08日共1周 内 容 及 任 务 一、项目的目的 1.加深学生对面向对象程序设计(Java)课程基本知识的理解,综合应用所学的知识,独立完成一个以面向对象程序设计应用为课题的设计;

2.根据问题需要,通过查阅手册和文献资料,培养分析和解决实际问题的能力;

3.灵活运用类、对象、输入输出流、GUI、多线程、数据库编程等相关知识编写程序。

二、项目任务的主要内容和要求 主要内容:编写一个可供小学数学运算的程序:可选择题目难度,并根据选择的难度分配加、减、乘、除法的题目,能根据输入题数并分配分值(总分100),判断做题是否正确,最后计算分数。

要求:1、编写图形化界面,每组4人,分工独立完成;

2、 能够按照要求完成系统设计并撰写课程设计报告。

三、项目设计思路 题目要求设计一个可以自动出题(算数运算)的测试程序,首先需要明确该系统的功能:选择题目难度、选择题数、依据题数自动分配分值、自动出题、评卷并给出答对题数和总得分;
接着根据功能设计图形化界面:选择题目难度界面、试卷界面和评分界面;
然后结合功能和图形化界面编写代码,进行测试,不断完善代码;
最后得到我们所需要的测试程序。

四、具体成果形式和要求 程序和课程设计文档 进 度 安 排 起止日期 工作内容 2018年01月02日至 2018年01月02日 需求分析 2018年01月03日至 2018年01月04日 系统设计,根据前期的需求分析结果设计各个功能模块 2018年01月05日至 2018年01月06日 编码,调试和测试程序 2018年01月07日至 2018年01月08日 撰写课程设计报告,进行答辩 主 要 参 考 资 料 [1] 赵生慧.Java面向对象程序设计(第二版)[M].北京:中国水利水电出版社,2013. [2]毕广吉.Java程序设计实例教程[M].北京:冶金工业出版社,2007. [3]王保罗.Java面向对象程序设计[M].北京:清华大学出版社,2003. [4]高林,周海燕.JSP网上书店系统与案例分析[M].北京:人民邮电出版社,2004. 指导教师 意见 (签字):
年 月 日 系(教研室)主任意见 (签字):
年 月 日 目 录 摘要 1 1.引言 1 1.1选题背景 1 1.2 选题意义 1 1.3主要内容及分工 1 1.4组织结构 2 2.需求分析 2 2.1系统流程图 2 2.2系统功能图 2 3. 系统设计 3 3.1类的设计 3 3.2功能模块设计 3 3.2.1用户选择信息模块 3 3.2.2题目信息模块 4 3.2.3答案信息模块 4 3.2.4成绩信息模块 4 4.编码 4 4.1导入相关包和类 4 4.1.1包 4 4.1.2类 4 4.2各模块代码 5 4.2.1用户选择信息模块 5 4.2.2题目信息模块 5 4.2.3答案信息模块 7 4.2.4成绩信息模块 8 5.测试结果 9 5.1用户选择信息模块 9 5.2题目信息模块 10 5.3答案信息模块 10 5.4成绩信息模块 11 6. 结束语 12 附录 12 参考文献 21 致谢 22 摘要 本文使用了Java面向对象程序设计语言实现了一个小学算数运算的测试程序。该程序的主要功能是根据用户的需求,自定义试卷的题目难度和题目数量,试卷总分100分,根据题数自动分配每题分值,提交评卷后给出答对题数和总得分。测试结果表明该程序运行正常。

1.引言 1.1选题背景 计算是数学知识中的重要内容之一,数学计算能力是一项基本的数学能力,计算能力是学习数学和其他学科的重要基础,因为在小学教材中计算教学所占的比重较大,学生计算能力的高低直接影响着学生学习的质量,因为,数学中有些概念的引入需要通过计算来进行;
数学中解决实际问题的解题思路、步骤、结果也要通过计算来落实。因此,为了提高孩子们的数学计算能力和速度,同时方便家长们能便捷地对孩子们进行准确的数学算术测试,我们设计了这个简单的数学测试程序。

1.2 选题意义 对于使用者来说,该程序能根据输入题目数出题并分配分值(总分100),可以随机抽取在10以内的有关加、减、乘、除以及开方的数学题。并且,测试题有三种难度级别,家长可以根据孩子的情况自行选择。最后能测试出孩子的得分并显示出正确答案。对于设计者而言,该程序能够让我们全面熟悉、掌握Java程序设计基本知识,增强对不同的问题运用和灵活选择合适的数据结构以及Java程序设计的本领[1]。熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法[2],进一步提高上机动手能力,增强Java程序设计概念[3],熟悉Java语言编程,养成提供文档资料的习惯和规范编程的思想,为后继课程的实验以及课程设计打下较扎实的基础。进一步提高上机动手能力,培养使用计算机解决实际问题的能力,为后继课程的实验以及课程设计打下扎实的基础[4]。

1.3主要内容及分工 本程序的主要功能:
(1)选择难度等级,分别为初级、中级、高级;

(2)输入题目个数;

(3)填写题目答案或选择重新出题;

(4)系统评卷,对的题目前打“*”并给出对的题数和总分;

(5)退出系统。

成员分工:
(1)XX:需求分析、测试结果记其他(文档),三种级别、评卷和重新出题的事件监听器(代码);

(2)XX:结束语、附录、致谢(文档),用户选择信息及其界面(代码);

(3)XX:总体设计、编码(文档),答案的判断及其他(代码);

(4)XX:摘要、引言(文档);
三种级别题目的随机产生(代码)。

1.4组织结构 第一章 :摘要,主要介绍了该报告的主体内容;

第二章 :引言,主要介绍了选题背景和意义,主要内容及成员分工和组织结构;

第三章 :需求分析,主要介绍了系统功能图和系统流程图;

第四章 :总体设计,主要介绍了类的设计和功能模块设计;

第五章 :编码,主要介绍了各个功能模块的具体实现代码;

第六章:测试结果,主要介绍了各个功能模块的测试结果;

第七章:结束语,主要介绍了对所有工作的总体概括。

2.需求分析 2.1系统流程图 系统流程如图2.1所示,开始程序,并选择困难等级,输入题目个数,填写答案或重新出题,评卷后结束。

选择难度等级 输入题目个数 填写题目答案 评 卷 退 出 图2.1 小学算术运算测试系统流程图 2.2系统功能图 系统功能图如图2.2所示,等级分为初级,中级,高级;
输入题目个数;
填写答案或重新出题;
评卷时对的题目前面标“*”,并给出对的题数和总分;
结束系统。

选择难度等级 初级 中级 高级 输入题目个数 重新出题 填写题目答案 评 卷 对的题目前面打“*” 给出对的题数和总分 退 出 图2.2 小学算术运算测试系统功能图 3. 系统设计 分析题意,把小学算数运算测试系统拆分为四个模块,分别是用户选择信息,题目信息,答题信息和成绩信息这四个功能模块。根据功能模块编写相应的代码进行测试达到需求的结果。

3.1类的设计 定义一个名为Paper的主类,在里面定义构造方法,还有监听器等组件。其次定义一个计算中间容器JiusuanPanel类继承面板类的内容。,在里面添加容器,定义生成的算数和计算方法,判断方法。

3.2功能模块设计 3.2.1用户选择信息模块 用户可以选择对应难度的题目,分初级,中级,高级。因为首先选择题目难度,只能是单选,所以选择单选框按钮JRadioButton,并用Paper方法实现其单选功能。最后注册监听器ActionListener。

3.2.2题目信息模块 主要通过这个模块加上数组的功能实现根据输入题目数给出相应的题目,题目类型和空格。主要是通过定义计算方法easy,middle,hardt创建各种类型的题目。用Math.Random()*a生成随机数。在添加到计算中间容器JisuanPanel。

3.2.3答案信息模块 为了实现选题信息的对接,答题信息模块主要包括填写答案,对答案的判断和给出来的答案。主要与题目信息模块共用一个类,在定义一个布尔类型方法right判断正确。通过建立一个输入框,将答案输入,将获得的答案与正确的比较,在监听器方法中若结果相同正确题数加1。

3.2.4成绩信息模块 在这个监听器接口实现方法进行,用if语句和for循环来实现选择题型答题后正确数的累加,在对话框actionPerformed监听器事件方法中实现不同题目数的分值和总成绩的统计。

4.编码 4.1导入相关包和类 4.1.1包 import java.awt.BorderLayout; import java.awt.Container; import java.awt.FlowLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.ButtonGroup; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.JScrollPane; import javax.swing.JTextField; 4.1.2类 Class Paper//主类 Class JisuanPanel//副类,存放方法体。

JFrame JPanel//父类 4.2各模块代码 4.2.1用户选择信息模块 创建JLabel标签和JRadioButton单选按钮,组件显示出给用户选择的界面框架:
JFrame jf = new JFrame(“等级选择“); JLabel lab = new JLabel(“选择等级:“); JRadioButton rb1 = new JRadioButton(“初级“); JRadioButton rb2 = new JRadioButton(“中级“); JRadioButton rb3 = new JRadioButton(“高级“); ButtonGroup grp = new ButtonGroup();//创建单选按钮和 protected JisuanPanel[] panels; 在这个主类中创建Paper方法继承JFrame中的功能,这个方法用来排列各个组件在面板中的布局:
public Paper() { super(“数学等级计算题“); Container cp = jf.getContentPane(); /********************等级选择界面设计 ********************/ jf.setSize(200, 150); cp.setLayout(null); lab.setBounds(20, 20, 140, 20); rb1.setBounds(20, 40, 140, 20); rb2.setBounds(20, 60, 140, 20); rb3.setBounds(20, 80, 140, 20); grp.add(rb1); grp.add(rb2); grp.add(rb3); cp.add(lab); cp.add(rb1); cp.add(rb2); cp.add(rb3); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf.setVisible(true); 4.2.2题目信息模块 /********************选择初级********************/ j.rb1.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { // TODO Auto-generated method stub int s = JOptionPane.showConfirmDialog(null, “确定选择初级?“, “初级“, JOptionPane.YES_NO_OPTION); //询问一个确认问题 if (s == 0) { String inputValue = JOptionPane.showInputDialog(“输入题目个数:“); try { Paper.n = Integer.parseInt(inputValue); } catch (Exception e) { Paper.n = 20; } // 如未输入题数,则自动分配20题 j.panels = new JisuanPanel[Paper.n]; for (int i = 0; i < j.panels.length; i++) j.panels[i] = new JisuanPanel();//创建数组对象利用for循环,把jisuanPanel的组件全部生成, Container c = j.getContentPane(); c.setLayout(new BorderLayout()); JPanel panel = new JPanel(new GridLayout(Paper.n / 2 + 1, 2)); for (int i = 0; i < j.panels.length; i++) panel.add(j.panels[i]); c.add(new JScrollPane(panel), BorderLayout.CENTER); /********************重新出题********************/ panel.add(button); button = new JButton(“重新出题“); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub for (int i = 0; i < j.panels.length; i++) j.panels[i].easy(); } )}; 调用jisuanPanel类中的方法,初级难度方法代码传递如下:
public JisuanPanel() {//构造无参方法,讲方法传给数组中去。

super(); label = new JLabel(); // 创建没有文字的标签 field = new JTextField(4); // 创建文本框 add(label); // 将标签添加到尾部 add(field); // 将文本框添加到尾部 easy(); } public void easy() { //随机生成运算题目的方法 int a, b; String c; a = (int) (Math.random() * 10) + 1; // 随机产生10以内的整数 b = (int) (Math.random() * 10) + 1; switch ((int) (Math.random() * 2)) { case 0: c = “+“; label.setText(““ + a + c + b + “=“); result = a + b; break;// 加法 case 1: c = “-“; label.setText(““ + a + c + b + “=“); result = a - b; break;// 减法 default: JOptionPane.showMessageDialog(null, “出错!“); System.exit(0); } field.setText(““); return; } 4.2.3答案信息模块 创建答题区域的文本框等组件:将参数回调给组件监听事件中:
public JisuanPanel() { super(); label = new JLabel(); // 创建没有文字的标签 field = new JTextField(4); // 创建文本框 add(label); // 将标签添加到尾部 add(field); // 将文本框添加到尾部 easy(); } public JisuanPanel(int n) { super(); label = new JLabel(); // 创建没有文字的标签 field = new JTextField(4); // 创建文本框 add(label); // 将标签添加到尾部 add(field); // 将文本框添加到尾部 if(n==1) { middle(); } if(n==2) { hard(); } } 答案比对模块,将文本框的答案与计算机给出的答案比对,代码如下:
public boolean right() { if (field.getText().equals(““)) return false; double num = result + 1; try { num = Double.parseDouble(field.getText()); } catch (NumberFormatException e) { JOptionPane.showMessageDialog(null, “输入错误!“); field.setText(““); } if (num == result) { if (!(label.getText()).startsWith(“正确“)) label.setText(“ * “ + label.getText());//核心步骤,比较 return true; } else return false; } } 4.2.4成绩信息模块 将回答正确的题目统计,由系统平均分配分值来打分,代码如下:
/********************评卷********************/ panel = new JPanel(new FlowLayout()); JButton button = new JButton(“评卷“); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub int n = 0; for (int i = 0; i < j.panels.length; i++) { if (j.panels[i].right()) n++; } JOptionPane.showMessageDialog(null, “一共“ + Paper.n + “题,共做对“ + n + “道!\n得分:“ + (int) ((((double) n) / Paper.n) * 100)); // Paper.n = 0; } }); 5.测试结果 5.1用户选择信息模块 图5.1 初级选择 图5.2 确认初级选择 图5.3 中级选择 图5.4 确定中级选择 图5.5 高级选择 图5.6 确定高级选择 图5.7 输入题目个数 5.2题目信息模块 图5.8 出题与做题 图5.9 重新出题 5.3答案信息模块 图5.10 评卷结果 5.4成绩信息模块 图5.11 得分 6. 结束语 本文通过运用Java语言在计算机中实现了一个对小学计算试卷的模拟,该程序可随机产生计算题目,并对所作出的答案进行比对,核对出测试得分数。经测试,该程序能够正确运行。生成等级界面后,通过勾选初级、中级和高级来选择不同等级难度,之后自定义题目数量,生成试卷并对题目进行填写,点击提交后,系统自行对答案进行分析并核对出正确的题目数和总分数。测试结果表明该程序运行正常。本次程序的设计,生成的界面有需要美化的地方,在提交之后如果能够给出错误题目的解析,会使程序更加完善。

附录 参考文献 [1]赵生慧.Java面向对象程序设计(第二版)[M].北京:中国水利水电出版社,2013. [2]毕广吉.Java程序设计实例教程[M].北京:冶金工业出版社,2007. [3]王保罗.Java面向对象程序设计[M].北京:清华大学出版社,2003. [4]高林.周海燕.JSP网上书店系统与案例分析[M].北京:人民邮电出版社,2004. [5]张银鹤.JSP+Ajax网站开发典型实例[M].北京:电子工业出版社,2009年01月. [6]Weiss,MA. 数据结构与算法分析:Java语言描述[M].北京:机械工业出版社,2009年01月. [7]Metsker S J.Java设计模式[M].北京:电子工业出版社,2012年09 月. [8]孙卫琴.Tomcat与Java Web开发技术详解[M].北京:电子工业出版社,2009年01月. [9]刘京华等.Java Web整合开发王者归来[M].北京:清华大学出版社,2010年 01月. [10]贺松平.基于MVC模式的B/S架构的研究及应用[D].武汉:华中科技大学出版社,2006年4月 [11]毕建信.基于MVC设计模式的Web应用研究与实现[D].武汉:武汉理工大学出版社,2006年5月. 致谢 在本次程序的设计中,要特别感谢我们的指导老师XXX老师的热情关怀和悉心指导,老师在选题以及程序内容的完善方面给了我们不少建议和灵感,给予了我们很大的帮助。同时感谢XX、XX、XX和XX同学,是他们的认真付出、齐心协力地对程序进行构思设计、编写和调试,通过分工与合作使报告文档和程序能够呈现。

指导教师评语 成绩评定 指导教师签名:
填表日期:
年 月 日

Tags: 算术   运算   课程设计  

搜索
网站分类
标签列表