java課程設(shè)計(jì)報(bào)告 計(jì)算器

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

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

16 積分

下載資源

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

資源描述:

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

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

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

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

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

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

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

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

8、進(jìn)制的轉(zhuǎn)換,Calculator是初始化界面,以及響應(yīng)用戶的操作。 四、詳細(xì)設(shè)計(jì) 1.數(shù)據(jù)分析 計(jì)算器的程序設(shè)計(jì),必然會(huì)有數(shù)據(jù)的輸入,其中數(shù)據(jù)包括運(yùn)算符和數(shù)字,均要通過計(jì)算器上的button按鈕選項(xiàng)按鍵輸入進(jìn)去,里面錄入的必然是字符型的數(shù)據(jù),如果要進(jìn)行運(yùn)算,要將輸入的字符型轉(zhuǎn)換成double型,以防止運(yùn)算出錯(cuò)。如可以這樣定義一個(gè)轉(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)在上文有比較詳細(xì)的介紹,主要是通過將數(shù)字鍵和其他符號(hào)區(qū)別開來進(jìn)行監(jiān)聽,可以Pre變量存儲(chǔ)運(yùn)算符前的數(shù)據(jù),operatorchar存儲(chǔ)運(yùn)算符,current存儲(chǔ)運(yùn)算符后的數(shù)據(jù)。當(dāng)按住運(yùn)算符按鈕時(shí)便將之前輸入的數(shù)字存儲(chǔ)在變量 pre中,并將運(yùn)算符存儲(chǔ)在operatorchar中,當(dāng)按住等號(hào)按鈕時(shí),便將后輸入的數(shù)字存儲(chǔ)到current中并根據(jù)所輸入的運(yùn)算符進(jìn)行相關(guān)運(yùn)算。每次輸入的數(shù)字?jǐn)?shù)據(jù)將進(jìn)行類型轉(zhuǎn)換,將inputstring的值賦值給temp,這樣便可以直接通過對

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

11、程序流程圖: 主要代碼及其注釋: //響應(yīng)用戶點(diǎn)擊按鈕事件 //將數(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); //十進(jìn)制按鈕選中 } 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 = " "; } //等號(hào)(運(yùn)算)事件 if(e.getSource()==equalButton) { current = formatConvert(inputString);//賦值給current doOperator(); //調(diào)用計(jì)算函數(shù) input.setText(""+result); //顯示運(yùn)算結(jié)果 inputString = ""+resu

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

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

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

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

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

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

相關(guān)資源

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

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

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


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