![计算器java程序设计_第1页](http://file4.renrendoc.com/view/4a4fecf9ee49207bf1adc2f8e537c49d/4a4fecf9ee49207bf1adc2f8e537c49d1.gif)
![计算器java程序设计_第2页](http://file4.renrendoc.com/view/4a4fecf9ee49207bf1adc2f8e537c49d/4a4fecf9ee49207bf1adc2f8e537c49d2.gif)
![计算器java程序设计_第3页](http://file4.renrendoc.com/view/4a4fecf9ee49207bf1adc2f8e537c49d/4a4fecf9ee49207bf1adc2f8e537c49d3.gif)
![计算器java程序设计_第4页](http://file4.renrendoc.com/view/4a4fecf9ee49207bf1adc2f8e537c49d/4a4fecf9ee49207bf1adc2f8e537c49d4.gif)
![计算器java程序设计_第5页](http://file4.renrendoc.com/view/4a4fecf9ee49207bf1adc2f8e537c49d/4a4fecf9ee49207bf1adc2f8e537c49d5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上精选优质文档-倾情为你奉上专心-专注-专业专心-专注-专业精选优质文档-倾情为你奉上专心-专注-专业目录 TOC o 1-3 h z u 1.课程设计目的 通过课程设计把知识形成系统,把自己所学的知识在实际问题中加以运用。如果自己编写的程序能够给更多的人带来方便,并且得到人们的好评,那么自己编写的程序就可以实现商品化,形成产品给更多的人利用,并实现一定的商品价值。因此本次课程设计有目的有以下几点:(1)复习巩固java语言的基础知识,进一步加深对java语言的理解和掌控。 (2)提供一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机结合起来,锻炼我们的分析
2、解决实际问题的能力。提高我们适应实际,实践编程的能力。 (3)培养我们在项目开发中创新意识及能力,通过亲身实践,利用所学编写简单的面向对象程序,提高对面向对象及JAVA语言的理解。2.设计题目分析21 题目简介 设计一个图形界面(GUI)的计算器应用程序,完成简单的算术运算、设计的计算器应用程序可以完成家法、减法、乘法、除法。22 设计要求及需求分析 设计要求:由于现代用户更倾向于由鼠标方便操作的图形用户界面,所以我们采用GUI来实现计算器,并采用Swing组件,AWT事件处理等实现具体功能。背景需求分析:在我们日常生活中,计算开支、收入时,大额数字或是多倍小数的计算都需要计算器的帮助,而在学
3、习一些科目时,也常常要处理数字。虽然现在的计算器价格比较低廉,但是功能过于简单的不能满足个人需求,功能多的价格较贵,不仅操作不便,很多功能也根本用不到。所以我们想用自己所学设计开发一个属于自己的简单计算器来完成日常学习生活的需求。3.课程设计内容31 总体设计本应用程序继承自框架类(Frame),此程序使用Frame布局管理器BorderLayout,将单行文本框加入到“North”区域,包含各种按钮的面板Panel p加入到”Center”区域。包含各种按钮的面板Panel p 采用4行4列的网格布局,然后将数字按钮和运算符按钮以及控制按钮添加到面板中。同时注册按钮事件监听器。如:Butto
4、n b=new Button();b.addActionListener(事件监听器);事件监听器中的事件处理方法void actionPerformed(ActionEvent evt)完成主要的按钮事件的处理。事件处理分以下几种情况:数字按钮事件(”0”,”1”,”2”8”,”9”)、运算符按钮事件(”+”,”“,”*”,”/”,”%”)、正负号按钮事件(”+/-“)、小数点按钮事件(”.”)、等号按钮事件(”)、求倒按钮事件(”1/x”)、退格按钮事件(”退格”)、清楚按钮事件(“C”)。触发按钮事件时,要进一步分析,是重新开始计算时触发的按钮事件还是计算中间触发的按钮事件。计算器完成的
5、是一个数学表达式,如:32,所以可以采用一个链表(LinkedList类)来存储数字或字符,如3,2分别存储在链表中,最后运算时,可以一一取出来进行运算。计算器设计外形及结构如下:系统总体设计框架Panel2 Panel1 Panel:4*4的数字及运算键Panel2:输入及运行结果显示及倒退清空键3.2计算器功能模块设计以下为标准计算器的基本功能:(1)加法 两个数据进行加操作,可以为小数。(2)减法 两个数据进行减操作,可以为负数相减。(3)乘法 两个数相乘操作。(4)除法 两个数相除操作。(5)清零 清除显示框的数据。具体的计算器功能模块图如下:计算器 清零除乘减加 3.3计算器算法流程
6、设计计算器的程序设计,必然有数据的输入,当中就包含运算符和数字,都要通过计算器上的button按钮选项按键输入进去,里面录入的为字符型的数据,若要进行运算,要将输入的字符转换成double型,以防运算出错。实现计算器算法功能的流程图如下所示:用户点击按键或键盘输入文本框接收触发事件文本框显示结果调用计算函数运算数据输入主界面开始结果输出运算符号继续3.4类的设计class jisuan extends JFrame implements ActionListener/jisuan 是初始化界面,以及响应用户的操作。jisuan是个内部类,功能是进行进制的转换。import java.awt.*
7、;import java.awt.event.*;import javax.swing.*;这三项是系统初始时需要引入的主类以达到完成界面的目的。35代码实现:1、引入主类:import java.awt.*;import java.awt.event.*;import javax.swing.*;public class jisuan extends JFrame implements ActionListener 2、实现计算器界面的关闭与扩展private static final long serialVersionUID = -L;private class WindowCloser
8、 extends WindowAdapter public void windowClosing(WindowEvent we) System.exit(0);3、建立按键并为每个按键赋予相应的字符int i;private final String str = 7, 8, 9, /, 4, 5, 6, *, 1,2, 3, -, ., 0, =, + ;JButton buttons = new JButtonstr.length;JButton reset = new JButton(CE);JTextField display = new JTextField(0);4、设计计算器界面p
9、ublic jisuan() super(jisuan);JPanel panel1 = new JPanel(new GridLayout(4, 4);for (i = 0; i str.length; i+) buttonsi = new JButton(stri);panel1.add(buttonsi);JPanel panel2 = new JPanel(new BorderLayout();panel2.add(Center, display);panel2.add(East, reset);getContentPane().setLayout(new BorderLayout()
10、;getContentPane().add(North, panel2);getContentPane().add(Center, panel1);5、为各个按键及显示框添加事件监听for (i = 0; i 0)handleNumber(label);elsehandleOperator(label);boolean isFirstDigit = true;public void handleNumber(String key) if (isFirstDigit)display.setText(key);else if (key.equals(.) & (display.getText().
11、indexOf(.) 0)display.setText(display.getText() + .);else if (!key.equals(.)display.setText(display.getText() + key);isFirstDigit = false;7、重置功能的实现public void handleReset() display.setText(0);isFirstDigit = true;operator = =;double number = 0.0;String operator = =;8、运算功能的实现public void handleOperator(
12、String key) if (operator.equals(+)number += Double.valueOf(display.getText();else if (operator.equals(-)number -= Double.valueOf(display.getText();else if (operator.equals(*)number *= Double.valueOf(display.getText();else if (operator.equals(/)number /= Double.valueOf(display.getText();else if (oper
13、ator.equals(=)number = Double.valueOf(display.getText();display.setText(String.valueOf(number);operator = key;isFirstDigit = true;public static void main(String args) new jisuan();35 设计结果与分析1、运行的初始界面 2、数字计算演示以计算(789+45)*23=19182为例,计算过程如下: 输入789与45相加所得结果输入23并相乘得到最终结果点击CE清零最后得到的结果为19182,结果正确,计算器的各个功能均
14、得以实现。4.设计心得与总结通过此次的课程设计实践,我们不但进一步理解掌握了课上老师教授的知识,而且通过查找资料学会了课上没有的东西,进一步理解了面向对象的含义,发现了很多它比面向过程突出的地方,第一次接触了图形界面,初步了解了GUI方面的知识。在实践中我们遇到了很多问题,但我们都努力克服,并最终成功的完成了这次课程设计。 通过编写这个相对复杂的程序,我们认识解决实际问题前应先建立模型,再通过建立的模型使问题简单化,从而解决问题。并且这次编写的程序大部分是通过调用各包中的方法来实现的,这也让我们充分理解了包和类的调用关系。由于这次编写的程序比较复杂,所以不能一次性编写、调试,也由此让我们学会把
15、程序分块,逐个编写、调试。参考文献:2叶乃文,王丹面向对象程序设计M清华大学出版社,2009.2邱桃荣,陈轶,冯缨JAVA语言程序设计教程M机械工业出版社,2009.2於东军,杨静宇,李千目,王国全JAVA程序设计与应用开发M清华大学出版社,2006.附录:计算器的完整实现代码:import java.awt.*;import java.awt.event.*;import javax.swing.*;public class jisuan extends JFrame implements ActionListener private static final long serialVers
16、ionUID = -L;private class WindowCloser extends WindowAdapter public void windowClosing(WindowEvent we) System.exit(0);int i;/ Strings for Digit & Operator buttons.private final String str = 7, 8, 9, /, 4, 5, 6, *, 1,2, 3, -, ., 0, =, + ;/ Build buttons.JButton buttons = new JButtonstr.length;/ For c
17、ancel or reset.JButton reset = new JButton(CE);/ Build the text field to show the result.JTextField display = new JTextField(0);public jisuan() super(jisuan);/ Add a panel.JPanel panel1 = new JPanel(new GridLayout(4, 4);/ panel1.setLayout(new GridLayout(4,4);for (i = 0; i str.length; i+) buttonsi =
18、new JButton(stri);panel1.add(buttonsi);JPanel panel2 = new JPanel(new BorderLayout();/ panel2.setLayout(new BorderLayout();panel2.add(Center, display);panel2.add(East, reset);/ JPanel panel3 = new Panel();getContentPane().setLayout(new BorderLayout();getContentPane().add(North, panel2);getContentPan
19、e().add(Center, panel1);/ Add action listener for each digit & operator button.for (i = 0; i 0)handleNumber(label);elsehandleOperator(label);/ Is the first digit pressed?boolean isFirstDigit = true;public void handleNumber(String key) if (isFirstDigit)display.setText(key);else if (key.equals(.) & (display.getText().indexOf(.) 0)display.setText(display.getText() + .);else if (!key.equals(.)display.setText(display.getText() + key)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度新能源项目进口设备采购合同范本
- 2025年度企业保证贷款合同范本
- 2025年度新型城镇化建设项目施工合同范本
- 2025年度智能家居广告制作合同
- 2025年度文化旅游产业合作项目公司和个人合同
- 2025年国营企业劳动合同执行细则
- 2025年度家居用品购销合同范本
- 2025年度企业战略合作伙伴保密经营合同
- 2025年度公司员工车辆费用结算与报销合同
- 2025年度知识产权授权居间服务合同样本
- 广东省茂名市电白区2024-2025学年七年级上学期期末质量监测生物学试卷(含答案)
- 《教育强国建设规划纲要(2024-2035年)》全文
- 山东省滨州市2024-2025学年高二上学期期末地理试题( 含答案)
- 2025年河南洛阳市孟津区引进研究生学历人才50人历年高频重点提升(共500题)附带答案详解
- 2025年度军人军事秘密保护保密协议与信息安全风险评估合同3篇
- 蛋鸡生产饲养养殖培训课件
- 数字化转型中的职业能力重构
- 运用PDCA降低住院患者跌倒-坠床发生率
- 2025届高中数学一轮复习专练:椭圆(含解析)
- 立春气象与生活影响模板
- 中国服装零售行业发展环境、市场运行格局及前景研究报告-智研咨询(2025版)
评论
0/150
提交评论