java计算器设计报告
更新时间:2024-03-31 00:13:01 阅读量: 综合文库 文档下载
摘要
本计算器是由java语言所编程设计的标准计算器,可以进行十进制下的四则运算(加、减、乘、除)、开平方、求余、求倒数,还可以实现二进制与十进制之间的转换。通过本课程设计使学生能够较全面的掌握面向对象程序设计的有关概念和开发方法,以便能较全面地理解、掌握和综合运用所学的知识,提高自身的编程能力。
关键词:
语言,计算器,算法1
java目录
摘要 ............................................................................................................. 1 1概述 .......................................................................................................... 3
1.1设计目的及思路 ................................................................................................................... 3 1.2功能模块设计 ....................................................................................................................... 3 1.3系统功能图 ........................................................................................................................... 3
2计算器的设计与实现 ........................................................................................................... 4
2.1程序界面 ............................................................................................................................... 4 2.2程序源代码 ........................................................................................................................... 4
3计算器演示 ........................................................................................... 10 4运行调试及讨论分析 ........................................................................... 13 5小结 ................................................................................................................................................ 14
参考文献: ............................................................................................................................................ 14
2
1概述
1.1设计目的及思路
通过本课程设计使学生能够较全面的掌握面向对象程序设计的有关概念和开发方法,以便能较全面地理解、掌握和综合运用所学的知识,提高自身的编程能力。利用Java Applet图形界面首先开始设计一个计算器的界面,定义计算器所需要的按钮并赋给其按钮名称,使得使用计算器时简单明了,清晰可见,操作轻松。
给各个按钮进行算法,利用鼠标点击事件,当鼠标点击某个按钮时就开始执行那个按钮所定义的算法,生成数据并显示。
除数字的输入为直接进行输入外,其他运算例如+、-、*、/、开平方等算法要求计算时通过内部较为复杂的运算将结果显示在显示屏上。
至于其中的进制转换功能的实现则是直接调用Java中进制转换的函数,例如要将十进制转换成二进制则可直接调用函数Integer.toBinaryString(int i)来实现,充分显示了Java语言的简洁性和Java语言功能的强大性。
当然了在输入数据时还要进行异常捕捉,防止越界的现象的发生,这也是Java语言健壮性的体现!
1.2功能模块设计
以下为标准计算器的基本功能: (1)加法
两个数据进行加操作,可以为小数。 (2)减法
两个数据进行减操作,可以为负数相减。 (3)乘法
两个数相乘操作。 (4)除法
两个数相除操作。 (5)开平方
对任意一个数进行开方运算,可以是小数。 (6)求余
对任意一个数进行求余运算。 (7)倒数
对任意一个数进行倒数运算。 (8)转换
将十进制数转换为二进制以及将二进制转换为十进制。
1.3系统功能图
3
倒数运算 加法运算 开平方运算 计算器 求余运算 减法运算 乘法运算 二进制与十进制转除法运算
2计算器的设计与实现
2.1程序界面
2.2程序源代码
import javax.swing.*;
import javax.swing.text.JTextComponent; import java.util.StringTokenizer; import java.awt.*;
import java.awt.event.*; import java.math.*;
public class Calculator implements ActionListener { JFrame jf=new JFrame(\计算器\JTextField tf=new JTextField(); JPanel pnl;
4
JButton jButtonDENG; JButton jButtonJIAN; JButton jButtonCHENG; JButton jButton1; JButton jButton2; JButton jButton3; JButton jButton4; JButton jButton5; JButton jButton6; JButton jButton7; JButton jButton8; JButton jButton9; JButton jButton0; JButton jButtonCHU;
JButton jButtonQINGKONG; JButton jButtonJIA; JButton jButtonQUYU; JButton jButtonPINGFANG; JButton jButtonXIAOSHUDIAN; JButton jButtonBACKSPACE; JButton jButtonDAOSHU;
JButton jButtonKAIPINGFANG; JButton jButtonERJINZHI; JButton jButtonSHIJINZHI;
public Calculator (){ //初始化界面的方法 Container c=jf.getContentPane();
tf.setHorizontalAlignment(JTextField.RIGHT); c.add(tf,\
JPanel pnl=new JPanel(); c.add(pnl,\
pnl.setLayout(new GridLayout(6,5)); jButton1=new JButton(\
jButton1.addActionListener(this); pnl.add(jButton1);
jButton2=new JButton(\
jButton2.addActionListener(this); pnl.add(jButton2);
jButton3=new JButton(\
jButton3.addActionListener(this); pnl.add(jButton3);
jButtonBACKSPACE=new JButton(\jButtonBACKSPACE.addActionListener(this); pnl.add(jButtonBACKSPACE); jButton4=new JButton(\
5
jButton4.addActionListener(this); pnl.add(jButton4);
jButton5=new JButton(\
jButton5.addActionListener(this); pnl.add(jButton5);
jButton6=new JButton(\
jButton6.addActionListener(this); pnl.add(jButton6);
jButtonJIA=new JButton(\
jButtonJIA.addActionListener(this); pnl.add(jButtonJIA);
jButton7=new JButton(\
jButton7.addActionListener(this); pnl.add(jButton7);
jButton8=new JButton(\
jButton8.addActionListener(this); pnl.add(jButton8);
jButton9=new JButton(\
jButton9.addActionListener(this); pnl.add(jButton9);
jButtonJIAN=new JButton(\
jButtonJIAN.addActionListener(this); pnl.add(jButtonJIAN);
jButton0=new JButton(\
jButton0.addActionListener(this); pnl.add(jButton0);
jButtonQINGKONG=new JButton(\清空\jButtonQINGKONG.addActionListener(this); pnl.add(jButtonQINGKONG);
jButtonCHENG=new JButton(\
jButtonCHENG.addActionListener(this); pnl.add(jButtonCHENG);
jButtonCHU=new JButton(\
jButtonCHU.addActionListener(this); pnl.add(jButtonCHU);
jButtonQUYU=new JButton(\
jButtonQUYU.addActionListener(this); pnl.add(jButtonQUYU);
jButtonPINGFANG=new JButton(\平方\jButtonPINGFANG.addActionListener(this); pnl.add(jButtonPINGFANG);
jButtonXIAOSHUDIAN=new JButton(\
jButtonXIAOSHUDIAN.addActionListener(this); pnl.add(jButtonXIAOSHUDIAN);
6
jButtonDENG=new JButton(\
jButtonDENG.addActionListener(this); pnl.add(jButtonDENG);
jButtonDAOSHU=new JButton(\倒数\jButtonDAOSHU.addActionListener(this); pnl.add(jButtonDAOSHU);
jButtonKAIPINGFANG=new JButton(\开平方\jButtonKAIPINGFANG.addActionListener(this); pnl.add(jButtonKAIPINGFANG);
jButtonERJINZHI=new JButton(\二进制\jButtonERJINZHI.addActionListener(this); pnl.add(jButtonERJINZHI);
jButtonSHIJINZHI=new JButton(\十进制\jButtonSHIJINZHI.addActionListener(this); pnl.add(jButtonSHIJINZHI); jf.setSize(600,400); jf.setVisible(true); }
public void actionPerformed(ActionEvent event){ //检测运算符的方法 try {
double wen=0;
String toknizer=\String ben;
String wenben=tf.getText()+event.getActionCommand(); tf.setText(wenben); //各运算符的判断运行代码 if(wenben.indexOf(\toknizer=\}
if(wenben.indexOf(\toknizer=\}
if(wenben.indexOf(\toknizer=\}
if(wenben.indexOf(\toknizer=\}
if(wenben.indexOf(\toknizer=\}
if(wenben.indexOf(\平方\toknizer=\平方\}
if(wenben.indexOf(\倒数\
7
toknizer=\倒数\}
if(wenben.indexOf(\开平方\toknizer=\开平方\}
if(wenben.indexOf(\二进制\toknizer=\二进制\}
if(wenben.indexOf(\十进制\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); double b[]=new double[10]; String a[]=new String[15];
StringTokenizer sun=new StringTokenizer(wenben,toknizer); int i=0;
while(sun.hasMoreTokens()){ a[i++]=sun.nextToken(); }
for(int j=0;j<10;j++){ String s=a[j]; String k=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+\
}if(toknizer==\算法 if(j==0){wen=0;}
b[j]=Double.parseDouble(s);
8
wen=wen+b[j];
ben=Double.toString(wen); tf.setText(wenben+\
}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+\}
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+\}
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+\}
if(toknizer==\倒数\倒数算法 b[j]=Double.parseDouble(s); wen=1/b[j];
ben=Double.toString(wen); tf.setText(wenben+\}
if(toknizer==\开平方\开平方算法 if(j==0){wen=0;}
b[j]=Double.parseDouble(s); double wen1=sqrt(b[j]); ben=Double.toString(wen1); tf.setText(wenben+\}
JTextComponent textAnswer = null;
if (toknizer==\十进制\二进制转为十进制代码 //b[j]=Integer.parseInt(s); wen =Integer.parseInt(s,2); ben=Double.toString(wen); tf.setText(wenben+\ }
9
if (toknizer==\二进制\十进制转换为二进制代码 int den =Integer.parseInt(s);
String daen = Integer.toBinaryString(den); tf.setText(wenben+\ }
if(toknizer==\算法 if(j==0){
b[j]=Double.parseDouble(s); b[j+1]=Double.parseDouble(k); if(b[j]
} if(b[j]==b[j+1]) { wen=0; }
if(b[j]>b[j+1]) { wen=b[j]%b[j+1]; }
} if(j>1) {
b[j]=Double.parseDouble(a[j]); wen=wen%b[j]; }
ben=Double.toString(wen); tf.setText(wenben+\} } } } }
catch(Exception e){ e.getMessage(); } }
private int sqrt(double d) {
// TODO Auto-generated method stub return 0; }
//主函数
public static void main(String[]args) { new Calculator(); //对小程序进行初始化 } }
3计算器演示
10
加法
减法
乘法
除法
11
倒数
平方
12
二进制转换为十进制
十进制转换为二进制
4运行调试及讨论分析
将代码写好之后检查代码的正确性,检查代码无误后将代码进行调试和运行将会出现一个JavaApplet计算器界面。在调试过程中可能会出现有界面但是不能运行小程序,那是因为没有初始化小程序,那时我们应该在主函数中将小程序进行初始化,这样小程序才能运行!
在调试和运行完全正确后,我们就可以按照自己的医院将小程序进行简单测试,例如输入一些简单数据分别运行各个按钮结果正确后可以初步确定程序师正确的。有时候我们还要输入不同范围的值进行测试,可能会发现更多的错误,因为有时候我们定义数据的范围可能会过小或输入数据会越界,到时我们就可以改正以适应更多更大的运算。
有时候我们会不自觉的选择一种最优函数方法尽量将自己的代码简单规范而又不缺少题目所要求的功能,那就要求我们翻阅很多参考书和查阅很多资料。其实javaApplet图形界面的布局也是我们要讨论的范围,如何使得界面更加美
13
观是我们要探讨的!
有时候我们可能会到书上或网上找到一些满足我们要求的程序代码,在此我们应该取其优秀的简单易理解代码作为我们设计程序的代码,作为初学者参考和借用部分外部程序是不可避免,但是我认为前提我们应该看懂那些程序代码,要知其所以然,那样才达到我们学程序的目的,但不主张完全照搬,否则就会没意义了!
5小结
到此本次课程报告快接近尾声了,通过本次课程设计我学到了好多、也发现了自己的好多不足!
很显然最明显的收获是理解和较熟练的掌握了JavaApplet图形界面的基本方法,尤其在JavaApplet图形界面的布局方面学到颇多,以前布局很乱并且很多布局都是无效的。在此次课设中通过查阅很多资料和同学的互相帮助,充分发挥了JavaApplet界面布局的优越性。另外按钮功能的实现也是本次课设的一大难点,怎样实现那些功能是关键。通过这次课设我又学会了好多Java中的简单便捷的函数,例如Integer.toBinaryString(int i)函数(实现的是将一个十进制数转换成一个二进制的数)。
另外我这次课设部分程序是通过外部资料得到的,这使得我认识到查阅资料和开外多看书籍的重要性。但不主张照搬,因为那不是我们自己成果,那是不光彩的 。
总之通过此次课设我学到了好多,也掌握了好多关于JavaApplet的事件管理和按钮功能实现方法,这次课设给我的感受就是:只要你有心,不怕你完成不了课设。
参考文献:
[1]朱福喜.《Java语言程序设计》(第二版).科学出版社 [2]陈国君等.《Java程序设计基础》(第二版).清华大学出版社 [3] Deitel.《Java大学基础教程》(第六版).电子工业出版社 [4] MaryCampione.《Java语言导学》(第四版).机械工业出版社 [5] Y.Daniel Liang.《Java语言程序设计基础篇》(第六版). 机械工业出版社 [6] Kathy Sierra.《Head First Java》(第二版).东南大学出版社
14
正在阅读:
java计算器设计报告03-31
玩具王国作文400字07-10
基于大数据的企业财务决策系统的设计与开发11-22
智慧社区建设方案实施解决方案word09-06
范例:CA6140车床横向进给系统数控改造设计说明书1doc05-11
我真想变成一只小鸟作文350字06-12
广西桂林箱式无负压供水设备12-18
农业经济专业知识与实务笔记05-26
2015-2016学年高二政治人教版必修4课时作业382用发展的观点看问03-18
校园安全教育日主题教育活动实施方案06-01
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 计算器
- 报告
- 设计
- java
- 迎面接力比赛方法与规则
- 2015届高三第一次模拟考试 英语 - 图文
- 2017山东省市政“三类人员”试题含答案
- 2012电大《国际私法》网上形成性考核答案
- 幼儿园老师学期末总结
- 输液并发症的处理及预防
- 2017-2018学年上海教育版英语四年级下册期末测试卷(含答案) -
- 箱梁模板施工技术交底
- 集锦MI编写指引1.1(2007-07-14)
- 中华人民共和国2009年国民经济和社会发展统计公报
- 工程光学
- 关于开展规章制度学习的通知
- 2016下半年四川自贡市贡井区事业单位招聘考试加分政策
- 货币试题1
- 内部审计的主流模式探讨课后测试
- 高中分年级德育目标
- 政史地生教研组工作总结
- 如何写数模论文资料
- 健美操裁判考试试题库
- 2017年洛阳市专业技术人员继续教育考试题目和答案(保证80分以上