java課程設(shè)計報告 計算器

上傳人:e****s 文檔編號:56924050 上傳時間:2022-02-22 格式:DOC 頁數(shù):14 大小:203.50KB
收藏 版權(quán)申訴 舉報 下載
java課程設(shè)計報告 計算器_第1頁
第1頁 / 共14頁
java課程設(shè)計報告 計算器_第2頁
第2頁 / 共14頁
java課程設(shè)計報告 計算器_第3頁
第3頁 / 共14頁

下載文檔到電腦,查找使用更方便

16 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《java課程設(shè)計報告 計算器》由會員分享,可在線閱讀,更多相關(guān)《java課程設(shè)計報告 計算器(14頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、目 錄 一、課設(shè)任務(wù)及要求 1 二、需求分析 1 三、設(shè)計思路 2 四、詳細設(shè)計 4 五、運行調(diào)試與分析討論 8 六、設(shè)計體會與小結(jié) 12 七、參考文獻 13 一、課設(shè)任務(wù)及要求 設(shè)計一個圖形界面(GUI)的計算器應(yīng)用程序,完成簡單的算術(shù)運算。 設(shè)計要求 設(shè)計的計算器應(yīng)用程序可以完成加法、減法、乘法、除法和取余運算。且有小數(shù)點、正負號、求倒數(shù)、退格和清零功能。 本程序主要練習(xí)使用布局管理器設(shè)計一個計算器的界面,并練習(xí)使用事件監(jiān)聽器處理數(shù)據(jù)的輸入,并完成相關(guān)的計算。 除上述要求外,本次設(shè)計的程序還附加了進制轉(zhuǎn)換和求平方,求立方的功能。 二、需求分析

2、日常生活中經(jīng)常需要用到計算器,比如科學(xué)計算、數(shù)值計算、會計業(yè)務(wù)等,在Applet中實現(xiàn)一個精巧實用的計算器,可以讓用戶在使用網(wǎng)站服務(wù)的同時,可以很方便地進行數(shù)據(jù)運算,可增加頁面的實用性,同時讓用戶的操作也更方便與快捷。本項目需要實現(xiàn)一個具有四則運算的計算器,擁有加、減、乘、除功能,并且還要具備求倒數(shù),小數(shù)點,求余,退格和清零的功能。除此之外,本次設(shè)計的程序添加轉(zhuǎn)進制和求平方與立方功能。 三、設(shè)計思路 本應(yīng)用程序繼承自框架類(Frame),此程序使用Frame布局管理器BorderLayout,將單行文本框加入到“North”區(qū)域,包含各種按鈕的面板buttonPanel加入到”Cente

3、r”區(qū)域。 還可以將進制轉(zhuǎn)換的面板與單行文本框放一塊。 包含各種按鈕的面板buttonPanel 采用n行n列的網(wǎng)格布局,然后將數(shù)字按鈕和運算符按鈕以及控制按鈕添加到面板中。同時注冊按鈕事件監(jiān)聽器。如: Button b=new Button(); b.addActionListener(事件監(jiān)聽器); 事件監(jiān)聽器中的事件處理方法void actionPerformed(ActionEvent e)完成主要的按鈕事件的處理。事件處理分以下幾種情況:數(shù)字按鈕事件(”0”,”1”,”2”…”8”,”9”)、運算符按鈕事件(”+”,”-“,”*”,”/”,”%”)、正負號按鈕事件(”+/-

4、“)、小數(shù)點按鈕事件(”.”)、等號按鈕事件(”=”)、求倒按鈕事件(”1/x”)、求平方按鈕事件(“x2”)、求立方按鈕事件(“x3”)、退格按鈕事件(”退格”)、清楚按鈕事件(“C”),進制轉(zhuǎn)換事件。 在事件處理觸發(fā)按鈕事件時,要進一步分析,是重新開始計算時觸發(fā)的按鈕事件還是計算中間觸發(fā)的按鈕事件。 計算器完成的是一個數(shù)學(xué)表達式,如:3+2,所以可以采用不同的變量來存儲數(shù)字和字符,如3,+,2分別存儲在變量pre,operatorchar,和 current中,最后運算時,要按住按鈕“=”才能運算,當(dāng)按住運算符按鈕時便將之前輸入的數(shù)字存儲在變量 pre中,并將運算符存儲在operato

5、rchar中,當(dāng)按住等號按鈕時,便將后輸入的數(shù)字存儲到current中并根據(jù)所輸入的運算符進行相關(guān)運算。 本應(yīng)用程序中的數(shù)字按鈕和運算符按鈕可以分別定義兩個不同的對象組件。如:數(shù)字按鈕button,可以用數(shù)組button[]存放,數(shù)組按鈕與數(shù)字聯(lián)系在一起,如當(dāng)按下button[1]時,也相當(dāng)與在計算器中輸入數(shù)字1。預(yù)算符用變量operatorchar來存放。 工作原理: 將數(shù)字鍵與其他鍵分別進行監(jiān)聽,一個單行文本框用來顯示輸入的數(shù)據(jù),inputstring用來存放每次錄入的數(shù)據(jù),數(shù)據(jù)與字符錄入都通過按鍵來觸發(fā)事件,單行文本框設(shè)置的不可編輯(這樣可靠性很高)。然后對所有的button來進

6、行監(jiān)聽,當(dāng)按到“+,-,*,/,%”按鈕時,將第一輸入的數(shù)字存儲到pre,輸入的運算符通過變量operatorchar來存儲,當(dāng)再輸入數(shù)字后遇到“=”時,便將運算符后的數(shù)字存儲到變量“current”里,接著調(diào)用“+,-,*,/,%”運算函數(shù)進行 pre operatorchar current之間的運算,將結(jié)果用 result保存起來,并顯示在單行文本框中。 這里需要聲明的是每次輸入的數(shù)據(jù)都要進行類型轉(zhuǎn)換,將字符串型的數(shù)據(jù)轉(zhuǎn)換成 double型才能進行運算,設(shè)計一個轉(zhuǎn)換函數(shù),并將轉(zhuǎn)換后的數(shù)據(jù)用 temp 存儲,所以數(shù)據(jù)存儲起來比較簡單,也不會有什么語法上的錯誤。誠然,通過這樣的數(shù)據(jù)存儲方式

7、就可以很方便的加進其他的擴展功能,如要進行求倒數(shù)的運算,只要將1.0/temp 重新賦值給temp便可以實現(xiàn)。 退格按鈕事件只需將輸入的數(shù)據(jù)字符型重新編輯后把最后的一個數(shù)字消去顯示出來,清空按鈕只需將所以變量初始化。 求平方與立方可調(diào)用系統(tǒng)Math類的靜態(tài)方法pow(),進制轉(zhuǎn)換同樣與其他button類似分別進行事件監(jiān)聽,設(shè)計一個內(nèi)部私類來進行進制轉(zhuǎn)換,觸發(fā)事件后調(diào)用類中方法就行了。 功能規(guī)劃: (1)基本運算; (2)進制運算,如二進制和十進制數(shù),十進制數(shù)和十六進制數(shù)之間的轉(zhuǎn)換; (3)類設(shè)計。Calculator和Calculate,Calculate是個內(nèi)部類,功能是進行

8、進制的轉(zhuǎn)換,Calculator是初始化界面,以及響應(yīng)用戶的操作。 四、詳細設(shè)計 1.數(shù)據(jù)分析 計算器的程序設(shè)計,必然會有數(shù)據(jù)的輸入,其中數(shù)據(jù)包括運算符和數(shù)字,均要通過計算器上的button按鈕選項按鍵輸入進去,里面錄入的必然是字符型的數(shù)據(jù),如果要進行運算,要將輸入的字符型轉(zhuǎn)換成double型,以防止運算出錯。如可以這樣定義一個轉(zhuǎn)換函數(shù): public double formatConvert(String inputString)/*將字符串轉(zhuǎn)換為double類型*/ { double temp = 0.0; temp = Double.pars

9、eDouble(inputString); return temp; } 2.算法思路 大致思路已經(jīng)在上文有比較詳細的介紹,主要是通過將數(shù)字鍵和其他符號區(qū)別開來進行監(jiān)聽,可以Pre變量存儲運算符前的數(shù)據(jù),operatorchar存儲運算符,current存儲運算符后的數(shù)據(jù)。當(dāng)按住運算符按鈕時便將之前輸入的數(shù)字存儲在變量 pre中,并將運算符存儲在operatorchar中,當(dāng)按住等號按鈕時,便將后輸入的數(shù)字存儲到current中并根據(jù)所輸入的運算符進行相關(guān)運算。每次輸入的數(shù)字數(shù)據(jù)將進行類型轉(zhuǎn)換,將inputstring的值賦值給temp,這樣便可以直接通過對

10、temp的運算來實現(xiàn)對 X的平方,立方,倒數(shù)和進制轉(zhuǎn)換了。 3.類設(shè)計 class Calculator extends JFrame implements ActionListener { } //Calculator是初始化界面,以及響應(yīng)用戶的操作。 Calculate是個內(nèi)部類,功能是進行進制的轉(zhuǎn)換, private class Calculate{ public Calculate()throws NumberFormatException{} //轉(zhuǎn)換為二進制 //轉(zhuǎn)換為八進制 //轉(zhuǎn)換為十六進制 } 4.功能設(shè)計 主要

11、程序流程圖: 主要代碼及其注釋: //響應(yīng)用戶點擊按鈕事件 //將數(shù)字按鈕鍵與數(shù)字一一對應(yīng)起來 public void actionPerformed(ActionEvent e) //數(shù)字按鈕事件 { for(int i=0;i<10;i++) { if(e.getSource() == button[i]) { inputString +=i; //當(dāng)按鍵是數(shù)字N,監(jiān)聽到輸入的數(shù)字 input.setText(inputString); //也是N } }

12、 if(e.getSource()==clearButton) //清空按鈕事件 { pre = 0.0; //將所有的變量都初始化 current = 0.0; result = 0.0; operatorChar = ' '; inputString = " "; input.setText("0.0"); decimalButton.setSelected(true); //十進制按鈕選中 } if(e.getSource()==backspaceButto

13、n) //退格 { if(inputString.length()>0) //判斷有數(shù)據(jù)輸入 { inputString = inputString.substring(0, inputString.length()-1); input.setText(inputString); //顯示退格后的結(jié)果 } } if(e.getSource() == plusButton){ setValue('+');}//加法 if(e.getSource() == subtractButton){setValue('-');}/

14、/減法 if(e.getSource() == multiButton){setValue('*');}//乘法 if(e.getSource() == divisionButton){setValue('/');}//除法 if(e.getSource() == modButton){ setValue('%');}//求余 //加減乘除求余都調(diào)用setvalue()函數(shù) //setVlaue() private void setValue(char opChar)//賦值pre和operatorChar { operatorChar = opChar; p

15、re = formatConvert(inputString); input.setText(opChar+""); inputString = " "; } //等號(運算)事件 if(e.getSource()==equalButton) { current = formatConvert(inputString);//賦值給current doOperator(); //調(diào)用計算函數(shù) input.setText(""+result); //顯示運算結(jié)果 inputString = ""+resu

16、lt; decimalButton.setSelected(true); } // 計算函數(shù) DoOperator(): /*該方法用于根據(jù)用戶的輸入進行數(shù)值計算,得到計算結(jié)果*/ public double doOperator() { switch(operatorChar) //判斷運算符 { case '+':result = pre + current;break; //加運算 case '-':result = pre - current;break; //減運算 case '*':result = pr

17、e * current;break; //乘法運算 case '/':result = pre / current;break; //除法運算 case '%':result = pre % current;break; //求余運算 } return result; //返回結(jié)果 } //小數(shù)點事件 if(e.getSource()==pointButton)//小數(shù)點 { int index = inputString.indexOf('.'); if(index == -1)//如果數(shù)字中沒有小數(shù)點.,則添加小數(shù)點

18、 { inputString += ".";} } 運行界面: 可見下文。 五、運行調(diào)試與分析討論 1)運行程序后顯示界面如下,可在計算器面板上按鍵,單項文本框不可編輯的: 2)進行簡單的加減乘除運算,如 3+2: 3)將上式的結(jié)果 5.0 % 2運算: 3)進制運算轉(zhuǎn)換,如 在十進制下輸入 63,將它轉(zhuǎn)換成其他的進制。 轉(zhuǎn)換成二進制: 轉(zhuǎn)換成八進制: 轉(zhuǎn)換成十六進: 4)異常處理: 異常處理提示數(shù)據(jù)轉(zhuǎn)換出錯! 六、設(shè)計體會與小結(jié) 設(shè)計,給人以創(chuàng)作的沖動,但是也要為這次沖動承擔(dān)一定的痛苦,但

19、事后會發(fā)現(xiàn),這一切都是值得的。本次的JAVA課程設(shè)計讓我對JAVA的理論知識又有更深一步的了解,溫故而知新,開始設(shè)計之時完全沒頭緒,對于理論知識學(xué)習(xí)不夠扎實的我深感“書到用時方恨少”,只好再把書中介紹的相關(guān)的知識重新閱讀了一番,對知識系統(tǒng)而全面進行了梳理,遇到難處先是苦思冥想再向同學(xué)請教,終于熟練掌握了基本理論知識,而且領(lǐng)悟諸多平時學(xué)習(xí)難以理解掌握的較難知識,學(xué)會了如何思考的思維方式,找到了設(shè)計的靈感。 這次課程設(shè)計使我感到收獲不小,使我對JAVA的設(shè)計過程有了更深的了解,促進了對理論知識的消化與吸收,也鞏固和完善了本門課程的知識體系結(jié)構(gòu)。設(shè)計過程中遇到了不少的麻煩,在調(diào)試過程中也出現(xiàn)了一些

20、平時學(xué)習(xí)過程中,沒有遇到過的錯誤,通過在課程設(shè)計中老師的耐心指導(dǎo)以及查閱相關(guān)的資料,努力的思考,一一解決了遇到的問題,通過這些問題,使我對課本知識的理解也更加深刻了。 通過實踐可以讓我發(fā)現(xiàn)更多平時學(xué)習(xí)中不可能遇到的問題,提高綜合能力,因此在以后的學(xué)習(xí)過程中,我將要通過更多的實踐來提高自己,來加強完善知識結(jié)構(gòu)體系。 綜上所述,課程設(shè)計誠然是一門專業(yè)課,給我很多專業(yè)知識以及專業(yè)技能上的提升,同時又是一門講道課,一門辯思課,給了我許多道理,給了我很多思想,給了我莫大的空間。大學(xué)教育當(dāng)如此。 七、參考文獻 [1] 盧曉惠主編.《Java 編程指導(dǎo)》.西安:西安科技大學(xué)出版社. 2006 [2] 張國寧主編 .《Java程序設(shè)計案例教程 》.北京:中國水利出版社.2007 [3] 黃明 ,梁旭主編.《Java信息系統(tǒng)設(shè)計與開發(fā)實例》.北京:機械工業(yè)出版社.2006 [4]

展開閱讀全文
溫馨提示:
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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!