分享
分销 收藏 举报 申诉 / 24
播放页_导航下方通栏广告

类型java简易计算器专业课程设计.doc

  • 上传人:a199****6536
  • 文档编号:2421708
  • 上传时间:2024-05-30
  • 格式:DOC
  • 页数:24
  • 大小:57.54KB
  • 下载积分:10 金币
  • 播放页_非在线预览资源立即下载上方广告
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    java 简易 计算器 专业课程 设计
    资源描述:
    目 录 1设计目标………………………………………………………………………2 2 设计题目及要求……………………………………………………3 3设计算法分析………………………………………………………………4 3.1 模块调用层次图………………………………………………………4 3.2 关键算法描述………………………………………………………5 3.3 系统特点………………………………………………………7 4程序代码………………………………………………………………………8 5调试情况……………………………………………………………………16 6结论……………………………………………………………………………18 参考文件 ………………………………………………………………19 简易计算器 1.设计目标 本课程设计目标就是要经过一次集中强化训练,使学生能立即巩固已学知识,补充未学但又必需内容。进行课程设计目标在于加深对程序设计基础中基础理论和基础知识了解,促进理论和实践结合,深入提升程序设计能力。具体目标以下: 1.使学生更深入地了解和掌握该课程中相关基础概念,程序设计思想和方法。 2.培养学生综合利用所学知识独立完成课题能力。 3.培养学生勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论,全方位考虑问题等科学技术人员应含有素质。 4.提升学生对工作认真负责、一丝不苟,对同学团结友爱,协作攻关基础素质。 5.培养学生从资料文件、科学试验中取得悉识能力,提升学生从她人经验中找四处理问题新路径悟性,初步培养工程意识和创新能力。 6.对学生掌握知识深度、利用理论去处理问题能力、试验能力、课程设计能力、书面及口头表示能力进行考评。 2.设计题目及要求 【1】设计题目 简易计算器 【2】设计要求 1)独自一人完成课程设计,不得剽窃。 2)应用自己所学课程知识完成对计算器基础任务。 3)查阅相关资料,学习和掌握项目中包含新知识,提升自学能力。 4)经过应用java程序编写计算器来提升自己对简单图形界面有一定掌握和了解。 5)设计简易计算器应能够实现+-×÷求倒数等基础运算功效,类似于Windows中计算器。 6)设计一个简单,亲和图形界面(GUI)计算机应用程序 3.设计算法分析 3.1 模块调用层次图 【1】变量描述 数组: 1 JButton b[] = new JButton[10]; 创建按钮类型数组,为数字键0-9这 10个按钮。 全局变量: 1 JFrame frame; 创建一个jFrame类型框架,为frame,用来存放需要显示部分东西。 2 JTextField show; 创建一个JtextField类型展示框,为show。上面用来显示输出或计算结果。 3 double sum = 0, getValue; 创建一个类型为双精度变量,其初始值为0.返回计算后得到值。 4 JDialog about; 创建一个类型为Jdialog对话框abhout,其显示该计算器部分相关内容。 5 final int slength = 30; 创建一个为类型为整形slength,其值为30,意味该计算器显示有效长度最大值为30,超出30话,计算器将不能够全部显示。 6 JButton bc, c, ce, ab, jia, jian, cheng, chu, equ, point, sqrt, ds, bfh,zf; 创建类型为Jbuttond按钮退格,清空,复位,相关,加,减,乘,除,等号,小数点,2次方根,倒数,百分号,正负号,当按下这些按钮话,便会触发对应监听器,依据这些监听器设置,实施对应程序。 7 int i = 0, j = 0, p = 0, l, action; 创建类型为整形初始化书i、j、p。这多个按钮在算法初始化时实现。 8 Panel dispMain = new Panel() 创建类型为panel面板dispMain,用来存放另部分控件。 函数: 1 public void disp() 创建无值函数disp(),用来存放界面所需要展示元素,包含有面板,按钮,弹出对话框,显示框等。 2 public void actionPerformed(ActionEvent e) 创建无值函数actionPerformed(ActionEvent e),其许可输入值类型为ActionEvent e,在里面编写是加减陈除等部分算法。 3 public void setSum() 创建无值函数setSum(),显示出经过算法计算出结果, 4 public void windowClosing(WindowEvent e) 创建无值函数windowClosing(WindowEvent e),当显示程序界面右上角x时,将关闭程序。 5 public static void main(String args[]) 创建静态无值函数main主函数,用来调用以上所表示函数。 【2】程序步骤 1 系统模块调用层次图 Main() disp() actionPerformed(ActionEvent e) setSum() windowClosing(WindowEvent e) 3.2关键算法描述 经过该步骤可实现累加功效: setSum(); j++; p = 0; i = 0; action = ? 判定最终一个操作数类型: else if (e.getSource() == equ) { // 等号,运算最终一个操作数 switch (action) { case 1: show.setText(String.valueOf(sum += getValue)); break; case 2: show.setText(String.valueOf(sum -= getValue)); break; case 3: show.setText(String.valueOf(sum *= getValue)); break; case 4: show.setText(String.valueOf(sum /= getValue)); break; } 设定数字按钮触发算法: for (l = 0; l < 10; l++) { // 0~9数字键触发 if (e.getSource() == b[l]) { if (i == 0) show.setText(""); String s = show.getText(); if (s.length() < slength) show.setText(show.getText() + e.getActionCommand()); if (e.getSource() == b[0] && getValue == 0 && p == 0) show.setText("0"); if (e.getSource() != b[0] && getValue == 0 && p == 0) show.setText(e.getActionCommand()); i++;// i用来标识数字键触发状态 设定计算器关闭方法: public void windowClosing(WindowEvent e) { if (e.getSource() == about) about.setVisible(false); else if (e.getSource() == frame) System.exit(0); 为按钮绑定监听器: about.addWindowListener(this); 3.3 系统特点: 【1】该计算器基础运算没有问题,清零、正负号、求倒数、退格功效全部能很好实现,总体能完成一个计算器基础功效,但仍有很多地方需要改善,比如小数点实现所存在部分问题,即使在基础运算过程当中不会造成太大影响,但这仍然不能认为是一个很好计算器,同时,在其次,该计算器还没能很好实现连续计算功效,必需每次按下等号按钮计算出结果后才能用产生结果接着进行下一次计算,改善方法是在运算符上同时注册Result类,让运算符同时拥有计算结果功效. 【2】因为简易计算器属于一个题,所以相关计算器全部全部是由自己完成. 4. 程序代码 【1】程序代码 import java.awt.Color; import java.awt.FlowLayout; import java.awt.GridLayout; import java.awt.Label; import java.awt.Panel; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JTextField; import javax.swing.SwingConstants; public class Calculator extends WindowAdapter implements ActionListener { JFrame frame; JTextField show; JButton bc, c, ce, ab, jia, jian, cheng, chu, equ, point, sqrt, ds, bfh, zf; // 按钮 退格,清空,复位,相关,加,减,乘,除,等号,小数点,2次方根,倒数,百分号,正负号 JButton b[] = new JButton[10]; // 按钮数组,数字键0~9 double sum = 0, getValue; int i = 0, j = 0, p = 0, l, action; JDialog about; final int slength = 30; // 设置结果显示有效长度 public void disp() { frame = new JFrame(); frame.setTitle("xx个人计算器"); frame.setSize(360, 230); frame.setLocation(380, 260); frame.setBackground(Color.LIGHT_GRAY); frame.setLayout(new FlowLayout(FlowLayout.CENTER)); frame.setResizable(false); //计算器disTop模块,包含数字显示文本框、back,ce,c,about按钮 show = new JTextField(31); show.setText("0"); show.setHorizontalAlignment(SwingConstants.RIGHT); show.setEditable(false); frame.add(show); Panel dispTop = new Panel(); frame.add(dispTop); dispTop.setLayout(new GridLayout(1, 4, 3, 3)); bc = new JButton(" Back "); bc.setForeground(Color.BLUE); dispTop.add(bc); ce = new JButton(" CE "); ce.setForeground(Color.BLUE); dispTop.add(ce); c = new JButton(" C "); c.setForeground(Color.BLUE); dispTop.add(c); //广告按钮,显示计算器制作者 ab = new JButton(" About "); ab.setForeground(Color.BLUE); dispTop.add(ab); about = new JDialog(frame, "相关计算器", true); Label ct = new Label("本 计 算 器 由 xx 制 作", 1); ct.setForeground(Color.RED); about.add(ct, "Center"); about.setSize(200, 100); about.setLocation(500, 300); //关键按钮显示面板包含disLeft和disRight Panel dispMain = new Panel(); frame.add(dispMain); dispMain.setLayout(new GridLayout(1, 2, 10, 10)); //disLeft面板,包含0-9、+/-、。这十二个按钮 Panel dispLeft = new Panel(); dispMain.add(dispLeft); dispLeft.setLayout(new GridLayout(4, 3, 3, 3)); Panel dispRight = new Panel(); //disRight面板,包含+、-、*、/、sqrt、%、1/x、=这个人多个按钮 dispMain.add(dispRight); dispRight.setLayout(new GridLayout(4, 2, 3, 3)); //新建0-9这是个按钮,并将其添加到disLeft中 for (l = 9; l >= 0; l--) { b[l] = new JButton(String.valueOf(l)); dispLeft.add(b[l]); b[l].addActionListener(this); } //新建其它按钮,并分别将其添加到各自面板中 jia = new JButton("+"); jia.setForeground(Color.RED); jian = new JButton("-"); jian.setForeground(Color.RED); cheng = new JButton("*"); cheng.setForeground(Color.RED); chu = new JButton("/"); chu.setForeground(Color.RED); equ = new JButton("="); equ.setForeground(Color.RED); point = new JButton("."); zf = new JButton(" +/- "); sqrt = new JButton("sqrt"); bfh = new JButton("%"); ds = new JButton("1/x"); dispRight.add(chu); dispRight.add(sqrt); dispRight.add(cheng); dispRight.add(bfh); dispRight.add(jian); dispRight.add(ds); dispRight.add(jia); dispRight.add(equ); dispLeft.add(zf); dispLeft.add(point); //为各个按钮绑定 监听器 about.addWindowListener(this); bc.addActionListener(this); ce.addActionListener(this); c.addActionListener(this); ab.addActionListener(this); jia.addActionListener(this); jian.addActionListener(this); cheng.addActionListener(this); chu.addActionListener(this); equ.addActionListener(this); point.addActionListener(this); zf.addActionListener(this); sqrt.addActionListener(this); bfh.addActionListener(this); ds.addActionListener(this); frame.addWindowListener(this); frame.setVisible(true); } public void actionPerformed(ActionEvent e) { getValue = Double.valueOf(show.getText()).doubleValue(); if (e.getSource() == jia) { // 加运算,可连加 if (j == 0) { sum = getValue; } else if (action == 1) { sum += getValue; } setSum(); j++; p = 0; i = 0; action = 1; } else if (e.getSource() == jian) { // 减运算,可连减 if (j == 0) { sum = getValue; } else if (action == 2) { sum -= getValue; } setSum(); j++; p = 0; i = 0; action = 2; } else if (e.getSource() == cheng) { // 乘运算,可连乘 if (j == 0) { sum = getValue; } else if (action == 3) { sum *= getValue; } setSum(); j++; p = 0; i = 0; action = 3; } else if (e.getSource() == chu) { // 除运算,可连除 if (j == 0) sum = getValue; else if (action == 4) { sum /= getValue; } setSum(); j++; p = 0; i = 0; action = 4; } else if (e.getSource() == equ) { // 等号,运算最终一个操作数 switch (action) { case 1: show.setText(String.valueOf(sum += getValue)); break; case 2: show.setText(String.valueOf(sum -= getValue)); break; case 3: show.setText(String.valueOf(sum *= getValue)); break; case 4: show.setText(String.valueOf(sum /= getValue)); break; } setSum(); i = 0; j = 0; action = 0; } else if (e.getSource() == point) { // 小数点,只能按一个小数点 if (p == 0) show.setText(show.getText() + e.getActionCommand()); p = 1; } else if (e.getSource() == c || e.getSource() == ce) { // 清空和复位 i = 0; j = 0; p = 0; sum = 0; action = 0; show.setText("0"); } else if (e.getSource() == bc) { // 退格 String s = show.getText(); if (s.length() > 1) { show.setText(""); for (l = 0; l < s.length() - 1; l++) { // 按一下,删除尾部一位 char a = s.charAt(l); show.setText(show.getText() + a); } } else show.setText("0"); } else if (e.getSource() == ab) { // 相关 about.setVisible(true); } else if (e.getSource() == sqrt) { // 开2次方根 sum = Math.sqrt(getValue); setSum(); i = 0; } else if (e.getSource() == ds) { // 求倒数 sum = 1 / getValue; setSum(); i = 0; } else if (e.getSource() == bfh) { // 百分号 sum = getValue / 100; setSum(); i = 0; } else if (e.getSource() == zf) { // 正负号切换,正号不显示 String s = show.getText(); char a = s.charAt(0); if (a == '-') { show.setText(""); for (l = 1; l < s.length(); l++) { // 去掉负号 show.setText(show.getText() + s.charAt(l)); } } else if (getValue != 0) { // 加上负号 show.setText("-" + s); } } for (l = 0; l < 10; l++) { // 0~9数字键触发 if (e.getSource() == b[l]) { if (i == 0) show.setText(""); String s = show.getText(); if (s.length() < slength) show.setText(show.getText() + e.getActionCommand()); if (e.getSource() == b[0] && getValue == 0 && p == 0) show.setText("0"); if (e.getSource() != b[0] && getValue == 0 && p == 0) show.setText(e.getActionCommand()); i++;// i用来标识数字键触发状态 } } } public void setSum() { // 把计算结果显示出来 show.setText(String.valueOf(sum)); String s = show.getText(); char a = s.charAt((s.length() - 1)); char b = s.charAt((s.length() - 2)); if (a == '0' && b == '.') { // 假如是整数,则去掉后面小数点和0 show.setText(String.valueOf(Math.round(sum))); } } public void windowClosing(WindowEvent e) { if (e.getSource() == about) about.setVisible(false); else if (e.getSource() == frame) System.exit(0); } public static void main(String args[]) { new Calculator().disp(); } } 【2】程序实施结果 因为计算器结果是依据输入值而确定,当输出不一样值会全部得不一样结果,故程序实施结果将在调制中进行从而得出。 【3】结果讨论 5.调试情况 1)按钮测试:只要测试程序界面显示是否正常,按钮是否能够正确使用 程序整个界面图所表示: 经过测试,按钮、显示框显示正常,无错位无延迟。 测试about弹出对话框,显示正常,结果图所表示: 2)运算测试:关键测试计算器运算功效 测试用例: 1加法测试:8222+1500.2,结果为9722.2。结果正确,结果图所表示: 2减法测试:0.58-2.891,结果为-2.311。结果正确,结果图所表示: 3乘法测试:458*(-156.22),结果为-71548.46。结果正确,结果图所表示: 0*-7.234,结果为0 。结果正确,结果图所表示: 4 除法测试:7.2/0,结果为infinity。结果正确,结果图所表示: 0/88,结果为0。结果正确,结果图所表示: 100/15.3,结果为6.54。结果正确,结果图所表示: 6.结论 此次课程设计到此算是告一段落了,经过这次学习,我学到了很多东西,在此基础上愈加巩固了自己对java认识和了解。 在做本项目是时候,会碰到很多小问题,比如说,在整个运算过程中要怎样确保输入计算数据哪个是第一个计算数据,哪个是第二个计算数据,同时也要区分运算符,因为该计算器程序应用全部是利用字符串来完成计算,而且不能反复输出运算符,更不能将运算符错误存放在了第一个计算数据数值中,也得考虑到万一不小心反复点击了运算符按钮会不会造成第一个计算数据重新赋值等等问题,最终想到利用布尔类型来很好控制运算符应用! 因为时间仓促,该程序还有些不足之处,1)该程序未添加异常处理事件,在异常发生时候,不能够对程序进行处理,不过当该程序发生异常如溢出是,会爱文本显示框内显示infinity字符,提醒不可操作或操作错误。2)人机交互界面还是稍有欠缺,相信以后或有所改善。 此次课程设计让我更了解熟悉了Java中图形用户界面和它编程方法。在完成课题过程中也不停充实了自己,学习到了很多以前没有学习到知识,收获很大。最大收获就是对大学学习总结和培养了处理困难信心和能力,使我对所学知识能够融会贯通,又不停丰富了新知识。Java计算器设计使得我们对所学专业课有了更为深刻认识,使得悉识得到了巩固和提升。 在接下来时间里,我认为我要愈加努力往深一层次方面看齐,了解更多相关java知识,对java有更深一步了解,我会一步一步走下去! 参考文件 [1] 丁振凡. Java语言实用教程(第2版)[M]. 北京邮电大学出版社. .1 [2] 丁振凡. Java语言实用教程试验指导(第2版)[M]. 北京邮电大学出版社. .1 [3] 杨树林等. Java语言最新实用案例教程(第2版)[M]. 清华大学出版社. .7 [4] 张帆等. Java范例开发大全. 清华大学出版社. .8
    展开阅读全文
    提示  咨信网温馨提示:
    1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
    2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
    3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
    4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
    5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
    6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

    开通VIP折扣优惠下载文档

    自信AI创作助手
    关于本文
    本文标题:java简易计算器专业课程设计.doc
    链接地址:https://www.zixin.com.cn/doc/2421708.html
    页脚通栏广告

    Copyright ©2010-2026   All Rights Reserved  宁波自信网络信息技术有限公司 版权所有   |  客服电话:0574-28810668    微信客服:咨信网客服    投诉电话:18658249818   

    违法和不良信息举报邮箱:help@zixin.com.cn    文档合作和网站合作邮箱:fuwu@zixin.com.cn    意见反馈和侵权处理邮箱:1219186828@qq.com   | 证照中心

    12321jubao.png12321网络举报中心 电话:010-12321  jubao.png中国互联网举报中心 电话:12377   gongan.png浙公网安备33021202000488号  icp.png浙ICP备2021020529号-1 浙B2-20240490   


    关注我们 :微信公众号  抖音  微博  LOFTER               

    自信网络  |  ZixinNetwork