




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实 验 报 告北京石油化工学院信息工程学院java实 验 报 告(2010/2011 学年 第 1 学期)课程名称Java语言程序设计任课教师张世博指导教师张世博小组成员马嘉良 彭博 王鹏学 号马090700彭090701 王090705年 级计算机092专 业计算机科学与技术综合成绩2实验名称计算器指导教师张世博一、 实验目的和要求1. 计算器程序(界面、事件编程)2. 处理输入数据的异常3. 记录用户的计算操作(包括正常计算与异常错误)到本地txt文件中,并记录时间,采用追加的方式。4. 10+4=142010-11-6 13:23:95. 9/3=3 2010-11-12 21:19:126. 可发挥主观能动性添加其他内容作为加分项。7. 每三人(不超过三人)一个小组8. 采用程序现场讲解、提问及部分编程的考察方式9. 杜绝全盘拷贝!10. 验收时,请备好本小组的实验报告。四、实验小结(包括问题和解决方法、心得体会、意见与建议等) 通过本次试验,我们从中学习到了很多,复习了许多java的基本知识,培养了我们团队合作的精神,增进了我们之间的感情,此程序虽然已完成基本操作与少许额外的功能,但是还有诸多不足之处,在编程中对时间的输出感到比较困难,在团队人员的共同努力下,查阅许多资料后,终于解决了这一难题,锻炼了团队成员的坚忍不拔的精神,此次试验让我们在以后的学习生活中受益良多。程序代码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, 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(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.setLayout(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.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 JButton(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); 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 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) calculator(=); 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 = b15) 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 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 = true; 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,storedNumber); else if (lastOperator = -) record(-,storedNumber,currentNumber); storedNumber -= currentNumber; else if (lastOperator = *) record(*,storedNumber,currentNumber); storedNumber *= currentNumber; record1(d,storedNumber); else if (lastOperator = /) record(/,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,storedNumber); else if (lastOperator = ) record(,storedNumber,currentNumber); storedNumber = currentNumber * currentNumber; record1(d,storedNumber); else if (lastOperator = = & equaled) storedNumber = currentNumber; t.setText( + storedNumber); operated = 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.append(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(buffer); try FileOutputStream F1=new FileOutputStream(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;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; lastOperator = ?; 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+) if (a = n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 包头市中石化2025秋招面试半结构化模拟题及答案油品分析质检岗
- 国家能源庆阳市2025秋招面试专业追问及参考财务审计岗位
- 中卫市中石油2025秋招面试半结构化模拟题及答案油气储运与管道岗
- 2025年高一生物必修一试题及答案
- 国家能源商丘市2025秋招写作案例分析万能模板可套用
- 莆田市中石化2025秋招网申填写模板含开放题范文
- 中国广电金华市2025秋招供应链采购类专业追问清单及参考回答
- 玉林市中石油2025秋招面试半结构化模拟题及答案法律与合规岗
- 温州市中石油2025秋招笔试模拟题含答案安全环保与HSE岗
- 广州市中储粮2025秋招写作案例分析万能模板直接套用
- T-BECS 0006-2025 城镇重要基础设施内涝防护规划设计规范
- 运动会进行课件
- 污水厂设备更新改造工程可行性研究报告
- 2025年河南省事业单位面向哈密市和十三师新星市少数民族高校毕业生专项招聘15名考试参考题库及答案解析
- 苗族舞蹈课件
- 煤矿安全规程2025版解读
- 民航网络安全常识培训课件
- 石油化工设备维护检修规程通用设备12
- 《三角形的面积》教学设计方案
- GB/T 14667.1-1993粉末冶金铁基结构材料第一部分烧结铁、烧结碳钢、烧结铜钢、烧结铜钼钢
- 带状疱疹及带状疱疹后神经痛
评论
0/150
提交评论