数学测试题实验报告王春泽.docx

上传人:b****1 文档编号:2608884 上传时间:2023-05-04 格式:DOCX 页数:23 大小:911.05KB
下载 相关 举报
数学测试题实验报告王春泽.docx_第1页
第1页 / 共23页
数学测试题实验报告王春泽.docx_第2页
第2页 / 共23页
数学测试题实验报告王春泽.docx_第3页
第3页 / 共23页
数学测试题实验报告王春泽.docx_第4页
第4页 / 共23页
数学测试题实验报告王春泽.docx_第5页
第5页 / 共23页
数学测试题实验报告王春泽.docx_第6页
第6页 / 共23页
数学测试题实验报告王春泽.docx_第7页
第7页 / 共23页
数学测试题实验报告王春泽.docx_第8页
第8页 / 共23页
数学测试题实验报告王春泽.docx_第9页
第9页 / 共23页
数学测试题实验报告王春泽.docx_第10页
第10页 / 共23页
数学测试题实验报告王春泽.docx_第11页
第11页 / 共23页
数学测试题实验报告王春泽.docx_第12页
第12页 / 共23页
数学测试题实验报告王春泽.docx_第13页
第13页 / 共23页
数学测试题实验报告王春泽.docx_第14页
第14页 / 共23页
数学测试题实验报告王春泽.docx_第15页
第15页 / 共23页
数学测试题实验报告王春泽.docx_第16页
第16页 / 共23页
数学测试题实验报告王春泽.docx_第17页
第17页 / 共23页
数学测试题实验报告王春泽.docx_第18页
第18页 / 共23页
数学测试题实验报告王春泽.docx_第19页
第19页 / 共23页
数学测试题实验报告王春泽.docx_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

数学测试题实验报告王春泽.docx

《数学测试题实验报告王春泽.docx》由会员分享,可在线阅读,更多相关《数学测试题实验报告王春泽.docx(23页珍藏版)》请在冰点文库上搜索。

数学测试题实验报告王春泽.docx

数学测试题实验报告王春泽

电子工程学院2014

计算机实习

 

题目:

数学测试题程序的制作

院(系):

电子工程学院

年级专业:

2012级1班

学生姓名:

王春泽

学号:

2012210812

 

开始时间:

2014年2月25日

完成时间:

2014年3月12日

目录

目录

摘要2

前言3

1实验要求4

1.1基本要求4

1.2功能设计4

2.概要设计5

2.1程序设计思路5

2.2程序运行界面5

2.3模块说明图7

(1)7

(2)7

2.4程序流程图7

2.5程序相关说明8

3.程序详细设计与分析8

3.1.面板布局8

3.2.按钮的监听响应事件10

3.2.1为开始按钮添加事件监听器,使之前被隐藏的组件设为可见,并初始化第一道题,10

3.3自定义的类的实现方法14

3.4异常处理15

4.测试分析16

5.实验设计总结16

6.致谢16

参考资料16

 

数学测试题程序的设计与制作

学生:

王春泽

(北京邮电大学电子工程学院12级1班,学号:

2012210812)

摘要

本倒计时程序使用java语言编写,能够实现数学测试题的功能,启动程序之后显示初始化界面,左上方的模块是计算模块,输入测试题数后,会出现测试试题输入答案后点击下一题按钮,在右边的显示结果模块中显示刚才做的题目,如果答案正确则显示“正确”,如果答案错误则显示“错误”,并给出正确的计算结果。

题目都做完后,会给出相应的提示,此时点击“查看成绩”按钮,在成绩烂显示此次做题的成绩,并且根据成绩,会给出相应的提示和动画表情,诸如不及格,优秀等等。

点击“重置”按钮,会再次达到初始化的状态,并清楚之前的数据。

该程序使用jdk1.6的开发环境,开发工具主要使用eclipse,用到的插件有windowbuilder,美工方面主要用到photoshop进行图片编辑美化;

该程序主要用到java图形用户界面,事件监听,媒体等。

 

关键字:

数学测试题;Java语言;eclipse;java图形用户界面。

 

前言

Java的前身是Oak,它一开始只是被应用于消费性电子产品中。

后来它的开发者们发现它还可以被用于更大范围的Internet上。

1995年,Java语言的名字从Oak编程了Java。

1997年J2SE1.1发布。

1998年J2SE1.2发布,标志Java2的诞生。

十多年来,Java编程语言及平台成功地运用在网络计算及移动等各个领域。

Java的体系结构由Java语言、Javaclass、JavaAPI、Java虚拟机组成。

它具有简单、面向对象、健壮、安全、结构中立、可移植和高效能等众多优点。

Java支持多线程编程,Java运行时系统在多线程同步方面具有成熟的解决方案。

Java的平台标准有JavaME,JavaSE和JavaEE。

Java发展到今天,它的卓越成就及在业界的地位毋庸置疑。

目前在众多的支持Java的开发工具中主要的7有JavaDevelopmentKit,NetBeans,Jcreator,JBuilder,JDeveloper和Eclipse等。

其中JavaDevelopmentKit简称JDK是大多开发工具的基础。

以上的每种开发工具都有优缺点,对于开发者来说,重要的是要根据自己的开发规模、开发内容和软硬件环境等因素来选择一种合适的开发工具。

在本程序设计中,虽然程序规模较小,内容较少,但出于本人开发android对开发工具eclipse的熟悉度较高,并且对eclipse安装了很多插件,比如windowbuilder等,因此选择目前应用较为广泛的eclipse作为开发工具。

 

1实验要求

1.1基本要求

制作一个小学数学测试题的程序,能自定义题目的数量。

能对做题的结果进行判断,如果错误则给出正确的结果。

能查看答题的成绩。

其他要求:

界面美观,操作便捷,程序无BUG,功能有创意。

1.2功能设计

考虑到功能完整,界面美观,操作便捷,强调良好的用户体验,本数学题测试程序的功能主要体现在以下几个方面:

(1)进入主程序后,显示最开始的初始化界面,

(2)程序面板分为三个模块,左上方是答题模块,左下方是显示成绩模块,右边是答题结果模块。

(3)在答题模块输入答题的数目,点击开始按钮,下方会给出相应的题目,并且无关的部分被隐藏,直到做题结束点重置按钮,隐藏的部分才会显示,这样防止用户误操作,并使界面整洁美观,形成良好的用户体验。

(4)右边的显示答题结果的模块整洁美观,并且用到滚动条,这样题目数量不管多少都可以完美显示。

(5)答题结果后,答题的相关按钮文本框等会被隐藏,代替的是答题结束的提示和相应的动画,很友好。

(6)查看成绩后,根据分数的高低同样给出相应的提示并且伴有有趣的动画效果。

 

2.概要设计

2.1程序设计思路

在本程序中,设计了一个程序版面和相关按钮以及显示标签。

设计过程中,程序的main类继承了JFrame,其中添加了JPanel,在JPanel中,分别添加了按钮JButton并添加相应的响应事件,显示文字和倒计时时间的标签JLabel,在面板的最下层添加JLabel用于显示背景图像,自定义在textfield中显示背景图片的方法,并且自定义了一个继承JLabel的DynamicLabel,用于显示动态图片效果。

2.2程序运行界面

 

2.3模块说明图

(1)

图1

首先创建一个名为MathTest的类并继承JFrame类作为最底层的容器。

(2)

 

对于创建的DaoJiShi的类,首先要初始化容器,在容器中添加相应的组件,并添加相关的程序响应事件。

 

2.4程序流程图

失败

 

 

2.5程序相关说明

整个数学测试题程序分为三个模块:

答题模块,显示结果模块,显示成绩模块。

(1)在答题模块输入答题的数目,点击开始按钮,下方会给出相应的题目,并且无关的部分被隐藏,直到做题结束点重置按钮,隐藏的部分才会显示,这样防止用户误操作,并使界面整洁美观,形成良好的用户体验。

(2)右边的显示答题结果的模块整洁美观,不仅显示结果的正确与否,还能给出正确的结果,并且用到滚动条,这样题目数量不管多少都可以完美显示

(3)答题结果后,答题的相关按钮文本框等会被隐藏,代替的是答题结束的提示和相应的动画,很友好。

查看成绩后,根据分数的高低同样给出相应的提示并且伴有有趣的动画效果。

3.程序详细设计与分析

3.1.面板布局

3.1.1、创建相关面板

//创建启动界面面板

finalJPanelstartPanel=newJPanel();

//创建水平分割面板

finalJSplitPanehSplitPane=newJSplitPane(JSplitPane.HORIZONTAL_SPLIT);

//创建垂直分割面板

finalJSplitPanevSplitPane=newJSplitPane(JSplitPane.VERTICAL_SPLIT);

//实现两个普通面板

testPane=newJPanel();

resultPane=newJPanel();

//定义包含JTextArea的滚动面板

FinalImageIconimageIcon=newImageIcon(MathTest.class.getResource("/drawable/math_background.png"));

finalJTextAreataShow=newJTextArea(){

{

setOpaque(false);

}

Imageimage=imageIcon.getImage();

publicvoidpaintComponent(Graphicsg){

g.drawImage(imageIcon.getImage(),0,0,this);

super.paintComponent(g);

}

};

3.1.2、答题面板的布局

//标签“输入题数”

finalJLabellbNum=newJLabel("\u8BF7\u8F93\u5165\u672C\u6B21\u6D4B\u8BD5\u9898\u6570:

");

//题数输入框

finalJTextFieldtfNum=newJTextField();

//显示题数标签

finalJLabellbNumTitle=newJLabel("本次测试一共"+String.valueOf(count)+"道题");

/确定按钮

finalJButtonokButton=newJButton();

//题序号标签

finalJLabellbExerciseOrder=newJLabel("");

//数字标签1

finalJLabellbNum_1=newJLabel("");

//运算符号标签

finalJLabellbOperator=newJLabel("");

//数字标签2

finalJLabellbNum_2=newJLabel("");

//等号标签

finalJLabellbEqual=newJLabel("");

//添加文本输入框

finalJTextFieldtfResult=newJTextField();

//重置按钮

finalJButtonrestartButton=newJButton("");

//添加下一题按钮

finalJButtonnextButton=newJButton("");

//添加答题结束后的显示

finalJLabellbShowAtLast=newJLabel("耶耶耶!

终于做完了……");

3.1.3、显示结果面板的布局

//在textfield中添加JTextare,即文本域

finalJTextAreataShow=newJTextArea(){

{

setOpaque(false);

}

3.1.4、显示成绩面板布局

//添加显示成绩标签

finalJLabelshowResultLabel=newJLabel("");

//添加动态显示标签,该类是自定义的一个类

finalDynamicGifLabeldynamicLabel_1=newDynamicGifLabel(newImageIcon(

MathTest.class.getResource("/drawable/gif_cry.gif")).getImage());

//测试结果提示

finalJLabellbAlart=newJLabel("呜呜,又没及格。

");

//背景标签

finalJLabelIcon_Label_result=newJLabel(newImageIcon(

MathTest.class.getResource("/drawable/score_background.png")));

3.2.按钮的监听响应事件

3.2.1为开始按钮添加事件监听器,使之前被隐藏的组件设为可见,并初始化第一道题,

okButton.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

//TODOAuto-generatedmethodstub

lbNum.setVisible(false);

tfNum.setVisible(false);

okButton.setVisible(false);

count=Integer.parseInt(tfNum.getText());

lbNumTitle.setText("本次测试一共"+String.valueOf(count)+"道题");

lbExerciseOrder.setText("第1题");

//产生随机数

num_1=(int)(Math.random()*100);

num_2=(int)(Math.random()*100);

Randomr=newRandom();

operator=r.nextInt(4);

//设置标签显示内容

if(operator==0)

lbOperator.setText("+");

if(operator==1)

lbOperator.setText("一");

if(operator==2)

lbOperator.setText("x");

if(operator==3)

lbOperator.setText("/");

lbNum_1.setText(String.valueOf(num_1));

lbNum_2.setText(String.valueOf(num_2));

lbEqual.setText("=");

lbNumTitle.setVisible(true);

tfResult.setVisible(true);

nextButton.setVisible(true);

restartButton.setVisible(true);

lbNum_1.setVisible(true);

lbNum_2.setVisible(true);

lbOperator.setVisible(true);

lbEqual.setVisible(true);

lbExerciseOrder.setVisible(true);//之前隐藏的设为可见

}

});

3.2.2为重置按钮添加事件监听器,将部分组件隐藏并将需要用到的组件显示

//重置按钮添加监听器

restartButton.addActionListener(newActionListener(){

@Override

publicvoidactionPerformed(ActionEvente){

//TODOAuto-generatedmethodstub

sign=1;

rightCount=0;

str="\n\n\n";

taShow.setText("");

lbNum.setVisible(true);

tfNum.setVisible(true);

okButton.setVisible(true);

lbNumTitle.setVisible(false);

tfResult.setVisible(false);

nextButton.setVisible(false);

lbNum_1.setVisible(false);

lbNum_2.setVisible(false);

lbOperator.setVisible(false);

lbEqual.setVisible(false);

lbExerciseOrder.setVisible(false);

lbShowAtLast.setVisible(false);

restartButton.setVisible(false);

showResultButton.setVisible(true);

lbAlart.setVisible(false);

dynamicLabel_1.setVisible(false);

dynamicLabel_2.setVisible(false);

showResultLabel.setVisible(false);//之前隐藏的设为可见

}

});

3.2.3为下一题按钮添加事件监听器,对答题结果进行判断,并将结果显示到相应的显示面板,并统计答题正确的数目,判断答题是否结束。

//为下一题按钮添加监听器

nextButton.addActionListener(newActionListener(){

@Override

publicvoidactionPerformed(ActionEvente){

//TODOAuto-generatedmethodstub

/*if(sign>=count)

{

JOptionPane.showMessageDialog(getContentPane(),"不好意思,答题已经结束!

","提示",JOptionPane.OK_OPTION);

}

else*/

{

if(tfResult.getText().length()!

=0)

{

lbExerciseOrder.setText("第"+(sign+1)+"题");

sign++;

floatfInput=Float.parseFloat(tfResult.getText());

StringsInput=tfResult.getText();

floatfResult=0;

intiResult=0;

tfResult.setText("");

//开始对运算符进行判断,将结果存入字符串str中

if(operator==0)

{

iResult=num_1+num_2;

if(iResult==(int)fInput)

{

str+=num_1+"+"+num_2+"="+(int)fInput+""+"正确"+"\n";

rightCount++;

}

else

str+=num_1+"+"+num_2+"="+(int)fInput+""+"错误"+"正确答案:

"+iResult+"\n";

}

if(operator==1)

{

iResult=num_1-num_2;

if(iResult==(int)fInput)

{

str+=num_1+"-"+num_2+"="+(int)fInput+""+"正确"+"\n";

rightCount++;

}

else

str+=num_1+"-"+num_2+"="+(int)fInput+""+"错误"+"正确答案:

"+iResult+"\n";

}

if(operator==2)

{

iResult=num_1*num_2;

if(iResult==(int)fInput)

{

str+=num_1+"X"+num_2+"="+(int)fInput+""+"正确"+"\n";

rightCount++;

}

else

str+=+num_1+"X"+num_2+"="+(int)fInput+""+"错误"+"正确答案:

"+iResult+"\n";

}

if(operator==3)

{

fResult=(float)num_1/(float)num_2;

//格式化结果,保留两位小数

DecimalFormatdf=newDecimalFormat("0.00");

StringsResult=df.format(fResult);

if(sResult==sInput)

{

str+=num_1+"/"+num_2+"="+sInput+""+"正确"+"\n";

rightCount++;

}

else

str+=num_1+"/"+num_2+"="+sInput+""+"错误"+"正确答案:

"+sResult+"\n";

}

taShow.setText(str);

if(sign>count)

{

lbNumTitle.setVisible(false);

tfResult.setVisible(false);

nextButton.setVisible(false);

lbNum_1.setVisible(false);

lbNum_2.setVisible(false);

lbOperator.setVisible(false);

lbEqual.setVisible(false);

lbExerciseOrder.setVisible(false);

JOptionPane.showMessageDialog(getContentPane(),"本次答题已结束!

","提示",JOptionPane.OK_OPTION);

//隐藏部分内容

lbShowAtLast.setVisible(true);

dynamicLabel_2.setVisible(true);

}

else

{

//产生随机数

num_1=(int)(Math.random()*100);

num_2=(int)(Math.random()*100);

Randomr=newRandom();

operator=r.nextInt(4);

//设置标签显示内容

lbNum_1.setText(String.valueOf(num_1));

lbNum_2.setText(String.valueOf(num_2));

if(operator==0)

lbOperator.setText("+");

if(operator==1)

lbOperator.setText("一");

if(operator=

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工作范文 > 演讲主持

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2