java計(jì)算器實(shí)驗(yàn)報(bào)告馬嘉良彭博王鵬.doc_第1頁(yè)
java計(jì)算器實(shí)驗(yàn)報(bào)告馬嘉良彭博王鵬.doc_第2頁(yè)
java計(jì)算器實(shí)驗(yàn)報(bào)告馬嘉良彭博王鵬.doc_第3頁(yè)
java計(jì)算器實(shí)驗(yàn)報(bào)告馬嘉良彭博王鵬.doc_第4頁(yè)
java計(jì)算器實(shí)驗(yàn)報(bào)告馬嘉良彭博王鵬.doc_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

北京石油化工學(xué)院信息工程學(xué)院java實(shí) 驗(yàn) 報(bào) 告(2010/2011 學(xué)年 第 1 學(xué)期)課程名稱(chēng)Java語(yǔ)言程序設(shè)計(jì)任課教師張世博指導(dǎo)教師張世博小組成員馬嘉良 彭博 王鵬學(xué) 號(hào)馬090700彭090701 王090705年 級(jí)計(jì)算機(jī)092專(zhuān) 業(yè)計(jì)算機(jī)科學(xué)與技術(shù)綜合成績(jī)實(shí)驗(yàn)名稱(chēng)計(jì)算器指導(dǎo)教師張世博一、 實(shí)驗(yàn)?zāi)康暮鸵?. 計(jì)算器程序(界面、事件編程)2. 處理輸入數(shù)據(jù)的異常3. 記錄用戶的計(jì)算操作(包括正常計(jì)算與異常錯(cuò)誤)到本地txt文件中,并記錄時(shí)間,采用追加的方式。4. 10+4=142010-11-6 13:23:95. 9/3=3 2010-11-12 21:19:126. 可發(fā)揮主觀能動(dòng)性添加其他內(nèi)容作為加分項(xiàng)。7. 每三人(不超過(guò)三人)一個(gè)小組8. 采用程序現(xiàn)場(chǎng)講解、提問(wèn)及部分編程的考察方式9. 杜絕全盤(pán)拷貝!10. 驗(yàn)收時(shí),請(qǐng)備好本小組的實(shí)驗(yàn)報(bào)告。四、實(shí)驗(yàn)小結(jié)(包括問(wèn)題和解決方法、心得體會(huì)、意見(jiàn)與建議等) 通過(guò)本次試驗(yàn),我們從中學(xué)習(xí)到了很多,復(fù)習(xí)了許多java的基本知識(shí),培養(yǎng)了我們團(tuán)隊(duì)合作的精神,增進(jìn)了我們之間的感情,此程序雖然已完成基本操作與少許額外的功能,但是還有諸多不足之處,在編程中對(duì)時(shí)間的輸出感到比較困難,在團(tuán)隊(duì)人員的共同努力下,查閱許多資料后,終于解決了這一難題,鍛煉了團(tuán)隊(duì)成員的堅(jiān)忍不拔的精神,此次試驗(yàn)讓我們?cè)谝院蟮膶W(xué)習(xí)生活中受益良多。程序代碼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; / 幫助運(yùn)算的布爾變量 private double storedNumber; / 目前的結(jié)果 private char lastOperator; / 上一運(yùn)算符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; / 表示當(dāng)前的數(shù)是否有小數(shù)點(diǎn) operated = false; / 表示任意運(yùn)算符是否被按下 equaled = false; / 表示等號(hào)是否被按下 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; / 表示當(dāng)前的數(shù)是否有小數(shù)點(diǎn) operated = false; / 表示任意運(yùn)算符是否被按下 equaled = false; / 表示等號(hào)是否被按下 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; / 表示當(dāng)前的數(shù)是否有小數(shù)點(diǎn) operated = false; / 表示任意運(yùn)算符是否被按下 equaled = false; / 表示等號(hào)是否被按下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 =

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論