




已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
北京石油化工學(xué)院信息工程學(xué)院java實 驗 報 告(2010/2011 學(xué)年 第 1 學(xué)期)課程名稱Java語言程序設(shè)計任課教師張世博指導(dǎo)教師張世博小組成員馬嘉良 彭博 王鵬學(xué) 號馬090700彭090701 王090705年 級計算機(jī)092專 業(yè)計算機(jī)科學(xué)與技術(shù)綜合成績實驗名稱計算器指導(dǎo)教師張世博一、 實驗?zāi)康暮鸵?. 計算器程序(界面、事件編程)2. 處理輸入數(shù)據(jù)的異常3. 記錄用戶的計算操作(包括正常計算與異常錯誤)到本地txt文件中,并記錄時間,采用追加的方式。4. 10+4=142010-11-6 13:23:95. 9/3=3 2010-11-12 21:19:126. 可發(fā)揮主觀能動性添加其他內(nèi)容作為加分項。7. 每三人(不超過三人)一個小組8. 采用程序現(xiàn)場講解、提問及部分編程的考察方式9. 杜絕全盤拷貝!10. 驗收時,請備好本小組的實驗報告。四、實驗小結(jié)(包括問題和解決方法、心得體會、意見與建議等) 通過本次試驗,我們從中學(xué)習(xí)到了很多,復(fù)習(xí)了許多java的基本知識,培養(yǎng)了我們團(tuán)隊合作的精神,增進(jìn)了我們之間的感情,此程序雖然已完成基本操作與少許額外的功能,但是還有諸多不足之處,在編程中對時間的輸出感到比較困難,在團(tuán)隊人員的共同努力下,查閱許多資料后,終于解決了這一難題,鍛煉了團(tuán)隊成員的堅忍不拔的精神,此次試驗讓我們在以后的學(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; / 幫助運算的布爾變量 private double storedNumber; / 目前的結(jié)果 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; / 表示當(dāng)前的數(shù)是否有小數(shù)點 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; / 表示當(dāng)前的數(shù)是否有小數(shù)點 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; / 表示當(dāng)前的數(shù)是否有小數(shù)點 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 =
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- DB14-T 1598-2025 棗園間作芝麻種植技術(shù)規(guī)程
- 傳統(tǒng)中醫(yī)養(yǎng)生術(shù)師承合同范本
- 智能家居產(chǎn)業(yè)園區(qū)場地使用權(quán)及配套設(shè)施協(xié)議
- 車輛質(zhì)押貸款合同范本(含車輛停放責(zé)任條款)
- Brand KPIs for hotels:Mayan Palace in Mexico-英文培訓(xùn)課件2025.5
- 2025年初中物理八年級下冊(滬科版)教學(xué)課件 第八章 第二節(jié)
- 2025年兒童心理學(xué)專業(yè)研究生入學(xué)考試試題及答案
- 檔案智能檢索策略
- 叮當(dāng)快藥品牌及發(fā)布會傳播方案
- 餐廳服務(wù)員勞動權(quán)益與績效獎金合同范本
- 奔馳購車定金合同模板
- 廣東省佛山市南海區(qū)三水區(qū)2022-2023學(xué)年六年級下學(xué)期期末考試英語試卷
- (作文指導(dǎo))狀動人之景抒不盡之情-“沉浸式”課堂作文教學(xué)之環(huán)境描寫
- 脛骨骨折課件
- Unit 1 A New Start Using languages (Basic sentence structures) 教學(xué)設(shè)計-2024-2025學(xué)年高中英語外研版(2019)必修第一冊
- 四川省高職單招餐飲類《中式烹飪技藝》復(fù)習(xí)備考試題庫-上(選擇題)
- 鋼結(jié)構(gòu)廠房施工組織設(shè)計
- 幼兒園退學(xué)退費申請范文
- 診斷學(xué)之全身體格檢查
- 農(nóng)業(yè)標(biāo)準(zhǔn)化與產(chǎn)業(yè)質(zhì)量提升
- 國家基本藥物(中成藥)臨床應(yīng)用指南
評論
0/150
提交評論