收藏 分销(赏)

JAVA课程设计报告计算器.doc

上传人:二*** 文档编号:4512743 上传时间:2024-09-26 格式:DOC 页数:15 大小:123KB
下载 相关 举报
JAVA课程设计报告计算器.doc_第1页
第1页 / 共15页
本文档共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..
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

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

客服