




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、中文摘要該程序是一個圖形界面的簡單java計算器,具有良好的界面,使用人員能快捷簡單的進行操作。即時準確地獲得需要的計算結(jié)果,充分降低了數(shù)字計算的難度和節(jié)約了時間,對人們的生活有一定的幫助??梢赃M行簡單的四則運算(加、減、乘、除,等)。其中c表示清零,界面簡潔使用方便。目錄一、課程設(shè)計任務(wù)及要求1二、需求分析2三、設(shè)計思路3四、詳細設(shè)計5五、運行調(diào)試與分析討論11六、設(shè)計體會與小結(jié)14七、參考文獻15一、課程設(shè)計任務(wù)及要求設(shè)計一個圖形界面(gui)的計算器應(yīng)用程序,完成簡單的算術(shù)運算、設(shè)計的計算器應(yīng)用程序可以完成家法、減法、乘法、除法和取余運算。且有小數(shù)點、正負號、求倒數(shù)、退格和清零功能。二、
2、需求分析在日常生活中經(jīng)常要用到計算器,比如科學(xué)計算器、數(shù)值計算、會計業(yè)務(wù)等,在applet中實現(xiàn)一個精巧實用的計算器,可以讓用戶在使用網(wǎng)站服務(wù)的同時,可以很方便地進行數(shù)據(jù)運算,可增加頁面的實用性,同時讓用戶的操作也更方便與快捷。本次實驗要求實現(xiàn)一個具有四則運算的計算器,擁有加、減、乘、除功能,并且還要求具備清零等功能。三、設(shè)計思路本應(yīng)用程序繼承自框架類(frame),此程序使用frame布局管理器borderlayout,將單行文本框加入到“north”區(qū)域,包含各種按鈕的面板panel p加入到”center”區(qū)域。 包含各種按鈕的面板panel p 采用4行5列的網(wǎng)格布局,然后將數(shù)字按鈕和
3、運算符按鈕以及控制按鈕添加到面板中。同時注冊按鈕事件監(jiān)聽器。如:button b=new button();b.addactionlistener(事件監(jiān)聽器);事件監(jiān)聽器中的事件處理方法void actionperformed(actionevent evt)完成主要的按鈕事件的處理。事件處理分以下幾種情況:數(shù)字按鈕事件(”0”,”1”,”2”8”,”9”)、運算符按鈕事件(”+”,”“,”*”,”/”,”%”)、正負號按鈕事件(”+/-“)、小數(shù)點按鈕事件(”.”)、等號按鈕事件(”)、求倒按鈕事件(”1/x”)、退格按鈕事件(”退格”)、清楚按鈕事件(“c”)。在事件處理。觸發(fā)按鈕事件時
4、,要進一步分析,是重新開始計算時觸發(fā)的按鈕事件還是計算中間觸發(fā)的按鈕事件。計算器完成的是一個數(shù)學(xué)表達式,如:32,所以可以采用一個鏈表(linkedlist類)來存儲數(shù)字或字符,如3,2分別存儲在鏈表中,最后運算時,可以一一取出來進行運算。本應(yīng)用程序中的數(shù)字按鈕和運算符按鈕可以分別定義以下兩個類的對象組件數(shù)字按鈕numberbutton類如下:import java.awt.*;import java.awt.event.*;import javax.swing.*;public class numberbutton extends button int number; public numb
5、erbutton(int number) super(+number); this.number=number; setforeground(color.blue); public int getnumber() return number; 運算符按鈕operationbutton類如下import java.awt.*;import java.awt.event.*;import javax.swing.*;public class operationbutton extends button string 運算符號; public operationbutton(string s) su
6、per(s); 運算符號=s; setforeground(color.red); public string get運算符號() return 運算符號; 四、詳細設(shè)計本程序主要包含兩部分分別為主類和附類,程序詳細設(shè)計如下:1. 數(shù)據(jù)分析計算器的程序設(shè)計,必然有數(shù)據(jù)的輸入,當中就包含運算符和數(shù)字,都要通過計算器上的button按鈕選項按鍵輸入進去,里面錄入的為字符型的數(shù)據(jù),若要進行運算,要將輸入的字符轉(zhuǎn)換成double型,以防運算出錯。2. 類的設(shè)計class calculator extends jframe implements actionlistener/calculator 是初始
7、化界面,以及響應(yīng)用戶的操作。calculate是個內(nèi)部類,功能是進行進制的轉(zhuǎn)換。3. 功能設(shè)計數(shù)字鍵按鈕,輸入所需計算的數(shù)字。算數(shù)符按鈕,輸入所需的算數(shù)符號。等號按鈕,輸出運算的結(jié)果。c按鈕,執(zhí)行清零。 4. 程序代碼主類:import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;class swingcalculator public static void main(string args) jframe frame = new calculator(); frame.
8、setdefaultcloseoperation(jframe.exit_on_close); frame.setvisible(true); 附類:import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*; class calculator extends jframe private final font bigger_font = new font(monspaced, font.plain, 20); private jtextfield textfield; pr
9、ivate boolean number = true; private string equalop = =; private calculatorop op = new calculatorop(); public calculator() textfield = new jtextfield(0, 12); textfield.sethorizontalalignment(jtextfield.right); textfield.setfont(bigger_font); actionlistener numberlistener = new numberlistener(); stri
10、ng buttonorder = 1234567890 ; jpanel buttonpanel = new jpanel(); buttonpanel.setlayout(new gridlayout(4, 4, 4, 4); for (int i = 0; i buttonorder.length(); i+) string key = buttonorder.substring(i, i+1); if (key.equals( ) buttonpanel.add(new jlabel(); else jbutton button = new jbutton(key); button.ad
11、dactionlistener(numberlistener); button.setfont(bigger_font);buttonpanel.add(button); actionlistener operatorlistener = new operatorlistener(); jpanel panel = new jpanel(); panel.setlayout(new gridlayout(4, 4, 4, 4); string oporder = +, -, *, /,=,c; for (int i = 0; i oporder.length; i+) jbutton butt
12、on = new jbutton(oporderi); button.addactionlistener(operatorlistener); button.setfont(bigger_font);panel.add(button); jpanel pan = new jpanel(); pan.setlayout(new borderlayout(4, 4); pan.add(textfield, borderlayout.north ); pan.add(buttonpanel , borderlayout.center); pan.add(panel , borderlayout.ea
13、st ); this.setcontentpane(pan); this.pack(); this.settitle(calculator); this.setresizable(false); private void action() number = true; textfield.settext(0); equalop = =; op.settotal(0);class operatorlistener implements actionlistener public void actionperformed(actionevent e) if (number) action(); t
14、extfield.settext(0); else number = true; string displaytext = textfield.gettext(); if (equalop.equals(=) op.settotal(displaytext); else if (equalop.equals(+) op.add(displaytext); else if (equalop.equals(-) op.subtract(displaytext); else if (equalop.equals(*) op.multiply(displaytext); else if (equalo
15、p.equals(/) op.divide(displaytext); textfield.settext( + op.gettotalstring(); equalop = e.getactioncommand(); class numberlistener implements actionlistener public void actionperformed(actionevent event) string digit = event.getactioncommand(); if (number) textfield.settext(digit); number = false; e
16、lse textfield.settext(textfield.gettext() + digit); public class calculatorop private int total; public calculatorop() total = 0; public string gettotalstring() return +total; public void settotal(string n) total = converttonumber(n); public void add(string n) total += converttonumber(n); public voi
17、d subtract(string n) total -= converttonumber(n); public void multiply(string n) total *= converttonumber(n); public void divide(string n) total /= converttonumber(n); private int converttonumber(string n) return integer.parseint(n); 五、運行調(diào)試與分析討論程序運行中所遇到的錯誤:例如:程序在運行中遇到很多的困難和錯誤,上述為列舉錯誤中的兩個,實際上程序在剛開始編譯完成時遇到很多的錯誤,在通過自身努力和同學(xué)們的幫助下錯誤得以一一解決。以下就不一一舉例所遇到的錯誤了。程序運行如下:運行狀況如下:例如 運行39先輸入3,在按*,在輸入9 然后按=號,輸出結(jié)果:六、設(shè)計體會與小結(jié)本次的java課程設(shè)計使我對java的知識有了更深一步的了解,同時在編譯程序的時候?qū)χR系統(tǒng)進行了更加全面的梳理,并通復(fù)習,和同學(xué)的幫助,終于熟練的掌握
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 19《大象的耳朵》第二課時教學(xué)設(shè)計-2024-2025學(xué)年二年級下冊語文統(tǒng)編版
- Module 6 Unit 2 Happy Mid-Autumn Festival!(教學(xué)設(shè)計)-2024-2025學(xué)年外研版(三起) 四年級上冊
- 10 父母多愛我(教學(xué)設(shè)計)-2024-2025學(xué)年道德與法治三年級上冊統(tǒng)編版
- 基坑支護合同范本
- 船舶設(shè)備采購合同范本
- 3《書的歷史》教學(xué)設(shè)計-2023-2024學(xué)年科學(xué)二年級上冊教科版
- 8《田忌賽馬》(教學(xué)設(shè)計)-2024-2025學(xué)年人教版四年級上冊數(shù)學(xué)
- 政策資金申報合同范本
- Module 6 Problems Unit 1 教學(xué)設(shè)計 2024-2025學(xué)年外研版英語九年級上冊
- 礦石購銷居間合同范本
- 2024年度工業(yè)自動化設(shè)備維護保養(yǎng)及上門維修合同3篇
- 2025年公司總經(jīng)理年終總結(jié)工作報告
- 安徽省“江淮十?!?024屆高考化學(xué)一模試卷含解析
- 圖書外借服務(wù)計劃
- 軟考系統(tǒng)集成項目管理工程師教程完整版
- 危險性較大的分部分項工程清單和安全管理措施范文
- 2025屆高三歷史二輪復(fù)習教學(xué)計劃
- 2024-2025年江蘇專轉(zhuǎn)本英語歷年真題(含答案)
- 永磁滾筒設(shè)備操作規(guī)程
- 裝配式混凝土結(jié)構(gòu)檢測技術(shù)規(guī)程
- 裝修合同違約解除通知書
評論
0/150
提交評論