《Java项目实训》课程设计计算器要点.docx
- 文档编号:13902879
- 上传时间:2023-06-19
- 格式:DOCX
- 页数:22
- 大小:203.61KB
《Java项目实训》课程设计计算器要点.docx
《《Java项目实训》课程设计计算器要点.docx》由会员分享,可在线阅读,更多相关《《Java项目实训》课程设计计算器要点.docx(22页珍藏版)》请在冰点文库上搜索。
《Java项目实训》课程设计计算器要点
信息科学与工程学院课程设计
题目:
基于java计算器的设计与实现
姓名:
赵文正
学号:
201312310147
班级:
2013级升本1班
课程:
Java项目实训
任课教师刘梦琳
2014年12月20日
课程设计任务书及成绩评定
题目
基于java计算器的设计与实现
课程设计的任务及要求
任务:
设计一个功能齐全,实用的计算器软件。
软件设计合理、界面设计美观。
具体要求:
适用功能要求:
能够实现基本的加、减、乘、除运算,以及其它的辅助功能;界面简
洁;要提供主要的设计思路、类的设计
设计任务要完成设计、编码、测试等过程,给出设计思路、设计说明书、主要的代码的说明、使用说明书。
源代码以及可运行的计算器程序。
课程设计所需的软件、硬件等
硬件环境:
Iterl(R)Core(TM)2DuoCPU,主频2.31GHz;内存3G;
硬盘320G以上;1024×768显示分辨率
软件环境:
JDK6.0以上、eclipse等
设计报告:
1、设计目的和任务
2、总体设计:
包括程序设计组成框图、流程图。
3、详细设计:
包括模块功能说明:
函数功能、入口及出口参数说明,函数调用关系描述等。
4、调试与测试:
包括调试方法,测试结果分析与讨论,测试过程中遇到的主要问题及采取的解决措施。
5、源程序清单和执行结果:
清单中应有足够的注释。
任课教师评语
成绩:
教师签名:
日期:
目录
1、前言2
1.1设计目的及思路2
1.2功能模块设计2
1.3系统功能图3
2、计算器的设计与实现3
3、计算器演示4
4、总结与体会及讨论分析7
5、参考文献9
附件:
10
程序源代码10
1、前言
1.1设计目的及思路
通过本课程设计使学生能够较全面的掌握面向对象程序设计的有关概念和开发方法,以便能较全面地理解、掌握和综合运用所学的知识,提高自身的编程能力。
利用JavaApplet图形界面首先开始设计一个计算器的界面,定义计算器所需要的按钮并赋给其按钮名称,使得使用计算器时简单明了,清晰可见,操作轻松。
给各个按钮进行算法,利用鼠标点击事件,当鼠标点击某个按钮时就开始执行那个按钮所定义的算法,生成数据并显示。
除数字的输入为直接进行输入外,其他运算例如+、-、*、/、开平方等算法要求计算时通过内部较为复杂的运算将结果显示在显示屏上。
至于其中的进制转换功能的实现则是直接调用Java中进制转换的函数,例如要将十进制转换成二进制则可直接调用函数Integer.toBinaryString(inti)来实现,充分显示了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语言程序设计基础篇》(第六版).机械工业出版社
[6]KathySierra.《HeadFirstJava》(第二版).东南大学出版社
附件:
程序源代码
importjavax.swing.*;
importjavax.swing.text.JTextComponent;
importjava.util.StringTokenizer;
importjava.awt.*;
importjava.awt.event.*;
importjava.math.*;
publicclassCalculatorimplementsActionListener{
JFramejf=newJFrame("计算器");
JTextFieldtf=newJTextField();
JPanelpnl;
JButtonjButtonDENG;
JButtonjButtonJIAN;
JButtonjButtonCHENG;
JButtonjButton1;
JButtonjButton2;
JButtonjButton3;
JButtonjButton4;
JButtonjButton5;
JButtonjButton6;
JButtonjButton7;
JButtonjButton8;
JButtonjButton9;
JButtonjButton0;
JButtonjButtonCHU;
JButtonjButtonQINGKONG;
JButtonjButtonJIA;
JButtonjButtonQUYU;
JButtonjButtonPINGFANG;
JButtonjButtonXIAOSHUDIAN;
JButtonjButtonBACKSPACE;
JButtonjButtonDAOSHU;
JButtonjButtonKAIPINGFANG;
JButtonjButtonERJINZHI;
JButtonjButtonSHIJINZHI;
publicCalculator(){//初始化界面的方法
Containerc=jf.getContentPane();
tf.setHorizontalAlignment(JTextField.RIGHT);
c.add(tf,"North");
JPanelpnl=newJPanel();
c.add(pnl,"Center");
pnl.setLayout(newGridLayout(6,5));
jButton1=newJButton("1");
jButton1.addActionListener(this);
pnl.add(jButton1);
jButton2=newJButton("2");
jButton2.addActionListener(this);
pnl.add(jButton2);
jButton3=newJButton("3");
jButton3.addActionListener(this);
pnl.add(jButton3);
jButtonBACKSPACE=newJButton("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=newJButton("7");
jButton7.addActionListener(this);
pnl.add(jButton7);
jButton8=newJButton("8");
jButton8.addActionListener(this);
pnl.add(jButton8);
jButton9=newJButton("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=newJButton("二进制");
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="+";
Stringben;
Stringwenben=tf.getText()+event.getActionCommand();
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++){
Strings=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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java项目实训 Java 项目 课程设计 计算器 要点