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

上传人:文库蛋蛋多 文档编号:2386925 上传时间:2023-02-17 格式:DOC 页数:14 大小:334KB
返回 下载 相关 举报
Java程序设计实验1(计算器)报告.doc_第1页
第1页 / 共14页
Java程序设计实验1(计算器)报告.doc_第2页
第2页 / 共14页
Java程序设计实验1(计算器)报告.doc_第3页
第3页 / 共14页
Java程序设计实验1(计算器)报告.doc_第4页
第4页 / 共14页
Java程序设计实验1(计算器)报告.doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《Java程序设计实验1(计算器)报告.doc》由会员分享,可在线阅读,更多相关《Java程序设计实验1(计算器)报告.doc(14页珍藏版)》请在三一办公上搜索。

1、中南民族大学计算机科学学院Java程序设计实验报告20142015第一学期课程名称: Java程序设计 院 系: 计算机科学学院 年 级: 2013 专 业: 软件工程 小组成员(学号姓名): 李欣(201321092053) 指导教师:蓝雯飞 刘晶晶 邢志宝 肖文英2014年12月10日实验一 Java 计算器编程1. 实验类型:设计型2. 实验目的(1)熟悉Java编程环境JDK和NetBeans的安装,配置和使用;(2)掌握Java Application的编写及调试;(3)掌握Java图形用户界面的设计及其编程;(4)熟练掌握Java的事件委托处理模型;(5)熟练掌握java.awt包

2、常用类的使用;(6)掌握Java的封装、继承和多态程序设计。3. 实验任务利用Java编程技术实现一个简单的计算器,具体要求如下:(1)编写一个Java Application,使得程序能提供计算器的一般计算功能,计算器界面如下:(2)使用java.awt.Frame创建一个窗框。(3)为计算器的每个按钮(button)注册监听器。(4)利用FlowLayout、BorderLayout、GridLayout设置容器的布局。(5)利用容器间的嵌套策略来布置整个计算器的界面,充分利用Panel作为中间层容器的优点。以下为选做功能:(6)能够对大整数进行运算;(7)对于带括号的表达式,能够根据优先

3、次序求解表达式的值。4. 组内分工(说明每个成员分工的工作)5. Java源代码import java.awt.*;import javax.swing.*;import java.awt.event.*;public class Calculate extends JFrame /* * */private static final long serialVersionUID = 1L;private String front = , behind = ; /分别用于记录加减乘除运算符之前,之后输入的内容 private String op; /用于记录运算符 private String

4、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 b

5、tnNull = new JButton(1/2); 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)

6、; 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 bt

7、nSeven = new JButton(7); JButton btnEight = new JButton(8); JButton btnNine = new JButton(9);public Calculate() try setDefaultCloseOperation(EXIT_ON_CLOSE);/ 默认关闭程序窗体关闭 jbInit(); catch (Exception exception) /运行JbInit();方法若出错 则打印错误内容,以增加程序的稳定性 exception.printStackTrace(); private void jbInit() throws

8、 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);/ 设置 文本

9、域 txtResult 不用编辑 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); btnFour.setBounds(new Recta

10、ngle(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);

11、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);

12、 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.Fo

13、nt(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 Calculat

14、e_btnBegin_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.a

15、ddActionListener(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 Cal

16、culate_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); btn

17、Minus.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); b

18、tnPoint.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); btnE

19、qual.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.addActionLi

20、stener(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, F

21、ont.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); contentPane.add(btnFive); contentPane.add(btnSix); contentPane.a

22、dd(btnDecrease); contentPane.add(btnBegin); contentPane.add(btnOne); contentPane.add(btnTwo); contentPane.add(btnThree); contentPane.add(btnMultiply); contentPane.add(btnCancel); contentPane.add(btnMinus); contentPane.add(btnPoint); contentPane.add(btnDivide); contentPane.add(btnEqual); contentPane.

23、add(btnEight); contentPane.add(btnNine); contentPane.add(btnFour); contentPane.add(btnSeven); contentPane.add(btnIncrease); contentPane.add(btnNull); contentPane.add(txtResult); contentPane.add(btnZero); public void btnZero_actionPerformed(ActionEvent e) if (flag) /如果刚刚按下了运算符 txtResult.setText(); if

24、 (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

25、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) txtResu

26、lt.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.ge

27、tText(); /记录加减乘除运算符之前输入的内容 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 =

28、Double.parseDouble(behind); if (op = +) result = a1 + b1; else if (op = -) result = a1 - b1; else if (op = *) result = a1 * b1; else result = a1 / b1; SuppressWarnings(unused)Double r = new Double(result); re = Double.toString(result); txtResult.setText(re);/将此文本 显示的文本设置为指定文本 catch (ArithmeticExcept

29、ion ce) txtResult.setText(除数不能为零); catch (Exception ee) if (!flag3) flag3 = true; public void btnPoint_actionPerformed(ActionEvent e) int num=txtResult.getText().indexOf(.); if(num=0)/若文本框中含有负号 String a=txtResult.getText().replaceAll(-,); txtResult.setText(a); else if(flag) txtResult.setText(0); els

30、e txtResult.setText(-+txtResult.getText(); public void btnCancel_actionPerformed(ActionEvent e) /退格事件处理方法 String str=txtResult.getText(); if(str.length() = 1)/如文本框中只剩下最后一个字符,将文本框内容置为0 txtResult.setText(0); if(str.length()1) str=str.substring(0,str.length()-1); txtResult.setText(str); public static v

31、oid main(String args) Calculate fc = new Calculate(); fc.setSize(400,310); fc.setLocation(200,150); fc.setVisible(true); class Calculate_btnMinus_actionAdapter implements ActionListener private Calculate adaptee; Calculate_btnMinus_actionAdapter(Calculate adaptee) this.adaptee = adaptee; public void

32、 actionPerformed(ActionEvent e) adaptee.btnMinus_actionPerformed(e); class Calculate_btnBegin_actionAdapter implements ActionListener private Calculate adaptee; Calculate_btnBegin_actionAdapter(Calculate adaptee) this.adaptee = adaptee; public void actionPerformed(ActionEvent e) adaptee.btnBegin_act

33、ionPerformed(e); class Calculate_btnPoint_actionAdapter implements ActionListener private Calculate adaptee; Calculate_btnPoint_actionAdapter(Calculate adaptee) this.adaptee = adaptee; public void actionPerformed(ActionEvent e) adaptee.btnPoint_actionPerformed(e); class Calculate_btnEqual_actionAdap

34、ter implements ActionListener private Calculate adaptee; Calculate_btnEqual_actionAdapter(Calculate adaptee) this.adaptee = adaptee; public void actionPerformed(ActionEvent e) adaptee.btnEqual_actionPerformed(e); class Calculate_btnIncrease_actionAdapter implements ActionListener private Calculate a

35、daptee; Calculate_btnIncrease_actionAdapter(Calculate adaptee) this.adaptee = adaptee; public void actionPerformed(ActionEvent e) adaptee.btnIncrease_actionPerformed(e); class Calculate_btnZero_actionAdapter implements ActionListener private Calculate adaptee; Calculate_btnZero_actionAdapter(Calculate adaptee) this.adaptee = adaptee; public void actionPerformed(ActionEvent e) adaptee.btnZero_actionPerformed(e); 6. 实验原理GUI图形界面的组件:所用到的JAVA类库包:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号