




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java实验报告题目: 简易计算器 学 院 数学与计算机学院 学科门类 工 学 专 业 软件工程 学 号 2010434004 姓 名 指导教师 2012年 12月 25 日一、实验目的通过Java程序开发实训使学生掌握面向对象程序设计(Java)课堂讲授的内容,灵活运用到Java程序的开发与设计中。1. 了解Java中的类与对象,类及成员的定义 2. 掌握运算符与基本的表达式,和异常的处理 3. 数组与字符串的应用 4. 掌握常用的Java系统类,核心语言包(java.lang),工具包(java.util),数学包(java.math) 5. 接口的实现,输入输出的处理和可视化程序设计二、实验要求应用Java语言,设计一个简易计算器,要求界面简洁,能完成基本运算功能。三、实验内容1. 进行图形界面设计 应用JFrame类、JPanel类、5种布局管理器、文本框、标签及按钮等。2. 实现计算器的基本功能包括加减乘除四则运算、倒数、取余、平方根、三角函数及清除结果等功能。四、设计方案1、设计流程图2、界面的设计:Swing布局。界面设计中有用到swing组件的TextField和Button,用到awt中的BorderLayout和GridLayout布局管理方式。设计主界面框架布局为默认的BorderLayout布局,申请三个面板分别是:(1)输入输出面板,布局设置为两行一列的网格GridLayout布局,包括两个JTextField文本框,一个负责显示当前输入信息,一个负责显示计算式。面板设置为面板的上部,即f.add(inputPanel,BorderLayout.NORTH);(2)数字按钮及运算按钮面板,设置为4行5列的网格布局,包括09的10个数字和加、减、乘、除、乘方、开方、取倒、取余、等于按钮。面板位置在主界面的下部,即f.add(buttonsPanel,BorderLayout.SOUTH);(3)功能键面板, 包括三角函数,清除,退格等按钮。面板位置在主界面框架的中部。即f.add(operationPanel,BorderLayout.CENTER)。其图形界面如下:3、数据输入:鼠标事件响应。分别定义三个类,一个是NumberMouseListener类来响应数字点击事件,另外一个是CalcMouseListener 类来响应包括开方、乘方在内的运算按钮的点击事件,最后是OperationMouseListener类用来响应退格、清除等功能键的点击事件,三个类都分别实现鼠标监听MouseListener接口。对每个按钮设置对应监听。4、数据处理:整型和浮点数处理,计算器的核心功能实现。在CalcMouseListener 类中对根据事件源的分析,完成用户要求的运算,将结果输出到文本框中。五、实验结果1、四则运算功能2、扩张的其他运算功能六、程序代码public class Calculator /计算器面板private JFrame f = new JFrame(Calculator); private JPanel inputPanel = new JPanel();/输入面扳private JPanel operationPanel = new JPanel();/加减乘除面板private JPanel buttonsPanel = new JPanel();/数字面板private JTextField input = new JTextField(20); /输入数据文本框private JTextField show=new JTextField(20);private JButton backspace = new JButton(退格);/退格键private JButton CE = new JButton(CE );/清空private JButton C = new JButton(C);/删除private JButton sqrt=new JButton();/开方private JButton fang=new JButton();/乘方private JButton mod=new JButton(%);/取余private JButton dao=new JButton(1/x);/取倒数private JButton sin=new JButton(sin);private JButton cos=new JButton(cos);private JButton lg=new JButton(ln);/四则运算符号键private JButton add = new JButton(+);private JButton sub = new JButton(-);private JButton mul = new JButton(*);private JButton div = new JButton(/);/小数点private JButton decimal = new JButton(.);/等号private JButton equal = new JButton(=);/数字键private JButton zero = new JButton(0);private JButton one = new JButton(1);private JButton two = new JButton(2);private JButton three = new JButton(3);private JButton four = new JButton(4);private JButton five = new JButton(5);private JButton six = new JButton(6);private JButton seven = new JButton(7);private JButton eight = new JButton(8);private JButton nine = new JButton(9);private String num1 = ;/保存第一个运算数字private String operator = ;/保存运算符号public static void main(String args) new Calculator();/new计算器实例public Calculator() /添加组件,布局show.setText(0);show.setEditable(false); /不可编辑show.setHorizontalAlignment(JTextField.RIGHT);input.setText(0);input .setEditable(false);input.setHorizontalAlignment(JTextField.RIGHT);inputPanel.setLayout(new GridLayout(2,1);inputPanel.add(show);inputPanel.add(input);/添加输入文本框f.add(inputPanel, BorderLayout.NORTH);operationPanel.add(sin);sin.setBackground(new Color(100, 255, 10);operationPanel.add(cos);cos.setBackground(new Color(100, 255, 10);operationPanel.add(CE);CE.setBackground(new Color(100, 255, 10);operationPanel.add(C);C.setBackground(new Color(100, 255, 10);operationPanel.add(backspace);backspace.setBackground(new Color(100, 255, 10);f.add(operationPanel, BorderLayout.CENTER);buttonsPanel.setLayout(new GridLayout(4, 5); buttonsPanel.add(seven);buttonsPanel.add(eight);buttonsPanel.add(nine);buttonsPanel.add(div);buttonsPanel.add(mod);buttonsPanel.add(four);buttonsPanel.add(five);buttonsPanel.add(six);buttonsPanel.add(mul);buttonsPanel.add(fang);buttonsPanel.add(one);buttonsPanel.add(two);buttonsPanel.add(three);buttonsPanel.add(sub);buttonsPanel.add(sqrt);buttonsPanel.add(zero);buttonsPanel.add(decimal);buttonsPanel.add(equal);buttonsPanel.add(add);buttonsPanel.add(dao);f.add(buttonsPanel, BorderLayout.SOUTH);/注册各个组件监听事件backspace.addMouseListener(new OperationMouseListener();CE.addMouseListener(new OperationMouseListener();C.addMouseListener(new OperationMouseListener();decimal.addMouseListener(new OperationMouseListener();equal.addMouseListener(new OperationMouseListener();/注册运算监听add.addMouseListener(new CalcMouseListener();sub.addMouseListener(new CalcMouseListener();mul.addMouseListener(new CalcMouseListener();div.addMouseListener(new CalcMouseListener();sqrt.addMouseListener(new CalcMouseListener();fang.addMouseListener(new CalcMouseListener();mod.addMouseListener(new CalcMouseListener();dao.addMouseListener(new CalcMouseListener();sin.addMouseListener(new CalcMouseListener();cos.addMouseListener(new CalcMouseListener();/注册数字监听事件zero.addMouseListener(new NumberMouseListener();one.addMouseListener(new NumberMouseListener();two.addMouseListener(new NumberMouseListener();three.addMouseListener(new NumberMouseListener();four.addMouseListener(new NumberMouseListener();five.addMouseListener(new NumberMouseListener();six.addMouseListener(new NumberMouseListener();seven.addMouseListener(new NumberMouseListener();eight.addMouseListener(new NumberMouseListener();nine.addMouseListener(new NumberMouseListener();f.setVisible(true);f.pack();/窗口自适应大小f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);private class NumberMouseListener implements MouseListenerpublic void mouseClicked(MouseEvent e) /if(operator=)if(input.getText().trim().equals(0)|input.getText().trim().equals()/如果文本框已经是0,结果还是0 input.setText(JButton)e.getSource().getText().trim();else/否则的话,把新输入的数添加到原有数的后边input.setText(input.getText().concat(JButton)e.getSource().getText().trim();if(operator=)show.setText();public void mouseEntered(MouseEvent e) public void mouseExited(MouseEvent e) public void mousePressed(MouseEvent e) public void mouseReleased(MouseEvent e) private class CalcMouseListener implements MouseListener/如果输入的是运算符号,保存第一个结果和运算符号public void mouseClicked(MouseEvent e) double s=0;if(JButton)e.getSource().getText().trim()=- )if(input.getText().trim().equals(0)|input.getText().trim().equals()input.setText(-);return;if(e.getSource()=sqrt)double t=Math.sqrt(Double.parseDouble(input.getText().trim();input.setText(new DecimalFormat(0.00).format(t);else if(e.getSource()=dao)double t=1/Double.parseDouble(input.getText().trim();input.setText(new DecimalFormat(0.00).format(t);else if(e.getSource()=sin)double t=Math.sin(Double.parseDouble(input.getText().trim();input.setText(new DecimalFormat(0.00).format(t);else if(e.getSource()=cos)double t=Math.cos(Double.parseDouble(input.getText().trim();input.setText(new DecimalFormat(0.00).format(t);elseif(operator=)num1 = input.getText().trim();operator = (JButton)e.getSource().getText().trim();show.setText(input.getText().concat(JButton)e.getSource().getText().trim();input.setText(0);else /实现连续运算if(operator.equals(+)/执行加法运算s = Double.parseDouble(num1) + Double.parseDouble(input.getText().trim();else if(operator.equals(-)/减法运算s = Double.parseDouble(num1) - Double.parseDouble(input.getText().trim();else if(operator.equals(*)/乘法运算s = Double.parseDouble(num1) * Double.parseDouble(input.getText().trim();else if(operator.equals(/)/除法运算s = Double.parseDouble(num1) / Double.parseDouble(input.getText().trim();else if(operator.equals()/乘方运算s=Math.pow(Double.parseDouble(num1), Double.parseDouble(input.getText().trim();else if(operator.equals(%)/取余运算s=getMod(Double.parseDouble(num1), Double.parseDouble(input.getText().trim();num1 =new DecimalFormat(0.00).format(s);show.setText(num1.concat(JButton)e.getSource().getText().trim();input.setText(0);operator=(JButton)e.getSource().getText().trim();private double getMod(double a, double b) / TODO Auto-generated method stubdouble s=0;if(a 0)input.setText(inputText.substring(0, inputText.length() - 1);else if(inputText.length()=0 & showText.length()0) input.setText(showText.substring(0,showText.length()-1); show.setText(0);else if(e.getSource() = C)input.setText(0);/C,清空所有运算数字和符号show.setText(0);num1 = ;operator=;else if(e.getSource() = CE)input.setText(0);/CE-将文本框置为0else if(e.getSource() = decimal)String text = input.getText().trim();/如果按了小数点,如果文本框已经有小数点,不做任何操作,否则在结果后面加上小数点if(text.indexOf(.) = -1)input.setText(text.concat(.);else if(e.getSource() = equal)/输入操作符后 点击的等于号 两个数做正常计算if(!operator.trim().equals()if(!input.getText().trim().equals()show.setText(show.getText().concat(input.getText().concat(=);double result = 0;if(operator.equals(+)/执行加法运算result = Double.parseDouble(num1) + Double.parseDouble(input.ge
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理专科培训试题及答案
- 精神障碍护理试题及答案
- 2025标准货物运输合同样本
- 先进先出考试题及答案
- 2025综合真题及答案
- 2025年敦煌艺术鉴赏题库及答案
- 湖南钢结构天桥施工方案
- 2025年兵器装备集团招聘考试面试经验与心得总结
- 设备节能交流方案范本
- 杭州抗震支吊架施工方案
- 2025年初级(五级)医疗护理员职业技能鉴定《理论知识》考试真题(后附答案及解析)
- 新技术、新项目准入制度试题(含答案)
- JT-T 1062-2025 桥梁减隔震装置通.用技术条件
- 博物馆布展工程质量保证措施
- 医院保洁员考核管理办法
- 人教版(2024)七年级上册英语教学计划(含教学进度表)
- 广东省深圳市2025年中考真题数学试题及答案
- 2025年天津市中考道德与法治真题(解析版)
- 《景观规划设计》课件-项目一:乡村景观规划基础
- 2025年公务员考试时事政治模拟试题(综合卷)附答案详解
- 超市服务礼仪培训课件
评论
0/150
提交评论