版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、課程設(shè)計(jì)報(bào)告課程名稱Java項(xiàng)目實(shí)訓(xùn)課程設(shè)計(jì)設(shè)計(jì)名稱基于java計(jì)算器的設(shè)計(jì)與實(shí)現(xiàn)學(xué)生學(xué)號學(xué)生學(xué)生學(xué)號學(xué)生學(xué)生學(xué)號學(xué)生學(xué)生學(xué)號學(xué)生學(xué)生學(xué)號學(xué)生指導(dǎo)教師呂淑芳考核成績信息工程系二一七年六月目錄1、前 言21.1設(shè)計(jì)目的及思路21.2功能模塊設(shè)計(jì)21.3系統(tǒng)功能圖32、計(jì)算器的設(shè)計(jì)與實(shí)現(xiàn)33、計(jì)算器演示44、總結(jié)與體會及討論分析75、參考文獻(xiàn)9附件:10程序源代碼101、前 言1.1設(shè)計(jì)目的及思路通過本課程設(shè)計(jì)使學(xué)生能夠較全面的掌握面向?qū)ο蟪绦蛟O(shè)計(jì)的有關(guān)概念和開發(fā)方法,以便能較全面地理解、掌握和綜合運(yùn)用所學(xué)的知識,提高自身的編程能力。利用Java Applet圖形界面首先開始設(shè)計(jì)一個計(jì)算器的界面,
2、定義計(jì)算器所需要的按鈕并賦給其按鈕名稱,使得使用計(jì)算器時簡單明了,清晰可見,操作輕松。 給各個按鈕進(jìn)行算法,利用鼠標(biāo)點(diǎn)擊事件,當(dāng)鼠標(biāo)點(diǎn)擊某個按鈕時就開始執(zhí)行那個按鈕所定義的算法,生成數(shù)據(jù)并顯示。 除數(shù)字的輸入為直接進(jìn)行輸入外,其他運(yùn)算例如+、-、*、/、開平方等算法要求計(jì)算時通過內(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(int i)來實(shí)現(xiàn),充分顯示了Java語言的簡潔性和Java語言功能的強(qiáng)大性。 當(dāng)然了在輸入數(shù)據(jù)時還要進(jìn)行異常捕捉,防止越界
3、的現(xiàn)象的發(fā)生,這也是Java語言健壯性的表達(dá)!1.2功能模塊設(shè)計(jì)以下為標(biāo)準(zhǔn)計(jì)算器的基本功能:1加法 兩個數(shù)據(jù)進(jìn)行加操作,可以為小數(shù)。2減法 兩個數(shù)據(jù)進(jìn)行減操作,可以為負(fù)數(shù)相減。3乘法 兩個數(shù)相乘操作。4除法 兩個數(shù)相除操作。5開平方對任意一個數(shù)進(jìn)行開方運(yùn)算,可以是小數(shù)。6求余對任意一個數(shù)進(jìn)行求余運(yùn)算。7倒數(shù)對任意一個數(shù)進(jìn)行倒數(shù)運(yùn)算。8轉(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)換2、計(jì)算器的設(shè)計(jì)與實(shí)現(xiàn)2.1總體方案設(shè)計(jì)日常生活中經(jīng)常需要用到計(jì)算器,比方科學(xué)計(jì)算,數(shù)值計(jì)算,會計(jì)業(yè)務(wù)等等,在Ap
4、plet中實(shí)現(xiàn)一個精巧的計(jì)算器,可以讓用戶的操作也更方便和快捷。本項(xiàng)目需要實(shí)現(xiàn)一個具有四則運(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)算符按鈕以及控制按鈕添加到面板中,同時注冊按鈕事件監(jiān)聽器。布局設(shè)計(jì)好后再添加按鈕事
5、件。對于此程序要考慮到點(diǎn)擊加、減、乘、除按鈕時是否有點(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ì)算菜單
6、項(xiàng)選擇項(xiàng),并別實(shí)現(xiàn)標(biāo)準(zhǔn)計(jì)算且整個程序?qū)υ捒蚩蓪?shí)現(xiàn)最小化、最大化、關(guān)閉。3、計(jì)算器演示加法減法乘法除法倒數(shù)平方二進(jìn)制轉(zhuǎn)換為十進(jìn)制十進(jìn)制轉(zhuǎn)換為二進(jìn)制4、總結(jié)與體會及討論分析將代碼寫好之后檢查代碼的正確性,檢查代碼無誤后將代碼進(jìn)行調(diào)試和運(yùn)行將會出現(xiàn)一個JavaApplet計(jì)算器界面。在調(diào)試過程中可能會出現(xiàn)有界面但是不能運(yùn)行小程序,那是因?yàn)闆]有初始化小程序,那時我們應(yīng)該在主函數(shù)中將小程序進(jìn)行初始化,這樣小程序才能運(yùn)行!在調(diào)試和運(yùn)行完全正確后,我們就可以按照自己的醫(yī)院將小程序進(jìn)行簡單測試,例如輸入一些簡單數(shù)據(jù)分別運(yùn)行各個按鈕結(jié)果正確后可以初步確定程序師正確的。有時候我們還要輸入不同范圍的值進(jìn)行測試,可能
7、會發(fā)現(xiàn)更多的錯誤,因?yàn)橛袝r候我們定義數(shù)據(jù)的范圍可能會過小或輸入數(shù)據(jù)會越界,到時我們就可以改正以適應(yīng)更多更大的運(yùn)算。有時候我們會不自覺的選擇一種最優(yōu)函數(shù)方法盡量將自己的代碼簡單標(biāo)準(zhǔn)而又不缺少題目所要求的功能,那就要求我們翻閱很多參考書和查閱很多資料。其實(shí)javaApplet圖形界面的布局也是我們要討論的范圍,如何使得界面更加美觀是我們要探討的!有時候我們可能會到書上或網(wǎng)上找到一些滿足我們要求的程序代碼,在此我們應(yīng)該取其優(yōu)秀的簡單易理解代碼作為我們設(shè)計(jì)程序的代碼,作為初學(xué)者參考和借用部分外部程序是不可防止,但是我認(rèn)為前提我們應(yīng)該看懂那些程序代碼,要知其所以然,那樣才到達(dá)我們學(xué)程序的目的,但不主張完
8、全照搬,否則就會沒意義了!總結(jié):1通過編寫這個相對復(fù)雜的程序,讓我認(rèn)識解決實(shí)際問題前應(yīng)現(xiàn)建立模型,再通過建立的模型使問題簡單化,從而解決問題。2這次編寫的程序大部分是通過調(diào)用各包中的方法來實(shí)現(xiàn)的,這也讓我充分理解了包和類調(diào)用的關(guān)系。3并且通過實(shí)訓(xùn)我了解到String類是字符串常量類,初始化后不能更改;StringBuffer類是字符串緩沖區(qū),可以被修改。布爾型不能轉(zhuǎn)化成其他任何類型等等。在做本項(xiàng)目是時候,會遇到很多小問題,比方說:如何保存輸入的數(shù)字和下一個數(shù)進(jìn)行加、減、乘、除運(yùn)算。還有如何判斷它是第幾個輸入的數(shù)字。后來進(jìn)行多次研究和查詢才知道可以通過設(shè)運(yùn)算符標(biāo)志位來判斷是輸入的第幾個數(shù)值。還有
9、在安裝日期計(jì)算按鈕時會遇到日期對象和標(biāo)準(zhǔn)計(jì)算的類不再同一個包中,這時需要重新定義一個類來實(shí)現(xiàn)日期計(jì)算,這一功能我在編程時遇到了一些問題,所以最后運(yùn)行時只有按鈕事件但在按鈕上沒有添加實(shí)現(xiàn)功能的方法。并且編寫程序時需要聲明多個對象,給不同的對象分配不同的空間。程序中對布局管理器和事件、按鈕監(jiān)聽器的應(yīng)用十分廣泛。并且運(yùn)用了java.awt.*;和java.swing中的很多組件。通過編程我對這些內(nèi)容有了更深層次的理解,為以后的編程打下了良好的基礎(chǔ)。設(shè)計(jì)體會:在此次的課程設(shè)計(jì)實(shí)踐中,我學(xué)到了教科書上沒有的東西。這次課程設(shè)計(jì),我按照課程設(shè)計(jì)的要求,分塊實(shí)現(xiàn)程序的功能。在實(shí)踐中我遇到許多的問題,但我都克服
10、,最終我成功的完成了這次課程設(shè)計(jì)。從中我充分理解了Java面對對象的特性,并體會到Java與C語言的不同之處在實(shí)踐的同時,我又從中成長了許多,特別是在對程序的編譯和調(diào)試中掌握了許多的技巧和方法,為今后的其他電腦語言的學(xué)習(xí)奠定了一定的基礎(chǔ)。此次課程設(shè)計(jì)讓我更了解熟悉了Java中的圖形用戶界面和它的編程方式。在完成課題的過程中也不斷充實(shí)了自己,學(xué)習(xí)到了很多以前沒有學(xué)習(xí)到的知識,收獲很大。在做項(xiàng)目時必然會遇到困難,會有不會的東西,重要的不是現(xiàn)在會不會,而是遇到問題知道如何找到解決的途徑。還使我對所學(xué)知識能夠融會貫穿,又不斷豐富了新知識。Java計(jì)算器設(shè)計(jì)使得我們對所學(xué)的專業(yè)課有了更為深刻的認(rèn)識,使得
11、知識得到了穩(wěn)固和提高此次的課程設(shè)計(jì)使我復(fù)習(xí)、穩(wěn)固Java語言的基礎(chǔ)知識,進(jìn)一步加深Java語言的理解和掌握;課程設(shè)計(jì)為我們提供了一個既動手又動腦,獨(dú)立實(shí)踐的時機(jī),將課本上的理論知識和實(shí)際有機(jī)的結(jié)合起來,鍛煉了我們分析解決實(shí)際問題的能力。提高我們適應(yīng)實(shí)際,實(shí)踐編程的能力;并且培養(yǎng)了我們在項(xiàng)目開發(fā)中團(tuán)隊(duì)合作精神、創(chuàng)新意識及能力。在實(shí)踐的同時,我又從中成長了許多,特別是在對程序的編譯和調(diào)試中掌握了許多的技巧和方法,為今后的其他電腦語言的學(xué)習(xí)奠定了一定的基礎(chǔ)。5、參考文獻(xiàn)1朱福喜.Java語言程序設(shè)計(jì)第二版.科學(xué)出版社2陳國君等.Java程序設(shè)計(jì)基礎(chǔ)第二版.清華大學(xué)出版社3 Deitel.Java大學(xué)
12、基礎(chǔ)教程第六版.電子工業(yè)出版社 4 MaryCampione.Java語言導(dǎo)學(xué)第四版.機(jī)械工業(yè)出版社5 Y.Daniel Liang.Java語言程序設(shè)計(jì)基礎(chǔ)篇第六版. 機(jī)械工業(yè)出版社程序源代碼import javax.swing.*; import javax.swing.text.JTextComponent;import java.util.StringTokenizer; import java.awt.*; import java.awt.event.*; import java.math.*; public class Calculator implements ActionLis
13、tener JFrame jf=new JFrame(計(jì)算器); JTextField tf=new JTextField(); JPanel pnl; JButton jButtonDENG; JButton jButtonJIAN; JButton jButtonCHENG; JButton jButton1; JButton jButton2; JButton jButton3; JButton jButton4; JButton jButton5; JButton jButton6; JButton jButton7; JButton jButton8; JButton jButton
14、9; JButton jButton0; JButton jButtonCHU; JButton jButtonQINGKONG; JButton jButtonJIA; JButton jButtonQUYU; JButton jButtonPINGFANG; JButton jButtonXIAOSHUDIAN; JButton jButtonBACKSPACE; JButton jButtonDAOSHU; JButton jButtonKAIPINGFANG; JButton jButtonERJINZHI; JButton jButtonSHIJINZHI; public Calcu
15、lator () /初始化界面的方法 Container c=jf.getContentPane(); tf.setHorizontalAlignment(JTextField.RIGHT); c.add(tf,North); JPanel pnl=new JPanel(); c.add(pnl,Center); pnl.setLayout(new GridLayout(6,5); jButton1=new JButton(1); jButton1.addActionListener(this); pnl.add(jButton1); jButton2=new JButton(2); jBut
16、ton2.addActionListener(this); pnl.add(jButton2); jButton3=new JButton(3); jButton3.addActionListener(this); pnl.add(jButton3); jButtonBACKSPACE=new JButton(backspace); jButtonBACKSPACE.addActionListener(this); pnl.add(jButtonBACKSPACE); jButton4=new JButton(4); jButton4.addActionListener(this); pnl.
17、add(jButton4); jButton5=new JButton(5); jButton5.addActionListener(this); pnl.add(jButton5); jButton6=new JButton(6); jButton6.addActionListener(this); pnl.add(jButton6); jButtonJIA=new JButton(+); jButtonJIA.addActionListener(this); pnl.add(jButtonJIA); jButton7=new JButton(7); jButton7.addActionLi
18、stener(this); pnl.add(jButton7); jButton8=new JButton(8); jButton8.addActionListener(this); pnl.add(jButton8); jButton9=new JButton(9); jButton9.addActionListener(this); pnl.add(jButton9); jButtonJIAN=new JButton(-); jButtonJIAN.addActionListener(this); pnl.add(jButtonJIAN); jButton0=new JButton(0);
19、 jButton0.addActionListener(this); pnl.add(jButton0); jButtonQINGKONG=new JButton(清空); jButtonQINGKONG.addActionListener(this); pnl.add(jButtonQINGKONG); jButtonCHENG=new JButton(*); jButtonCHENG.addActionListener(this); pnl.add(jButtonCHENG); jButtonCHU=new JButton(/); jButtonCHU.addActionListener(
20、this); pnl.add(jButtonCHU); jButtonQUYU=new JButton(%); jButtonQUYU.addActionListener(this); pnl.add(jButtonQUYU); jButtonPINGFANG=new JButton(平方); jButtonPINGFANG.addActionListener(this); pnl.add(jButtonPINGFANG); jButtonXIAOSHUDIAN=new JButton(.); jButtonXIAOSHUDIAN.addActionListener(this); pnl.ad
21、d(jButtonXIAOSHUDIAN); jButtonDENG=new JButton(=); jButtonDENG.addActionListener(this); pnl.add(jButtonDENG); jButtonDAOSHU=new JButton(倒數(shù)); jButtonDAOSHU.addActionListener(this); pnl.add(jButtonDAOSHU); jButtonKAIPINGFANG=new JButton(開平方); jButtonKAIPINGFANG.addActionListener(this); pnl.add(jButton
22、KAIPINGFANG); jButtonERJINZHI=new JButton(二進(jìn)制); jButtonERJINZHI.addActionListener(this); pnl.add(jButtonERJINZHI);jButtonSHIJINZHI=new JButton(十進(jìn)制); jButtonSHIJINZHI.addActionListener(this); pnl.add(jButtonSHIJINZHI);jf.setSize(600,400); jf.setVisible(true); public void actionPerformed(ActionEvent e
23、vent) /檢測運(yùn)算符的方法try double wen=0;String toknizer=+; String ben; String wenben=tf.getText()+event.getActionCommand(); tf.setText(wenben); /各運(yùn)算符的判斷運(yùn)行代碼if(wenben.indexOf(*)!=-1) toknizer=*; if(wenben.indexOf(+)!=-1) toknizer=+; if(wenben.indexOf(-)!=-1) toknizer=-; if(wenben.indexOf(/)!=-1) toknizer=/;
24、if(wenben.indexOf(%)!=-1) toknizer=%; if(wenben.indexOf(平方)!=-1) toknizer=平方; if(wenben.indexOf(倒數(shù))!=-1) toknizer=倒數(shù); if(wenben.indexOf(開平方)!=-1) toknizer=開平方; if(wenben.indexOf(二進(jìn)制)!=-1) toknizer=二進(jìn)制; if(wenben.indexOf(十進(jìn)制)!=-1) toknizer=十進(jìn)制; /各個運(yùn)算符的運(yùn)算方法代碼if(event.getSource()=jButtonQINGKONG) /清空算法
25、wenben=; tf.setText(wenben); if(event.getSource()=jButtonBACKSPACE) /清除算法wenben=wenben.substring(0,wenben.length()-10); tf.setText(wenben); if(event.getSource()=jButtonDENG) /=算法wenben=wenben.substring(0,wenben.length()-1); double b=new double10; String a=new String15; StringTokenizer sun=new String
26、Tokenizer(wenben,toknizer); int i=0; while(sun.hasMoreTokens() ai+=sun.nextToken(); for(int j=0;j10;j+) String s=aj; String k=aj+1; if(s=null) break; else if(toknizer=*) /*算法 if(j=0)wen=1; bj=Double.parseDouble(s); wen=wen*bj; ben=Double.toString(wen); tf.setText(wenben+=+ben); if(toknizer=+) /+ 算法i
27、f(j=0)wen=0; bj=Double.parseDouble(s); wen=wen+bj; ben=Double.toString(wen); tf.setText(wenben+=+ben); if(toknizer=-) /-算法bj=Double.parseDouble(s); if(j=0)wen=2*bj; wen=wen-bj; ben=Double.toString(wen); tf.setText(wenben+=+ben); if(toknizer=/) / /算法bj=Double.parseDouble(s); if(j=0)wen=bj*bj; wen=wen/bj; ben=Double.toString(wen); tf.setText(wenben+=+ben); if(toknizer=平方) /平方算法if(j=0)wen=1; bj=Double.parseDouble(s); wen=wen*bj*bj; ben=Double.toString(wen); tf.setText(wenben+=+ben); if(toknize
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度勞動合同終止及員工安置補(bǔ)償協(xié)議2篇
- 二零二五年度戶外廣告牌安裝與城市形象宣傳合同3篇
- 二零二五年度個人商鋪買賣合同協(xié)議
- 二零二五年度國際貿(mào)易政策分析與市場進(jìn)入咨詢合同
- 2025年度個人房屋裝修貸款合同7篇
- 2025年度內(nèi)控制度咨詢與內(nèi)部控制流程再造合同
- 二零二五年度協(xié)議離婚財(cái)產(chǎn)清算與分配專業(yè)合同3篇
- 2025年度農(nóng)業(yè)生態(tài)環(huán)境保護(hù)與補(bǔ)償合同3篇
- 2025年度摩托車租賃與賽事運(yùn)營管理合同3篇
- 二零二五版鎳礦市場準(zhǔn)入與資質(zhì)認(rèn)證合同4篇
- 2024版義務(wù)教育小學(xué)數(shù)學(xué)課程標(biāo)準(zhǔn)
- 智能護(hù)理:人工智能助力的醫(yī)療創(chuàng)新
- 國家中小學(xué)智慧教育平臺培訓(xùn)專題講座
- 5G+教育5G技術(shù)在智慧校園教育專網(wǎng)系統(tǒng)的應(yīng)用
- 服務(wù)人員隊(duì)伍穩(wěn)定措施
- VI設(shè)計(jì)輔助圖形設(shè)計(jì)
- 淺談小學(xué)勞動教育的開展與探究 論文
- 2023年全國4月高等教育自學(xué)考試管理學(xué)原理00054試題及答案新編
- 河北省大學(xué)生調(diào)研河北社會調(diào)查活動項(xiàng)目申請書
- JJG 921-2021環(huán)境振動分析儀
- 兩段焙燒除砷技術(shù)簡介 - 文字版(1)(2)課件
評論
0/150
提交評論