java課程設(shè)計(jì)報(bào)告 計(jì)算器
《java課程設(shè)計(jì)報(bào)告 計(jì)算器》由會(huì)員分享,可在線閱讀,更多相關(guān)《java課程設(shè)計(jì)報(bào)告 計(jì)算器(14頁珍藏版)》請(qǐng)?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)用程序,完成簡(jiǎn)單的算術(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í)注冊(cè)按鈕事件監(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è)不同的對(duì)象組件。如:數(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è)置的不可編輯(這樣可靠性很高)。然后對(duì)所有的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ǔ)起來比較簡(jiǎn)單,也不會(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,這樣便可以直接通過對(duì)
10、temp的運(yùn)算來實(shí)現(xiàn)對(duì) 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ù)字一一對(duì)應(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)行簡(jiǎ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ì)讓我對(duì)JAVA的理論知識(shí)又有更深一步的了解,溫故而知新,開始設(shè)計(jì)之時(shí)完全沒頭緒,對(duì)于理論知識(shí)學(xué)習(xí)不夠扎實(shí)的我深感“書到用時(shí)方恨少”,只好再把書中介紹的相關(guān)的知識(shí)重新閱讀了一番,對(duì)知識(shí)系統(tǒng)而全面進(jìn)行了梳理,遇到難處先是苦思冥想再向同學(xué)請(qǐng)教,終于熟練掌握了基本理論知識(shí),而且領(lǐng)悟諸多平時(shí)學(xué)習(xí)難以理解掌握的較難知識(shí),學(xué)會(huì)了如何思考的思維方式,找到了設(shè)計(jì)的靈感。 這次課程設(shè)計(jì)使我感到收獲不小,使我對(duì)JAVA的設(shè)計(jì)過程有了更深的了解,促進(jìn)了對(duì)理論知識(shí)的消化與吸收,也鞏固和完善了本門課程的知識(shí)體系結(jié)構(gòu)。設(shè)計(jì)過程中遇到了不少的麻煩,在調(diào)試過程中也出現(xiàn)了一些
20、平時(shí)學(xué)習(xí)過程中,沒有遇到過的錯(cuò)誤,通過在課程設(shè)計(jì)中老師的耐心指導(dǎo)以及查閱相關(guān)的資料,努力的思考,一一解決了遇到的問題,通過這些問題,使我對(duì)課本知識(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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)6整理和復(fù)習(xí)2圖形與幾何第7課時(shí)圖形的位置練習(xí)課件新人教版
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)6整理和復(fù)習(xí)2圖形與幾何第1課時(shí)圖形的認(rèn)識(shí)與測(cè)量1平面圖形的認(rèn)識(shí)練習(xí)課件新人教版
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)6整理和復(fù)習(xí)1數(shù)與代數(shù)第10課時(shí)比和比例2作業(yè)課件新人教版
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)4比例1比例的意義和基本性質(zhì)第3課時(shí)解比例練習(xí)課件新人教版
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)3圓柱與圓錐1圓柱第7課時(shí)圓柱的體積3作業(yè)課件新人教版
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)3圓柱與圓錐1圓柱第1節(jié)圓柱的認(rèn)識(shí)作業(yè)課件新人教版
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)2百分?jǐn)?shù)(二)第1節(jié)折扣和成數(shù)作業(yè)課件新人教版
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)1負(fù)數(shù)第1課時(shí)負(fù)數(shù)的初步認(rèn)識(shí)作業(yè)課件新人教版
- 2023年六年級(jí)數(shù)學(xué)上冊(cè)期末復(fù)習(xí)考前模擬期末模擬訓(xùn)練二作業(yè)課件蘇教版
- 2023年六年級(jí)數(shù)學(xué)上冊(cè)期末豐收?qǐng)@作業(yè)課件蘇教版
- 2023年六年級(jí)數(shù)學(xué)上冊(cè)易錯(cuò)清單十二課件新人教版
- 標(biāo)準(zhǔn)工時(shí)講義
- 2021年一年級(jí)語文上冊(cè)第六單元知識(shí)要點(diǎn)習(xí)題課件新人教版
- 2022春一年級(jí)語文下冊(cè)課文5識(shí)字測(cè)評(píng)習(xí)題課件新人教版
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)6整理和復(fù)習(xí)4數(shù)學(xué)思考第1課時(shí)數(shù)學(xué)思考1練習(xí)課件新人教版