




已閱讀5頁(yè),還剩28頁(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)介
JAVA計(jì)算器程序報(bào)告(封面) JAVA技術(shù)大作業(yè) 院 (系) 電氣與信息工程學(xué)院 專業(yè)班級(jí) 計(jì)科普0902 學(xué)生姓名 XX 學(xué)號(hào) XX 成績(jī) 2011年5月6日 保存計(jì)算過(guò)程的計(jì)算器 目 錄 1 概 述 . 1 1.1 課程設(shè)計(jì)目的 . 1 1.2 課程設(shè)計(jì)內(nèi)容 . 1 2 系統(tǒng)需求分析 . 1 2.1 系統(tǒng)目標(biāo) . 1 2.2 主體功能 . 1 2.3 開(kāi)發(fā)環(huán)境 . 1 3 系統(tǒng)概要設(shè)計(jì) . 1 3.1 系統(tǒng)的功能模塊劃分 . 1 3.2 系統(tǒng)流程圖 . 1 4系統(tǒng)詳細(xì)設(shè)計(jì) . 2 5 測(cè)試 . 6 5.1 測(cè)試方案 . 6 5.2 測(cè)試結(jié)果 . 6 6 小結(jié) . 6 參考文獻(xiàn). 8 附 錄. 9 附錄1 源程序清單 . 9 保存計(jì)算過(guò)程的計(jì)算器 1 概 述 1.1 課程設(shè)計(jì)目的 1.掌握J(rèn)AVA語(yǔ)言編程的基礎(chǔ)知識(shí)并能熟練運(yùn)用。 2.熟悉類聲明與對(duì)象的使用。 3.理解委托時(shí)間處理模型。 4.了解JAVA語(yǔ)言的圖形用戶界面JAVAS WING的設(shè)計(jì)知識(shí)。 5.運(yùn)用JAVA SWING編寫簡(jiǎn)單計(jì)算器程序,并實(shí)現(xiàn)其功能 。 1.2 課程設(shè)計(jì)內(nèi)容 設(shè)計(jì)GUI界面的計(jì)算機(jī)程序,用戶可以通過(guò)鼠標(biāo)依次輸入?yún)⒓佑?jì)算的數(shù)值,進(jìn)行加,減,乘,除,等混合運(yùn)算,并對(duì)用戶的計(jì)算操作進(jìn)行保存顯示。 2 系統(tǒng)需求分析 2.1 系統(tǒng)目標(biāo) 一個(gè)簡(jiǎn)單的計(jì)算器程序。用戶可以利用鼠標(biāo)點(diǎn)擊數(shù)值或操作符按鍵完成計(jì)算的輸入,計(jì)算的過(guò)程記錄和結(jié)果將被顯示在窗口上部的文本框中。 2.2 主體功能 1.按下數(shù)字鍵在文本框上會(huì)顯示數(shù)字,這是計(jì)算器最基本的功能 2.在任何時(shí)候按下“+-”鍵,計(jì)算器文本框上的數(shù)字置反 3.上面一個(gè)文本框顯示計(jì)算過(guò)程,下面一個(gè)文本框顯示輸入的數(shù)字 4.當(dāng)按下的運(yùn)算符號(hào)時(shí)前面已經(jīng)按下過(guò)運(yùn)算符號(hào)時(shí),下面一個(gè)文本框顯示上一個(gè)運(yùn)算符號(hào)以及兩個(gè)數(shù)之間的運(yùn)算結(jié)果。 5. 按下清除“C”鍵,數(shù)據(jù)被全部清除。 2.3 開(kāi)發(fā)環(huán)境 JDK,eclips 3 系統(tǒng)概要設(shè)計(jì) 3.1 系統(tǒng)的功能模塊劃分 1(主界面模塊 2(事件相應(yīng)模塊 3.2 系統(tǒng)流程圖 1 保存計(jì)算過(guò)程的計(jì)算器 4系統(tǒng)詳細(xì)設(shè)計(jì) 1(主界面模塊詳細(xì)設(shè)計(jì) 頂層容器:ComputerPad類實(shí)現(xiàn)主窗口,頂層容器中包含了1個(gè)panel容器,1個(gè)resultshow文本框,1個(gè)process文本框。 各組件作用:其中panel容器用于放數(shù)字按鈕,小數(shù)點(diǎn),運(yùn)算符按鈕,清零按鈕,正負(fù)轉(zhuǎn)換按鈕以及退格按鈕。兩個(gè)文本框一個(gè)用于顯示輸入數(shù)據(jù)和計(jì)算結(jié)果,另一個(gè)用于顯示計(jì)算過(guò)程。 布局方式:頂層容器用BroadLayOut布局,process和resultshow文本框以及panel容器分別放在定岑容器的noth,center以及south面,panel容器 用GridLayOut布局 部分代碼如下 數(shù)字按鈕類:實(shí)現(xiàn)數(shù)字按鈕的定義 public class NumberButton extends Button 運(yùn)算符按鈕類:實(shí)現(xiàn)運(yùn)算符號(hào)的定義 public class OperationButton extends Button 主窗口類實(shí)現(xiàn)監(jiān)視器的注冊(cè),窗口布局,組件顏色大小等的設(shè)置 public class ComputerPad extends Frame implements ActionListener NumberButton numberButton; OperationButton oprationButton; Button 小數(shù)點(diǎn)按鈕,正負(fù)號(hào)按鈕,退格按鈕, 求倒數(shù)按鈕,等號(hào)按鈕,清零按鈕; 2 保存計(jì)算過(guò)程的計(jì)算器 Panel panel; JTextField resultShow; JTextField process; String 運(yùn)算符號(hào)=+,-,*,/; LinkedList 鏈表; boolean 是否按下等號(hào)=false; public ComputerPad() super(計(jì)算器); 鏈表=new LinkedList(); /進(jìn)行組件的聲明,初始化設(shè)置,注冊(cè)監(jiān)視器 numberButton=new NumberButton10; for(int i=0;i=9;i+) numberButtoni=new NumberButton(i); numberButtoni.addActionListener(this); oprationButton=new OperationButton4; for(int i=0;i4;i+) oprationButtoni=new OperationButton(運(yùn)算符號(hào)i); oprationButtoni.addActionListener(this); 小數(shù)點(diǎn)按鈕=new Button(.); 正負(fù)號(hào)按鈕 =new Button(+/-); 等號(hào)按鈕=new Button(=); 求倒數(shù)按鈕=new Button(1/x); 退格按鈕=new Button(退格); 清零按鈕=new Button(C); 清零按鈕.setForeground(Color.red); 退格按鈕.setForeground(Color.red); 等號(hào)按鈕.setForeground(Color.red); 求倒數(shù)按鈕.setForeground(Color.blue); 正負(fù)號(hào)按鈕.setForeground(Color.blue); 小數(shù)點(diǎn)按鈕.setForeground(Color.blue); 退格按鈕.addActionListener(this); 清零按鈕.addActionListener(this); 等號(hào)按鈕.addActionListener(this); 小數(shù)點(diǎn)按鈕.addActionListener(this); 正負(fù)號(hào)按鈕.addActionListener(this); 求倒數(shù)按鈕.addActionListener(this); /對(duì)顯示過(guò)程的文本框進(jìn)行設(shè)置 process=new JTextField(10); process.setHorizontalAlignment(JTextField.LEFT); process.setForeground(Color.blue); process.setFont(new Font(TimesRoman,Font.PLAIN,14); process.setBorder(new SoftBevelBorder(BevelBorder.LOWERED); 3 保存計(jì)算過(guò)程的計(jì)算器 process.setBackground(Color.white); process.setEditable(false); /對(duì)顯示輸入值以及運(yùn)算結(jié)果的文本框進(jìn)行設(shè)置 resultShow=new JTextField(10); resultShow.setHorizontalAlignment(JTextField.RIGHT); resultShow.setForeground(Color.blue); resultShow.setFont(new Font(TimesRoman,Font.PLAIN,14); resultShow.setBorder(new SoftBevelBorder(BevelBorder.LOWERED); resultShow.setBackground(Color.white); resultShow.setEditable(false); /進(jìn)行主窗口布局 panel=new Panel(); panel.setLayout(new GridLayout(5,4); Panel.add(清零按鈕); Panel.add(退格按鈕); panel.add(numberButton1); panel.add(numberButton2); panel.add(numberButton3); Panel.add(numberButton4); panel.add(numberButton5); panel.add(numberButton6); Panel.add(numberButton7); panel.add(numberButton8); panel.add(numberButton9); Panel.add(numberButton0); Panel.add(oprationButton0); panel.add(oprationButton1); panel.add(oprationButton2); panel.add(oprationButton3); panel.add(求倒數(shù)按鈕); panel.add(正負(fù)號(hào)按鈕); panel.add(小數(shù)點(diǎn)按鈕); Panel.add(等號(hào)按鈕); add(panel,BorderLayout.SOUTH); add(resultShow,BorderLayout.CENTER); add(process,BorderLayout.NORTH); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); ); setVisible(true); setBounds(100,50,170,190); setResizable(false); validate(); 2(事件響應(yīng)模塊詳細(xì)設(shè)計(jì) 4 保存計(jì)算過(guò)程的計(jì)算器 模塊功能:事件響應(yīng)模塊用于實(shí)現(xiàn)數(shù)據(jù)輸入,保存,運(yùn)算以及顯示。 具體實(shí)現(xiàn):將主窗口作為窗口中所有組件的監(jiān)視器 ,鏈表用來(lái)存儲(chǔ)輸入的數(shù)字以及操作符以便運(yùn)算時(shí)提取出來(lái),監(jiān)視器用if,else if語(yǔ)句 分?jǐn)?shù)字按鈕,小數(shù)點(diǎn),運(yùn)算符按鈕,清零按鈕,正負(fù)轉(zhuǎn)換按鈕以及退格按鈕6種情況進(jìn)行相應(yīng)處理,其中除了清零按鈕每種情況又分成鏈表長(zhǎng)度為1,2,3作相應(yīng)的處理。 事件響應(yīng)模塊的框架代碼如下 public void actionPerformed(ActionEvent e) 按下數(shù)字按鈕時(shí)的事件處理 if(e.getSource() instanceof NumberButton) NumberButton b=(NumberButton)e.getSource(); if(鏈表.size()=0) else if(鏈表.size()=1&是否按下等號(hào)=false) else if(鏈表.size()=1&是否按下等號(hào)=true) else if(鏈表.size()=2) else if(鏈表.size()=3) /按下運(yùn)算符號(hào)時(shí)的事件處理 else if(e.getSource() instanceof OperationButton) OperationButton b=(OperationButton)e.getSource(); if(鏈表.size()=1) else if(鏈表.size()=2) else if(鏈表.size()=3) /按下等號(hào)后的事件處理 else if(e.getSource()=等號(hào)按鈕) 是否按下等號(hào)=true; if(鏈表.size()=1|鏈表.size()=2) else if(鏈表.size()=3) /按下小數(shù)點(diǎn)后的事件處理 else if(e.getSource()=小數(shù)點(diǎn)按鈕) if(鏈表.size()=0) else if(鏈表.size()=1) else if(鏈表.size()=3) /按下退格鍵后的事件處理 else if(e.getSource()=退格按鈕) if(鏈表.size()=1) else if(鏈表.size()=3) /按下正負(fù)號(hào)后的事件處理 5 保存計(jì)算過(guò)程的計(jì)算器 else if(e.getSource()=正負(fù)號(hào)按鈕) if(鏈表.size()=1) else if(鏈表.size()=3) /按下求倒數(shù)按鈕后的事件處理 else if(e.getSource()=求倒數(shù)按鈕) if(鏈表.size()=1|鏈表.size()=2) else if(鏈表.size()=3) /按下清零按鈕后的事件處理 else if(e.getSource()=清零按鈕) 5 測(cè)試 5.1 測(cè)試方案 進(jìn)行各種情況的輸入檢測(cè)進(jìn)行加,減,乘,除運(yùn)算,數(shù)字很大,小數(shù),整數(shù)以及先按下“=”等非法輸入情況。 5.2 測(cè)試結(jié)果 程序正常的響應(yīng)按鈕事件,能顯示計(jì)算過(guò)程,當(dāng)運(yùn)算結(jié)果很大時(shí)用科學(xué)記數(shù)法顯示運(yùn)算結(jié)果 6 小結(jié) 在做本項(xiàng)目是時(shí)候,會(huì)遇到很多問(wèn)題,最大的問(wèn)題的如何保存已經(jīng)輸入的數(shù)字6 保存計(jì)算過(guò)程的計(jì)算器 或者符號(hào)進(jìn)行運(yùn)算,如何顯示運(yùn)算過(guò)程,經(jīng)過(guò)多次研究和查詢發(fā)現(xiàn)運(yùn)可以運(yùn)用鏈表進(jìn)行存儲(chǔ)和提取數(shù)據(jù),用棧也是可以的。 此次課程設(shè)計(jì)讓我更了解熟悉了Java中的圖形用戶界面和它的編程方式。在完成課題的過(guò)程中也不斷充實(shí)了自己,學(xué)習(xí)到了很多以前沒(méi)有學(xué)習(xí)到的知識(shí),收獲很大。最大的收獲是在彎完成過(guò)程中培養(yǎng)的解決問(wèn)題的能力,在做項(xiàng)目時(shí)必然會(huì)遇到困難,會(huì)有不會(huì)的東西,重要的不是現(xiàn)在會(huì)不會(huì),而是遇到問(wèn)題知道如何找到解決的途徑。還使我對(duì)所學(xué)知識(shí)能夠融會(huì)貫通,又不斷豐富了新知識(shí)。Java計(jì)算器設(shè)計(jì)使得我們對(duì)所學(xué)的專業(yè)課有了更為深刻的認(rèn)識(shí),使得知識(shí)得到了鞏固和提高,最后,我想對(duì)教我JAVA編程的易軍老師表示衷心的感謝 7 保存計(jì)算過(guò)程的計(jì)算器 參考文獻(xiàn) 1耿祥義,張躍平. Java2實(shí)用教程(第三版)M . 北京:清華大學(xué)出版社, 2006 2耿祥義. Java課程設(shè)計(jì)(第三版)M . 北京:清華大學(xué)出版社, 2004 3張躍平.Java2實(shí)用教程實(shí)驗(yàn)指導(dǎo)與習(xí)題解答(第三版)M. 北京:清華大學(xué)出版社, 2004 4葉核亞.Java程序設(shè)計(jì)實(shí)用教程M. 北京:電子工業(yè)出版社。 8 保存計(jì)算過(guò)程的計(jì)算器 附 錄 附錄1 源程序清單 NumberButton.java import java.awt.*; import java.awt.event.*; import javax.swing.*; public class NumberButton extends Button int number; public NumberButton(int number) super(+number); this.number=number; setForeground(Color.blue); public int getNumber() return number; OperateButton.java import java.awt.*; import java.awt.event.*; import javax.swing.*; public class OperationButton extends Button String 運(yùn)算符號(hào); public OperationButton(String s) super(s); 運(yùn)算符號(hào)=s; setForeground(Color.red); public String get運(yùn)算符號(hào)() return 運(yùn)算符號(hào); ComputerPad.java import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; import java.util.LinkedList; import java.text.NumberFormat; 9 保存計(jì)算過(guò)程的計(jì)算器 public class ComputerPad extends Frame implements ActionListener NumberButton numberButton; OperationButton oprationButton; Button 小數(shù)點(diǎn)按鈕,正負(fù)號(hào)按鈕,退格按鈕, 求倒數(shù)按鈕,等號(hào)按鈕,清零按鈕; Panel panel; JTextField resultShow; JTextField process; String 運(yùn)算符號(hào)=+,-,*,/; LinkedList 鏈表; boolean 是否按下等號(hào)=false; public ComputerPad() super(計(jì)算器); 鏈表=new LinkedList(); numberButton=new NumberButton10; for(int i=0;i=9;i+) numberButtoni=new NumberButton(i); numberButtoni.addActionListener(this); oprationButton=new OperationButton4; for(int i=0;i=1) num=num.substring(0,num.length()-1); 鏈表.set(0,num); resultShow.setText(num); process.setText(+(String)鏈表.get(0) ); else 鏈表.removeLast(); resultShow.setText(0); else if(鏈表.size()=3) String num=(String)鏈表.getLast(); if(num.length()=1) num=num.substring(0,num.length()-1); 鏈表.set(2,num); resultShow.setText(num); process.setText(+(String)鏈表.get(0)+(String)鏈表.get(1)+(String)鏈表.get(2) ); else 鏈表.removeLast(); resultShow.setText(0); 16 保存計(jì)算過(guò)程的計(jì)算器 else if(e.getSource()=正負(fù)號(hào)按鈕) if(鏈表.size()=1) String number1=(String)鏈表.getFirst(); try double d=Double.parseDouble(number1); d=-1*d; String str=String.valueOf(d); 鏈表.set(0,str); resultShow.setText(str); process.setText(str); catch(Exception ee) else if(鏈表.size()=3) String number2=(String)鏈表.getLast(); try double d=Double.parseDouble(number2); d=-1*d
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 房屋加固工程場(chǎng)地平整技術(shù)保證措施
- 寺廟維修項(xiàng)目管理辦法
- 婁底企業(yè)年金管理辦法
- 舞蹈培訓(xùn)課程管理辦法
- 影院放映電影管理辦法
- 2025年拍賣師職業(yè)資格考試專業(yè)題集:拍賣師職業(yè)素養(yǎng)與道德規(guī)范
- 2025年茶藝師職業(yè)技能鑒定考試大綱解析試卷
- 2025年防水工(初級(jí))職業(yè)技能鑒定試卷:防水施工綠色施工與節(jié)能
- 經(jīng)管案例授權(quán)管理辦法
- 2025年車工(助理技師)安全生產(chǎn)規(guī)范鑒定試卷
- 2025廣西公需科目真題續(xù)集(附答案)
- 2025年 浙江“三支一扶”招募筆試考試試卷附答案
- 2025年全國(guó)統(tǒng)一高考數(shù)學(xué)試卷(全國(guó)一卷)含答案
- T/CECS 10214-2022鋼面鎂質(zhì)復(fù)合風(fēng)管
- DL∕T 5776-2018 水平定向鉆敷設(shè)電力管線技術(shù)規(guī)定
- (正式版)SH∕T 3548-2024 石油化工涂料防腐蝕工程施工及驗(yàn)收規(guī)范
- (高清版)DZT 0432-2023 煤炭與煤層氣礦產(chǎn)綜合勘查規(guī)范
- 外管廊管道方案
- 小學(xué)年級(jí)組長(zhǎng)工作總結(jié)二年級(jí)
- 員工反違章承諾書
- 菱形網(wǎng)格護(hù)坡施工方案
評(píng)論
0/150
提交評(píng)論