版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
-.z.課程設(shè)計報告課程名稱"Java工程實訓(xùn)"課程設(shè)計設(shè)計名稱基于java計算器的設(shè)計與實現(xiàn)學(xué)生**學(xué)生**學(xué)生**學(xué)生**學(xué)生**學(xué)生**學(xué)生**學(xué)生**學(xué)生**學(xué)生**指導(dǎo)教師呂淑芳考核成績信息工程系二〇一七年六月目錄TOC\o"1-3"\h\u120241、前言2249881.1設(shè)計目的及思路2186301.2功能模塊設(shè)計260741.3系統(tǒng)功能圖3226492、計算器的設(shè)計與實現(xiàn)373253、計算器演示4203464、總結(jié)與體會及討論分析7168215、參考文獻928802附件: 108657程序源代碼101、前言1.1設(shè)計目的及思路通過本課程設(shè)計使學(xué)生能夠較全面的掌握面向?qū)ο蟪绦蛟O(shè)計的有關(guān)概念和開發(fā)方法,以便能較全面地理解、掌握和綜合運用所學(xué)的知識,提高自身的編程能力。利用JavaApplet圖形界面首先開場設(shè)計一個計算器的界面,定義計算器所需要的按鈕并賦給其按鈕名稱,使得使用計算器時簡單明了,清晰可見,操作輕松。給各個按鈕進展算法,利用鼠標(biāo)點擊事件,當(dāng)鼠標(biāo)點擊*個按鈕時就開場執(zhí)行那個按鈕所定義的算法,生成數(shù)據(jù)并顯示。除數(shù)字的輸入為直接進展輸入外,其他運算例如+、-、*、/、開平方等算法要求計算時通過內(nèi)部較為復(fù)雜的運算將結(jié)果顯示在顯示屏上。至于其中的進制轉(zhuǎn)換功能的實現(xiàn)則是直接調(diào)用Java中進制轉(zhuǎn)換的函數(shù),例如要將十進制轉(zhuǎn)換成二進制則可直接調(diào)用函數(shù)Integer.toBinaryString(inti)來實現(xiàn),充分顯示了Java語言的簡潔性和Java語言功能的強大性。當(dāng)然了在輸入數(shù)據(jù)時還要進展異常捕捉,防止越界的現(xiàn)象的發(fā)生,這也是Java語言強健性的表達!1.2功能模塊設(shè)計以下為標(biāo)準計算器的根本功能:〔1〕加法兩個數(shù)據(jù)進展加操作,可以為小數(shù)?!?〕減法兩個數(shù)據(jù)進展減操作,可以為負數(shù)相減?!?〕乘法兩個數(shù)相乘操作?!?〕除法兩個數(shù)相除操作?!?〕開平方對任意一個數(shù)進展開方運算,可以是小數(shù)?!?〕求余對任意一個數(shù)進展求余運算?!?〕倒數(shù)對任意一個數(shù)進展倒數(shù)運算?!?〕轉(zhuǎn)換將十進制數(shù)轉(zhuǎn)換為二進制以及將二進制轉(zhuǎn)換為十進制。1.3系統(tǒng)功能圖計算器減法運算加法運算乘法運算除法運算倒數(shù)運算開平方運算求余運算二進制與十進制轉(zhuǎn)換計算器減法運算加法運算乘法運算除法運算倒數(shù)運算開平方運算求余運算二進制與十進制轉(zhuǎn)換2、計算器的設(shè)計與實現(xiàn)2.1總體方案設(shè)計日常生活中經(jīng)常需要用到計算器,比方科學(xué)計算,數(shù)值計算,會計業(yè)務(wù)等等,在Applet中實現(xiàn)一個精巧的計算器,可以讓用戶的操作也更方便和快捷。本工程需要實現(xiàn)一個具有四則運算的計算器,能夠?qū)崿F(xiàn)根本的加、減、乘、除運算,以及其它的輔助功能;界面簡潔適用;要提供主要的設(shè)計思路、類的設(shè)計,本次設(shè)計添加轉(zhuǎn)進制等功能。本應(yīng)用程序繼承自框架(frame),此程序使用frame布局管理器bordelayout,將單行文本參加相應(yīng)區(qū)域,包含各種按紐的面板buttonpanel參加相應(yīng)區(qū)域還可以將進制轉(zhuǎn)換的面板與單行文本框放一塊包含各種按紐的面板buttonpanel采用N行N列的網(wǎng)格布局,然后將數(shù)字按鈕和運算符按鈕以及控制按鈕添加到面板中,同時注冊按鈕事件監(jiān)聽器。布局設(shè)計好后再添加按鈕事件。對于此程序要考慮到點擊加、減、乘、除按鈕時是否有點擊數(shù)字按鈕,如果是第一次點擊數(shù)字按鈕或者是點擊數(shù)字按鈕前點擊了加、減、乘、除按鈕則直接把數(shù)字按鈕的數(shù)值設(shè)置到文本框中,否則則應(yīng)把文本框中的內(nèi)容加上你所點擊按鈕的數(shù)值設(shè)置到文本框中。2.2程序的調(diào)試與運行結(jié)果說明程序功能實現(xiàn):使用swing組件和awt圖形用戶界面以及BroadLayout布局管理器。通過在按鈕的單擊事件處理方法中調(diào)用類的成員方法calculator〔〕來進展簡易計算器的各種運算,并正確實現(xiàn)運算功能。程序可以實現(xiàn)加、減、乘、除、取余等運算,并且可進展負數(shù)的運算,設(shè)置CE清零按鈕可進展清零運算。添加菜單條,列出‘標(biāo)準計算’、‘日期計算’菜單項選擇項,并別實現(xiàn)‘標(biāo)準計算’且整個程序?qū)υ捒蚩蓪崿F(xiàn)最小化、最大化、關(guān)閉。3、計算器演示加法減法乘法除法倒數(shù)平方二進制轉(zhuǎn)換為十進制十進制轉(zhuǎn)換為二進制4、總結(jié)與體會及討論分析將代碼寫好之后檢查代碼的正確性,檢查代碼無誤后將代碼進展調(diào)試和運行將會出現(xiàn)一個JavaApplet計算器界面。在調(diào)試過程中可能會出現(xiàn)有界面但是不能運行小程序,那是因為沒有初始化小程序,那時我們應(yīng)該在主函數(shù)中將小程序進展初始化,這樣小程序才能運行!在調(diào)試和運行完全正確后,我們就可以按照自己的醫(yī)院將小程序進展簡單測試,例如輸入一些簡單數(shù)據(jù)分別運行各個按鈕結(jié)果正確后可以初步確定程序師正確的。有時候我們還要輸入不同范圍的值進展測試,可能會發(fā)現(xiàn)更多的錯誤,因為有時候我們定義數(shù)據(jù)的范圍可能會過小或輸入數(shù)據(jù)會越界,到時我們就可以改正以適應(yīng)更多更大的運算。有時候我們會不自覺的選擇一種最優(yōu)函數(shù)方法盡量將自己的代碼簡單標(biāo)準而又不缺少題目所要求的功能,那就要求我們翻閱很多參考書和查閱很多資料。其實javaApplet圖形界面的布局也是我們要討論的范圍,如何使得界面更加美觀是我們要探討的!有時候我們可能會到書上或網(wǎng)上找到一些滿足我們要求的程序代碼,在此我們應(yīng)該取其優(yōu)秀的簡單易理解代碼作為我們設(shè)計程序的代碼,作為初學(xué)者參考和借用局部外部程序是不可防止,但是我認為前提我們應(yīng)該看懂那些程序代碼,要知其所以然,那樣才到達我們學(xué)程序的目的,但不主張完全照搬,否則就會沒意義了!總結(jié):〔1〕通過編寫這個相對復(fù)雜的程序,讓我認識解決實際問題前應(yīng)現(xiàn)建立模型,再通過建立的模型使問題簡單化,從而解決問題。〔2〕這次編寫的程序大局部是通過調(diào)用各包中的方法來實現(xiàn)的,這也讓我充分理解了包和類調(diào)用的關(guān)系?!?〕并且通過實訓(xùn)我了解到String類是字符串常量類,初始化后不能更改;StringBuffer類是字符串緩沖區(qū),可以被修改。布爾型不能轉(zhuǎn)化成其他任何類型等等。在做本工程是時候,會遇到很多小問題,比方說:如何保存輸入的數(shù)字和下一個數(shù)進展加、減、乘、除運算。還有如何判斷它是第幾個輸入的數(shù)字。后來進展屢次研究和查詢才知道可以通過設(shè)運算符標(biāo)志位來判斷是輸入的第幾個數(shù)值。還有在安裝日期計算按鈕時會遇到日期對象和標(biāo)準計算的類不再同一個包中,這時需要重新定義一個類來實現(xiàn)日期計算,這一功能我在編程時遇到了一些問題,所以最后運行時只有按鈕事件但在按鈕上沒有添加實現(xiàn)功能的方法。并且編寫程序時需要聲明多個對象,給不同的對象分配不同的空間。程序中對布局管理器和事件、按鈕監(jiān)聽器的應(yīng)用十分廣泛。并且運用了java.awt.*;和java.swing中的很多組件。通過編程我對這些內(nèi)容有了更深層次的理解,為以后的編程打下了良好的根底。設(shè)計體會:在此次的課程設(shè)計實踐中,我學(xué)到了教科書上沒有的東西。這次課程設(shè)計,我按照課程設(shè)計的要求,分塊實現(xiàn)程序的功能。在實踐中我遇到許多的問題,但我都克制,最終我成功的完成了這次課程設(shè)計。從中我充分理解了Java面對對象的特性,并體會到Java與C語言的不同之處在實踐的同時,我又從中成長了許多,特別是在對程序的編譯和調(diào)試中掌握了許多的技巧和方法,為今后的其他計算機語言的學(xué)習(xí)奠定了一定的根底。此次課程設(shè)計讓我更了解熟悉了Java中的圖形用戶界面和它的編程方式。在完成課題的過程中也不斷充實了自己,學(xué)習(xí)到了很多以前沒有學(xué)習(xí)到的知識,收獲很大。在做工程時必然會遇到困難,會有不會的東西,重要的不是現(xiàn)在會不會,而是遇到問題知道如何找到解決的途徑。還使我對所學(xué)知識能夠融會貫穿,又不斷豐富了新知識。Java計算器設(shè)計使得我們對所學(xué)的專業(yè)課有了更為深刻的認識,使得知識得到了穩(wěn)固和提高此次的課程設(shè)計使我復(fù)習(xí)、穩(wěn)固Java語言的根底知識,進一步加深Java語言的理解和掌握;課程設(shè)計為我們提供了一個既動手又動腦,獨立實踐的時機,將課本上的理論知識和實際有機的結(jié)合起來,鍛煉了我們分析解決實際問題的能力。提高我們適應(yīng)實際,實踐編程的能力;并且培養(yǎng)了我們在工程開發(fā)中團隊合作精神、創(chuàng)新意識及能力。在實踐的同時,我又從中成長了許多,特別是在對程序的編譯和調(diào)試中掌握了許多的技巧和方法,為今后的其他計算機語言的學(xué)習(xí)奠定了一定的根底。5、參考文獻[1]朱福喜."Java語言程序設(shè)計"〔第二版〕.科學(xué)[2]陳國君等."Java程序設(shè)計根底"〔第二版〕.清華大學(xué)[3]Deitel."Java大學(xué)根底教程"〔第六版〕.電子工業(yè)[4]MaryCampione."Java語言導(dǎo)學(xué)"〔第四版〕.機械工業(yè)[5]Y.DanielLiang."Java語言程序設(shè)計根底篇"〔第六版〕.機械工業(yè)程序源代碼importjava*.swing.*;importjava*.swing.te*t.JTe*tponent;importjava.util.StringTokenizer;importjava.awt.*;importjava.awt.event.*;importjava.math.*;publicclassCalculatorimplementsActionListener{JFramejf=newJFrame("計算器");JTe*tFieldtf=newJTe*tField();JPanelpnl;uttonuttonDENG;uttonuttonJIAN;uttonuttonCHENG;uttonutton1;uttonutton2;uttonutton3;uttonutton4;uttonutton5;uttonutton6;uttonutton7;uttonutton8;uttonutton9;uttonutton0;uttonuttonCHU;uttonuttonQINGKONG;uttonuttonJIA;uttonuttonQUYU;uttonuttonPINGFANG;uttonutton*IAOSHUDIAN;uttonuttonBACKSPACE;uttonuttonDAOSHU;uttonuttonKAIPINGFANG;uttonuttonERJINZHI;uttonuttonSHIJINZHI;publicCalculator(){//初始化界面的方法Containerc=jf.getContentPane();tf.setHorizontalAlignment(JTe*tField.RIGHT);c.add(tf,"North");JPanelpnl=newJPanel();c.add(pnl,"Center");pnl.setLayout(newGridLayout(6,5));utton1=newutton("1");utton1.addActionListener(this);pnl.add(utton1);utton2=newutton("2");utton2.addActionListener(this);pnl.add(utton2);utton3=newutton("3");utton3.addActionListener(this);pnl.add(utton3);uttonBACKSPACE=newutton("backspace");uttonBACKSPACE.addActionListener(this);pnl.add(uttonBACKSPACE);utton4=newutton("4");utton4.addActionListener(this);pnl.add(utton4);utton5=newutton("5");utton5.addActionListener(this);pnl.add(utton5);utton6=newutton("6");utton6.addActionListener(this);pnl.add(utton6);uttonJIA=newutton("+");uttonJIA.addActionListener(this);pnl.add(uttonJIA);utton7=newutton("7");utton7.addActionListener(this);pnl.add(utton7);utton8=newutton("8");utton8.addActionListener(this);pnl.add(utton8);utton9=newutton("9");utton9.addActionListener(this);pnl.add(utton9);uttonJIAN=newutton("-");uttonJIAN.addActionListener(this);pnl.add(uttonJIAN);utton0=newutton("0");utton0.addActionListener(this);pnl.add(utton0);uttonQINGKONG=newutton("清空");uttonQINGKONG.addActionListener(this);pnl.add(uttonQINGKONG);uttonCHENG=newutton("*");uttonCHENG.addActionListener(this);pnl.add(uttonCHENG);uttonCHU=newutton("/");uttonCHU.addActionListener(this);pnl.add(uttonCHU);uttonQUYU=newutton("%");uttonQUYU.addActionListener(this);pnl.add(uttonQUYU);uttonPINGFANG=newutton("平方");uttonPINGFANG.addActionListener(this);pnl.add(uttonPINGFANG);utton*IAOSHUDIAN=newutton(".");utton*IAOSHUDIAN.addActionListener(this);pnl.add(utton*IAOSHUDIAN);uttonDENG=newutton("=");uttonDENG.addActionListener(this);pnl.add(uttonDENG);uttonDAOSHU=newutton("倒數(shù)");uttonDAOSHU.addActionListener(this);pnl.add(uttonDAOSHU);uttonKAIPINGFANG=newutton("開平方");uttonKAIPINGFANG.addActionListener(this);pnl.add(uttonKAIPINGFANG);uttonERJINZHI=newutton("二進制");uttonERJINZHI.addActionListener(this);pnl.add(uttonERJINZHI);uttonSHIJINZHI=newutton("十進制");uttonSHIJINZHI.addActionListener(this);pnl.add(uttonSHIJINZHI);jf.setSize(600,400);jf.setVisible(true);}publicvoidactionPerformed(ActionEventevent){//檢測運算符的方法try{ doublewen=0;Stringtoknizer="+";Stringben;Stringwenben=tf.getTe*t()+event.getActionmand();tf.setTe*t(wenben);//各運算符的判斷運行代碼if(wenben.inde*Of("*")!=-1){toknizer="*";}if(wenben.inde*Of("+")!=-1){toknizer="+";}if(wenben.inde*Of("-")!=-1){toknizer="-";}if(wenben.inde*Of("/")!=-1){toknizer="/";}if(wenben.inde*Of("%")!=-1){toknizer="%";}if(wenben.inde*Of("平方")!=-1){toknizer="平方";}if(wenben.inde*Of("倒數(shù)")!=-1){toknizer="倒數(shù)";}if(wenben.inde*Of("開平方")!=-1){toknizer="開平方";}if(wenben.inde*Of("二進制")!=-1){toknizer="二進制";}if(wenben.inde*Of("十進制")!=-1){toknizer="十進制";}//各個運算符的運算方法代碼if(event.getSource()==uttonQINGKONG){//清空算法wenben="";tf.setTe*t(wenben);}if(event.getSource()==uttonBACKSPACE){//去除算法wenben=wenben.substring(0,wenben.length()-10);tf.setTe*t(wenben);}if(event.getSource()==uttonDENG){//"="算法wenben=wenben.substring(0,wenben.length()-1);doubleb[]=newdouble[10];Stringa[]=newString[15];StringTokenizersun=newStringTokenizer(wenben,toknizer);inti=0;while(sun.hasMoreTokens()){a[i++]=sun.ne*tToken();}for(intj=0;j<10;j++){Strings=a[j];Stringk=a[j+1];if(s==null){break;}else{if(toknizer=="*"){//"*"算法if(j==0){wen=1;}b[j]=Double.parseDouble(s);wen=wen*b[j];ben=Double.toString(wen);tf.setTe*t(wenben+"="+ben);}if(toknizer=="+"){//"+"算法if(j==0){wen=0;}b[j]=Double.parseDouble(s);wen=wen+b[j];ben=Double.toString(wen);tf.setTe*t(wenben+"="+ben);}if(toknizer=="-"){//"-"算法b[j]=Double.parseDouble(s);if(j==0){wen=2*b[j];}wen=wen-b[j];ben=Double.toString(wen);tf.setTe*t(wenben+"="+ben);}if(toknizer=="/"){//"/"算法b[j]=Double.parseDouble(s);if(j==0){wen=b[j]*b[j];}wen=wen/b[j];ben=Double.toString(wen);tf.setTe*t(wenben+"="+ben);}if(toknizer=="平方"){//平方算法if(j==0){wen=1;}b[j]=Double.parseDouble(s);wen=wen*b[j]*b[j];ben=Double.toString(wen);tf.setTe*t(wenben+"="+ben);}if(toknizer=="倒數(shù)"){//倒數(shù)算法b[j]=Double.parseDouble(s);wen=1/b[j];ben=Double.toString(wen);tf.setTe*t(wenben+"="+ben);}if(t
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東科貿(mào)職業(yè)學(xué)院《管理綜合案例》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東江門中醫(yī)藥職業(yè)學(xué)院《康復(fù)機能評定》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東技術(shù)師范大學(xué)《電路與數(shù)字邏輯實驗》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東財貿(mào)職業(yè)學(xué)院《網(wǎng)絡(luò)爬蟲技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 《水和冰的結(jié)構(gòu)》課件
- 共青科技職業(yè)學(xué)院《高級商務(wù)英語2》2023-2024學(xué)年第一學(xué)期期末試卷
- 贛州職業(yè)技術(shù)學(xué)院《湘西民間打擊樂1》2023-2024學(xué)年第一學(xué)期期末試卷
- 贛南醫(yī)學(xué)院《英語聽力Ⅱ》2023-2024學(xué)年第一學(xué)期期末試卷
- 《課件課例研究》課件
- 防疫安全心理課件
- 電氣工程及其自動化低壓電器中繼電器應(yīng)用
- 實驗九(b)液體表面張力系數(shù)的測定(用毛細管法)
- 全球機場三字碼、四字碼
- 2023-2024學(xué)年重慶市兩江新區(qū)四上數(shù)學(xué)期末質(zhì)量檢測試題含答案
- 泌尿外科內(nèi)鏡診療技術(shù)質(zhì)量保障措施及應(yīng)急預(yù)案
- M7.5漿砌塊石擋土墻砌筑施工方法
- 2022年度黑龍江省重點新產(chǎn)品名單
- 2023北京朝陽區(qū)初三上期末考物理試卷及答案
- 挖掘機司機安全培訓(xùn)試題和答案
- 腎內(nèi)科學(xué)篇病例分析1
- 工程電力之DCS系統(tǒng)受電及系統(tǒng)復(fù)原調(diào)試措施
評論
0/150
提交評論