简易计算器Java实训报告.docx
《简易计算器Java实训报告.docx》由会员分享,可在线阅读,更多相关《简易计算器Java实训报告.docx(11页珍藏版)》请在冰豆网上搜索。
简易计算器Java实训报告
实训报告书
实训名称:
Java程序设计实训
系(部):
信息工程系
专业班级:
计算机科学与技术
学生姓名:
学号:
指导教师:
张民
完成日期:
山东科技大学泰山科技学院
实训课题
简易计算器
实训人姓名
同组人员
实训日期
至
实训成绩
指导
教师
评语
指导教师签名:
年月日
1实训目的错误!
未定义书签。
2简易计算机的分析与设计错误!
未定义书签。
系统功能描述错误!
未定义书签。
系统模块设计错误!
未定义书签。
数据库结构设计错误!
未定义书签。
3主要代码清单错误!
未定义书签。
4程序运行与测试错误!
未定义书签。
5实训总结错误!
未定义书签。
简易计算机的设计与实现
1实训目的
通过本课程设计能够较全面的掌握面向对象程序设计的有关概念和开发方法,以便能较全面地理解、掌握和综合运用所学的知识,提高自身的编程能力。
利用JavaApplet图形界面首先开始设计一个计算器的界面,定义计算器所需要的按钮并赋给其按钮名称,使得使用计算器时简单明了,清晰可见,操作轻松。
给各个按钮进行算法,利用鼠标点击事件,当鼠标点击某个按钮时就开始执行那个按钮所定义的算法,生成数据并显示。
除数字的输入为直接进行输入外,其他运算例如+、-、*、/、开平方等算法要求计算时通过内部较为复杂的运算将结果显示在显示屏上。
至于其中的进制转换功能的实现则是直接调用Java中进制转换的函数,例如要将十进制转换成二进制则可直接调用函数
(inti)来实现,充分显示了Java语言的简洁性和Java语言功能的强大性。
当然了在输入数据时还要进行异常捕捉,防止越界的现象的发生,这也是Java语言健壮性的体现!
2简易计算机的分析与设计
系统功能描述
此系统可以实现如下功能:
1)可进行“+”、“-”、“*”、“/”以及混合运算
2)支持()改变运算的优先级
3)可进行二、十六和十进制数的相互转换
4)支持复制和粘贴操作
系统模块设计
(1)加法
两个数据进行加操作,可以为小数。
(2)减法
两个数据进行减操作,可以为负数相减。
3)乘法
两个数相乘操作。
(4)除法
两个数相除操作。
(5)开平方
对任意一个数进行开方运算,可以是小数。
(6)求余
对任意一个数进行求余运算。
(7)倒数
对任意一个数进行倒数运算。
(8)转换
将十进制数转换为二进制以及将二进制转换为十进制
数据库结构设计
倒数—运
开平方
求余运
乘法运
除法运
图2流程图
3主要代码清单
这段代码主要是对程序的主框架进行相应的设置super("简易计
算器");
setSize(300,260);
(newBorderLayout());
jPanel1=newJPanel();
(newGridLayout(1,1));");
(this);
f2=newJButton("=");
(this);
f3=newJButton("C");
(this);
f4=newJButton("负");
(this);
f5=newJButton("退格");
(this);
(f3);
(b4);
(b3);
(s7);
(s8);
(s9);
(b1);
(s4);
(s5);
(s6);
(b2);
(s1);
(s2);
(s3);
(b5);
(s0);
(f1);
(b6);
(b7);
(b8);
(b9);
(f2);
3)数据输入用方法num(inti)设计如下:
publicvoidnum(inti){
Strings=null;
s=(i);quals("0")){
ength();
if(i==1){
else{str=();
(0,i-1));
if(venter..indezOf(M+M)!
=-l)4匸口丹辽电工“抽丿}
if(Kentien-indeitOf(n-n)F--1){tDkniEer=rf-h;}
if(venter.-indezQf(n^n}F=-l){tokrizer=r,/n;}
if(venbar..lndenCf(rrt»}I--1){“Hi詰尸叫”:
}
(rr平方!
=-l}{忧炽1盗=="千方";}
if(briber,indexOf{H倒皺”)!
一l){tolaiizsr-"倒数";}
if(center・ind亡界OfJ开平方片)!
=1}{txjkniz亡r=・开平万h卜
if(venber.iindexOf("ZiiS1.")!
=-l){匸口也让亡尸■二进制h}
if(wenben.indMOf("+i8S"i!
=-l}{roJcniz^^+SS";}//©个运K符ffilM方法代昭
1f(eventtf.=*tText{wenbsn);}
if(event.getSoarce(】=j3_i11onBACKSPACE{//看除童注
wertien^KenLen-10);
tf.9&rTejEt(wenben};}
if(event・getSource(i—;1
//*=*算法
werbei:
»vwbe!
i.sHifcBTring(Orw*^i;e^*length()-1);
donblelb(;=iiewdouble[10];
skiinga[l=ne>75wri^.g;lj];
StringTokenizersun=newStringTokenizsr(wenben,toknizerJ;inti=0;
while(sur(■H
a[i++]=3urL.neKtTQk^n();
for(intj-0;j<10;j++)(
Springs=a[ji];Stringic=a[j+1];
ifis»noll){break;}else(
if(tckni2er=nrn){//ni£(^—0){wen=l;}
b[j]=Double.parseDo-Jbl=(3}:
wer=wen*b二];
fcenaDcdcle・rsJtrinff(we^):
tf.aetTest(weaben+*=H+ben);
}if(taJciiz«r=,F+n){//"+"薛法
if(7—0){w«i-0;}
bjj]=Double・p^rseno^bie⑶;
wen^wen+b[j];
ben-Dauble.tcSt:
ring{wen);
t-f+setlext(wenben+M="+tien};
}lf(sknHwJ”]{//F,-nS法
t:
[:
]=Dout)le.p=rsePqji?
Ie(3);
If(j=0}(wen=2*L[j];}
wen=wen-b[;];
ben=Double.toStying{wsn):
图3主要程序图
4程序运行与测试
图4加法实现图
N石!
JU吕d―也盘土-=NWCl
1
•
1氧也■■■齐■:
H
4
斗
•
尹
o
-
r▼
O
■
*JH:
fVJKi!
幵+K
图5减法实现图
图6乘法实现图
”Irjfi4«ao«]
2
3
Vi^iCfcSM-aC7^
旺
-1
«■-
*
L
'
O
■
f1
可冇
H
什n沁
jrV
二WIM
w-1
图7除法实现图
图8二进制变十进制
■*
豆C
1
2
3
iMCksp-ICH
1u
4
£>
县
7
0
9
■
U
f
%
平力
■
开平方
十i»制
图9十进制变二进制
5实训总结
经过一周的实习,本学期的java课程设计到此也算告一段落了,经过这次的学习,我学到了很多东西,在此基础上更加巩固了自己对java基本知识及软件开发的了解。
在做本项目是时候,会遇到很多小问题,比如说,在整个运算过
程中要如何确保输入的计算数据哪个是第一个计算数据的,哪个是第
二个计算数据的,同时也要区分运算符,因为该计算器程序应用的都是利用字符串来完成计算的,而且不能重复输出运算符,更不能将运算符错误的存储在了第一个计算数据的数值中,也得考虑到万一不小心重复点击了运算符按钮会不会造成第一个计算数据的重新赋值等等问题,最后想到利用布尔类型来很好的控制运算符的应用!
此次课程设计让我更了解熟悉了Java中的图形用户界面和它的编程方式。
在完成课题的过程中也不断充实了自己,学习到了很多以前没有学习到的知识,收获很大。
最大的收获就是对大学学习的总结和培养了解决困难的信心和能力,使我对所学知识能够融会贯通,又不断丰富了新知识。
Java计算器设计使得我们对所学的专业课有了更为深刻的认识,使得知识得到了巩固和提高。
在接下来的时间里,我觉得我要更加努力的往深一层次的方面看齐,了解更多有关java的知识,熟练掌握java中常用类的方法。