版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、目錄1. 課程設(shè)計(jì)目的22. 設(shè)計(jì)題目分析22. 1題目簡(jiǎn)介22. 2設(shè)計(jì)要求及需求分析23. 課程設(shè)計(jì)內(nèi)容33. 1總體設(shè)計(jì)33.2計(jì)算器功能模塊設(shè)計(jì)43.3計(jì)算器算法流程設(shè)計(jì)43.4類(lèi)的設(shè)計(jì)53. 5代碼實(shí)現(xiàn):63.5設(shè)計(jì)結(jié)果與分析84. 設(shè)計(jì)心得與總結(jié)10參考文獻(xiàn):10附錄:1131課程設(shè)計(jì)目的通過(guò)課程設(shè)計(jì)把知識(shí)形成系統(tǒng),把自己所學(xué)的知識(shí)在實(shí)際問(wèn)題中加以運(yùn)用。如果自己編寫(xiě)的程序能夠給更多的人帶來(lái)方便,并且得到人們的好評(píng),那么自己編寫(xiě)的程序就可以實(shí)現(xiàn)商品化,形成產(chǎn)品給更多的人利用,并實(shí)現(xiàn)一定的商品價(jià)值。因此本次課程設(shè)計(jì)有目的有以下幾點(diǎn):(1)復(fù)習(xí)鞏固java語(yǔ)言的基礎(chǔ)知識(shí),進(jìn)一步加深對(duì)ja
2、va語(yǔ)言的理解和掌控。(2)提供一個(gè)既動(dòng)手又動(dòng)腦,獨(dú)立實(shí)踐的機(jī)會(huì),將課本上的理論知識(shí)和實(shí)際有機(jī)結(jié)合起來(lái),鍛煉我們的分析解決實(shí)際問(wèn)題的能力。提高我們適應(yīng)實(shí)際,實(shí)踐編程的能力。(3)培養(yǎng)我們?cè)陧?xiàng)目開(kāi)發(fā)中創(chuàng)新意識(shí)及能力,通過(guò)親身實(shí)踐,利用所學(xué)編寫(xiě)簡(jiǎn)單的面向?qū)ο蟪绦?,提高?duì)面向?qū)ο蠹癑AVA語(yǔ)言的理解。2設(shè)計(jì)題目分析2. 1題目簡(jiǎn)介設(shè)計(jì)一個(gè)圖形界面(GUI)的計(jì)算器應(yīng)用程序,完成簡(jiǎn)單的算術(shù)運(yùn)算、設(shè)計(jì)的計(jì)算器應(yīng)用程序可以完成家法、減法、乘法、除法。2.2設(shè)計(jì)要求及需求分析設(shè)計(jì)要求:由于現(xiàn)代用戶(hù)更傾向于由鼠標(biāo)方便操作的圖形用戶(hù)界面,所以我們采用GUI來(lái)實(shí)現(xiàn)計(jì)算器,并采用Swing組件,AWT事件處理等實(shí)現(xiàn)
3、具體功能。背景需求分析:在我們?nèi)粘I钪校?jì)算開(kāi)支、收入時(shí),大額數(shù)字或是多倍小數(shù)的計(jì)算都需要計(jì)算器的幫助,而在學(xué)習(xí)一些科目時(shí),也常常要處理數(shù)字。雖然現(xiàn)在的計(jì)算器價(jià)格比較低廉,但是功能過(guò)于簡(jiǎn)單的不能滿(mǎn)足個(gè)人需求,功能多的價(jià)格較貴,不僅操作不便,很多功能也根本用不到。所以我們想用自己所學(xué)設(shè)計(jì)開(kāi)發(fā)一個(gè)屬于自己的簡(jiǎn)單計(jì)算器來(lái)完成日常學(xué)習(xí)生活的需求。3課程設(shè)計(jì)內(nèi)容3. 1總體設(shè)計(jì)本應(yīng)用程序繼承自框架類(lèi)(Frame),此程序使用Frame布局管理器BorderLayout,將單行文本框加入到“North"區(qū)域,包含各種按鈕的面板Panelp加入到”Center"區(qū)域。包含各種按鈕的面板
4、Panelp采用4行4列的網(wǎng)格布局,然后將數(shù)字按鈕和運(yùn)算符按鈕以及控制按鈕添加到面板中。同時(shí)注冊(cè)按鈕事件監(jiān)聽(tīng)器。如:Buttonb二newButton();b.addActionListener(事件監(jiān)聽(tīng)器);事件監(jiān)聽(tīng)器中的事件處理方法voidactionPerformed(ActionEventevt)完成主要的按鈕事件的處理。事件處理分以下幾種情況:數(shù)字按鈕事件("0","1","2”8","9”)、運(yùn)算符按鈕事件(”+","-“,”*",”/”,”%”)、正負(fù)號(hào)按鈕事件(”+/-“)、小數(shù)
5、點(diǎn)按鈕事件(”.”)、等號(hào)按鈕事件(”=”)、求倒按鈕事件(”1/x”)、退格按鈕事件("退格”)、清楚按鈕事件(“C”)。觸發(fā)按鈕事件時(shí),要進(jìn)一步分析,是重新開(kāi)始計(jì)算時(shí)觸發(fā)的按鈕事件還是計(jì)算中間觸發(fā)的按鈕事件。計(jì)算器完成的是一個(gè)數(shù)學(xué)表達(dá)式,如:3+2,所以可以采用一個(gè)鏈表(LinkedList類(lèi)、來(lái)存儲(chǔ)數(shù)字或字符,如3,+,2分別存儲(chǔ)在鏈表中,最后運(yùn)算時(shí),可以一一取出來(lái)進(jìn)行運(yùn)算。計(jì)算器設(shè)計(jì)外形及結(jié)構(gòu)如下:系統(tǒng)總體設(shè)計(jì)框架Panel2PanellPanel:4*4的數(shù)字及運(yùn)算鍵Panel2:輸入及運(yùn)行結(jié)果顯示及倒退清空鍵3.2計(jì)算器功能模塊設(shè)計(jì)以下為標(biāo)準(zhǔn)計(jì)算器的基本功能:(1)加法兩
6、個(gè)數(shù)據(jù)進(jìn)行加操作,可以為小數(shù)。2)減法兩個(gè)數(shù)據(jù)進(jìn)行減操作,可以為負(fù)數(shù)相減。3)乘法兩個(gè)數(shù)相乘操作。4)除法兩個(gè)數(shù)相除操作。(5)清零清除顯示框的數(shù)據(jù)。具體的計(jì)算器功能模塊圖如下:33計(jì)算器算法流程設(shè)計(jì)計(jì)算器的程序設(shè)計(jì),必然有數(shù)據(jù)的輸入,當(dāng)中就包含運(yùn)算符和數(shù)字,都要通過(guò)計(jì)算器上的button按鈕選項(xiàng)按鍵輸入進(jìn)去,里面錄入的為字符型的數(shù)據(jù),若要進(jìn)行運(yùn)算,要將輸入的字符轉(zhuǎn)換成double型,以防運(yùn)算出錯(cuò)。實(shí)現(xiàn)計(jì)算器算法功能的流程圖如下所示:34類(lèi)的設(shè)計(jì)classjisuanextendsJFrameimplementsActionListener/jisuan是初始化界面,以及響應(yīng)用戶(hù)的操作。jis
7、uan是個(gè)內(nèi)部類(lèi),功能是進(jìn)行進(jìn)制的轉(zhuǎn)換。importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;這三項(xiàng)是系統(tǒng)初始時(shí)需要引入的主類(lèi)以達(dá)到完成界面的目的。35代碼實(shí)現(xiàn):1、引入主類(lèi):importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassjisuanextendsJFrameimplementsActionListener2、實(shí)現(xiàn)計(jì)算器界面的關(guān)閉與擴(kuò)展privatestaticfinallongserialVersionUID=-1690684721
8、93786457L;privateclassWindowCloserextendsWindowAdapterpublicvoidwindowClosing(WindowEventwe)System.exit(0);3、建立按鍵并為每個(gè)按鍵賦予相應(yīng)的字符inti;privatefinalStringstr="7","8","9","/","4","5","6","*","+"JButtonbuttons=newJBut
9、tonstr.length;JButtonreset=newJButton("CE");JTextFielddisplay=newJTextField("0");4、設(shè)計(jì)計(jì)算器界面publicjisuan()super("jisuan");JPanelpanel1=newJPanel(newGridLayout(4,4);for(i=0;i<str.length;i+)buttonsi=newJButton(stri);panel1.add(buttonsi);JPanelpanel2=newJPanel(newBorderLa
10、yout();panel2.add("Center",display);panel2.add("East",reset);getContentPane().setLayout(newBorderLayout();getContentPane().add("North",panel2);getContentPane().add("Center",panel1);5、為各個(gè)按鍵及顯示框添加事件監(jiān)聽(tīng)for(i=0;i<str.length;i+)buttonsi.addActionListener(this);/A
11、ddlistenerfor"reset"button,reset.addActionListener(this);/Addlistenerfor"display"button.display.addActionListener(this);/The"close"button"X".addWindowListener(newWindowCloser();/Initializethewindowsize.setSize(800,800);/Showthewindow./show();Usingshow()whileJD
12、Kversionisbelow1.5.setvisible(true);/Fitthecertainsize.pack();6、實(shí)現(xiàn)各個(gè)功能函數(shù)的調(diào)度publicvoidactionPerformed(ActionEvente)Objecttarget=e.getSource();Stringlabel=e.getActionCommand();if(target=reset)handleReset();elseif("0123456789.".indexOf(label)>0)handleNumber(label);elsehandleOperator(label)
13、;booleanisFirstDigit=true;publicvoidhandleNumber(Stringkey)if(isFirstDigit)display.setText(key);elseif(key.equals(".")&&(display.getText().indexOf(".")<0)display.setText(display.getText()+".");elseif(!key.equals(".")display.setText(display.getText()
14、+key);isFirstDigit=false;7、重置功能的實(shí)現(xiàn)publicvoidhandleReset()display.setText("0");isFirstDigit=true;operator="="doublenumber=0.0;Stringoperator="="8、運(yùn)算功能的實(shí)現(xiàn)publicvoidhandleOperator(Stringkey)if(operator.equals("+")number+=Double.vaLueO/(display.getText();elseif(op
15、erator.equals("-")number-=Double.valueOf(display.getText();elseif(operator.equals("*")number*=Double.valueOf(display.getText();elseif(operator.equals("/")number/=Double.valueOf(display.getText();elseif(operator.equals("=")number=Double.valueOf(display.getText(
16、);display.setText(String.valueOf(number);operator=key;isFirstDigit=true;publicstaticvoidmain(Stringargs)newjisuan();35設(shè)計(jì)結(jié)果與分析1、運(yùn)行的初始界面2、數(shù)字計(jì)算演示以計(jì)算(789+45)*23=19182為例,計(jì)算過(guò)程如下:輸入7891魚(yú)1ii&uan1=回£3834.0CE1£9i456123-10=+與45相加所得結(jié)果輸入23并相乘得到最終結(jié)果Bjisuan1=1丨回I0CE789i4&6*123-0=+點(diǎn)擊CE清零最后得到的結(jié)果為19
17、182,結(jié)果正確,計(jì)算器的各個(gè)功能均得以實(shí)現(xiàn)。4設(shè)計(jì)心得與總結(jié)通過(guò)此次的課程設(shè)計(jì)實(shí)踐,我們不但進(jìn)一步理解掌握了課上老師教授的知識(shí),而且通過(guò)查找資料學(xué)會(huì)了課上沒(méi)有的東西,進(jìn)一步理解了面向?qū)ο蟮暮x,發(fā)現(xiàn)了很多它比面向過(guò)程突出的地方,第一次接觸了圖形界面,初步了解了GUI方面的知識(shí)。在實(shí)踐中我們遇到了很多問(wèn)題,但我們都努力克服,并最終成功的完成了這次課程設(shè)計(jì)。通過(guò)編寫(xiě)這個(gè)相對(duì)復(fù)雜的程序,我們認(rèn)識(shí)解決實(shí)際問(wèn)題前應(yīng)先建立模型,再通過(guò)建立的模型使問(wèn)題簡(jiǎn)單化,從而解決問(wèn)題。并且這次編寫(xiě)的程序大部分是通過(guò)調(diào)用各包中的方法來(lái)實(shí)現(xiàn)的,這也讓我們充分理解了包和類(lèi)的調(diào)用關(guān)系。由于這次編寫(xiě)的程序比較復(fù)雜,所以不能一次
18、性編寫(xiě)、調(diào)試,也由此讓我們學(xué)會(huì)把程序分塊,逐個(gè)編寫(xiě)、調(diào)試。參考文獻(xiàn):2葉乃文,王丹面向?qū)ο蟪绦蛟O(shè)計(jì)M.清華大學(xué)出版社,2009.2邱桃榮,陳軼,馮纓.JAVA語(yǔ)言程序設(shè)計(jì)教程M.機(jī)械工業(yè)出版社,2009.2於東軍,楊靜宇,李千目,王國(guó)全.JAVA程序設(shè)計(jì)與應(yīng)用開(kāi)發(fā)M.清華大學(xué)出版社,2006.1113附錄:計(jì)算器的完整實(shí)現(xiàn)代碼:importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassjisuanextendsJFrameimplementsActionListenerprivatestaticfinallon
19、gseriaLVersionUID=-169068472193786457L;privateclassWindowCloserextendsWindowAdapterpublicvoidwindowClosing(WindowEventwe)System.exit(0);inti;/StringsforDigit&Operatorbuttons,privatefinalStringstr="7","8","9","/","4","5","6",&q
20、uot;*","+"/Buildbuttons.JButtonbuttons=newJButtonstr.length;/Forcancelorreset.JButtonreset=newJButton("CE");/Buildthetextfieldtoshowtheresult.JTextFielddisplay=newJTextField("0");publicjisuan()super("jisuan");/Addapanel.JPanelpanel1=newJPanel(newGridLayou
21、t(4,4);/panel1.setLayout(newGridLayout(4,4);for(i=0;i<str.length;i+)buttonsi=newJButton(stri);panel1.add(buttonsi);JPanelpanel2=newJPanel(newBorderLayout();/panel2.setLayout(newBorderLayout();panel2.add("Center",display);panel2.add("East",reset);/JPanelpanel3=newPanel();getCon
22、tentPane().setLayout(newBorderLayout();getContentPane().add("North",panel2);getContentPane().add("Center",panel1);/Addactionlistenerforeachdigit&operatorbutton.for(i=0;i<str.length;i+)buttonsi.addActionListener(this);/Addlistenerfor"reset"button.reset.addActionLi
23、stener(this);/Addlistenerfor"display"button.display.addActionListener(this);/The"close"button"X".addWindowListener(newWindowCloser();/Initializethewindowsize.setSize(800,800);/Showthewindow./show();Usingshow()whileJDKversionisbelow1.5.setvisible(true);/Fitthecertainsize
24、.pack();publicvoidactionPerformed(ActionEvente)Objecttarget=e.getSource();Stringlabel=e.getActionCommand();if(target=reset)handleReset();elseif("0123456789.".indexOf(label)>0)handleNumber(label);elsehandleOperator(label);/Isthefirstdigitpressed?booleanisFirstDigit=true;publicvoidhandleNumber(Stringkey)if(isFirstDigit)display.setText(key);elseif(key.equals(".")&&(display.getText().indexOf(".")&l
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年委托加工合同經(jīng)典版(三篇)
- 2024年工程審計(jì)工作總結(jié)參考樣本(三篇)
- 2024年學(xué)校教研活動(dòng)總結(jié)標(biāo)準(zhǔn)版本(四篇)
- 生 物2024-2025學(xué)年北師大版生物八年級(jí)上冊(cè)復(fù)習(xí)題(第15-18章)
- 2024年學(xué)校辦公室工作總結(jié)經(jīng)典版(三篇)
- 2024年小學(xué)教師個(gè)人工作總結(jié)范本(三篇)
- 2024年四年級(jí)班主任計(jì)劃范例(四篇)
- 2024年家具制造公司勞動(dòng)合同(四篇)
- 2024年小挖掘機(jī)租賃合同標(biāo)準(zhǔn)范文(二篇)
- 2024年小學(xué)少先隊(duì)輔導(dǎo)員學(xué)期工作計(jì)劃樣本(三篇)
- (一中)報(bào)送三定方案的請(qǐng)示
- 2018年榮縣中學(xué)科技節(jié)活動(dòng)方案
- 挑流消能計(jì)算書(shū)挑流消能計(jì)算書(shū)
- 四年級(jí)上冊(cè)語(yǔ)文生字表(帶拼音、部首、筆畫(huà)、組詞)
- 工程項(xiàng)目管理-英文課件-RiskManagement.ppt
- 手繪POP海報(bào)設(shè)計(jì)ppt課件
- 同花順公式函數(shù)手冊(cè)
- (完整版)采暖通風(fēng)與空氣調(diào)節(jié)設(shè)計(jì)規(guī)范
- 中歷史課堂教學(xué)的不同課型的基本方法和要求
- 中央空調(diào)管網(wǎng)改造工程施工組織設(shè)計(jì)
- 單位公務(wù)用車(chē)加油登記表格模板正式版
評(píng)論
0/150
提交評(píng)論