小学算术运算测试程序JAVA课程设计报告Word文档下载推荐.docx
《小学算术运算测试程序JAVA课程设计报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《小学算术运算测试程序JAVA课程设计报告Word文档下载推荐.docx(8页珍藏版)》请在冰豆网上搜索。
程序和课程设计文档
进度安排起止日期工作内容2021年01月02日至2021年01月02日需求分析2021年01月03日至2021年01月04日系统设计,根据前期的需求分析结果设计各个功能模块2021年01月05日至2021年01月06日编码,调试和测试程序2021年01月07日至2021年01月08日撰写课程设计报告,进行答辩主要参考资料[1]赵生慧.Java面向对象程序设计(第二版)[M].北京:
中国水利水电出版社,2021.[2]毕广吉.Java程序设计实例教程[M].北京:
冶金工业出版社,2021.[3]王保罗.Java面向对象程序设计[M].北京:
清华大学出版社,2021.[4]高林,周海燕.JSP网上书店系统与案例分析[M].北京:
人民邮电出版社,2021.指导教师意见
(签字):
年
月
日系(教研室)主任意见
日
目
录摘要11.引言11.1选题背景11.2选题意义11.3主要内容及分工11.4组织结构22.需求分析22.1系统流程图22.2系统功能图23.系统设计33.1类的设计33.2功能模块设计33.2.1用户选择信息模块33.2.2题目信息模块43.2.3答案信息模块43.2.4成绩信息模块44.编码44.1导入相关包和类44.1.1包44.1.2类44.2各模块代码54.2.1用户选择信息模块54.2.2题目信息模块54.2.3答案信息模块74.2.4成绩信息模块85.测试结果95.1用户选择信息模块95.2题目信息模块105.3答案信息模块105.4成绩信息模块116.结束语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包importjava.awt.BorderLayout;
importjava.awt.Container;
importjava.awt.FlowLayout;
importjava.awt.GridLayout;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjavax.swing.ButtonGroup;
importjavax.swing.JButton;
importxxxxe;
importjavax.swing.JLabel;
importjavax.swing.JOptionPane;
importjavax.swing.JPanel;
importjavax.swing.JRadioButton;
importjavax.swing.JScrollPane;
importjavax.swing.JTextField;
4.1.2类ClassPaper//主类ClassJisuanPanel//副类,存放方法体。
JFrame
JPanel//父类
4.2各模块代码
4.2.1用户选择信息模块创建JLabel标签和JRadioButton单选按钮,组件显示出给用户选择的界面框架:
JFramejf=newJFrame(“等级选择“);
JLabellab=newJLabel(“选择等级:
“);
JRadioButtonrb1=newJRadioButton(“初级“);
JRadioButtonrb2=newJRadioButton(“中级“);
JRadioButtonrb3=newJRadioButton(“高级“);
ButtonGroupgrp=newButtonGroup();
//创建单选按钮和
protectedJisuanPanel[]panels;
在这个主类中创建Paper方法继承JFrame中的功能,这个方法用来排列各个组件在面板中的布局:
publicPaper(){
super(“数学等级计算题“);
Containercp=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(newActionListener(){
@Override
publicvoidactionPerformed(ActionEventarg0){
//TODOAuto-generatedmethodstub
ints=JOptionPane.showConfirmDialog(null,“确定选择初级?
“,“初级“,JOptionPane.YES_NO_OPTION);
//询问一个确认问题
if(s==0){
StringinputValue=JOptionPane.showInputDialog(“输入题目个数:
try{
Paper.n=Integer.parseInt(inputValue);
}catch(Exceptione){
Paper.n=20;
}//如未输入题数,则自动分配20题
j.panels=newJisuanPanel[Paper.n];
for(inti=0;
i<
j.panels.length;
i++)
j.panels[i]=newJisuanPanel();
//创建数组对象利用for循环,把jisuanPanel的组件全部生成,
Containerc=j.getContentPane();
c.setLayout(newBorderLayout());
JPanelpanel=newJPanel(newGridLayout(Paper.n/2+1,2));
panel.add(j.panels[i]);
c.add(newJScrollPane(panel),BorderLayout.CENTER);
/********************重新出题********************/
panel.add(button);
button=newJButton(“重新出题“);
button.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
j.panels[i].easy();
}
)};
调用jisuanPanel类中的方法,初级难度方法代码传递如下:
publicJisuanPanel(){//构造无参方法,讲方法传给数组中去。
super();
label=newJLabel();
//创建没有文字的标签
field=newJTextField(4);
//创建文本框
add(label);
//将标签添加到尾部
add(field);
//将文本框添加到尾部
easy();
}publicvoideasy(){//随机生成运算题目的方法
inta,b;
Stringc;
a=(int)(Math.random()*10)+1;
//随机产生10以内的整数
b=(int)(Math.random()*10)+1;
switch((int)(Math.random()*2)){
case0:
c=“+“;
label.setText(““+a+c+b+“=“);
result=a+b;
break;
//加法
case1:
c=“-“;
result=a-b;
//减法
default:
JOptionPane.showMessageDialog(null,“出错!
System.exit(0);
field.setText(““);
return;
4.2.3答案信息模块创建答题区域的文本框等组件:
将参数回调给组件监听事件中:
publicJisuanPanel(){
publicJisuanPanel(intn){
if(n==1){
middle();
if(n==2){
hard();
}答案比对模块,将文本框的答案与计算机给出的答案比对,代码如下:
publicbooleanright(){
if(field.getText().equals(““))
returnfalse;
doublenum=result+1;
num=Double.parseDouble(field.getText());
}catch(NumberFormatExceptione){
JOptionPane.showMessageDialog(null,“输入错误!
if(num==result){
if(!
(label.getText()).startsWith(“正确“))
label.setText(“*“+label.getText());
//核心步骤,比较
returntrue;
}else
}}
4.2.4成绩信息模块将回答正确的题目统计,由系统平均分配分值来打分,代码如下:
/********************评卷********************/
panel=newJPanel(newFlowLayout());
JButtonbutton=newJButton(“评卷“);
intn=0;
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].北京:
清华大学出版社,2021.[4]高林.周海燕.JSP网上书店系统与案例分析[M].北京:
人民邮电出版社,2021.[5]张银鹤.JSP+Ajax网站开发典型实例[M].北京:
电子工业出版社,2021年01月.
[6]Weiss,MA.数据结构与算法分析:
Java语言描述[M].北京:
机械工业出版社,2021年01月.
[7]MetskerSJ.Java设计模式[M].北京:
电子工业出版社,2021年09月.
[8]孙卫琴.Tomcat与JavaWeb开发技术详解[M].北京:
电子工业出版社,2021年01月.[9]刘京华等.JavaWeb整合开发王者归来[M].北京:
清华大学出版社,2021年01月.[10]贺松平.基于MVC模式的B/S架构的研究及应用[D].武汉:
华中科技大学出版社,2021年4月
[11]毕建信.基于MVC设计模式的Web应用研究与实现[D].武汉:
武汉理工大学出版社,2021年5月.致谢在本次程序的设计中,要特别感谢我们的指导老师XXX老师的热情关怀和悉心指导,老师在选题以及程序内容的完善方面给了我们不少建议和灵感,给予了我们很大的帮助。
同时感谢XX、XX、XX和XX同学,是他们的认真付出、齐心协力地对程序进行构思设计、编写和调试,通过分工与合作使报告文档和程序能够呈现。
指导教师评语
成绩评定
指导教师签名:
填表日期: