Java程序设计实验1(计算器)报告.doc

上传人:bao****ty 文档编号:144498896 上传时间:2020-09-09 格式:DOC 页数:9 大小:162.50KB
返回 下载 相关 举报
Java程序设计实验1(计算器)报告.doc_第1页
第1页 / 共9页
Java程序设计实验1(计算器)报告.doc_第2页
第2页 / 共9页
Java程序设计实验1(计算器)报告.doc_第3页
第3页 / 共9页
Java程序设计实验1(计算器)报告.doc_第4页
第4页 / 共9页
Java程序设计实验1(计算器)报告.doc_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《Java程序设计实验1(计算器)报告.doc》由会员分享,可在线阅读,更多相关《Java程序设计实验1(计算器)报告.doc(9页珍藏版)》请在金锄头文库上搜索。

1、中南民族大学计算机科学学院Java程序设计实验一报告20142015第二学期课程名称: Java程序设计 院 系: 计算机科学学院 年 级: 2013 专 业: 计算机科学与技术 班 级: 1大班 小组成员(学号姓名): 201321091035 高波 201321091071 王吉 201321151065 锁松源 指导教师: 强小利 2015年5月实验一 Java 计算器编程1. 实验类型:设计型2. 实验目的(1)熟悉Java编程环境JDK和NetBeans的安装,配置和使用;(2)掌握Java Application的编写及调试;(3)掌握Java图形用户界面的设计及其编程;(4)熟练

2、掌握Java的事件委托处理模型;(5)熟练掌握java.awt包常用类的使用;(6)掌握Java的封装、继承和多态程序设计。3. 实验任务利用Java编程技术实现一个简单的计算器,具体要求如下:(1)编写一个Java Application,使得程序能提供计算器的一般计算功能,计算器界面如下:(2)使用java.awt.Frame创建一个窗框。(3)为计算器的每个按钮(button)注册监听器。(4)利用FlowLayout、BorderLayout、GridLayout设置容器的布局。(5)利用容器间的嵌套策略来布置整个计算器的界面,充分利用Panel作为中间层容器的优点。(6)对于带括号的

3、表达式,能够根据优先次序求解表达式的值。以下为选做功能:(7)能够对大整数进行运算。4. 组内分工(说明每个成员分工的编程工作) 王吉主要负责实现计算器的基本功能 包括加减乘除四则运算、倒数、平方根及清除结果等功能。 高波负责通过图形界面设计,掌握JFrame类、JPanel类、5种布局管理器、文本框、标签及按钮的使用方法。 锁松原负责按钮监听,计算器的每个按钮(button)注册监听器。5. Java源代码import java.awt.*;import java.awt.event.*;import java.util.Stack;import javax.swing.*;public c

4、lass Calculator extends JFrame implements ActionListenerprivate JTextFieldtxtResult;private JPanelp;private Stringname= 7, 8, 9, +, 4, 5, 6, -,1, 2, 3, *, 0, ., =, /, , C, (, ) ;private JButtonbutton= new JButtonname.length;private JMenuBar menuBar;/菜单栏的实现。将 Menu 对象添加到菜单栏以构造菜单。private JMenu menu,men

5、u1;/菜单的该实现是一个包含 MenuItem 的弹出窗口 private JMenuItem menuItem,menuItem1;/弹出窗口public Calculator()super(计算器);createMenu();/添加菜单栏txtResult = new JTextField(20);txtResult.setFocusable(true);/获取焦点this.add(txtResult, BorderLayout.NORTH);p = new JPanel(new GridLayout(5, 4);for (int i = 0; i button.length; i+)b

6、uttoni = new JButton(namei);p.add(buttoni);this.add(p, BorderLayout.CENTER);this.setSize(200, 280);this.setLocation(200, 200);for (int i = 0; i button.length; i+)buttoni.addActionListener(this);void createMenu() menuBar=new JMenuBar(); /新建菜单条 setJMenuBar(menuBar); menu=new JMenu(实验名称); /创建第一个菜单(在面板上

7、显示) menuBar.add(menu);/添加弹出窗口 menuItem=new JMenuItem(简易计算器); menu.add(menuItem);/弹窗要一个一个地添加,否则会覆盖的 menu1=new JMenu(关于); menuBar.add(menu1);/添加弹出窗口 menuItem1=new JMenuItem(制作者); menu1.add(menuItem1); menuItem1.addActionListener(this);/对 menuItem1注册监听器public static void main(String args)Calculator f =

8、 new Calculator();f.setVisible(true);public void actionPerformed(ActionEvent e)if(e.getSource()= menuItem1) String message,title;/用来存储帮助信息,字符串类型 title=new String(制作者); message=new String(高波,王吉,锁松源); int messagetype=JOptionPane.INFORMATION_MESSAGE; JOptionPane.showMessageDialog(this,message,title,mes

9、sagetype);JButton btn = (JButton) e.getSource();if (e.getSource() != button16 & e.getSource() != button17)/除了和清除按钮txtResult.setText(txtResult.getText() + btn.getActionCommand();else if (e.getSource() = button16)/txtResult.setText(txtResult.getText() + 3.141593);elsetxtResult.setText();if (e.getSourc

10、e() = button14)/等于号txtResult.setText(txtResult.getText()+ (new Double(valueOfExpression(txtResult.getText().toString();if(e.getSource()= menuItem1)static double valueOfExpression(String expression)return valueOfExpression(new StringBuffer(expression);static double valueOfExpression(StringBuffer expr

11、ession)Stack optr = new Stack();/运算符栈Stack oped = new Stack();/操作数栈char optrTemp = ;while (true)optrTemp = expression.charAt(0);if (optrTemp = ( | optrTemp = ()expression.deleteCharAt(0);oped.push(valueOfExpression(expression);elseoped.push(readDoubleFromeStrBuf(expression);optrTemp = expression.cha

12、rAt(0);if (optrTemp = ) | optrTemp = ) | optrTemp = =)expression.deleteCharAt(0);while (!optr.empty() & !oped.empty()oped.push(calculate(oped.pop(), optr.pop(), oped.pop();return oped.pop();while (!optr.empty()& firstPriorToSecond(optr.peek(), optrTemp) = 0)/判断运算符优先级oped.push(calculate(oped.pop(), o

13、ptr.pop(), oped.pop();optr.push(optrTemp);expression.deleteCharAt(0);static double calculate(double f1, char op, double f2)/ 前条件:f1、f2为浮点数,op为+、-、*、/字符;/ 操作结果:返回f2opf1的数学结果;switch (op)case +:return f1 + f2;case -:return f2 - f1;case *:return f1 * f2;case /:if (f1 = 0)System.exit(1);return f2 / f1;default:return -2;stati

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号