实训文档.docx
《实训文档.docx》由会员分享,可在线阅读,更多相关《实训文档.docx(21页珍藏版)》请在冰点文库上搜索。
实训文档
计算机技术与工程技术学院
实训报告
实训项目:
学生姓名:
学号:
专业班级:
学历层次:
指导教师:
完成日期:
目录
摘要1
1引言2
1.1任务与分析2
1.2实验目的与要求2
1.2.1实验目的2
1.2.2实验要求2
2方案设计1
2.1总体设计1
2.2功能设计1
2.2.1main类方法设计1
3需求描述1
3.1优点1
3.2简要功能介绍1
4操作说明1
5.主界面运行效果2
摘要
随着人们通讯或了解信息的越来越数据化,特别是要求高速度的获取想要的信息计算机的要求越来越高,不仅是其容量上越来越大,特别是在其功能上要求的实现越来越多,数据类型和精确度越来越高。
通过一年来对JAVA课程设计的学习,我已经掌握了一些常用的控件的使用方法,对简单的程序设计的常用算法也有了一定的了解,还掌握了对图形和动画的一些基本操作。
为了进一步加深理解、验证、巩固课堂教学内容,加深对可视化编程思想的理解,强化Myeclipse或者Eclipse对程序流程控制、常用控件的属性、事件、方法的理解和使用;为了进一步提高编程能力、程序的调试能力,理论联系实际的能力;巩固所学的这些程序设计的方法,为了达到后续课程对实际编程计算能力的要求,特选定“简易计算器”这个小题目作为课程设计实践教学环节的题目,有助于培养综合运用所学知识解决实际问题的能力,可以充分发挥想象力和创新能力;有助于提高独立思考能力,和自学能力。
该程序是一个基于JAVA的程序设计界面时间懂得功能较简单计算机系统,实现了用户简单计算功能。
计算器实现
1引言
1.1任务与分析
本软件应具有运算加减乘除四则基本运算,其中涉及到了JAVA的很多知
识点,例如:
在界面设计中应熟悉掌握各个控件的属性,各种循环语句,选择语句,控件组等等。
有助于培养综合运用所学知识解决实际问题的能力,可以充分发挥想象力和创新能力;有助于提高独立思考能力,和自学能力。
1.2实验目的与要求
1.2.1实验目的
进一步掌握JAVA进行图形用户界面的定义和操作,进一步掌握类的继承和派生方法。
综合利用上述知识,学习设计并编写实用的JAVA简单GUI应用程序。
熟悉java,awt包中组件,掌握图形界面设计方法,理解委托事件处理模型。
设计并实现Windows系统中“计算器”的窗口及功能。
1.2.2实验要求
设计图形界添加菜单:
窗口上添加各种组件及菜单,并处理组建及菜单的事件监听程序。
运算:
实现多种运算,保证运算正确性。
2方案设计
2.1总体设计
本软件按照一般计算器的界面以及功能设计,具有最为基础的加减乘除四则运算。
先建立一个新的项目文件,里面包含一个Form1的窗体。
然后,添加控件,包括一个Text框(Text1)。
2.2功能设计
2.2.1main类方法设计
main类方法设计是程序的核心类,也是入口类.,进行计算的calculate类,利用堆栈对表达式进行计算并输出结果。
JFrame类,继承自javax.swing.JFrame,完成与图形化界面有关的设计。
3需求描述
3.1优点
要有友好、易于操作的界面。
3.2简要功能介绍
能够实现输入:
数学表达式(数字加、减、乘、除)输出:
表达式的正确结果
4操作说明
计算器以帮助用户完成数据的运算,我们制作的计算器是标准的计算器,既可以完成简单的计算。
4.1、本计算器支持十进制运算。
4.2、数字键0——9用于数字的键入,可键入个位数,也可连续键入多位数。
4.3、“.”用于小数点的键入
4.4、“+”“-”“*”“/”“=”分别用于加、减、乘、除及相等的运算。
功能流程图
5.运行效果
本实例代码编写完毕,单击右键弹出菜单栏,选择runas选择Javaapplication来编译程序,程序结果如图所示.
图1主要界面运行效果
6计算器的主要代码
6.1计算器的主要代码
packageCal;
importjava.awt.*;
importjava.awt.event.*;
importjava.util.EventObject;
importjavax.swing.*;
@SuppressWarnings("unused")
publicclassCalculatorGUI{
privateFramef;//声明Frame对象
privatePanelp1,p2;//声明Panel(面板)对象
privateButtonb0,b1,b2,b3,b4,b5,b6,b7,b8,b9;//分别定义10个数字的按钮
privateButtonbPoint,bAdd,bDec,bMul,Div,bCal;//分别定义加,减乘除等6个运算符的按钮
privateTextFieldtf;//输入数字的文本区域
privateStrings,op;
privateCalculatorcal=newCalculator();//定义Calculator对象来计算四则元算
privatebooleanifOp;
publicCalculatorGUI(){//GUI的构造方法,主要功能是来是实现程序的主要功能,以及界面设计
f=newFrame("Calculator");//把Calculator对象传值,同时作为对象结果返回到f中
p1=newPanel();//p1用来表示显示
p2=newPanel();//p2用来表示控制数字和运算符的区域
b0=newButton("0");
b1=newButton("1");
b2=newButton("2");
b3=newButton("3");
b4=newButton("4");
b5=newButton("5");
b6=newButton("6");
b7=newButton("7");
b8=newButton("8");
b9=newButton("9");
bPoint=newButton(".");
bAdd=newButton("+");
bDec=newButton("-");
bMul=newButton("*");
Div=newButton("/");
bCal=newButton("=");//接上结束
tf=newTextField(25);//文本区域的长度
tf.setEditable(false);
}
publicvoidlaunchFrame(){//完成主要功能的方法
f.setSize(250,200);//设置文本框大小
f.setResizable(false);
f.addWindowListener(newmyWindowListener());
p1.setLayout(newFlowLayout(FlowLayout.CENTER));
p1.add(tf);
f.add(p1,BorderLayout.NORTH);
p2.setLayout(newGridLayout(4,4));
b0.addActionListener(newsetLabelText_ActionListener());//为10个数字增加addActionListener监听器,并且把输入的文本传入作为ActionListener的监听对象
b1.addActionListener(newsetLabelText_ActionListener());
b2.addActionListener(newsetLabelText_ActionListener());
b3.addActionListener(newsetLabelText_ActionListener());
b4.addActionListener(newsetLabelText_ActionListener());
b5.addActionListener(newsetLabelText_ActionListener());
b6.addActionListener(newsetLabelText_ActionListener());
b7.addActionListener(newsetLabelText_ActionListener());
b8.addActionListener(newsetLabelText_ActionListener());
b9.addActionListener(newsetLabelText_ActionListener());//结束
bPoint.addActionListener(newsetLabelText_ActionListener());//同上
bAdd.addActionListener(newsetOperator_ActionListener());
bDec.addActionListener(newsetOperator_ActionListener());
bMul.addActionListener(newsetOperator_ActionListener());
Div.addActionListener(newsetOperator_ActionListener());
bCal.addActionListener(newsetOperator_ActionListener());//结束
p2.add(b7);//面板p2对象调用add方法,把数字和运算符作为参数传递目的是为了用来计算算添加的对象值
p2.add(b8);
p2.add(b9);
p2.add(bAdd);
p2.add(b4);
p2.add(b5);
p2.add(b6);
p2.add(bDec);
p2.add(b1);
p2.add(b2);
p2.add(b3);
p2.add(bMul);
p2.add(b0);
p2.add(bPoint);
p2.add(bCal);
p2.add(Div);
f.add(p2,BorderLayout.SOUTH);//结束
f.setVisible(true);//JFrame对象设置成可显示
}
publicvoidsetTextFieldText_Temp(){
if(tf.getText().length()<15&&(tf.getText().indexOf(".")==-1||!
s.equals("."))){
tf.setText(tf.getText()+s);
}else{
tf.setText((tf.getText()+s).substring(0,15));//字符串截取substring(intbeginIndex)返回一个新的字符串,它是此字符串的一个子字符串。
}
}
publicvoidsetTextFieldText(){//设置文本方法
if(ifOp){
ifOp=false;
tf.setText("");
setTextFieldText_Temp();
}else{
setTextFieldText_Temp();
}
}
publicstaticvoidmain(String[]args){//主方法
CalculatorGUIcalculator=newCalculatorGUI();//声明CalculatorGUI对象
calculator.launchFrame();//CalculatorGUI对象calculator对象调用launchFrame方法来完成主要运算
}
classmyWindowListenerextendsWindowAdapter{//子类myWindowListener继承WindowAdapter更新父类实现结果的更新
publicvoidwindowClosing(WindowEvente){//windowClosing是处理窗口正在关闭这个事件
System.exit(0);
}
}
classsetLabelText_ActionListenerimplementsActionListener{//setLabelText_ActionListener继承ActionListener接口接听获取事件
publicvoidactionPerformed(ActionEvente){//可以处理类似单击鼠标时触发的事件ActionEvent就是一个事件类,传入的e就是该事件的对象
ButtontempB=(Button)e.getSource();//获取事件
s=tempB.getLabel();//获取此按钮的标签
setTextFieldText();
}
}
classsetOperator_ActionListenerimplementsActionListener{//这个主要作用是用来判断当前获取的的运算符是哪一个来作为运算
publicvoidactionPerformed(ActionEvente){//可以处理类似单击鼠标时触发的事件ActionEvent就是一个事件类,传入的e就是该事件的对象
ButtontempB=(Button)e.getSource();
op=tempB.getLabel();//是tempB对象调用getLablel()方法,赋值给op,并且判断当前要计算怎么样的运算
if(op.equals("+")){//判断获取的运算是否做+运算
tf.setText(cal.opAdd(tf.getText()));
ifOp=true;
}elseif(op.equals("-")){//判断获取的运算是否做-运算
tf.setText(cal.opSubtract(tf.getText()));
ifOp=true;
}elseif(op.equals("*")){//判断获取的运算是否做*运算
tf.setText(cal.opMultiply(tf.getText()));
ifOp=true;
}elseif(op.equals("/")){//判断获取的运算是否做/运算
tf.setText(cal.opDivide(tf.getText()));
ifOp=true;
}elseif(op.equals("=")){//判断获取的运算是否做=运算
tf.setText(cal.opEquals(tf.getText()));
ifOp=true;//结束
}
}
}
}
6.2用Calculator类来实现四则运算
packageCal;
publicclassCalculator{
privateStringresult="0";//结果初始化
privateintop=0,add=1,sub=2,mul=3,div=4;//运算标识
privatedoublestringToDouble(Stringx){
doubley=Double.parseDouble(x);//转换为Double
returny;
}
privatevoidoperate(Stringx){
doublex1=stringToDouble(x);
doubley=stringToDouble(result);
switch(op){
case0:
result=x;
break;//开始
case1:
result=String.valueOf(y+x1);//参数转换为String类型
break;
case2:
result=String.valueOf(y-x1);
break;
case3:
result=String.valueOf(y*x1);
break;
case4:
if(x1!
=0){
result=String.valueOf(y/x1);
}else{
result="Thedivisorcan'tbezero!
";
}
break;//结束
}
}
publicStringopAdd(Stringx){
operate(x);
op=add;
returnresult;
}
publicStringopSubtract(Stringx){
operate(x);
op=sub;
returnresult;
}
publicStringopMultiply(Stringx){
operate(x);
op=mul;
returnresult;
}
publicStringopDivide(Stringx){
operate(x);
op=div;
returnresult;
}
publicStringopEquals(Stringx){
operate(x);
op=0;
returnresult;
}
publicvoidopClean(){
op=0;
result="0";
}
}
7计算器运行界面效果图片如下所示:
1.程序主界面:
图7-1程序运行主要界面图
2.程序输入数字效果图片
图7-2输入要计算的数字效果图片
3程序运行结果图片
图7-3程序运行相加图片
4.程序相加运行结果图片:
图7-4程序运算结果图
5.程序相乘效果图:
图7-5程序计算相乘结果图
6.程序相乘数字效果图:
图7-6程序相乘输入数字图
7程序相乘结果图
图7-7程序相乘运行图
8.程序相除结果效果图:
图7-8计算相乘效果图片
8主要参考文献
参考文献
1)白广元*JavaWeb整合开发完全自学手册机械工业出版社
2)王国辉*李中尉王毅*Java程序设计基础人民邮电出版社
3)孙卫琴*JavaWeb设计与开发人民教育出版社
4)孙卫琴*精通HibernateJava对象持久化技术详解人民教育出版社
5)BruceEckel*Java编程思想(第3版)Java四大名著
9总结
实训个人总结
签字:
王洋
2013年12月26日