Java項(xiàng)目實(shí)訓(xùn)課程設(shè)計(jì)-計(jì)算器_第1頁
Java項(xiàng)目實(shí)訓(xùn)課程設(shè)計(jì)-計(jì)算器_第2頁
Java項(xiàng)目實(shí)訓(xùn)課程設(shè)計(jì)-計(jì)算器_第3頁
Java項(xiàng)目實(shí)訓(xùn)課程設(shè)計(jì)-計(jì)算器_第4頁
Java項(xiàng)目實(shí)訓(xùn)課程設(shè)計(jì)-計(jì)算器_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

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

評論

0/150

提交評論