版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
小学算术运算测试程序JAVA课程设计报告
面向对象程序设计(JAVA)课程设计说明书
学院名称:
计算机与信息工程学院
班级名称:
20XX级计算机科学与技术
题
目:
小学算术运算测试程序
面向对象程序设计(JAVA)课程设计任务书
学
院计算机与信息工程学院专
业20XX级计算机科学与技术课程名称面向对象程序设计(JAVA)题
目小学算术运算测试程序
完成期限2021年01月02日至2021年01月08日共1周内容及任务一、项目的目的1.加深学生对面向对象程序设计(Java)课程基本知识的理解,综合应用所学的知识,独立完成一个以面向对象程序设计应用为课题的设计;2.根据问题需要,通过查阅手册和文献资料,培养分析和解决实际问题的能力;3.灵活运用类、对象、输入输出流、GUI、多线程、数据库编程等相关知识编写程序。
二、项目任务的主要内容和要求主要内容:编写一个可供小学数学运算的程序:可选择题目难度,并根据选择的难度分配加、减、乘、除法的题目,能根据输入题数并分配分值(总分100),判断做题是否正确,最后计算分数。
要求:1、编写图形化界面,每组4人,分工独立完成;2、能够按照要求完成系统设计并撰写课程设计报告。
三、项目设计思路题目要求设计一个可以自动出题(算数运算)的测试程序,首先需要明确该系统的功能:选择题目难度、选择题数、依据题数自动分配分值、自动出题、评卷并给出答对题数和总得分;接着根据功能设计图形化界面:选择题目难度界面、试卷界面和评分界面;然后结合功能和图形化界面编写代码,进行测试,不断完善代码;最后得到我们所需要的测试程序。
四、具体成果形式和要求
程序和课程设计文档
进度安排起止日期工作内容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));
for(inti=0;i<j.panels.length;i++)
panel.add(j.panels[i]);
c.add(newJScrollPane(panel),BorderLayout.CENTER);
/********************重新出题********************/
panel.add(button);
button=newJButton(“重新出题“);
button.addActionListener(newActionListener(){
@Override
publicvoidactionPerformed(ActionEvente){
//TODOAuto-generatedmethodstub
for(inti=0;i<j.panels.length;i++)
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=“-“;
label.setText(““+a+c+b+“=“);
result=a-b;
break;//减法
default:
JOptionPane.showMessageDialog(null,“出错!“);
System.exit(0);
}
field.setText(““);
return;
}
4.2.3答案信息模块创建答题区域的文本框等组件:将参数回调给组件监听事件中:
publicJisuanPanel(){
super();
label=newJLabel();//创建没有文字的标签
field=newJTextField(4);//创建文本框
add(label);//将标签添加到尾部
add(field);//将文本框添加到尾部
easy();
}
publicJisuanPanel(intn){
super();
label=newJLabel();//创建没有文字的标签
field=newJTextField(4);//创建文本框
add(label);//将标签添加到尾部
add(field);//将文本框添加到尾部
if(n==1){
middle();
}
if(n==2){
hard();
}
}答案比对模块,将文本框的答案与计算机给出的答案比对,代码如下:
publicbooleanright(){
if(field.getText().equals(““))
returnfalse;
doublenum=result+1;
try{
num=Double.parseDouble(field.getText());
}catch(NumberFormatExceptione){
JOptionPane.showMessageDialog(null,“输入错误!“);
field.setText(““);
}
if(num==result){
if(!(label.getText()).startsWith(“正确“))
label.setText(“*“+label.getText());//核心步骤,比较
returntrue;
}else
returnfalse;
}}
4.2.4成绩信息模块将回答正确的题目统计,由系统平均分配分值来打分,代码如下:
/********************评卷********************/
panel=newJPanel(newFlowLayout());
JButtonbutton=newJButton(“评卷“);
button.addActionListener(newActionListener(){
@Override
publicvoidactionPerformed(ActionEvente){
//TODOAuto-generatedmethodstub
intn=0;
for(inti=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.结束语本文通过运
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 废弃砖厂拆除施工方案(3篇)
- 施工方案优点评价(3篇)
- 有哪些土建施工方案(3篇)
- 梁裂缝加固施工方案(3篇)
- 江西雾灌施工方案(3篇)
- 深圳社团营销方案(3篇)
- 爆烤鸭营销方案(3篇)
- 2024年酒店提升经理绩效考核方案
- 秸秆炭化营销方案(3篇)
- 营销号规划方案(3篇)
- 青少年心理健康问题现状与教育对策研究
- 2024美团外卖店食品安全责任合同范本3篇
- 《三国演义》知识竞赛考试题库200题(含答案)
- 固定桥修复后可能出现的问题及处理
- 湖南对口招生考试旅游类专业综合知识模拟试题及答案
- 《管理运筹学》第5版习题答案韩伯棠
- 超50米落地脚手架专家论证方案-
- 机械设备租赁保障措施
- 小学前鼻音后鼻音练习题
- Q GW 202002-2019-金风风力发电机组 塔架技术条件-归档版-D
- GB/T 22085.1-2008电子束及激光焊接接头缺欠质量分级指南第1部分:钢
评论
0/150
提交评论