JAVA课程设计报告计算器.doc
《JAVA课程设计报告计算器.doc》由会员分享,可在线阅读,更多相关《JAVA课程设计报告计算器.doc(15页珍藏版)》请在咨信网上搜索。
. . ?JAVA程序设计?课程设计任务书 一、课程设计的目的 1、培养学生面向对象编程的思想; 2、使学生熟悉JAVA语言的使用; 3、培养学生JAVA编程的思想和方法; 4、使学生掌握JAVA编程调试的根本技能; 5、培养学生分析、解决问题的能力。 二、课程设计内容与要求 1、内容一: 1简单计算器 [题目描述] 使用Java的GUI图形用户界面编程设计并编写一个计算器程序,用户可以通过鼠标或者键盘操作输入参加运算的数值和运算符,要求能进展加、减、乘、除等混合运算。 [根本要求] 实现加、减、乘、除的双目单类别的根底运算; [实现提示] GUI编程 ponent的事件响应。 参考界面 ?JAVA程序设计?课程设计 一、系统中所使用的数据对象及说明 1、Calculator类 属性 属性名称 类型 描述 Jmb JMenuBar 菜单栏 Jm1 jm2 jm3 JMenu 菜单 Jmi JMenuItem 菜单项 f JFrame 实例化对象 Panel1 1 JPanel 输入面板 mandsPanel JPanel 运算符面板 calckeysPanel JPanel 数字面板 showline JTextField 数据输出框 backspace utton 退格键 CE utton 清空 C utton 删除 1/X utton 取余 dao utton 取倒数 add utton 数字相加 jian utton 数字相减 cheng utton 数字相乘 quzheng utton 数字相除 dian utton 点符号 deng utton 等于号 zero utton 一 one utton 二 two utton 三 three utton 四 four utton 五 five utton 六 six utton 七 seven utton 八 eight utton 九 num1 String 保存第一个运算数字 operator String 保存运算符号 方法 方法名称 功能 Calculator 计算器布局 Add 添加组件、面板 addMouseListener 添加鼠标监听事件 setJMenuBar 设置菜单 二、 系统功能构造及相关算法描述 1、系统功能构造 计算器 按键 文本框 菜单栏 标题栏 1-9、 Backspace CE、C +、-、*、/ %、^、.、1/x = 文本框 帮助 查看 编辑 标题: 计算器 关于计算器 帮助主题 数学分组 科学 型 标准 型 粘贴 复制 系统功能构造图 2、 相关算法流程图 〔1〕加减法流程 N Y 将S添加到show文本框 执行加、减法运算得出S Mun1是否存在 (2) 乘除法流程 N Mun1是否存在 Y 执行乘、除法运算得出S 将S添加到show文本框 (3) 乘方取余法流程 Mun1是否存在 N Y 执行乘方、取余法运算得出S 将S添加到show文本框 三、系统运行结果〔截图〕 1、主菜单 四、课程设计总结 通过此次课程设计,使我更加扎实的掌握了有关JAVA图形界面布局等方面的知识,虽然在设计过程中也遇到了很多问题,但经过一次又一次的思考,一遍又一遍检查和反复修改终于找到了原因所在,也暴露了前期我在这方面的知识欠缺。课程设计是一种实践活动,不但可以提升专业知识和专业能力,也培养了我们独立思考,动手操作的能力,使我对抽象的知识有了具体的认识。这对于我们的将来也有很大的帮助。此次课程设计也让我明白没有最完善的程序代码,只有不断地改善才能使程序变得更完美,同时也增强了我对JAVA的兴趣,相信继续保持下去对JAVA的理解一定会更上一层楼。 附录:程序源码 import java.awt.BorderLayout; import java.awt.Color; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.utton; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JPanel; import javax.swing.JSeparator; import javax.swing.JTextField; publicclassCalculatorextends JFrame implements ActionListener { JMenuBar jmb; JMenu jm1,jm2,jm3; JMenuItem jmi; /** 计算器上的键的显示名字 */ privatefinal String[] KEYS = { "7", "8", "9", "/", "sqrt", "4", "5", "6", "*", "%", "1", "2", "3", "-", "1/x", "0", "+/-", ".", "+", "=" }; /** 计算器上的功能键的显示名字 */ privatefinal String[] MAND = { "Backspace", "CE", "C" }; /** 计算器上键的按钮 */ private utton keys[] = new utton[KEYS.length]; /** 计算器上的功能键的按钮 */ private utton mands[] = new utton[MAND.length]; /** 计算器左边的M的按钮 */ /** 计算结果文本框 */ private JTextField resultText = newJTextField("0"); // 标志用户按的是否是整个表达式的第一个数字,或者是运算符后的第一个数字 privatebooleanfirstDigit = true; // 计算的中间结果。 privatedoubleresultNum = 0.0; // 当前运算的运算符 private String operator = "="; // 操作是否合法 privatebooleanoperateValidFlag = true; /** * 构造函数 */ public Calculator() { super(); JMenuBar jmb=new JMenuBar(); this.setJMenuBar(jmb); JMenu jm=new JMenu("编辑(E)"); jmb.add(jm); jmi= new JMenuItem("复制(c) Ctrl+c"); jm.add(jmi); jmi= new JMenuItem("粘贴(p) Ctrl+v"); jm.add(jmi); jm2=new JMenu("查看(v)"); jmb.add(jm2); jmi= new JMenuItem("标准型(T)"); jm2.add(jmi); jmi= new JMenuItem("科学型(S)"); jm2.add(jmi); jm2.add(new JSeparator()); jmi= new JMenuItem("数学分组(I)"); jm2.add(jmi); jm3=new JMenu("帮助(H)"); jmb.add(jm3); jmi= new JMenuItem("帮助主题(H)"); jm3.add(jmi); jm3.add(new JSeparator()); jmi= new JMenuItem("关于计算器(A)"); jm3.add(jmi); // 初始化计算器 init(); // 设置计算器的背景颜色 this.setBackground(Color.LIGHT_GRAY); this.setTitle("计算器"); // 在屏幕(500, 300)坐标处显示计算器 this.setLocation(500, 300); // 不许修改计算器的大小 this.setResizable(false); // 使计算器中各组件大小适宜 this.pack(); } /** * 初始化计算器 */ privatevoid init() { // 文本框中的内容采用右对齐方式 resultText.setHorizontalAlignment(JTextField.RIGHT); // 不允许修改结果文本框 resultText.setEditable(false); // 设置文本框背景颜色为白色 resultText.setBackground(Color.WHITE); // 初始化计算器上键的按钮,将键放在一个面板内 JPanel calckeysPanel = new JPanel(); // 用网格布局器,4行,5列的网格,网格之间的水平方向间隔为3个象素,垂直方向间隔为3个象素 calckeysPanel.setLayout(new GridLayout(4, 5, 3, 3)); for (int i = 0; i < KEYS.length; i++) { keys[i] = new utton(KEYS[i]); calckeysPanel.add(keys[i]); keys[i].setForeground(Color.blue); } // 运算符键用红色标示,其他键用蓝色表示 keys[3].setForeground(Color.red); keys[8].setForeground(Color.red); keys[13].setForeground(Color.red); keys[18].setForeground(Color.red); keys[19].setForeground(Color.red); // 初始化功能键,都用红色标示。将功能键放在一个面板内 JPanel mandsPanel = new JPanel(); // 用网格布局器,1行,3列的网格,网格之间的水平方向间隔为3个象素,垂直方向间隔为3个象素 mandsPanel.setLayout(new GridLayout(1, 3, 3, 3)); for (int i = 0; i < MAND.length; i++) { mands[i] = new utton(MAND[i]); mandsPanel.add(mands[i]); mands[i].setForeground(Color.red); } // 下面进展计算器的整体布局,将calckeys和mand面板放在计算器的中下部 // 新建一个大的面板,将上面建立的mand和calckeys面板放在该面板内 JPanel panel1 = new JPanel(); // 面板采用边界布局管理器,面板里组件之间的水平和垂直方向上间隔都为3象素 panel1.setLayout(new BorderLayout(3, 3)); panel1.add("North", mandsPanel); panel1.add("Center", calckeysPanel); // 建立一个面板放文本框 JPanel top = new JPanel(); top.setLayout(new BorderLayout()); top.add("Center", resultText); // 整体布局 getContentPane().setLayout(new BorderLayout(3, 5)); getContentPane().add("North", top); getContentPane().add("Center", panel1); // 为各按钮添加事件监听器 // 都使用同一个事件监听器,即本对象。本类的声明中有implements ActionListener for (int i = 0; i < KEYS.length; i++) { keys[i].addActionListener(this); } for (int i = 0; i < MAND.length; i++) { mands[i].addActionListener(this); }} /** * 处理事件 */ publicvoid actionPerformed(ActionEvent e) { // 获取事件源的标签 String label = e.getActionmand(); if (label.equals(MAND[0])) { // 用户按了"Backspace"键 handleBackspace(); } elseif (label.equals(MAND[1])) { // 用户按了"CE"键 resultText.setText("0"); } elseif (label.equals(MAND[2])) { // 用户按了"C"键 handleC(); } elseif ("0123456789.".indexOf(label) >= 0) { // 用户按了数字键或者小数点键 handleNumber(label); // handlezero(zero); } else { // 用户按了运算符键 handleOperator(label); } } /** * 处理Backspace键被按下的事件 */ privatevoid handleBackspace() { String text = resultText.getText(); int i = text.length(); if (i > 0) { // 退格,将文本最后一个字符去掉 text = text.substring(0, i - 1); if (text.length() == 0) { // 如果文本没有了内容,那么初始化计算器的各种值 resultText.setText("0"); firstDigit = true; operator = "="; } else { // 显示新的文本 resultText.setText(text); } } } /** * 处理数字键被按下的事件 * * param key */ privatevoid handleNumber(String key) { if (firstDigit) { // 输入的第一个数字 resultText.setText(key); } elseif ((key.equals(".")) && (resultText.getText().indexOf(".") < 0)) { // 输入的是小数点,并且之前没有小数点,那么将小数点附在结果文本框的后面 resultText.setText(resultText.getText() + "."); } elseif (!key.equals(".")) { // 如果输入的不是小数点,那么将数字附在结果文本框的后面 resultText.setText(resultText.getText() + key); } // 以后输入的肯定不是第一个数字了 firstDigit = false; } /** * 处理C键被按下的事件 */ privatevoid handleC() { // 初始化计算器的各种值 resultText.setText("0"); firstDigit = true; operator = "="; } /** * 处理运算符键被按下的事件 * * param key */ privatevoid handleOperator(String key) { if (operator.equals("/")) { // 除法运算 // 如果当前结果文本框中的值等于0 if (getNumberFromText() == 0.0) { // 操作不合法 operateValidFlag = false; resultText.setText("除数不能为零"); } else { resultNum /= getNumberFromText(); } } elseif (operator.equals("1/x")) { // 倒数运算 if (resultNum == 0.0) { // 操作不合法 operateValidFlag = false; resultText.setText("零没有倒数"); } else { resultNum = 1 / resultNum; } } elseif (operator.equals("+")) { // 加法运算 resultNum += getNumberFromText(); } elseif (operator.equals("-")) { // 减法运算 resultNum -= getNumberFromText(); } elseif (operator.equals("*")) { // 乘法运算 resultNum *= getNumberFromText(); } elseif (operator.equals("sqrt")) { // 平方根运算 resultNum = Math.sqrt(resultNum); } elseif (operator.equals("%")) { // 百分号运算,除以100 resultNum = resultNum / 100; } elseif (operator.equals("+/-")) { // 正数负数运算 resultNum = resultNum * (-1); } elseif (operator.equals("=")) { // 赋值运算 resultNum = getNumberFromText(); } if (operateValidFlag) { // 双精度浮点数的运算 long t1; double t2; t1 = (long) resultNum; t2 = resultNum - t1; if (t2 == 0) { resultText.setText(String.valueOf(t1)); } else { resultText.setText(String.valueOf(resultNum)); } } // 运算符等于用户按的按钮 operator = key; firstDigit = true; operateValidFlag = true; } /** * 从结果文本框中获取数字 * * return */ privatedouble getNumberFromText() { double result = 0; try { result = Double.valueOf(resultText.getText()).doubleValue(); } catch (NumberFormatException e) { } return result; } publicstaticvoid main(String args[]) { Calculator calculator1 = new Calculator(); calculator1.setVisible(true); calculator1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } . .word..- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 课程设计 报告 计算器
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文