java專業(yè)課程設計方案報告計算器_第1頁
java專業(yè)課程設計方案報告計算器_第2頁
java專業(yè)課程設計方案報告計算器_第3頁
java專業(yè)課程設計方案報告計算器_第4頁
java專業(yè)課程設計方案報告計算器_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

目錄TOC\o"1-3"\h\u8715一、課程設計目標 2二、課程設計任務2250422.1、設計任務 2196252.2、課程設計要求: 230872.3、需求分析 2三、開發(fā)工具和平臺348153.1、開發(fā)工具 386143.2、開發(fā)平臺 3設計思緒44.1、界面設計4302264.2.1、邏輯設計 44.2.2、程序步驟圖54.2.3、關鍵代碼展示及說明5305674.3、程序測試 1013127五、試驗小結 1119709六、附錄(程序代碼) 12

一、課程設計目標1、熟練掌握java面向對象編程。2、選擇適宜數據結構實現需求。3、熟練使用多種控制結構。4、GUI組件、事件處理技術。二、課程設計任務2.1、設計任務設計一個簡易計算器,能夠進行四則運算:加、減、乘、除等(限于十進制下)程序要求:(1)應含有對應界面,可參考Windows操作系統(tǒng)自帶計算器界面。(2)操作符號定為:“+”,“-”,“*”,“/”,“+/-”等。(按國際通例設計)(3)用戶經過點擊程序界面上按鈕,實現數字、運算符輸入操作。(4)以上部分為必需完成內容。選作部分:(1)含有操作符號“1/x”,“sqrt”(開方),“.”(小數功效)等。2.2、課程設計要求:(1)應用自己所學課程知識完成對計算器基礎任務。(2)查閱相關資料,學習和掌握項目中包含新知識,提升自學能力。(3)經過應用java程序編寫計算器來提升自己對簡單圖形界面有一定掌握和了解。2.3、需求分析設計計算器能夠完成加法、減法、乘法、除法簡單運算。實現部分簡單擴展運算,如:正負號、倒數、退格、清零等功效。添加小數點功效,用以實現浮點型數據計算。使用布局管理器設計一個計算器界面,使用事件監(jiān)聽器處理數據輸入,并完成相關計算。三、開發(fā)工具和平臺3.1、開發(fā)工具MicrosoftWindows7旗艦版3.2、開發(fā)平臺JDK1.6.0-02和UE編譯器

四、設計思緒4.1、界面設計:(圖3-1)圖3-14.2.1、邏輯設計:依據所設計出來界面,首先要設計其GUI界面,總體界面有一個文本框,20個按鈕,總體界面用BorderLayout布局,文本框放置在最NORTH,然后0到9和+,-,*,/等按鈕放置到一個面板Panel中,完成界面設計。設計計算步驟,首先點擊數字按鈕時,將按鈕數值添加到文本框當中,并將該數值保留到一個字符串中,再次點擊數字按鈕時,將之前保留字符串和新數值拼接起來,再添加到文本框當中,直到點擊運算符按鈕時,將文本框當中字符串保留在一個字符串變量中,然后重置文本框內容,將運算符號顯示到文本框中,隨即輸入第二個計算數據時,用一樣措施保留數據,最終經過控制“=”運算符先將字符串數據轉化成雙精度類型,然后計算出結果并顯示到文本框當中?;A運算設計完成以后則開始考慮其它部分功效實現,比如倒數、清零、退格等功效實現,清零直接重置文本框內容,退格功效則采取substring函數截取字符串長度。

4.2.2、程序步驟圖:4.2.3、關鍵代碼展示及說明:總體代碼設計:程序采取繼承windowadapter類,新建Jframe窗體,利用數組來定義JBotton按鈕,同時利用數組注冊監(jiān)聽,采取4行5列網格布局,完成計算器界面基礎設置,在窗體正常關閉方面,采取匿名類實現窗體正常關閉。最終對按鈕進行計算分析,分別設定輸入數據A類、運算符控制Opertion類,退格功效BackSpace類、計算結果Result類等等,一步步實現計算器基礎功效?。?)類A設計(數據輸入)classAimplementsActionListener { publicvoidactionPerformed(ActionEvente) { Stringa=Jtext.getText(); Strings=e.getActionCommand(); if(a.equals("0.")||a.equals("+")||a.equals("-")||a.equals("*")||a.equals("/")) Jtext.setText(s); else { if(flag2) { Jtext.setText(s); flag2=false; } else Jtext.setText(a+s); } } }功效解釋:程序開始時,程序初始化文本框內容為“0.”,點擊數字按鈕,則調用類A,首先用a來獲取目前文本框內容,s來獲取按鈕數值,然后進行判定,若a值為上述代碼值則輸出s值,再次點擊數字按鈕時,再次調用A類,此時a值為上次輸入s值,第一個if語句不滿足,實施下個if語句if(flag2),flag2初始值為false,該語句功效是在實施了“=”號按鈕時,預防新數字按鈕值合并到到已經得出結果上,比如:12+12=24,此時再點擊數字按鈕3時,則文本框內容被重置,輸出數值3,而不是243,假如if(flag2)不滿足,則將字符串a和s合并并輸出,得出第一個要計算數據。(2)類Opertion設計:(運算符控制)classOpertionimplementsActionListener { publicvoidactionPerformed(ActionEvente) { cal=e.getActionCommand(); if(flag1==true) x=Jtext.getText(); Jtext.setText(cal); flag1=false; } }功效解釋:當點擊運算符控制按鈕時,首先將運算符數值賦值給cal(初值為空),緊接著進行判定,flag1初值為ture,該類作用為在點擊運算符按鈕時,將計算第一個數據保留在x字符串變量當中,然后將文本框內容重置為點擊運算符數值,類結尾將flag1賦值為false,預防再次點擊運算符按鈕時改變了x值。(附:此時文本框內容為運算符值,輸入第二個計算數據時,點擊數字按鈕,則再次調用A類,此時滿足A類中第一個if語句,文本框內容被重置為數字按鈕值,接下來和獲取第一個計算數據步驟一樣,直到點擊“=”號運算符為止?。?)類Result設計:(計算并輸出結果)classResultimplementsActionListener //計算并顯示結果 { publicvoidactionPerformed(ActionEvente) { doublenum1; num1=Double.parseDouble(x); y=Jtext.getText(); doublenum2; num2=Double.parseDouble(y); doubleresult=0; if(num2!=0) { if(cal.equals("+")) result=num1+num2; if(cal.equals("-")) result=num1-num2; if(cal.equals("*")) result=num1*num2; Strings1=Double.toString(result); Jtext.setText(s1); } if(cal.equals("/")) { if(num2==0) Jtext.setText("除數不能為0"); else { result=num1/num2; Strings1=Double.toString(result); Jtext.setText(s1); } } flag1=true; flag2=true; } }功效解釋:首先定義兩個Double型num1,num2,將之前保留第一個計算數據x強制轉換為Double型后賦值給num1,接著用字符串變量y來獲取目前文本框內容,即第二個計算數據值,一樣再將其強制轉換Double型后賦值給num2,然后進行運算符判定,對cal值進行比較,然后進行對應計算,將計算結果轉換成字符串后將其輸出到文本框中,在類最終將flag1、flag2賦值為true,作用是將計算結果看成第二次計算數據進行再運算,立即結果重新賦值給x作為第一個計算數據?。ǜ剑涸谶@類中還考慮了當除數為零情況。)(4)類BackSpace設計:(功效類—退格)classBackSpaceimplementsActionListener { publicvoidactionPerformed(ActionEvente) { Strings=e.getActionCommand(); Strings1=Jtext.getText(); if(s.equals("退格")) s1=newString(s1.substring(0,s1.length()-1)); Jtext.setText(s1); } }功效解釋:這是計算器附加功效實現,這里只介紹退格功效,像正負號、求倒數、清零等功效相同,所以就不再一一介紹。首先獲取退格按鈕命令值賦給s,然后獲取目前文本框內容,即輸入數據,將其賦給s1,接著進行判定,利用substring函數將s1字符串截取為從第一個字符至倒數第二個字符為止字符串并重新賦值給s1,再將其輸出到文本框,實現退格功效。

4.3、程序測試1.簡單運算:(以加法為例:123+456)分析:計算結果為579.0,為雙精度型,計算結果被設置在文本框最右端,該計算器一個特點是可直接在文本框中輸入數據和進行更改。2.倒數運算:(以123為例)分析:輸出結果圖所表示,倒數功效實現,計算時,不僅是結果,輸入數據一樣能夠先實現倒數功效后再進行對應計算,沒有影響!3.退格運算:(以123為例)分析:輸出結果圖所表示,本計算器退格鍵有一個特點是,就算是是計算后得出結果也能實現退格,缺點是不能很好處理小數點問題,因為小數點也是字符串一部分。4.正負號運算:(以123為例)分析:輸出結果圖所表示,正負號添加能夠很好實現,但能夠進行部分改善,比如在計算過程當中直接點擊負號運算符輸入負數進行計算!5.總體分析:該計算器基礎運算沒有問題,清零、正負號、求倒數、退格功效全部能很好實現,總體能完成一個計算器基礎功效,但仍有很多地方需要改善,比如小數點實現所存在部分問題,即使在基礎運算過程當中不會造成太大影響,但這仍然不能認為是一個很好計算器,同時,在其次,該計算器還沒能很好實現連續(xù)計算功效,必需每次按下等號按鈕計算出結果后才能用產生結果接著進行下一次計算,改善方法是在運算符上同時注冊Result類,讓運算符同時擁有計算結果功效。五、試驗小結此次課程設計到此算是告一段落了,經過這次學習,我學到了很多東西,在此基礎上愈加鞏固了自己對java認識和了解。在做本項目是時候,會碰到很多小問題,比如說,在整個運算過程中要怎樣確保輸入計算數據哪個是第一個計算數據,哪個是第二個計算數據,同時也要區(qū)分運算符,因為該計算器程序應用全部是利用字符串來完成計算,而且不能反復輸出運算符,更不能將運算符錯誤存放在了第一個計算數據數值中,也得考慮到萬一不小心反復點擊了運算符按鈕會不會造成第一個計算數據重新賦值等等問題,最終想到利用布爾類型來很好控制運算符應用!此次課程設計讓我更了解熟悉了Java中圖形用戶界面和它編程方法。在完成課題過程中也不停充實了自己,學習到了很多以前沒有學習到知識,收獲很大。最大收獲就是對大學學習總結和培養(yǎng)了處理困難信心和能力,使我對所學知識能夠融會貫通,又不停豐富了新知識。Java計算器設計使得我們對所學專業(yè)課有了更為深刻認識,使得悉識得到了鞏固和提升。在接下來時間里,我認為我要愈加努力往深一層次方面看齊,了解更多相關java知識,對java有更深一步了解,我會一步一步走下去!六、附錄(程序代碼)importjava.awt.*;importjavax.swing.*;importjava.awt.event.*;publicclassTheCalculatorextendsWindowAdapter //程序框架繼承自WindowAdapter類{ privateJTextFieldJtext=newJTextField("0."); privateJFramef=newJFrame("計算器-趙磊"); privateStringx=""; privateStringy=""; privateStringcal=""; privatebooleanflag1=true; privatebooleanflag2=false; publicvoidinit() //初始化 { String[]buttonValue=newString[]{"1","2","3","+","C","4","5","6","-","退格","7","8","9","*","1/x","0","+/-",".","/","="}; Containercontain=f.getContentPane(); JPanelJpan=newJPanel(); JButton[]Jb=newJButton[20]; contain.setLayout(newBorderLayout()); //采取4行5列網格布局 Jpan.setLayout(newGridLayout(4,5)); Jtext.setHorizontalAlignment(JTextField.RIGHT); contain.add(Jtext,"North"); contain.add(Jpan); Anum=newA(); //數據 Resultre=newResult(); //結果 Opertionop=newOpertion(); //運算符 Clearcl=newClear(); //清零 BackSpaceback=newBackSpace(); //退格 CountDowncount_d=newCountDown(); //倒數 Strainsstra=newStrains(); //相反數 for(inti=0;i<Jb.length;i++) //利用For循環(huán)添加按鈕 { Jb[i]=newJButton(buttonValue[i]); Jpan.add(Jb[i]); if(i==3||i==8||i==13||i==18) Jb[i].addActionListener(op); if(i==0||i==1||i==2||i==5||i==6||i==7||i==10||i==11||i==12||i==15||i==17) Jb[i].addActionListener(num); if((i==3||i==4||i==8||i==9)||((i>12)&&(i<=19))&&i!=15) Jb[i].setForeground(newColor(255,0,0)); else Jb[i].setForeground(newColor(0,0,255));//控制按鈕字體顏色 } Jb[4].addActionListener(cl); Jb[9].addActionListener(back); Jb[14].addActionListener(count_d); Jb[16].addActionListener(stra); Jb[19].addActionListener(re); f.setSize(320,240); f.setVisible(true); f.addWindowListener( //采取匿名類實現窗口正常關閉 newWindowAdapter() { publicvoidwindowClosing(WindowEvente) { System.exit(0); } }); } classAimplementsActionListener //輸入數據 { publicvoidactionPerformed(ActionEvente) { Stringa=Jtext.getText(); Strings=e.getActionCommand(); if(a.equals("0.")||a.equals("+")||a.equals("-")||a.equals("*")||a.equals("/")) Jtext.setText(s); else { if(flag2) { Jtext.setText(s); flag2=false; } else Jtext.setText(a+s); } } } classOpertionimplementsActionListener { publicvoidactionPerformed(ActionEvente) { cal=e.getActionCommand(); if(flag1==true) x=Jtext.getText(); Jtext.setText(cal); flag1=false; } } classClearimplementsActionListener //清零功效 { publicvoidactionPerformed(ActionEvente) { Jtext.setText("0."); } } classCountDownimplementsActionListener //求倒數類 { publicvoidactionPerformed(ActionEvente) { Strings=e.getActionCommand(); Strings1=Jtext.getText(); if(s.equals("1/x")) s1=newString(""+1/Double.parseDouble(s1)); Jtext.setText(s1); } } classStrainsimplementsActionListener //求相反數類 { publicvoidactionPerformed(ActionEvente) { Strings=e.getActionCommand(); Strings1=Jtext.getText(); if(s.equals("+/-")) s1=newString(""+(0-Double.parseDouble(s1))); Jtext.setText(s1); } } classBackSpaceimplementsActionListener //退格功效 { publicvoidactionPerformed(ActionEvente)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論