《Java项目实训》课程设计计算器.docx
- 文档编号:24738425
- 上传时间:2023-06-01
- 格式:DOCX
- 页数:21
- 大小:212.25KB
《Java项目实训》课程设计计算器.docx
《《Java项目实训》课程设计计算器.docx》由会员分享,可在线阅读,更多相关《《Java项目实训》课程设计计算器.docx(21页珍藏版)》请在冰豆网上搜索。
《Java项目实训》课程设计计算器
课程设计报告
课程名称
《Java项目实训》课程设计
设计名称
基于java计算器得设计与实现
学生学号
学生姓名
学生学号
学生姓名
学生学号
学生姓名
学生学号
学生姓名
学生学号
学生姓名
指导教师
吕淑芳
考核成绩
信息工程系
二〇一七年六月
1、前言2
1、2功能模块设计2
1、3系统功能图ﻩ3
3、计算器演示ﻩ4
4、总结与体会及讨论分析7
5、参考文献9
程序源代码10
ﻬ1、前言
1、1设计目得及思路
通过本课程设计使学生能够较全面得掌握面向对象程序设计得有关概念与开发方法,以便能较全面地理解、掌握与综合运用所学得知识,提高自身得编程能力。
利用JavaApplet图形界面首先开始设计一个计算器得界面,定义计算器所需要得按钮并赋给其按钮名称,使得使用计算器时简单明了,清晰可见,操作轻松.
给各个按钮进行算法,利用鼠标点击事件,当鼠标点击某个按钮时就开始执行那个按钮所定义得算法,生成数据并显示。
除数字得输入为直接进行输入外,其她运算例如+、—、*、/、开平方等算法要求计算时通过内部较为复杂得运算将结果显示在显示屏上。
至于其中得进制转换功能得实现则就是直接调用Java中进制转换得函数,例如要将十进制转换成二进制则可直接调用函数Integer、toBinaryString(int i)来实现,充分显示了Java语言得简洁性与Java语言功能得强大性.
当然了在输入数据时还要进行异常捕捉,防止越界得现象得发生,这也就是Java语言健壮性得体现!
1、2功能模块设计
以下为标准计算器得基本功能:
(1)加法
两个数据进行加操作,可以为小数。
(2)减法
两个数据进行减操作,可以为负数相减.
(3)乘法ﻫ两个数相乘操作。
(4)除法
两个数相除操作。
(5)开平方
对任意一个数进行开方运算,可以就是小数。
(6)求余
对任意一个数进行求余运算。
(7)倒数
对任意一个数进行倒数运算。
(8)转换
将十进制数转换为二进制以及将二进制转换为十进制.
1、3系统功能图
2、计算器得设计与实现
2、1总体方案设计
日常生活中经常需要用到计算器,比如科学计算,数值计算,会计业务等等,在Applet中实现一个精巧得计算器,可以让用户得操作也更方便与快捷。
本项目需要实现一个具有四则运算得计算器,能够实现基本得加、减、乘、除运算,以及其它得辅助功能;界面简洁适用;要提供主要得设计思路、类得设计,本次设计添加转进制等功能。
本应用程序继承自框架(frame),此程序使用frame布局管理器bordelayout,将单行文本加入相应区域,包含各种按纽得面板buttonpanel加入相应区域还可以将进制转换得面板与单行文本框放一块包含各种按纽得面板buttonpanel采用N行N列得网格布局,然后将数字按钮与运算符按钮以及控制按钮添加到面板中,同时注册按钮事件监听器。
布局设计好后再添加按钮事件。
对于此程序要考虑到点击加、减、乘、除按钮时就是否有点击数字按钮,如果就是第一次点击数字按钮或者就是点击数字按钮前点击了加、减、乘、除按钮则直接把数字按钮得数值设置到文本框中,否则则应把文本框中得内容加上您所点击按钮得数值设置到文本框中。
2、2程序得调试与运行结果说明
程序功能实现:
使用swing组件与awt图形用户界面以及BroadLayout布局管理器。
通过在按钮得单击事件处理方法中调用类得成员方法calculator()来进行简易计算器得各种运算,并正确实现运算功能.
程序可以实现加、减、乘、除、取余等运算,并且可进行负数得运算,设置CE清零按钮可进行清零运算。
添加菜单条,列出‘标准计算’、‘日期计算’菜单选项,并别实现‘标准计算’且整个程序对话框可实现最小化、最大化、关闭。
3、计算器演示
加法
减法
乘法
除法
倒数
平方
二进制转换为十进制
十进制转换为二进制
4、总结与体会及讨论分析
将代码写好之后检查代码得正确性,检查代码无误后将代码进行调试与运行将会出现一个JavaApplet计算器界面。
在调试过程中可能会出现有界面但就是不能运行小程序,那就是因为没有初始化小程序,那时我们应该在主函数中将小程序进行初始化,这样小程序才能运行!
在调试与运行完全正确后,我们就可以按照自己得医院将小程序进行简单测试,例如输入一些简单数据分别运行各个按钮结果正确后可以初步确定程序师正确得。
有时候我们还要输入不同范围得值进行测试,可能会发现更多得错误,因为有时候我们定义数据得范围可能会过小或输入数据会越界,到时我们就可以改正以适应更多更大得运算。
有时候我们会不自觉得选择一种最优函数方法尽量将自己得代码简单规范而又不缺少题目所要求得功能,那就要求我们翻阅很多参考书与查阅很多资料。
其实javaApplet图形界面得布局也就是我们要讨论得范围,如何使得界面更加美观就是我们要探讨得!
有时候我们可能会到书上或网上找到一些满足我们要求得程序代码,在此我们应该取其优秀得简单易理解代码作为我们设计程序得代码,作为初学者参考与借用部分外部程序就是不可避免,但就是我认为前提我们应该瞧懂那些程序代码,要知其所以然,那样才达到我们学程序得目得,但不主张完全照搬,否则就会没意义了!
总结:
(1)通过编写这个相对复杂得程序,让我认识解决实际问题前应现建立模型,再通过建立得模型使问题简单化,从而解决问题。
(2)这次编写得程序大部分就是通过调用各包中得方法来实现得,这也让我充分理解了包与类调用得关系.
(3)并且通过实训我了解到String类就是字符串常量类,初始化后不能更改;StringBuffer类就是字符串缓冲区,可以被修改。
布尔型不能转化成其她任何类型等等。
在做本项目就是时候,会遇到很多小问题,比如说:
如何保存输入得数字与下一个数进行加、减、乘、除运算。
还有如何判断它就是第几个输入得数字。
后来进行多次研究与查询才知道可以通过设运算符标志位来判断就是输入得第几个数值.
还有在安装日期计算按钮时会遇到日期对象与标准计算得类不再同一个包中,这时需要重新定义一个类来实现日期计算,这一功能我在编程时遇到了一些问题,所以最后运行时只有按钮事件但在按钮上没有添加实现功能得方法.并且编写程序时需要声明多个对象,给不同得对象分配不同得空间。
程序中对布局管理器与事件、按钮监听器得应用十分广泛。
并且运用了java、awt、*;与java、swing中得很多组件.通过编程我对这些内容有了更深层次得理解,为以后得编程打下了良好得基础.
设计体会:
在此次得课程设计实践中,我学到了教科书上没有得东西。
这次课程设计,我按照课程设计得要求,分块实现程序得功能。
在实践中我遇到许多得问题,但我都克服,最终我成功得完成了这次课程设计。
从中我充分理解了Java面对对象得特性,并体会到Java与C语言得不同之处在实践得同时,我又从中成长了许多,特别就是在对程序得编译与调试中掌握了许多得技巧与方法,为今后得其她计算机语言得学习奠定了一定得基础.
此次课程设计让我更了解熟悉了Java中得图形用户界面与它得编程方式。
在完成课题得过程中也不断充实了自己,学习到了很多以前没有学习到得知识,收获很大。
在做项目时必然会遇到困难,会有不会得东西,重要得不就是现在会不会,而就是遇到问题知道如何找到解决得途径。
还使我对所学知识能够融会贯通,又不断丰富了新知识.Java计算器设计使得我们对所学得专业课有了更为深刻得认识,使得知识得到了巩固与提高
此次得课程设计使我复习、巩固Java语言得基础知识,进一步加深Java语言得理解与掌握;课程设计为我们提供了一个既动手又动脑,独立实践得机会,将课本上得理论知识与实际有机得结合起来,锻炼了我们分析解决实际问题得能力.提高我们适应实际,实践编程得能力;并且培养了我们在项目开发中团队合作精神、创新意识及能力。
在实践得同时,我又从中成长了许多,特别就是在对程序得编译与调试中掌握了许多得技巧与方法,为今后得其她计算机语言得学习奠定了一定得基础。
5、参考文献
[1]朱福喜、《Java语言程序设计》(第二版)、科学出版社
[2]陈国君等、《Java程序设计基础》(第二版)、清华大学出版社
[3] Deitel、《Java大学基础教程》(第六版)、电子工业出版社
[4]MaryCampione、《Java语言导学》(第四版)、机械工业出版社
[5]Y、DanielLiang、《Java语言程序设计基础篇》(第六版)、机械工业出版社
程序源代码
import javax、swing、*;
importjavax、swing、text、JTextponent;
importjava、util、StringTokenizer;
importjava、awt、*;
importjava、awt、event、*;
importjava、math、*;
public class CalculatorimplementsActionListener{
JFramejf=newJFrame("计算器");
JTextFieldtf=newJTextField();
JPanelpnl;
JButtonjButtonDENG;
JButton jButtonJIAN;
JButtonjButtonCHENG;
JButton jButton1;
JButtonjButton2;
JButtonjButton3;
JButtonjButton4;
JButtonjButton5;
JButtonjButton6;
JButtonjButton7;
JButtonjButton8;
JButtonjButton9;
JButtonjButton0;
JButtonjButtonCHU;
JButtonjButtonQINGKONG;
JButtonjButtonJIA;
JButtonjButtonQUYU;
JButton jButtonPINGFANG;
JButtonjButtonXIAOSHUDIAN;
JButton jButtonBACKSPACE;
JButton jButtonDAOSHU;
JButtonjButtonKAIPINGFANG;
JButtonjButtonERJINZHI;
JButtonjButtonSHIJINZHI;
publicCalculator(){//初始化界面得方法
Containerc=jf、getContentPane();
tf、setHorizontalAlignment(JTextField、RIGHT);
c、add(tf,"North”);
JPanel pnl=newJPanel();
c、add(pnl,"Center”);
pnl、setLayout(newGridLayout(6,5));
jButton1=new JButton("1”);
jButton1、addActionListener(this);
pnl、add(jButton1);
jButton2=new JButton(”2”);
jButton2、addActionListener(this);
pnl、add(jButton2);
jButton3=newJButton(”3”);
jButton3、addActionListener(this);
pnl、add(jButton3);
jButtonBACKSPACE=new JButton("backspace”);
jButtonBACKSPACE、addActionListener(this);
pnl、add(jButtonBACKSPACE);
jButton4=newJButton(”4");
jButton4、addActionListener(this);
pnl、add(jButton4);
jButton5=newJButton(”5”);
jButton5、addActionListener(this);
pnl、add(jButton5);
jButton6=newJButton("6");
jButton6、addActionListener(this);
pnl、add(jButton6);
jButtonJIA=newJButton("+");
jButtonJIA、addActionListener(this);
pnl、add(jButtonJIA);
jButton7=new JButton("7");
jButton7、addActionListener(this);
pnl、add(jButton7);
jButton8=new JButton("8");
jButton8、addActionListener(this);
pnl、add(jButton8);
jButton9=new JButton("9");
jButton9、addActionListener(this);
pnl、add(jButton9);
jButtonJIAN=newJButton(”—");
jButtonJIAN、addActionListener(this);
pnl、add(jButtonJIAN);
jButton0=newJButton(”0");
jButton0、addActionListener(this);
pnl、add(jButton0);
jButtonQINGKONG=newJButton("清空”);
jButtonQINGKONG、addActionListener(this);
pnl、add(jButtonQINGKONG);
jButtonCHENG=newJButton(”*”);
jButtonCHENG、addActionListener(this);
pnl、add(jButtonCHENG);
jButtonCHU=newJButton(”/");
jButtonCHU、addActionListener(this);
pnl、add(jButtonCHU);
jButtonQUYU=newJButton("%");
jButtonQUYU、addActionListener(this);
pnl、add(jButtonQUYU);
jButtonPINGFANG=newJButton("平方”);
jButtonPINGFANG、addActionListener(this);
pnl、add(jButtonPINGFANG);
jButtonXIAOSHUDIAN=newJButton(”、");
jButtonXIAOSHUDIAN、addActionListener(this);
pnl、add(jButtonXIAOSHUDIAN);
jButtonDENG=newJButton("=”);
jButtonDENG、addActionListener(this);
pnl、add(jButtonDENG);
jButtonDAOSHU=newJButton(”倒数");
jButtonDAOSHU、addActionListener(this);
pnl、add(jButtonDAOSHU);
jButtonKAIPINGFANG=newJButton(”开平方");
jButtonKAIPINGFANG、addActionListener(this);
pnl、add(jButtonKAIPINGFANG);
jButtonERJINZHI=new JButton("二进制");
jButtonERJINZHI、addActionListener(this);
pnl、add(jButtonERJINZHI);
jButtonSHIJINZHI=newJButton(”十进制”);
jButtonSHIJINZHI、addActionListener(this);
pnl、add(jButtonSHIJINZHI);
jf、setSize(600,400);
jf、setVisible(true);
}
publicvoidactionPerformed(ActionEventevent){//检测运算符得方法
try{
ﻩdoublewen=0;
Stringtoknizer="+”;
String ben;
Stringwenben=tf、getText()+event、getActionmand();
tf、setText(wenben);//各运算符得判断运行代码
if(wenben、indexOf(”*")!
=-1){
toknizer="*";
}
if(wenben、indexOf("+")!
=-1){
toknizer="+";
}
if(wenben、indexOf(”-")!
=-1){
toknizer=”—";
}
if(wenben、indexOf(”/”)!
=-1) {
toknizer="/”;
}
if(wenben、indexOf(”%”)!
=—1) {
toknizer="%";
}
if(wenben、indexOf(”平方")!
=-1) {
toknizer=”平方";
}
if(wenben、indexOf("倒数")!
=-1){
toknizer="倒数";
}
if(wenben、indexOf("开平方")!
=—1) {
toknizer="开平方";
}
if(wenben、indexOf("二进制”)!
=-1){
toknizer="二进制";
}
if(wenben、indexOf("十进制”)!
=-1){
toknizer="十进制”;
}
//各个运算符得运算方法代码
if(event、getSource()==jButtonQINGKONG){ //清空算法
wenben="";
tf、setText(wenben);
}
if(event、getSource()==jButtonBACKSPACE){ //清除算法
wenben=wenben、substring(0,wenben、length()—10);
tf、setText(wenben);
}
if(event、getSource()==jButtonDENG){ //"="算法
wenben=wenben、substring(0,wenben、length()-1);
doubleb[]=newdouble[10];
Stringa[]=newString[15];
StringTokenizersun=newStringTokenizer(wenben,toknizer);
inti=0;
while(sun、hasMoreTokens()){
a[i++]=sun、nextToken();
}
for(intj=0;j<10;j++){
String s=a[j];
Stringk=a[j+1];
if(s==null){
break;
}else{
if(toknizer=="*”){ //"*"算法
if(j==0){wen=1;}
b[j]=Double、parseDouble(s);
wen=wen*b[j];
ben=Double、toString(wen);
tf、setText(wenben+"="+ben);
}if(toknizer==”+”){ //"+"算法
if(j==0){wen=0;}
b[j]=Double、parseDouble(s);
wen=wen+b[j];
ben=Double、toString(wen);
tf、setText(wenben+"=”+ben);
}if(toknizer==”-"){ //"-"算法
b[j]=Double、parseDouble(s);
if(j==0){wen=2*b[j];}
wen=wen-b[j];
ben=Double、toString(wen);
tf、setText(wenben+"="+ben);
}
if(toknizer==”/”){ //”/”算法
b[j]=Double、parseDouble(s);
if(j==0){wen=b[j]*b[j];}
wen=wen/b[j];
ben=Double、toString(wen);
tf、setText(wenben+”="+ben);
}
if(toknizer==”平方"){ //平方算法
if(j==0){wen=1;}
b[j]=Double、parseDouble(s);
wen=wen*b[j]*b[j];
ben=Double、toString(wen);
tf、setText(wenben+"="+ben);
}
if(toknizer==”倒数"){ //倒数算法
b[j]=Double、parseDouble(s);
wen=1/b[j];
ben=Double、toString(wen);
tf、setText(wenben+"=”+ben);
}
if(toknizer=="开平方"){//开平方算法
if(j==0){wen=0;}
b[j]=Double、parseDouble(s);
doublewen1=sqrt(b[j]);
ben=Double、toString(wen1);
tf、setText(wenben+"="+ben);
}
JTextponenttextAnswer=null;
if (toknizer=="十进制"){ //二进制转为十进制代码
ﻩ//b[j]=Integer、parseInt(s);
wen=Integer、parseInt(s,2);
ben=Double、toString(wen);
tf、setText(wenben+”=”+ben);
}
if(toknizer=="二进制”){ //十进制转换为二进制代码
ﻩintden=Integer、parseInt(s);
Stringdaen=Integer、toBinaryString(den);
tf、setText(wenben+”="+daen);
}
if(toknizer=="%”){//"%"算法
i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java项目实训 Java 项目 课程设计 计算器
![提示](https://static.bdocx.com/images/bang_tan.gif)