Java項目實訓課程設計-計算器_第1頁
Java項目實訓課程設計-計算器_第2頁
Java項目實訓課程設計-計算器_第3頁
Java項目實訓課程設計-計算器_第4頁
Java項目實訓課程設計-計算器_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

-.z.課程設計報告課程名稱"Java工程實訓"課程設計設計名稱基于java計算器的設計與實現學生**學生**學生**學生**學生**學生**學生**學生**學生**學生**指導教師呂淑芳考核成績信息工程系二〇一七年六月目錄TOC\o"1-3"\h\u120241、前言2249881.1設計目的及思路2186301.2功能模塊設計260741.3系統(tǒng)功能圖3226492、計算器的設計與實現373253、計算器演示4203464、總結與體會及討論分析7168215、參考文獻928802附件: 108657程序源代碼101、前言1.1設計目的及思路通過本課程設計使學生能夠較全面的掌握面向對象程序設計的有關概念和開發(fā)方法,以便能較全面地理解、掌握和綜合運用所學的知識,提高自身的編程能力。利用JavaApplet圖形界面首先開場設計一個計算器的界面,定義計算器所需要的按鈕并賦給其按鈕名稱,使得使用計算器時簡單明了,清晰可見,操作輕松。給各個按鈕進展算法,利用鼠標點擊事件,當鼠標點擊*個按鈕時就開場執(zhí)行那個按鈕所定義的算法,生成數據并顯示。除數字的輸入為直接進展輸入外,其他運算例如+、-、*、/、開平方等算法要求計算時通過內部較為復雜的運算將結果顯示在顯示屏上。至于其中的進制轉換功能的實現則是直接調用Java中進制轉換的函數,例如要將十進制轉換成二進制則可直接調用函數Integer.toBinaryString(inti)來實現,充分顯示了Java語言的簡潔性和Java語言功能的強大性。當然了在輸入數據時還要進展異常捕捉,防止越界的現象的發(fā)生,這也是Java語言強健性的表達!1.2功能模塊設計以下為標準計算器的根本功能:〔1〕加法兩個數據進展加操作,可以為小數?!?〕減法兩個數據進展減操作,可以為負數相減?!?〕乘法兩個數相乘操作。〔4〕除法兩個數相除操作。〔5〕開平方對任意一個數進展開方運算,可以是小數?!?〕求余對任意一個數進展求余運算?!?〕倒數對任意一個數進展倒數運算?!?〕轉換將十進制數轉換為二進制以及將二進制轉換為十進制。1.3系統(tǒng)功能圖計算器減法運算加法運算乘法運算除法運算倒數運算開平方運算求余運算二進制與十進制轉換計算器減法運算加法運算乘法運算除法運算倒數運算開平方運算求余運算二進制與十進制轉換2、計算器的設計與實現2.1總體方案設計日常生活中經常需要用到計算器,比方科學計算,數值計算,會計業(yè)務等等,在Applet中實現一個精巧的計算器,可以讓用戶的操作也更方便和快捷。本工程需要實現一個具有四則運算的計算器,能夠實現根本的加、減、乘、除運算,以及其它的輔助功能;界面簡潔適用;要提供主要的設計思路、類的設計,本次設計添加轉進制等功能。本應用程序繼承自框架(frame),此程序使用frame布局管理器bordelayout,將單行文本參加相應區(qū)域,包含各種按紐的面板buttonpanel參加相應區(qū)域還可以將進制轉換的面板與單行文本框放一塊包含各種按紐的面板buttonpanel采用N行N列的網格布局,然后將數字按鈕和運算符按鈕以及控制按鈕添加到面板中,同時注冊按鈕事件監(jiān)聽器。布局設計好后再添加按鈕事件。對于此程序要考慮到點擊加、減、乘、除按鈕時是否有點擊數字按鈕,如果是第一次點擊數字按鈕或者是點擊數字按鈕前點擊了加、減、乘、除按鈕則直接把數字按鈕的數值設置到文本框中,否則則應把文本框中的內容加上你所點擊按鈕的數值設置到文本框中。2.2程序的調試與運行結果說明程序功能實現:使用swing組件和awt圖形用戶界面以及BroadLayout布局管理器。通過在按鈕的單擊事件處理方法中調用類的成員方法calculator〔〕來進展簡易計算器的各種運算,并正確實現運算功能。程序可以實現加、減、乘、除、取余等運算,并且可進展負數的運算,設置CE清零按鈕可進展清零運算。添加菜單條,列出‘標準計算’、‘日期計算’菜單項選擇項,并別實現‘標準計算’且整個程序對話框可實現最小化、最大化、關閉。3、計算器演示加法減法乘法除法倒數平方二進制轉換為十進制十進制轉換為二進制4、總結與體會及討論分析將代碼寫好之后檢查代碼的正確性,檢查代碼無誤后將代碼進展調試和運行將會出現一個JavaApplet計算器界面。在調試過程中可能會出現有界面但是不能運行小程序,那是因為沒有初始化小程序,那時我們應該在主函數中將小程序進展初始化,這樣小程序才能運行!在調試和運行完全正確后,我們就可以按照自己的醫(yī)院將小程序進展簡單測試,例如輸入一些簡單數據分別運行各個按鈕結果正確后可以初步確定程序師正確的。有時候我們還要輸入不同范圍的值進展測試,可能會發(fā)現更多的錯誤,因為有時候我們定義數據的范圍可能會過小或輸入數據會越界,到時我們就可以改正以適應更多更大的運算。有時候我們會不自覺的選擇一種最優(yōu)函數方法盡量將自己的代碼簡單標準而又不缺少題目所要求的功能,那就要求我們翻閱很多參考書和查閱很多資料。其實javaApplet圖形界面的布局也是我們要討論的范圍,如何使得界面更加美觀是我們要探討的!有時候我們可能會到書上或網上找到一些滿足我們要求的程序代碼,在此我們應該取其優(yōu)秀的簡單易理解代碼作為我們設計程序的代碼,作為初學者參考和借用局部外部程序是不可防止,但是我認為前提我們應該看懂那些程序代碼,要知其所以然,那樣才到達我們學程序的目的,但不主張完全照搬,否則就會沒意義了!總結:〔1〕通過編寫這個相對復雜的程序,讓我認識解決實際問題前應現建立模型,再通過建立的模型使問題簡單化,從而解決問題?!?〕這次編寫的程序大局部是通過調用各包中的方法來實現的,這也讓我充分理解了包和類調用的關系?!?〕并且通過實訓我了解到String類是字符串常量類,初始化后不能更改;StringBuffer類是字符串緩沖區(qū),可以被修改。布爾型不能轉化成其他任何類型等等。在做本工程是時候,會遇到很多小問題,比方說:如何保存輸入的數字和下一個數進展加、減、乘、除運算。還有如何判斷它是第幾個輸入的數字。后來進展屢次研究和查詢才知道可以通過設運算符標志位來判斷是輸入的第幾個數值。還有在安裝日期計算按鈕時會遇到日期對象和標準計算的類不再同一個包中,這時需要重新定義一個類來實現日期計算,這一功能我在編程時遇到了一些問題,所以最后運行時只有按鈕事件但在按鈕上沒有添加實現功能的方法。并且編寫程序時需要聲明多個對象,給不同的對象分配不同的空間。程序中對布局管理器和事件、按鈕監(jiān)聽器的應用十分廣泛。并且運用了java.awt.*;和java.swing中的很多組件。通過編程我對這些內容有了更深層次的理解,為以后的編程打下了良好的根底。設計體會:在此次的課程設計實踐中,我學到了教科書上沒有的東西。這次課程設計,我按照課程設計的要求,分塊實現程序的功能。在實踐中我遇到許多的問題,但我都克制,最終我成功的完成了這次課程設計。從中我充分理解了Java面對對象的特性,并體會到Java與C語言的不同之處在實踐的同時,我又從中成長了許多,特別是在對程序的編譯和調試中掌握了許多的技巧和方法,為今后的其他計算機語言的學習奠定了一定的根底。此次課程設計讓我更了解熟悉了Java中的圖形用戶界面和它的編程方式。在完成課題的過程中也不斷充實了自己,學習到了很多以前沒有學習到的知識,收獲很大。在做工程時必然會遇到困難,會有不會的東西,重要的不是現在會不會,而是遇到問題知道如何找到解決的途徑。還使我對所學知識能夠融會貫穿,又不斷豐富了新知識。Java計算器設計使得我們對所學的專業(yè)課有了更為深刻的認識,使得知識得到了穩(wěn)固和提高此次的課程設計使我復習、穩(wěn)固Java語言的根底知識,進一步加深Java語言的理解和掌握;課程設計為我們提供了一個既動手又動腦,獨立實踐的時機,將課本上的理論知識和實際有機的結合起來,鍛煉了我們分析解決實際問題的能力。提高我們適應實際,實踐編程的能力;并且培養(yǎng)了我們在工程開發(fā)中團隊合作精神、創(chuàng)新意識及能力。在實踐的同時,我又從中成長了許多,特別是在對程序的編譯和調試中掌握了許多的技巧和方法,為今后的其他計算機語言的學習奠定了一定的根底。5、參考文獻[1]朱福喜."Java語言程序設計"〔第二版〕.科學[2]陳國君等."Java程序設計根底"〔第二版〕.清華大學[3]Deitel."Java大學根底教程"〔第六版〕.電子工業(yè)[4]MaryCampione."Java語言導學"〔第四版〕.機械工業(yè)[5]Y.DanielLiang."Java語言程序設計根底篇"〔第六版〕.機械工業(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("倒數");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("倒數")!=-1){toknizer="倒數";}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=="倒數"){//倒數算法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)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論