《2022年2022年计算器java程序课设 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年计算器java程序课设 .pdf(19页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、目录摘要 . 1前言 . 2正文 . 31.问题描述 . 32.逻辑设计 . 33.详细设计 . 44.程序调试与测试 . 45.结果分析 . 66.软件安装和使用说明书 . 7设计总结 . 8参考文献 . 9致谢 . 10附件程序代码 . 11名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 19 页 - - - - - - - - - 1 摘要Java是一门编程语言,也是一个平台,它基于Java虚拟机技术,机为主这个东西建立了跨平台优势。本计算器可以进行简单的四则运算(
2、加、减、乘、除),但仅限于十进制。还有清零和退格功能。该程序显示GUI 界面。关键词: JAVA;计算器;程序设计;四则运算。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 19 页 - - - - - - - - - 2 前言该程序是一个图形界面的简单的java计算器,使用人员能快捷简单地进行操作。即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间,对人们的生活有一定的帮助。可以进行简单的四则运算(加、减、乘、除,以及求倒数,求相反数) ,有退格功能
3、, 归零表示初始化,界面颜色为灰白,该程序支持键盘操作。随着科学技术的不断发展,计算机已经成为我们工作学习和生活中不可缺少的工具。文本编辑器是个人计算机最司空见惯的应用程序了,在学习了Java 语言之后,我决定使用Java 语言编写一个简单的计算器,可以实现简单的运算功能,满足日常基本的工作学习和娱乐需要。Java 是由 Sun公司开发的新一代纯面向对象的网络编程语言。其目标是建立一种在任意种机器、任一种操作系统的网络环境中运行的软件,实行所谓的“程序写一次,到处运行”的目标。正因为如此, Java 已成为当今 Internet上最流行、最受欢迎的一种程序开发语言。Java 开发小组把 Jav
4、a 按特性分为基本版、移动版、企业版,每个版本有一个软件开发包。 Java 基本版本叫 Java 2 标准版( Java 2 Standard Edition,J2SE), 它包含建立 Java 应用程序或者是Applet 所需的应用程序编程接口(API) 。Java 2移动版( The Java 2 Mobile Edition ,J2ME )包含创建无线 Java 应用程序的 API。还有 Java 2 企业版( The Java 2 Enterprise,J2EE )是 J2SE的增强版本,包含建立多层架构应用程序API。名师资料总结 - - -精品资料欢迎下载 - - - - - -
5、- - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 19 页 - - - - - - - - - 3 正文1. 问题描述该计数器模拟程序具体功能要求是要能够显示GUI 用户界面,用 java 语言设计并以 JDK 为开发平台能实现整数的加、减、乘、除四则运算而且界面要用图形界面实现2. 逻辑设计首先明确该实验设计的要求实现的基本功能,其次设计布局,将空间划分为由行和列组成的网格单元,每个单元放一个组件,网格单元大小可以不同,尽量将相同属性的按钮放在一个区域,方便操作。程序流程图如下图:单击运行输入计算的数值单击运算符号,再单击等于符号单击运
6、算符号,弹出一个消息框,提醒错误输出结果Y N 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 19 页 - - - - - - - - - 4 3. 详细设计一、程序中所用的组件:mport javax.swing.*; import java.awt.Container; import java.awt.event.*; 二、utputField.setEditable(false); /指示此 TextComponent 是否应该为可编辑的contentPane=t
7、his.getContentPane(); / 返回此窗体的contentPane 对象; this.setSize(250,250); p1.setLayout(new java.awt.GridLayout(4,5); /创建具有 4 行 5 列的布局for(int i=0;ikeyButton.length;i+) / 在容器中画上按钮三、程序功能介绍:功能 1,该程序为十进制计算器,可进行普通十进制计算。功能 2,可进行四则运算(加、减、乘、除)以及求负数,求倒数运算。功能 3,可进行退格,点击“退格”键将逐个删除已经输入的数据。点击“归零”键可实现计算器的初始化4. 程序调试与测试1
8、.调试显示计算器 GUI 界面:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 19 页 - - - - - - - - - 5 图 1.运行结果2.加法运算: 4+5=9;图 2.加法结果3.减法预算 6-2=4;图 3.减法运算名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 19 页 - - - - - - - - - 6 4.乘法运算: 5*3
9、=15;图 4.乘法运算5.除法运算: 24/4=6;图 5.除法运算5. 结果分析程序正常的响应按钮事件,进行混合四则运算的时候,结果如果不是很大,可以正常显示,但如果结果很大,就可能采用科学记数方式,这样带来了进制转换时的麻烦,需要特殊的处理科学记数里的E ,当结果太大的时候,有可能超出可能表示的最大值, (结果溢出),这个时候就会对结果进行溢出提示,我并未设置异常类来相应异常事件,但是程序在发生异常时会提示Infinity字符。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7
10、 页,共 19 页 - - - - - - - - - 7 6. 软件安装和使用说明书该程序采用结构化的程序设计方法编写而成,安装非常简单, 只需在 windows系统下安装该程序的可执行文件就可以让有一定计算机基础的人员,根据程序的提示信息开始操作。本程序充分考虑到了操作者的技术要求,旨在降级程序的操作要求达到人人可操作程度。所以,程序中给出了相当多的操作提示,以便减轻用户的操作难度,以使广大用户易于接受。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 19 页 - -
11、 - - - - - - - 8 设计总结1.通过用 java 编写计数器课程设计, 我不仅复习了以前学习过的知识,更深刻的懂得了学好学会了并不是代表就能够在真正的实践中运用的流畅,这次实践给了我们一个既动手又动脑,独立实践的机会但其中又包含着共同合作,这次又将理论和实践相结合,提高我们的分析、解决实际问题的能力,并且让我认识到了要从要从实际、实践出发提高自己的学术能力;通过这次课程设计使我懂得了理论与实际相结合很重要,只有理论知识是远远不够的,只有把所学的理论知识与实际相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。2. 善于总结,也是学习能力的
12、一种体现,每次完成一个编程任务,完成一段代码,都应当有目的的跟踪该程序的应用状况,随时总结,找到自己的不足,这样所编写的程序才能逐步提高。3. 经过这么多天的学习,我深刻认识到自己的不足和缺点,自己处于怎么样的水平,但是我也了解到自己的长处和优点,不管怎么样,通过这次的实践练习,我懂得了怎么和他人合作,要取长补短,相互合作。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 19 页 - - - - - - - - - 9 参考文献1java就业培训教程 . 张孝祥 . 北京
13、:清华大学出版社,2003 2java编程思想陈昊鹏 饶若男等译 . 北京:机械工程出版社, 2005 3java2应用编程 150 例 张晨 付冰 赵军等 北京:电子工业出版社,2003 4java课程设计耿祥义 北京:清华大学出版社,2004. 5java应用程序设计和开发环境 . 徐永森 ; 南京大学出版社, 2005名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 19 页 - - - - - - - - - 10 致谢经过一个学期的JAVA 学习,对 JAVA
14、编程有了一定的认识,在做这个课程设计的时候,刚开始感觉自己无从下手,不知道该怎么开始,很茫然。最终利用网络资源和查阅图书馆的书籍,在李老师和同学的指导和讨论下,经过一段时间终于完成了这个设计。当程序运行结束看到弹出的计算器的界面时,感到很欣慰,虽然只是一个小小的东西,但却是自己起步的成就,从中学到了很多书本知识不能体现的东西, 对 JAVA 的学习有了一定的兴趣。 也通过这次的程序设计感觉到自己平时对于编程实际操作的贫乏,没有把书本上的知识真正的掌握牢固。1.通过用 java 编写计数器课程设计, 我不仅复习了以前学习过的知识,更深刻的懂得了学好学会了并不是代表就能够在真正的实践中运用的流畅,
15、这次实践给了我们一个既动手又动脑,独立实践的机会但其中又包含着共同合作,这次又将理论和实践相结合,提高我们的分析、解决实际问题的能力,并且让我认识到了要从要从实际、实践出发提高自己的学术能力;2.经过这么多天的学习, 我深刻认识到自己的不足和缺点,自己处于怎么样的水平,但是我也了解到自己的长处和优点,不管怎么样,通过这次的实践练习,我懂得了怎么和他人合作,要取长补短,相互合作。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 19 页 - - - - - - - - -
16、11 附件程序代码import javax.swing.*; import java.awt.Container; import java.awt.event.*; public class jisuanqi extends JFrame private JPanel p1; private JButton keyButton=new JButton16,signButton,clearButton,deleteButton; private JTextField outputField; private Container contentPane; private boolean first
17、Input=true; private Calculate_Model model=new Calculate_Model(); SuppressWarnings(deprecation) public jisuanqi() p1=new JPanel(); keyButton0=new JButton(1); / 创建各个按钮keyButton1=new JButton(2); keyButton2=new JButton(3); keyButton3=new JButton(/); keyButton4=new JButton(4); keyButton5=new JButton(5);
18、keyButton6=new JButton(6); keyButton7=new JButton(*); keyButton8=new JButton(7); keyButton9=new JButton(8); keyButton10=new JButton(9); keyButton11=new JButton(-); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 19 页 - - - - - - - - - 12 keyButton12=new JButton
19、(0); keyButton13=new JButton(.); keyButton14=new JButton(=); keyButton15=new JButton(+); clearButton=new JButton(c); signButton=new JButton(+/-); deleteButton=new JButton(); outputField=new JTextField(); /它允许编辑单行文本outputField.setText(0); outputField.setEditable(false); /指示此 TextComponent 是否应该为可编辑的co
20、ntentPane=this.getContentPane(); / 返回此窗体的contentPane 对象; this.setSize(250,250); p1.setLayout(new java.awt.GridLayout(4,5); /创建具有 4 行 5 列的布局for(int i=0;ikeyButton.length;i+) / 在容器中画上按钮 if(i=4) p1.add(deleteButton); if(i=8) p1.add(clearButton); if(i=12) p1.add(signButton); keyButtoni.setFont(new java.
21、awt.Font(Dialog,3,15);/设置字体Dialog 字体名,样式 ,大小p1.add(keyButtoni); contentPane.add(outputField,java.awt.BorderLayout.NORTH); contentPane.add(p1,java.awt.BorderLayout.CENTER); this.show(); / 用于显示界面public void registEvent() /注册各个事件 this.addWindowListener(new WindowAdapter() /窗口事件,窗口关闭里程序关闭名师资料总结 - - -精品资
22、料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 19 页 - - - - - - - - - 13 public void windowClosing(WindowEvent we) System.exit(0); ); for(int i=0;ikeyButton.length;i+) keyButtoni.addActionListener(new keyButtonHandler(); /为每一个按钮添加监听器 signButton.addActionListener(new ActionLi
23、stener() public void actionPerformed(ActionEvent ae) outputField.setText(String.valueOf(model.toSign(Double.parseDouble(outputField.getText(); ); deleteButton.addActionListener(new ActionListener() public void actionPerformed(ActionEvent ae) outputField.setText(model.backSpace(outputField.getText();
24、 if(outputField.getText().equals(0) firstInput=true; ); clearButton.addActionListener(new ActionListener() 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 19 页 - - - - - - - - - 14 public void actionPerformed(ActionEvent ae) firstInput=true; outputField.setText
25、(0); model.reset(); ); class keyButtonHandler implements ActionListener public void actionPerformed(ActionEvent ae) char actionCommand=ae.getActionCommand().charAt(0); switch(actionCommand) case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 0: case .: if(firstInput) / 是否为首次
26、输入 outputField.setText(String.valueOf(actionCommand); firstInput=false; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 19 页 - - - - - - - - - 15 else outputField.setText(outputField.getText()+actionCommand); break; case +: case -: case *: case /: if(firstInput
27、) model.setOperate(actionCommand); else model.setOperateNumber(Double.parseDouble(outputField.getText(); model.calculating(); model.setOperate(actionCommand); outputField.setText(String.valueOf(model.getResult(); firstInput=true; break; case =: if(firstInput) model.calculating(); outputField.setText
28、(String.valueOf(model.getResult(); else model.setOperateNumber(Double.parseDouble(outputField.getText(); model.calculating(); outputField.setText(String.valueOf(model.getResult(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 19 页 - - - - - - - - - 16 firstIn
29、put=true; public static void main(String args) new jisuanqi().registEvent(); /* * 计算的模块 */ class Calculate_Model private double result; private double operateNumber; private char operate; public Calculate_Model() /构造方法进行初始化 result=0; /结果operateNumber=0; /操作数operate= ; /操作符 public void setResult(doub
30、le n) /设置结果,成员变量result是 private 的 result=n; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 19 页 - - - - - - - - - 17 public void setOperate(char o) / 设置操作符 operate=o; public void setOperateNumber(double n) / 设置操作数 operateNumber=n; public double getResult() /获取
31、结果 return result; public void calculating() / 计算过程 switch(operate) case :result=operateNumber;break; / 分别对操作判断后进行相应操作case +:result+=operateNumber;break; case -:result-=operateNumber;break; case *:result*=operateNumber;break; case /:result/=operateNumber;break; public void reset() /重设方法 result=0; ope
32、rateNumber=0; operate= ; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 19 页 - - - - - - - - - 18 public double toSign(double n) /正负转化 return 0-(n-0); public String backSpace(String n) / 对 backSpace设置 String reResult=0; try reResult=n.substring(0,n.length()-1); / 从第一个开始取前n-1 个Double.parseDouble(reResult); / 将其转化为 Double 型 catch(NumberFormatException e) reResult=0; return reResult; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 19 页,共 19 页 - - - - - - - - -