java实训报告090123014 王政文档格式.docx
《java实训报告090123014 王政文档格式.docx》由会员分享,可在线阅读,更多相关《java实训报告090123014 王政文档格式.docx(20页珍藏版)》请在冰点文库上搜索。
![java实训报告090123014 王政文档格式.docx](https://file1.bingdoc.com/fileroot1/2023-5/5/119bd0c6-af5d-492b-8c67-4efc9d6884f5/119bd0c6-af5d-492b-8c67-4efc9d6884f51.gif)
点
使用组件构建的C/S应用程序
各项功能的组织合理搭配应用
图标控制功能实现
技
术
重
构建基于C/S架构的应用程序
Swing组件应用
项目打包方法应用
难
Swing组件的应用
事件监听器的使用
异常处理
一、项目需求
计算器在人们的生活中处处可见,人们的生活已经离不开便捷的计算器。
本次实训项目—计算器实现如下功能:
(1)计算机主界面
包含了计算机的0~910个数字按钮,“+”、“-”、“×
”、“÷
”简单的四则运算符号,另外本项目还增加了一个求倒数算法,表达符号为:
“1/x”。
(2)功能介绍
数字按钮:
向计算器传递数字消息,0~9数字信息
算术运算按钮:
向计算器传递“+”、“-”、“×
”运算信息,进行计算功能的判断和实现。
其他按钮:
小数点按钮--将整形的0~9数字转化为浮点型数字,用于精确计算。
正负号按钮–将数字转化为正、负形式。
退格按钮--清楚当前屏幕显示数字中的数值,从后向前清除。
求倒数按钮–计算当前数字的倒数。
等号按钮--计算表达式的值。
清零按钮--清除当前屏幕数字信息,符号为“C”。
二、项目设计
在设计记事本系统中包含了3个Java源文件:
ComputerPad.java、NumberButton.java、OperationButton.java其中ComputerPad.java中包含了程序的的入口main()方法。
下面是3个源文件实现的各个功能介绍:
(1)ComputerPad.java源文件(public主类)
ComputerPad类继承了Frame类,并实现了事件监听的接口。
在该public类中定义了计算器需要的图形界面,框架,按钮等成员数据(成员属性)。
ComputerPad类中定义的成员方法有ComputerPad()构造器,初始化计算器界面。
重写了接口ActionListener的方法actonPerformed(ActionEvente),对计算器的按钮实现监听控制。
Main()方法,计算器程序启动的入口。
(2)NumberButton.java源文件
NumberButton类设置了计算器的数字按钮为blue颜色。
(3)OperationButton.java源文件
OperationButton类设置了计算器的操纵按钮(运算符号)等为red颜色。
程序的入口ComputerPad主类,其中的成员对象和成员方法如下所示:
1)成员对象
NumberButtonnumberButton[];
数字数组,存放0~9数组
OperationButtonoprationButton[];
操纵按钮数组,运算符号等
Buttonxsdb,zfb,tgb,dsb,db,qlb;
小数点按钮,正负号按钮,退格按钮,
求倒数按钮,等号按钮,清零按钮。
Panelpanel;
框架
JTextFieldresultShow;
文本域,计算器的显示的文本信息
Stringysf[]={"
+"
"
-"
*"
/"
};
LinkedListlb;
booleanadh=false;
2)成员方法
publicComputerPad()是无参构造方法,在构造方法中实现了计算器界面的初始化操作。
PublicvoidactionPreformed(actionEvente)是接口ActionListener的事件监听方法。
publicstaticvoidmain(String[]args)是main主方法,在主方法中通过无参构造方法ComputerPad()实例化了计算器。
3)代码
packagejsq;
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjavax.swing.border.*;
importjava.util.LinkedList;
importjava.text.NumberFormat;
publicclassComputerPadextendsFrameimplementsActionListener
{
NumberButtonnumberButton[];
Buttonxsdb,zfb,tgb,
dsb,db,qlb;
booleanadh=false;
publicComputerPad()
{
super("
计算器"
);
lb=newLinkedList();
numberButton=newNumberButton[10];
for(inti=0;
i<
=9;
i++)
numberButton[i]=newNumberButton(i);
numberButton[i].addActionListener(this);
}
oprationButton=newOperationButton[4];
4;
oprationButton[i]=newOperationButton(ysf[i]);
oprationButton[i].addActionListener(this);
xsdb=newButton("
."
zfb=newButton("
+/-"
db=newButton("
="
dsb=newButton("
1/x"
tgb=newButton("
退格"
qlb=newButton("
C"
qlb.setForeground(Color.red);
tgb.setForeground(Color.red);
db.setForeground(Color.red);
dsb.setForeground(Color.blue);
zfb.setForeground(Color.blue);
xsdb.setForeground(Color.blue);
tgb.addActionListener(this);
qlb.addActionListener(this);
db.addActionListener(this);
xsdb.addActionListener(this);
zfb.addActionListener(this);
dsb.addActionListener(this);
resultShow=newJTextField(10);
resultShow.setHorizontalAlignment(JTextField.RIGHT);
resultShow.setForeground(Color.blue);
resultShow.setFont(newFont("
TimesRoman"
Font.PLAIN,14));
resultShow.setBorder(newSoftBevelBorder(BevelBorder.LOWERED));
resultShow.setBackground(Color.white);
resultShow.setEditable(false);
panel=newPanel();
panel.setLayout(newGridLayout(4,5));
panel.add(numberButton[1]);
panel.add(numberButton[2]);
panel.add(numberButton[3]);
panel.add(oprationButton[0]);
panel.add(qlb);
panel.add(numberButton[4]);
panel.add(numberButton[5]);
panel.add(numberButton[6]);
panel.add(oprationButton[1]);
panel.add(tgb);
panel.add(numberButton[7]);
panel.add(numberButton[8]);
panel.add(numberButton[9]);
panel.add(oprationButton[2]);
panel.add(dsb);
panel.add(numberButton[0]);
panel.add(zfb);
panel.add(xsdb);
panel.add(oprationButton[3]);
panel.add(db);
add(panel,BorderLayout.CENTER);
add(resultShow,BorderLayout.NORTH);
addWindowListener(newWindowAdapter()
{publicvoidwindowClosing(WindowEvente)
System.exit(0);
});
setVisible(true);
setBounds(100,50,240,180);
setResizable(false);
validate();
publicvoidactionPerformed(ActionEvente)
if(e.getSource()instanceofNumberButton)
NumberButtonb=(NumberButton)e.getSource();
if(lb.size()==0)
intnumber=b.getNumber();
lb.add("
"
+number);
resultShow.setText("
adh=false;
elseif(lb.size()==1&
&
adh==false)
Stringnum=(String)lb.getFirst();
Strings=num.concat("
lb.set(0,s);
resultShow.setText(s);
adh==true)
lb.removeFirst();
elseif(lb.size()==2)
elseif(lb.size()==3)
Stringnum=(String)lb.getLast();
lb.set(2,s);
elseif(e.getSource()instanceofOperationButton)
OperationButtonb=(OperationButton)e.getSource();
if(lb.size()==1)
Stringfuhao=b.getysf();
lb.add(fuhao);
elseif(lb.size()==2)
lb.set(1,fuhao);
elseif(lb.size()==3)
Stringnumber1=(String)lb.getFirst();
Stringnumber2=(String)lb.getLast();
Stringysf=(String)lb.get
(1);
try
doublen1=Double.parseDouble(number1);
doublen2=Double.parseDouble(number2);
doublen=0;
if(ysf.equals("
))
n=n1+n2;
elseif(ysf.equals("
n=n1-n2;
n=n1*n2;
n=n1/n2;
lb.clear();
+n);
catch(Exceptionee)
elseif(e.getSource()==db)
adh=true;
if(lb.size()==1||lb.size()==2)
+num);
lb.set(0,"
lb.removeLast();
elseif(e.getSource()==xsdb)
elseif(lb.size()==1)
Stringdot=xsdb.getLabel();
Strings=null;
if(num.indexOf(dot)==-1)
s=num.concat(dot);
else
s=num;
if(num.indexOf(dot)==-1)
}
elseif(e.getSource()==tgb)
if(lb.size()==1)
if(num.length()>
=1)
num=num.substring(0,num.length()-1);
lb.set(0,num);
resultShow.setText(num);
0"
{num=num.substring(0,num.length()-1);
lb.set(2,num);
elseif(e.getSource()==zfb)
doubled=Double.parseDouble(number1);
d=-1*d;
Stringstr=String.valueOf(d);
lb.set(0,str);
resultShow.setText(str);
doubled=Double.parseDouble(number2);
lb.set(2,str);
elseif(e.getSource()==dsb)
if(lb.size()==1||lb.size()==2)
d=1.0/d;
elseif(e.getSource()==qlb)
{
publicstaticvoidmain(Stringargs[])
newComputerPad();
}
4)计算器使用效果图
图1计算器图
三、项目总结
通过这次实训,增加了我学习Java技术的兴趣,虽然还不明确软件技术包含的具体内容,但从java语言这门课程开始,已发现程序设计的乐趣,在学习java语言的过程中也学到了许多计算机应用基础知识,对计算机的机体也有了一个大体的了解。
这次实训是老师给了范例程序,经过自己的改写,实现要求。
先做简单框架,一步步的再做其它子框架,在实际操作过程中犯的一些错误还会有意外的收获,感觉实训很有意思。
在具体操作中对这学期所学的java语言的理论知识得到巩固,达到实训的基本目的,也发现自己的不足之出,在以后的上机中应更加注意,同时体会到java语言具有的语句简洁,使用灵活,执行效率高等特点。
四、心得体会
这次实习,与我而言收获颇丰,它不仅让我认识到自己的不足所在和以后努力的方向。
还让我进一步理解面向对象程序设计的基本概念,掌握程序设计的基本方法和技巧,灵活的使用包,进一步的理解接口,熟练的掌握在接口中对事件的实现。
深入理解和灵活运用面向对象程序设计的基本特性,培养良好的程序设计风格,提高抽象思维、逻辑思维的能力。
我很庆幸能在这样有限的时间里,在这么和谐的气氛中学习,和同学们一起相处,我也努力向他们学习,不懂就问,认真完成老师交给我的每一项任务。
他们也都尽力帮助我,给我讲授Java相关的编程知识,耐心解答我的疑难困惑,帮助我尽快达到了实训的目的,再次感谢我的指导老师及各位同学对我的无私帮助。