欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    实现计算器功能的应用程序.docx

    • 资源ID:298938       资源大小:144.28KB        全文页数:23页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    实现计算器功能的应用程序.docx

    1、实现计算器功能的应用程序 摘 要计算器一般是指“电子计算器”,该名词由日文传入中国。计算器是能进行数学运算的手持机器,拥有集成电路芯片,结构简单,功能较弱,但由于它使用方便、操作简单、价格低廉,因而广泛运用于商业交易中,也是必备的办公用品。该程序是一个图形界面的简单的java计算器,使用人员能快捷简单地进行操作。即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间,对人们的生活有一定的帮助。可以进行简单的四则运算(加、减、乘、除,以及求倒数,求相反数),有退格功能, 归零表示初始化,界面颜色为灰白,该程序支持键盘操作。关键字 计算器 ,程序,运算,操作目 录摘 要 I1 绪论

    2、11.1 课程设计的目的 11.2 课程设计的任务与要求 12 需求分析 22.1 功能需求 22.2 出错处理 22.3 数据处理 22.4 系统环境要求 23 概要设计 33.1 界面及功能描述 33.2 简要的设计流程 34 详细设计 54.1 计算器界面的设置 54.2 类层次中各个类的描述 55 系统运行测试 75.1 初始运行界面 75.2 按键测试 75.3 运算符重复输入测试 75.4 被除数为0的测试 75.5 backspace按键越界操作 85.6 优先级程序计算 85.7 输出测试 86 总结 10参考文献 11附录(源代码) 121 绪论1.1 课程设计的目的计算器在

    3、我们的生活中常常会使用到,本次课程设计,通过界面以及其中的逻辑处理,完成了四则运算的处理。通过awt包或者swing包中的界面设计部分对界面设计的细节可以有更多的了解。利用面向对象的思想,将各个组件的事件响应分别用不同的类表达出来。面向对象的思想从很大程度上可以让程序的思路更加清晰,而且可重用性很高。对于具有相同事件响应的组件则可以调用相同的类来处理事件。除此之外,利用栈的知识来解决运算符优先的问题也让我们对java中的栈有了更多的了解。1.2 课程设计的任务与要求a. 使用Java的awt包或Swing包的类库设计图形界面的计算器b 该计算器能够完成加减乘除的四则混合运算(注意运算优先级)c

    4、 使用图形界面中的事件委托机制来处理事件响应2 需求分析2.1 功能需求用户能够完成四则混合运算+、-、*、/,并且计算器能够自动的识别运算符的优先级,根据输入的运算公式,自动计算出相应的结果。同时完成计算器中的backspace、ce按钮,能够完成消除或者删除的功能。2.2 出错处理当用户如果按下的是除零的操作,显示框将显示“被除数不能为0”。当用户如果连续多次按下运算符,计算器自动记忆第一次运算符,并且做防连续输入相同的运算符或者是不同的运算符。当用户在同一个数据中多次输入小数点,计算器能够自动判断小数点重复,自动只记忆第一个小数点。当用户在同一个数据中输入多个负号,计算器能够自动做重复检

    5、查,不显示多余的负号。当用户在使用backspace功能删除越界数据时候,计算器自动做相应处理。2.3 数据处理在程序的起始,建立了两个栈,分别用来存储操作数和操作符。在计算器的核心运算代买中,运用这两个栈来实现算法中的优先级的处理,使用“#”号来标记目标计算公式的结束。目标计算公式通过计算器的键盘实现输入,当按下“=”号之后,计算器通过调用计算器核心函数来实现数据的处理。2.4 系统环境要求操作系统:WIN XP或更高版本开发语言:java开发工具:eclipse3 概要设计3.1 界面及功能描述(1)界面布局。创建一个面板,先将所有按钮:所有数字键和运算符键等放在面板上,采用网格布局,具体

    6、设计为4行,4列的网格,十六个格子。再添加一个1行4列的网格布局来放置三个功能键:归零,退格,输出。然后,对以上两个面板,采用BorderLayout布局,将按键面板放在计算机的中部,功能键面板放右上角,作为一个新的面板。最后,将文本框放在左上角,新面板放中央,采用边界布局管理器,做为界面的整体布局,这样界面布局就搞定了。(2)按退格键,将返回到前一次输入状态。(3)按归零键,输入的数字第一个数字为零。3.2 简要的设计流程图3.1 简要的设计流程图4 详细设计4.1 计算器界面的设置本程序的实现使用了swing和awt两个包,主题程序界面按键根据微软计算器的布置界面进行设置,采用比较人性化的

    7、常规按键排布。返回计算结果的“=”号键使用了两倍于普通按键面积的设计,使的击中的概率更加大。整体界面是采用了BorderLayout布局,通过4个panel进行布局的详细划分,panel3用来存储位于panel4左下角的GridLayout(1,2,4,4)布局,panel1、panel2、panel3分别用来表示BorderLayout的上中下三个模块。Panel1中添加了一个Label display,display用来作为显示器,实时的显示输入和计算的数据。其中display需要设置为右对齐和只读属性。Panel2中添加数字输入键和基本操作符键,panel采用了GridLayout布局,

    8、将整个panel2平分为4*4个空间,其中,数字键采用了15磅字体和蓝色文字,操作符采用了15磅字体和红色文字,是的界面更加显眼和便于区分。Panel4中首先划分为GridLayout(1,2,4,4),在Panel4中,再次使用了GridLayout(1,2,4,4)将panel4的左侧一分为二,左边为panle3,这个的基础上程序往panel3中添加了backspace和ce两个按键,在Panel4的右侧单元格中添加了“=”号按钮,这个时候的“=”号就是相当于两个普通按钮的长度和大小。整个程序界面的设计工作基本完成。4.2 类层次中各个类的描述本次课程设计一共分为了5个类,每个类都各自完成

    9、不同的功能。 class MyCalculator: 类MyCalculator是主类,含有main()函数, 通过new CalFrame()来运行程序。 class CalFrame: 类CalFrame完成的功能是计算器界面的设计,并且将每个组件都添加事件响应。具体的事件响应操作将在其他的类中逐一实现。 class HandleWin:点击关闭windows窗口的控制类。 class HandleNum:字符串输入控制类。 Class HandleEqual:等号出发事件的响应机制类。类的属性包括:0-9的数字键JButton num1; JButton num2; JButton nu

    10、m3; JButton num4; JButton num5; JButton num6; JButton num7; JButton num8; JButton num9; JButton num0;+ - * / 四个控制按钮JButton plus;JButton minus; JButton mutiply; JButton divide; . +/- 两个按钮JButton point; JButton sign;Backspace ce = 三个按钮JButton bs;JButton ce;JButton equal;将这些按钮按照一定的顺序添加到现实面板中。Panel p1,p

    11、2,p3,p4;/为了布局的方便,利用borderLayout,通过几个面板来添加Stack OPNT = new Stack ();/用来记录操作数的栈Stack OPTR = new Stack ();/用来记录操作符的栈,栈底压入“#”,取到了“#代表已到栈底boolean pointswitch = true;/小数点开关boolean oprateswitch = false;/运算符开关 boolean siginswitch = true;/ 正负号开关 方法:public void actionPerformed(ActionEvent e)当按下了控制按钮,根据搜索控制开关来

    12、确定能否继续添加,各个相应的处理机制。public double segmentation(String myString)字符串优先级计算代码的核心函数。public int compare(char ch1,char ch2)1值为ch1大于ch2;-1为ch1小于ch2;0为ch1等于ch2public double oprate(double a,char b,double ce)通过参数b来判断加减乘除5 系统运行测试5.1 初始运行界面图5.1初始运行界面5.2 按键测试图5.2 按键测试5.3 运算符重复输入测试图5.3 运算符重复输入测试5.4 被除数为0的测试图5.4 被除数

    13、为0的测试5.5 backspace按键越界操作图5.5 backspace按键越界操作5.6 优先级程序计算图5.6优先级程序计算5.7 输出测试图5.7 输出测试6 总结这个学期的java课程设计实现计算器功能的应用程序对我来说是一个不断学习,逐步完善的过程。开始的时候拿到题目看到只有四则混合运算就理所当然的认为应该是非常简单的的一个程序而已。首先开始了程序的界面的设计,并且将一些简单的按钮的事件响应完成了,剩下了运算符优先级的问题以及数据的处理问题。于是在同学的帮助下利用正则表达式来完成输入字符串的切割,但是如果自己一个人单独做的话,对于题目中的数据处理的问题一时不知道该如何与正则表达式

    14、连接上。最后我还是选择用栈来处理。这个过程让我明白了学习知识的时候实践与理论之间是有很大的差异的。应用能力我还有待加强。于是我开始熟悉栈的使用。在以前的学习中接触过栈,这次的使用思想是一样的,只需要在了解一下java 中的相关一些函数便可。但实际在写程序的过程中,由于有一些特殊情况的考虑与进出入栈的联系,还是碰到了一些问题。但在后来我慢慢的整理清楚思路以后,逻辑列清楚了,便将这些问题解决,逐步的将各项功能都完善。当然目前我的计算器也只是完成了四则混合运算,实际上还应该有很多功能可以添加入计算器的。本次java课程设计也让我明白只要我一步步去做,那么程序功能便会不断强大。在以后的学习中,多加强自

    15、己的动手实践能力。参考文献1 朱福喜.Java语言程序设计(第二版).科学出版社2 陈国君等.Java程序设计基础(第二版).清华大学出版社3 Deitel.Java大学基础教程(第六版).电子工业出版社 4 MaryCampione.Java语言导学(第四版).机械工业出版社5 Y.Daniel Liang.Java语言程序设计基础篇(第六版). 机械工业出版社6 Kathy Sierra.Head First Java(第二版).东南大学出版社7 宁书林等,java2技能百练,中国铁道出版社,20048 於东军等著,Java程序设计与应用开发, 清华大学出版社,2005附录(源代码)imp

    16、ort java.awt.*;import java.awt.event.*;import javax.swing.*;import java.util.*;import java.util.regex.Matcher;import java.util.regex.Pattern;public class MyCalculator public static void main(String args) new CalFrame(); class CalFrame extends JFrame String opnt,optr; Stack OPNT = new Stack (); Stack

    17、 OPTR = new Stack (); Label display; /显示 JButton num = new JButton10;/按键设计 JButton plus; JButton minus; JButton mutiply; JButton divide; JButton bs;JButton ce;JButton equal; JButton point; JButton sign;JButton lbracket; JButton rbracket; Panel p1,p2,p3,p4; String disp = ;/用户输入的表达式 String result = ;/

    18、用户输入的字符串 CalFrame() OPTR.push(#); for(int i=0;i=9;+i) numi = new JButton(String.valueOf(i); plus = new JButton(+); plus.setForeground(Color.red); plus.setFont(new Font(Dialog,1,15); minus = new JButton(-); minus.setForeground(Color.red); minus.setFont(new Font(Dialog,1,15); mutiply = new JButton(*);

    19、 mutiply.setForeground(Color.red); mutiply.setFont(new Font(Dialog,1,15); divide = new JButton(/); divide.setForeground(Color.red); divide.setFont(new Font(Dialog,1,15); equal = new JButton(=); equal.setForeground(Color.red); equal.setFont(new Font(Dialog,1,15); point = new JButton(.); point.setFont

    20、(new Font(Dialog,1,15); sign = new JButton(+/-); sign.setFont(new Font(Dialog,1,15); bs = new JButton(backspace); bs.setForeground(Color.red); bs.setFont(new Font(Dialog,1,8); ce = new JButton(ce); ce.setFont(new Font(Dialog,1,15); p1 = new Panel(); p1.setLayout(new BorderLayout(); display = new Lab

    21、el(0.,Label.RIGHT); display.setBackground(Color.white); p1.add(display,BorderLayout.NORTH); p2 = new Panel(); p2.setLayout(new GridLayout(4,4,4,4); p2.add(num7);p2.add(num8);p2.add(num9);p2.add(divide); p2.add(num4);p2.add(num5);p2.add(num6);p2.add(mutiply); p2.add(num1);p2.add(num2);p2.add(num3);p2

    22、.add(minus); p2.add(num0);p2.add(sign);p2.add(point);p2.add(plus); p3 = new Panel(new GridLayout(1,2,4,4); p3.add(bs);p3.add(ce); p4 = new Panel(new GridLayout(1,2,4,4); p4.add(p3); p4.add(equal); setTitle(实现计算器功能的应用程序); setLayout(new BorderLayout(); add(p1,BorderLayout.NORTH); add(p2,BorderLayout.C

    23、ENTER); add(p4,BorderLayout.SOUTH); setVisible(true); pack(); setResizable(false); setBounds(600,350,300,230); addWindowListener(new HandleWin(); for(int i=0;i=9;+i) numi.setForeground(Color.blue); numi.setFont(new Font(Dialog,1,15); numi.addActionListener(new HandleNum(this,i); plus.addActionListen

    24、er(new HandleNum(this); minus.addActionListener(new HandleNum(this); mutiply.addActionListener(new HandleNum(this); divide.addActionListener(new HandleNum(this); point.addActionListener(new HandleNum(this); sign.addActionListener(new HandleNum(this); bs.addActionListener(new HandleNum(this); ce.addA

    25、ctionListener(new HandleNum(this); equal.addActionListener (new HandleEqual(this); class HandleWin extends WindowAdapter/关闭计算器 public void windowClosing(WindowEvent e) (e.getWindow().dispose(); System.exit(0); boolean pointswitch = true;/小数点开关 boolean oprateswitch = false;/运算符开关 boolean siginswitch

    26、= true;/ class HandleNum implements ActionListener/字符串的输入 JFrame my_Num; int itemp = 0; HandleNum(JFrame f,int a) my_Num = f; itemp = a; HandleNum(JFrame f) my_Num = f; public void actionPerformed(ActionEvent e) if(e.getSource()=numitemp)/输入数字字符 oprateswitch = true; siginswitch = false; disp = disp

    27、+ itemp; display.setText(disp); if(oprateswitch&e.getSource()=plus)/输入加号 pointswitch = true; oprateswitch = false; siginswitch = true; disp = disp + +; display.setText(disp); if(oprateswitch&e.getSource()=minus)/输入减号 pointswitch = true; oprateswitch = false; siginswitch = true; disp = disp + -; disp

    28、lay.setText(disp); if(oprateswitch&e.getSource()=mutiply)/输入乘号 pointswitch = true; oprateswitch = false; siginswitch = true; disp = disp + *; display.setText(disp); if(oprateswitch&e.getSource()=divide)/输入除号 pointswitch = true; oprateswitch = false; siginswitch = true; disp = disp + /; display.setTe

    29、xt(disp); if(oprateswitch&pointswitch=true&e.getSource()=point)/输入小数点 pointswitch = false; oprateswitch = false; siginswitch = false; disp = disp + .; display.setText(disp); if(siginswitch&e.getSource()=sign)/输入负号 disp = disp + ; display.setText(disp); if(e.getSource()=bs)/点击backspace if(!disp.isEmpty() disp = disp.substring(0,disp.length()-1);


    注意事项

    本文(实现计算器功能的应用程序.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开