java计算器实验报告马嘉良彭博王鹏_第1页
java计算器实验报告马嘉良彭博王鹏_第2页
java计算器实验报告马嘉良彭博王鹏_第3页
java计算器实验报告马嘉良彭博王鹏_第4页
java计算器实验报告马嘉良彭博王鹏_第5页
已阅读5页,还剩7页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、北京石油化工学院信息工程学院java实 验 报 告(2010/2011 学年 第 1 学期)课程名称Java语言程序设计任课教师张世博指导教师张世博小组成员马嘉良 彭博 王鹏学 号马090700彭090701 王090705年 级计算机092专 业计算机科学与技术综合成绩11 / 12文档可自由编辑打印实验名称计算器指导教师张世博一、 实验目的和要求1. 计算器程序(界面、事件编程)2. 处理输入数据的异常3. 记录用户的计算操作(包括正常计算与异常错误)到本地txt文件中,并记录时间,采用追加的方式。4. 10+4=142010-11-6 13:23:95. 9/3=3 2010-11-12

2、 21:19:126. 可发挥主观能动性添加其他内容作为加分项。7. 每三人(不超过三人)一个小组8. 采用程序现场讲解、提问及部分编程的考察方式9. 杜绝全盘拷贝!10. 验收时,请备好本小组的实验报告。四、实验小结(包括问题和解决方法、心得体会、意见与建议等) 通过本次试验,我们从中学习到了很多,复习了许多java的基本知识,培养了我们团队合作的精神,增进了我们之间的感情,此程序虽然已完成基本操作与少许额外的功能,但是还有诸多不足之处,在编程中对时间的输出感到比较困难,在团队人员的共同努力下,查阅许多资料后,终于解决了这一难题,锻炼了团队成员的坚忍不拔的精神,此次试验让我们在以后的学习生活

3、中受益良多。程序代码package calculate;import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.io.*;import java.text.DateFormat;import java.util.Date;public class Calculator extends JFrame implements ActionListener,KeyListenerprivate JPanel p1, p2; private JButton numbers;private JButton b11

4、, b12, b13, b14, b15, b16, b17, b18, b19, b20;private boolean dotExist, operated, equaled; / 帮助运算的布尔变量 private double storedNumber; / 目前的结果 private char lastOperator; / 上一运算符private JTextField t = new JTextField(20);static StringBuffer buffer = new StringBuffer(); public Calculator() t.setText("

5、;0"); t.setEditable(false); storedNumber = 0; lastOperator = '?' setTitle("calculator"); dotExist = false; / 表示当前的数是否有小数点 operated = false; / 表示任意运算符是否被按下 equaled = false; / 表示等号是否被按下 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); p1 = new JPanel(); p2 = new JPanel(); p1.setL

6、ayout(new FlowLayout(); p2.setLayout(new GridLayout(5, 4, 10, 10); numbers = new JButton10; for (int i = 0; i < 10; i+) numbersi = new JButton("" + i); numbersi.addActionListener(this); b11 = new JButton("+"); b11.addActionListener(this); b12 = new JButton("-"); b12.

7、addActionListener(this); b13 = new JButton("*"); b13.addActionListener(this); b14 = new JButton("/"); b14.addActionListener(this); b15 = new JButton(""); b15.addActionListener(this); b16 = new JButton("¡À"); b16.addActionListener(this); b17 = new JBu

8、tton("x2"); b17.addActionListener(this); b18 = new JButton("="); b18.addActionListener(this); b19 = new JButton("."); b19.addActionListener(this); b20 = new JButton("C"); b20.addActionListener(this); p1.add(t); for (int i = 0; i < 10; i+) p2.add(numbersi);

9、p2.add(b11); p2.add(b12); p2.add(b13); p2.add(b14); p2.add(b15); p2.add(b16); p2.add(b17); p2.add(b18); p2.add(b19); p2.add(b20); Container c = getContentPane(); c.add(p1, "North"); c.add(p2,"Center"); this.setSize(320, 240); this.setVisible(true); t.addKeyListener(this); public

10、void actionPerformed(ActionEvent e) JButton btn = (JButton)e.getSource(); if(btn = b20) t.setText("0"); t.setEditable(false); storedNumber = 0; lastOperator = '?' dotExist = false; / 表示当前的数是否有小数点 operated = false; / 表示任意运算符是否被按下 equaled = false; / 表示等号是否被按下 else if (btn = b18) calc

11、ulator('='); equaled = true; else if (btn = b11) calculator('+'); equaled = false; else if (btn = b12) calculator('-'); equaled = false; else if (btn = b13) calculator('*'); equaled = false; else if (btn = b14) calculator('/'); equaled = false; else if(btn = b

12、15) calculator('s'); calculator('='); equaled = true; else if (btn = b16) calculator('p'); equaled = false; t.setText("-"+storedNumber); else if (btn = b17) calculator(''); calculator('='); equaled = true; else if (equaled) storedNumber = 0; for (int

13、 i = 0; i < 10; i+) if (btn = numbersi) if (t.getText().equals("0") t.setText("" + i); else if(! operated) t.setText(t.getText() + i); else t.setText("" + i); operated = false; if (btn = b19 && ! dotExist) t.setText(t.getText() + "."); dotExist = tr

14、ue; private void calculator(char d) double currentNumber = Double.valueOf(t.getText().doubleValue(); if (lastOperator = '?') storedNumber = currentNumber; else if (lastOperator = '+') record('+',storedNumber,currentNumber); storedNumber += currentNumber; record1(d,storedNumbe

15、r); else if (lastOperator = '-') record('-',storedNumber,currentNumber); storedNumber -= currentNumber; else if (lastOperator = '*') record('*',storedNumber,currentNumber); storedNumber *= currentNumber; record1(d,storedNumber); else if (lastOperator = '/') re

16、cord('/',storedNumber,currentNumber); storedNumber /= currentNumber; record1(d,storedNumber); else if (lastOperator = 'p') storedNumber *= -1; else if (lastOperator = 's') record('s',storedNumber,currentNumber); storedNumber = Math.sqrt(currentNumber); record1(d,store

17、dNumber); else if (lastOperator = '') record('',storedNumber,currentNumber); storedNumber = currentNumber * currentNumber; record1(d,storedNumber); else if (lastOperator = '=' && equaled) storedNumber = currentNumber; t.setText("" + storedNumber); operated =

18、 true; lastOperator = d; public void record(char d,double storedNumber,double currentNumber) buffer = buffer.append(storedNumber); buffer = buffer.append(d); buffer = buffer.append(currentNumber); public void record1(char d,double storedNumber) buffer = buffer.append('='); buffer = buffer.ap

19、pend(storedNumber); Date dt = new Date(); DateFormat fullDateFormat = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL); System.out.println(fullDateFormat.format(dt); buffer = buffer.append(" " + dt + " "); buffer = buffer.append("rn"); System.out.println

20、(buffer); try F1=new ("D:Wendang.txt"); DataOutputStream F2=new DataOutputStream(F1); F2.writeBytes(buffer.toString(); F2.close(); catch(IOException ioe) public void keyPressed(KeyEvent arg0) int numbers = new int10;numbers0 = KeyEvent.VK_0;numbers1 = KeyEvent.VK_1;numbers2 = KeyEvent.VK_2

21、;numbers3 = KeyEvent.VK_3;numbers4 = KeyEvent.VK_4;numbers5 = KeyEvent.VK_5;numbers6 = KeyEvent.VK_6;numbers7 = KeyEvent.VK_7;numbers8 = KeyEvent.VK_8;numbers9 = KeyEvent.VK_9;int a = arg0.getKeyCode();tryif(a = KeyEvent.VK_C ) t.setText("0"); t.setEditable(false); storedNumber = 0; lastOp

22、erator = '?' dotExist = false; / 表示当前的数是否有小数点 operated = false; / 表示任意运算符是否被按下 equaled = false; / 表示等号是否被按下else if (a = KeyEvent.VK_ENTER) calculator('='); equaled = true; else if (a = KeyEvent.VK_ADD) calculator('+'); equaled = false; else if (a = KeyEvent.VK_SUBTRACT) calculator('-'); equaled = false; else if (a = KeyEvent.VK_MULTIPLY) calculator('*'); equaled = false; else if (a = KeyEvent.VK_DIVIDE) calculator('/'); equaled = false; else if (equaled) storedNumber = 0; for (int i = 0; i < 10; i+) i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论