已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JAVA课程设计设计期限 2016 年 3 月 20 开始 至 2016 年 6 月 20 结束一、课程设计题目:简单计算器二、课程设计目的:(1)熟悉Java编程环境JDK和NetBeans的安装,配置和使用;(2)掌握JavaApplication的编写及调试;(3)掌握Java图形用户界面的设计及其编程;(4)熟练掌握Java的事件委托处理模型;(5)熟练掌握java.awt包常用类的使用;(6)掌握Java的封装、继承和多态程序设计。三、课程设计内容:利用Java编程技术实现一个简单的计算器,具体要求如下:(1)编写一个JavaApplication,使得程序能提供计算器的一般计算功能,计算器界面如下:(2)使用java.awt.Frame创建一个窗框。(3)为计算器的每个按钮(button)注册监听器。(4)利用FlowLayout、BorderLayout、GridLayout设置容器的布局。(5)利用容器间的嵌套策略来布置整个计算器的界面,充分利用Panel作为中间层容器的优点。以下为选做功能:(6)能够对大整数进行运算;(7)对于带括号的表达式,能够根据优先次序求解表达式的值四、开发工具与平台1.开发工具:Eclipse默认是一个和Jbuilder类似的Java开发工具,但它不仅仅只是Java开发工具,只要装上相应的插件,eclipse也可作为其它语言的开发工具。如C/C+插件(CDT)。2.开发平台:JDK1.5五.设计过程5.1、设计流程1.分析该计算器需要完成的功能。用户能够完成添加括号和负号的四则混合运算,并且计算器能够自动识别运算符的优先级,根据用户输入的运算表达式,自动计算出相应的结果。同时还完成了计算器中C按钮清屏功能和Backspace退格键。2.考虑异常处理。(1)当输入的表达式中出现除零的操作,显示框将显示“除数不能为零”。(2)当输入的表达式错误时,将弹出提示框显示“表达式错误请重新输入”(3)当计算器的显示文本框里为没有输入内容时直接点击等号按钮,将弹出提示框显示“对不起,您没有任何输入,请重新输入:”。(4)当第一次输入乘号键,除号键,右括号,小数点,求余键,等号键,ce键,Backspace键时提示错误。4.考虑数据的处理目标计算表达式通过点击计算器界面上的按钮进行输入,当按下等号之后,计算器通过调用JAVA中script这个包中的相关类和方法来实现数据的处理。5.编码实现计算器的功能。(1)新建相关的文件。(2)引入JAVA中相关的包。(3)新建类Jsq,并继承了类Frame,而且实现了接口ActionListener(4)定义相关的变量,创建相关组件,并对组件的属性进行设置。(5)对所创建的组件进行布局,完成界面的实现。(6)为各个组件添加事件监听器。(7)重写事件接口ActionListener的方法publicvoidactionPerformed(ActionEvente)。(8)为各个组件编写事件代码,完成每个按钮的不同功能。5.2、具体过程(1)声明各个组件及变量: private String front = , behind = ; /分别用于记录加减乘除运算符之前,之后输入的内容 private String op; /用于记录运算符 private String re;/用于存储运算结果的字符串格式 private boolean flag = false; /用于记录是否按下了运算符 private boolean flag1 = false;/用于判断是否输入了点运算符 private double result;/用于存储运算结果 private boolean flag2 = false;/用于判断是否输入了数字 private boolean flag3 = false;/用于判断是否按下了等号运算符 JPanel contentPane; JTextField txtResult = new JTextField(0); JButton btnNull = new JButton(sqrt); JButton btnFour = new JButton(4); JButton btnFive = new JButton(5); JButton btnSix = new JButton(6); JButton btnDecrease = new JButton(-); JButton btnBegin = new JButton(C); JButton btnOne = new JButton(1); JButton btnTwo = new JButton(2); JButton btnThree = new JButton(3); JButton btnMultiply = new JButton(*); JButton btnCancel = new JButton(); JButton btnZero = new JButton(0); JButton btnMinus = new JButton(+/-); JButton btnPoint = new JButton(.); JButton btnDivide = new JButton(/); JButton btnEqual = new JButton(=); JButton btnIncrease = new JButton(+); JButton btnSeven = new JButton(7); JButton btnEight = new JButton(8); JButton btnNine = new JButton(9);(2)设置面板及各个组件的规格大小并注册监听者:private void jbInit() throws Exception contentPane = (JPanel) getContentPane(); contentPane.setLayout(null); this.setResizable(false); setSize(new Dimension(400, 300); setTitle(计算器); txtResult.setEnabled(false); txtResult.setFont(new java.awt.Font(Dialog, Font.PLAIN, 20); txtResult.setEditable(false); txtResult.setHorizontalAlignment(SwingConstants.RIGHT); txtResult.setBounds(new Rectangle(33, 19, 310, 34); btnNull.setBounds(new Rectangle(298, 70, 46, 37); btnNull.setFont(new java.awt.Font(Dialog, Font.PLAIN, 12); /btnNull.addActionListener(new FrameCalculate_btnNull_actionAdapter(this); btnFour.setBounds(new Rectangle(33, 120, 46, 37); btnFour.setFont(new java.awt.Font(Dialog, Font.PLAIN, 20); btnFive.setBounds(new Rectangle(101, 120, 46, 37); btnFive.setFont(new java.awt.Font(Dialog, Font.PLAIN, 20); btnSix.setBounds(new Rectangle(167, 119, 46, 37); btnSix.setFont(new java.awt.Font(Dialog, Font.PLAIN, 20); btnDecrease.setBounds(new Rectangle(234, 120, 46, 37); btnDecrease.setFont(new java.awt.Font(Dialog, Font.PLAIN, 20); btnBegin.setBounds(new Rectangle(298, 121, 46, 37); btnBegin.setFont(new java.awt.Font(Dialog, Font.PLAIN, 15); btnBegin.addActionListener(new Calculate_btnBegin_actionAdapter(this); btnOne.setBounds(new Rectangle(33, 172, 46, 37); btnOne.setFont(new java.awt.Font(Dialog, Font.PLAIN, 20); btnTwo.setBounds(new Rectangle(101, 172, 46, 37); btnTwo.setFont(new java.awt.Font(Dialog, Font.PLAIN, 20); btnThree.setBounds(new Rectangle(167, 172, 46, 37); btnThree.setFont(new java.awt.Font(Dialog, Font.PLAIN, 20); btnMultiply.setBounds(new Rectangle(234, 172, 46, 37); btnMultiply.setFont(new java.awt.Font(Dialog, Font.PLAIN, 20); btnCancel.setBounds(new Rectangle(298, 172, 46, 37); btnCancel.setFont(new java.awt.Font(Dialog, Font.PLAIN, 12); btnCancel.addActionListener(new Calculate_btnCancel_actionAdapter(this); btnZero.setBounds(new Rectangle(33, 222, 46, 37); btnZero.setFont(new java.awt.Font(Dialog, Font.PLAIN, 20); /加载数字0-9的监听事件 btnZero.addActionListener(new Calculate_btnZero_actionAdapter(this); btnOne.addActionListener(new Calculate_btnZero_actionAdapter(this); btnTwo.addActionListener(new Calculate_btnZero_actionAdapter(this); btnThree.addActionListener(new Calculate_btnZero_actionAdapter(this); btnFour.addActionListener(new Calculate_btnZero_actionAdapter(this); btnFive.addActionListener(new Calculate_btnZero_actionAdapter(this); btnSix.addActionListener(new Calculate_btnZero_actionAdapter(this); btnSeven.addActionListener(new Calculate_btnZero_actionAdapter(this); btnEight.addActionListener(new Calculate_btnZero_actionAdapter(this); btnNine.addActionListener(new Calculate_btnZero_actionAdapter(this); btnMinus.setBounds(new Rectangle(101, 222, 46, 37); btnMinus.setFont(new java.awt.Font(Dialog, Font.PLAIN, 10); btnMinus.addActionListener(new Calculate_btnMinus_actionAdapter(this); btnPoint.setBounds(new Rectangle(167, 222, 46, 37); btnPoint.setFont(new java.awt.Font(Dialog, Font.PLAIN, 30); btnPoint.setHorizontalTextPosition(SwingConstants.CENTER); btnPoint.addActionListener(new Calculate_btnPoint_actionAdapter(this); btnDivide.setBounds(new Rectangle(234, 222, 46, 37); btnDivide.setFont(new java.awt.Font(Dialog, Font.PLAIN, 20); btnEqual.setBounds(new Rectangle(298, 222, 46, 37); btnEqual.setFont(new java.awt.Font(Dialog, Font.PLAIN, 20); btnEqual.addActionListener(new Calculate_btnEqual_actionAdapter(this); btnIncrease.setBounds(new Rectangle(234, 70, 46, 37); btnIncrease.setFont(new java.awt.Font(Dialog, Font.PLAIN, 20); /加载加减乘除运算符的监听事件 btnIncrease.addActionListener(new Calculate_btnIncrease_actionAdapter(this); btnDecrease.addActionListener(new Calculate_btnIncrease_actionAdapter(this); btnMultiply.addActionListener(new Calculate_btnIncrease_actionAdapter(this); btnDivide.addActionListener(new Calculate_btnIncrease_actionAdapter(this); btnSeven.setBounds(new Rectangle(33, 70, 46, 37); btnSeven.setFont(new java.awt.Font(Dialog, Font.PLAIN, 20); btnEight.setBounds(new Rectangle(101, 70, 46, 37); btnEight.setFont(new java.awt.Font(Dialog, Font.PLAIN, 20); btnNine.setBounds(new Rectangle(167, 70, 46, 37); btnNine.setFont(new java.awt.Font(Dialog, Font.PLAIN, 20);(3)运算符事件处理public void btnZero_actionPerformed(ActionEvent e) if (flag) /如果刚刚按下了运算符 txtResult.setText(); if (flag1) /判断之前是否输入了点运算符 txtResult.setText(0. + e.getActionCommand(); flag1 = false; else txtResult.setText(e.getActionCommand(); flag2 = true; else int num = txtResult.getText().indexOf(.); if (num 0 & !txtResult.getText().equals(0) txtResult.setText(txtResult.getText() + e.getActionCommand(); else if (num = 0 & txtResult.getText().equals(0) txtResult.setText(0. + e.getActionCommand(); else if (num = 0 & !txtResult.getText().equals(0) txtResult.setText(txtResult.getText() + e.getActionCommand(); flag = false; flag3=false; public void btnIncrease_actionPerformed(ActionEvent e) if(flag3) txtResult.setText(txtResult.getText(); op = e.getActionCommand(); /得到刚刚按下的运算符 front = txtResult.getText(); /记录加减乘除运算符之前输入的内容 else if (flag2) ActionEvent ee = new ActionEvent(qq, 1, pp); btnEqual_actionPerformed(ee); op = e.getActionCommand(); /得到刚刚按下的运算符 front = re; flag2 = false; else front = txtResult.getText(); /记录加减乘除运算符之前输入的内容 op = e.getActionCommand(); /得到刚刚按下的运算符 flag3=false; flag = true; /记录已经按下了加减乘除运算符的其中一个 public void btnEqual_actionPerformed(ActionEvent e) if(!flag3)/未曾按下等于运算符 behind = txtResult.getText(); else front = re; try double a1 = Double.parseDouble(front); double b1 = Double.parseDouble(behind); if (op = +) result = a1 + b1; else if (op = -) result = a1 - b1; else if (op = *) result = a1 * b1; else result = a1 / b1; Double r = new Double(result); re = r.toString(result); txtResult.setText(re); catch (Arith
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026湖南张家界市事业单位招聘(选调)37人考试模拟试题及答案详解
- 2027年河南太行职业学院高职单招职业技能考试模拟试卷(培优B卷)附答案详解
- 2026年绵阳现代农业职业学院单招综合素质考试模拟试卷附答案详解(综合题)
- 2027年许昌智能制造职业学院高职单招职业技能考试题库及答案详解【基础+提升】
- 2024年湖南怀化鹤城职业学院高职单招职业适应性测试考试题库及参考答案详解【预热题】
- 2024年湖南邵阳雪峰职业学院高职单招职业技能考试题库附完整答案详解(典优)
- 2026年湖北襄阳汉江职业学院高职单招职业技能考试模拟试卷及答案详解(夺冠)
- 2026年四川南充高坪职业学院高职单招职业适应性测试考试模拟试卷及参考答案详解【满分必刷】
- 2024年山东海事职业学院高职单招职业技能考试题库附参考答案详解【B卷】
- 2026年山东山河职业学院高职单招职业技能考试模拟试卷带答案详解(满分必刷)
- 胃癌患者HER2阳性双靶联合(曲妥珠单抗+帕妥珠单抗)治疗方案
- 高校招标采购年终总结(3篇)
- 眼镜从业人员培训制度
- 矿山立井冻结法施工及质量验收标准
- 营销总监2025年半年度汇报
- 芯片采购框架协议书模板
- AI与疫苗接种策略的智能优化
- 劳务派遣安全生产工作方案
- TGGW102-2019普速铁路线路修理规则
- 雨课堂学堂在线学堂云《人工智能基础( 西科)》单元测试考核答案
- 2025年计算机等级考试一级计算机基础及WPSOffice应用试题附答案
评论
0/150
提交评论