版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 課程設(shè)計報告書</b></p><p> 課程名稱: JAVA課程設(shè)計 </p><p> 題 目: 計算器的設(shè)計與實現(xiàn) </p><p> 2014年 9 月 11 日</p><p><b> 課程設(shè)計任務(wù)書</b><
2、/p><p> 設(shè)計題目: 計算器的設(shè)計與實現(xiàn)</p><p> 要求完成的主要任務(wù):</p><p> ?。òㄕn程設(shè)計工作量及其技術(shù)要求,以及說明書撰寫等具體要求)</p><p> 設(shè)計一個圖形界面(GUI)的計算器應(yīng)用程序,完成簡單的算術(shù)運算</p><p> ?。?)完成加法,減法,乘法和除法的計算;<
3、;/p><p> ?。?)具有小數(shù)點,正負(fù)號,退格和清零功能;</p><p> 設(shè)計報告撰寫格式要求:</p><p> 1、明確課程設(shè)計的目的和重要性,認(rèn)真領(lǐng)會課程設(shè)計的題目,讀懂課程設(shè)計指導(dǎo)書的要求,學(xué)會設(shè)計的基本方法與步驟,學(xué)會如何運用前修知識與收集、歸納相關(guān)資料解決具體問題的方法。嚴(yán)格要求自己,要獨立思考,按時、獨立完成課程設(shè)計任務(wù)。</p>
4、<p> 2、設(shè)計報告:要求層次清楚、整潔規(guī)范、不得相互抄襲,凡正文內(nèi)容有整段完全相同者一律以抄襲論處。設(shè)計報告正文字?jǐn)?shù)不少于0.2萬字(不包括附錄)</p><p><b> 時間安排:</b></p><p> 消化資料、系統(tǒng)調(diào)查 1天</p><p> 項目原型開發(fā)
5、 1天</p><p> 系統(tǒng)功能實現(xiàn) 1天</p><p> 系統(tǒng)驗收 1天</p><p><b> 1 目標(biāo)</b><
6、;/p><p> 設(shè)計一個圖形界面(GUI)的計算器應(yīng)用程序,完成簡單的加、減、乘、除等算術(shù)運算。通過對計算器的編輯來檢測和提升自己的java編程能力。</p><p> 2 軟件開發(fā)環(huán)境與技術(shù)簡介</p><p> 2.1 開發(fā)工具介紹 </p><p> NetBeans包括開源的開發(fā)環(huán)境和應(yīng)用平臺,NetBeans IDE可以使開發(fā)
7、人員利用Java平臺能夠快速創(chuàng)建Web、企業(yè)、桌面以及移動的應(yīng)用程序,NetBeans IDE已經(jīng)支持PHP、Ruby、JavaScript、Groovy、Grails和C/C++等開發(fā)語言。</p><p> NetBeans項目由一個活躍的開發(fā)社區(qū)提供支持, NetBean開發(fā)環(huán)境提供了豐富的產(chǎn)品文檔和培訓(xùn)資源以及大量的第三方插件。</p><p> NetBeans是開源軟件開發(fā)
8、集成環(huán)境,是一個開放框架,可擴(kuò)展的開發(fā)平臺,可以用于Java、C/C++,PHP等語言的開發(fā),本身是一個開發(fā)平臺,可以通過擴(kuò)展插件來擴(kuò)展功能。</p><p><b> 2.2 硬件環(huán)境</b></p><p> 帶有windows xp系統(tǒng)的計算機</p><p><b> 2.3 軟件環(huán)境</b></p&g
9、t;<p> NetBeans IDE 6.9.1</p><p><b> 3 系統(tǒng)需求分析</b></p><p> ?。?)設(shè)計的計算器可以完成加法、減法、乘法、除法的簡單運算。</p><p> ?。?)實現(xiàn)一些簡單的擴(kuò)展運算,如:正負(fù)號、倒數(shù)、退格、清零等功能。</p><p> (3)添加
10、小數(shù)點功能,用以實現(xiàn)浮點型數(shù)據(jù)的計算。</p><p> ?。?)使用布局管理器設(shè)計一個計算器的界面,使用事件監(jiān)聽器處理數(shù)據(jù)的輸入,并完成相關(guān)的計算。</p><p><b> 4 系統(tǒng)總體設(shè)計</b></p><p> 4.1 系統(tǒng)功能簡介</p><p> ?。?)完成加法,減法,乘法和除法的計算;</p&
11、gt;<p> ?。?)具有小數(shù)點,正負(fù)號,退格和清零功能;</p><p> 4.2 系統(tǒng)功能模塊規(guī)劃</p><p> ?。?)根據(jù)所設(shè)計出來的界面,首先要設(shè)計其GUI界面,總體界面有一個文本框,20個按鈕,總體界面用GridLayout布局,文本框放置在最NORTH,然后0到9以及+,-,*,/等按鈕放置到一個面板Panel中,完成界面設(shè)計。</p>&
12、lt;p> ?。?)設(shè)計計算流程,首先點擊數(shù)字按鈕時,將按鈕數(shù)值添加到文本框當(dāng)中,并將該數(shù)值保存到一個字符串中,再次點擊數(shù)字按鈕時,將之前保存的字符串與新的數(shù)值拼接起來,再添加到文本框當(dāng)中,直到點擊運算符按鈕時,將文本框當(dāng)中的字符串保存在一個字符串變量中,然后重置文本框內(nèi)容,將運算符號顯示到文本框中,隨后輸入第二個計算數(shù)據(jù)時,用同樣的辦法保存數(shù)據(jù),最后通過控制“=”運算符先將字符串?dāng)?shù)據(jù)轉(zhuǎn)化成雙精度類型,然后計算出結(jié)果并顯示到文本框
13、當(dāng)中。</p><p><b> 5 系統(tǒng)詳細(xì)設(shè)計</b></p><p><b> 5.1程序流程圖</b></p><p><b> 5.2程序分析</b></p><p> ?。?)類Calculator繼承自ActionListener接口,通過這一接口來處理界面
14、中的按鈕所觸發(fā)的動作事件。ActionListener接口可以接收ActionEvent,該接口有一個事件方法actionPerformed(ActionEvent e ),在該方法中將觸發(fā)需要實現(xiàn)的功能。</p><p> ?。?)ActionEvent類繼承自AWTEvent,代表的是一個語義事件,用來指出某組件(component)所定義“行動”發(fā)生了。這種事件由一個組件(如Button)引發(fā),而觸動的時機
15、則是當(dāng)這組件的某種特定動作(如該Button被單擊)發(fā)生之時。此事件產(chǎn)生后,系統(tǒng)會將它分配給該組件所注冊(用addActionListenert()方法實現(xiàn)注冊)的每一個ActionListener(監(jiān)聽者),來接收并處理這種事件。所以如果一個按鈕組件注冊一個addActionListener方法,那么當(dāng)用戶用鼠標(biāo)單節(jié)此按鈕時,就會產(chǎn)生ActionEvent事件。</p><p> ?。?)在程序運行中,每當(dāng)單擊
16、數(shù)字按鈕和運算符按鈕,都會觸發(fā)動作actionPerformed(ActionEvent e),利用類ActionEvent得getActionCommand()方法確定是由哪一個按鈕觸發(fā)的,進(jìn)行相應(yīng)的計算操作。</p><p> ?。?)在AWT中提供了五種布局管理類。布局管理器指明了容器中構(gòu)件的位置和尺寸大小。通過布局管理器,只需知道放置的構(gòu)件同其他構(gòu)件的相對應(yīng)的位置即可,有助于實現(xiàn)軟件的平臺無關(guān)性。本程序中
17、用到的布局管理管理器的BorderLayout、GridLayout。其中BorderLayout類使用地理上的方向North、South、West和Center來確定構(gòu)件添加的位置。其中前四個方向占據(jù)屏幕的四邊,而Center方向占據(jù)剩下的空白;GridLayout是比較復(fù)雜但是卻很靈活得AWT布局,可以精確地指定組件的放置位置,它是在將屏幕劃分成網(wǎng)格的基礎(chǔ)上,允許每個機構(gòu)占據(jù)一個或多個單元(顯示區(qū)域)。在程序中用到GridLayou
18、t的構(gòu)件函數(shù)GridLayout(int rows ,int cols,int hasp,int vgap)其中的參數(shù)分別表示行數(shù),列數(shù),水平間距和垂直間距。</p><p> ?。?)AWT中提供了可以用來盛裝構(gòu)件的面板(Panel),可以把對象放在面板上,在把面板鑲到窗口中,每一個面板有顏色、大小,甚至頁面設(shè)計等屬性。</p><p> 5.3部分代碼及解析</p>&
19、lt;p><b> 1.需要調(diào)用的類</b></p><p> import java.awt.*;</p><p> import java.awt.event.*;</p><p> import javax.swing.*;</p><p> import javax.swing.event.*;&
20、lt;/p><p> public class hutest extends JFrame implements ActionListener,DocumentListener{</p><p> JTextField text;//文本誆</p><p> String x="",y="",operation="
21、";</p><p> boolean flag1=true,flag2=true,flag3=true,flag4=true,flag5=true;</p><p><b> }</b></p><p><b> 2.主函數(shù)</b></p><p> public static
22、void main(String args[]){</p><p> new hutest();</p><p><b> }</b></p><p><b> 3界面設(shè)計</b></p><p> public hutest(){</p><p> super(&
23、quot;計算器");</p><p> Container c=this.getContentPane();//獲得一個容器</p><p> c.setLayout(null);//布局為空</p><p> text=new JTextField();</p><p> text.setSize(480,38);//大
24、小</p><p> text.setLocation(10,50);//位置</p><p> text.setHorizontalAlignment(JTextField.RIGHT);//文本曠右邊</p><p> c.add(text);</p><p> text.getDocument().addDocumentList
25、ener(this);//文本框注冊事件</p><p> JPanel pan2=new JPanel();//面板</p><p> pan2.setSize(480,240);</p><p> pan2.setLocation(10,150);</p><p> pan2.setLayout(new GridLayout(4,
26、5,10,10));</p><p> String str[]={"1","2","3","+","c","4","5","6","-","退格","7","8",&quo
27、t;9","*","倒數(shù)","0","+/-",".","/","="};</p><p> for(int i=0;i<str.length;i++){</p><p> JButton button=new JButton(st
28、r[i]);</p><p> button.addActionListener(this);</p><p> pan2.add(button);</p><p><b> }</b></p><p> c.add(pan2);</p><p> this.setDefaultClos
29、eOperation(JFrame.EXIT_ON_CLOSE);</p><p> this.setSize(500,450);</p><p> this.setVisible(true);</p><p><b> }</b></p><p> 4運算符的控制和值的輸入輸出</p><p
30、> public void changedUpdate(DocumentEvent e){}</p><p> public void insertUpdate(DocumentEvent e){ </p><p> x=text.getText();//獲得文本誆 的內(nèi)容</p><p> // System.out.println("y
31、="+y+" x="+x); </p><p><b> }</b></p><p> public void removeUpdate(DocumentEvent e){</p><p><b> }</b></p><p> public void a
32、ctionPerformed(ActionEvent e){</p><p> String z=e.getActionCommand();//記錄按紐上的字符</p><p><b> try{</b></p><p> if(Character.isDigit(z.charAt(0))){</p><p>
33、text.setText(text.getText()+z);</p><p> flag1=true;flag2=true;flag3=true;flag4=true;flag5=true;</p><p><b> }</b></p><p> else if(z.equals("+")&&flag
34、1){</p><p> operation="+";y=x;text.setText("");flag1=false;</p><p><b> }</b></p><p> else if(z.equals("-")&&flag2){</p>&
35、lt;p> operation="-";y=x;text.setText("");flag2=false;</p><p><b> }</b></p><p> else if(z.equals("*")&&flag3){</p><p> operat
36、ion="*";y=x;text.setText("");flag3=false;</p><p><b> }</b></p><p> else if(z.equals("/")&&flag4){</p><p> operation="/"
37、;;y=x;text.setText("");flag4=false;</p><p><b> }</b></p><p> else if(z.equals("倒數(shù)")){</p><p> flag1=true;flag2=true;flag3=true;flag4=true;flag5=tr
38、ue;</p><p> y=x;Double y2=Double.parseDouble(y);double y22=1/y2;text.setText(y22+"");</p><p><b> }</b></p><p> else if(z.equals("+/-")){</p>
39、<p><b> y=x;</b></p><p> double yy=-Double.parseDouble(y);text.setText(yy+"");</p><p> flag1=true;flag2=true;flag3=true;flag4=true;flag5=true;</p><p>
40、;<b> }</b></p><p> else if(z.equals(".")){</p><p> if(x.indexOf(".")==-1){</p><p> text.setText(x+".");</p><p><b>
41、}</b></p><p> flag1=true;flag2=true;flag3=true;flag4=true;flag5=true;</p><p><b> }</b></p><p> else if(z.equals("=")){</p><p> flag1=tru
42、e;flag2=true;flag3=true;flag4=true;flag5=true;</p><p> Double op1=Double.parseDouble(y);</p><p> Double op2=Double.parseDouble(x);</p><p> if(operation.equals("+")){x=o
43、p1+op2+"";text.setText(x);}</p><p> else if(operation.equals("-")){x=op1-op2+"";text.setText(x);}</p><p> else if(operation.equals("*")){x=op1*op2+"
44、;";text.setText(x);}</p><p> else if(operation.equals("/")){x=op1/op2+"";text.setText(x);}</p><p> else if(operation.equals("%")){x=op1%op2+"";text
45、.setText(x);}</p><p><b> }</b></p><p> else if(z.equals("c")){</p><p> x="";text.setText("");</p><p> flag1=true;flag2=tru
46、e;flag3=true;flag4=true;flag5=true;</p><p><b> }</b></p><p> else if(z.equals("退格")){</p><p> text.setText(x.substring(0,x.length()-1));</p><p>
47、; flag1=true;flag2=true;flag3=true;flag4=true;flag5=true;</p><p><b> }</b></p><p> }catch(Exception ex){x="";y="";operation="";text.setText("&qu
48、ot;);}</p><p><b> }</b></p><p> 6 系統(tǒng)測試與運行 </p><p><b> ?。?)界面顯示</b></p><p> ?。?)輸入數(shù)字“13”</p><p> ?。?)點擊“+”后輸入“14”。</p><
49、p> (4)點擊“=”,獲得結(jié)果。</p><p> ?。?)輸入數(shù)字“10”</p><p> ?。?)取倒數(shù)運算后,獲得結(jié)果。</p><p> ?。?)點擊“退格”,獲得結(jié)果</p><p><b> 7 總 結(jié) </b></p><p> 本次課程設(shè)計到此算是告一段落了,經(jīng)過
50、這次的學(xué)習(xí),我學(xué)到了很多東西,在此基礎(chǔ)上更加鞏固了自己對java的認(rèn)識與了解。</p><p> 在做本項目是時候,會遇到很多小問題,比如說,在整個運算過程中要如何確保輸入的計算數(shù)據(jù)哪個是第一個計算數(shù)據(jù)的,哪個是第二個計算數(shù)據(jù)的,同時也要區(qū)分運算符,因為該計算器程序應(yīng)用的都是利用字符串來完成計算的,而且不能重復(fù)輸出運算符,更不能將運算符錯誤的存儲在了第一個計算數(shù)據(jù)的數(shù)值中,也得考慮到萬一不小心重復(fù)點擊了運算符按
51、鈕會不會造成第一個計算數(shù)據(jù)的重新賦值等等問題,最后想到利用布爾類型來很好的控制運算符的應(yīng)用!</p><p> 此次課程設(shè)計讓我更了解熟悉了Java中的圖形用戶界面和它的編程方式。在完成課題的過程中也不斷充實了自己,學(xué)習(xí)到了很多以前沒有學(xué)習(xí)到的知識,收獲很大。最大的收獲就是對大學(xué)學(xué)習(xí)的總結(jié)和培養(yǎng)了解決困難的信心和能力,使我對所學(xué)知識能夠融會貫通,又不斷豐富了新知識。Java計算器設(shè)計使得我們對所學(xué)的專業(yè)課有了更
52、為深刻的認(rèn)識,使得知識得到了鞏固和提高。</p><p> 在接下來的時間里,我覺得我要更加努力的往深一層次的方面看齊,了解更多有關(guān)java的知識,對java有更深一步的了解,我會一步一步的走下去!</p><p><b> 8 參 考 文 獻(xiàn)</b></p><p> [1] 王建華. ASP NET 2.0 動態(tài)網(wǎng)站開發(fā)技術(shù)與實踐[M
53、].北京:電子工業(yè)出版社,2007.[2]徐迎曉 《Java語法及網(wǎng)絡(luò)應(yīng)用設(shè)計》 清華大學(xué)出版社 2002 [3]戴特爾(美)《Java 大學(xué)簡明教程——實例程序設(shè)計》 2005</p><p> 附錄A:系統(tǒng)核心代碼</p><p> public void changedUpdate(DocumentEvent e){}</p>
54、<p> public void insertUpdate(DocumentEvent e){ </p><p> x=text.getText();//獲得文本誆 的內(nèi)容</p><p> // System.out.println("y="+y+" x="+x); </p><p><b&g
55、t; }</b></p><p> public void removeUpdate(DocumentEvent e){</p><p><b> }</b></p><p> public void actionPerformed(ActionEvent e){</p><p> String z
56、=e.getActionCommand();//記錄按紐上的字符</p><p><b> try{</b></p><p> if(Character.isDigit(z.charAt(0))){</p><p> text.setText(text.getText()+z);</p><p> flag1=t
57、rue;flag2=true;flag3=true;flag4=true;flag5=true;</p><p><b> }</b></p><p> else if(z.equals("+")&&flag1){</p><p> operation="+";y=x;text.se
58、tText("");flag1=false;</p><p><b> }</b></p><p> else if(z.equals("-")&&flag2){</p><p> operation="-";y=x;text.setText("&quo
59、t;);flag2=false;</p><p><b> }</b></p><p> else if(z.equals("*")&&flag3){</p><p> operation="*";y=x;text.setText("");flag3=false;
60、</p><p><b> }</b></p><p> else if(z.equals("/")&&flag4){</p><p> operation="/";y=x;text.setText("");flag4=false;</p><
61、p><b> }</b></p><p> else if(z.equals("倒數(shù)")){</p><p> flag1=true;flag2=true;flag3=true;flag4=true;flag5=true;</p><p> y=x;Double y2=Double.parseDouble(y)
62、;double y22=1/y2;text.setText(y22+"");</p><p><b> }</b></p><p> else if(z.equals("+/-")){</p><p><b> y=x;</b></p><p> do
63、uble yy=-Double.parseDouble(y);text.setText(yy+"");</p><p> flag1=true;flag2=true;flag3=true;flag4=true;flag5=true;</p><p><b> }</b></p><p> else if(z.equal
64、s(".")){</p><p> if(x.indexOf(".")==-1){</p><p> text.setText(x+".");</p><p><b> }</b></p><p> flag1=true;flag2=true;flag3
65、=true;flag4=true;flag5=true;</p><p><b> }</b></p><p> else if(z.equals("=")){</p><p> flag1=true;flag2=true;flag3=true;flag4=true;flag5=true;</p><
66、;p> Double op1=Double.parseDouble(y);</p><p> Double op2=Double.parseDouble(x);</p><p> if(operation.equals("+")){x=op1+op2+"";text.setText(x);}</p><p> e
67、lse if(operation.equals("-")){x=op1-op2+"";text.setText(x);}</p><p> else if(operation.equals("*")){x=op1*op2+"";text.setText(x);}</p><p> else if(opera
68、tion.equals("/")){x=op1/op2+"";text.setText(x);}</p><p> else if(operation.equals("%")){x=op1%op2+"";text.setText(x);}</p><p><b> }</b></
69、p><p> else if(z.equals("c")){</p><p> x="";text.setText("");</p><p> flag1=true;flag2=true;flag3=true;flag4=true;flag5=true;</p><p><b
70、> }</b></p><p> else if(z.equals("退格")){</p><p> text.setText(x.substring(0,x.length()-1));</p><p> flag1=true;flag2=true;flag3=true;flag4=true;flag5=true;<
71、;/p><p><b> }</b></p><p> }catch(Exception ex){x="";y="";operation="";text.setText("");}</p><p><b> }</b></p>
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- java實現(xiàn)計算器課程設(shè)計
- java課程設(shè)計--計算器的設(shè)計與實現(xiàn)
- java課程設(shè)計---java計算器
- java課程設(shè)計—計算器
- java課程設(shè)計計算器
- java計算器課程設(shè)計
- java課程設(shè)計---計算器
- java課程設(shè)計--計算器
- java課程設(shè)計計算器
- 計算器java課程設(shè)計--簡單計算器
- java課程設(shè)計報告—計算器
- java課程設(shè)計----簡易計算器
- java課程設(shè)計報告--計算器設(shè)計
- java_計算器課程設(shè)計
- java課程設(shè)計-計算器系統(tǒng)
- java課程設(shè)計---科學(xué)計算器
- java課程設(shè)計-計算器系統(tǒng)
- java計算器課程設(shè)計報告
- java課程設(shè)計--復(fù)雜計算器的設(shè)計
- 《java項目實訓(xùn)》課程設(shè)計——基于java計算器的設(shè)計與實現(xiàn)
評論
0/150
提交評論