




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
《Java實訓》設計報告《Java實訓》設計報告計算器專業:計算機科學與技術班級:軟件1231學號:1204311130姓名:王磊計算機技術與工程學院2013年7月11日項目簡介項目名稱計算器開發人員王磊項目簡介本程序名稱為計算器,主要功能是實現簡單的數字,運算符號,計算,刪除,復位等功能。項目目的掌握計算器的各項基本功能掌握編寫計算器程序的所用方法掌握Swing組件的應用掌握事件的應用主要技術Java編程語言、javaSwing技術開發環境JDK1.6.0_24項目特點使用組件構建的C/S應用程序各項功能的組織合理搭配應用圖標控制功能實現技術重點構建基于C/S架構的應用程序Swing組件應用事件監聽的應用方法的編寫技術難點Swing組件的應用事件監聽器的使用異常處理方法簡便的選擇項目名稱一、項目需求本程序的主要功能:(1)單擊“計算器”上的數字按鈕(0~9)可以設置參與計算的運算數。(2)單擊“計算器”上的運算符按鈕(+、-、*、/、1/x、sqrt、%)可以選擇運算符號。(3)單擊“計算器”上的“=”按鈕顯示計算結果。(4)單擊“計算器”上的“復位”按鈕清空計算結果。(5)單擊“計算器”上的“刪除”按鈕刪除輸入的最后一個數字。二、項目分析與設計在設計計算器時,編寫2個Java源文件:CalculatorWindow.java、NumberButton.java計算器除了上述Java源文件所給出的類外,還需要Java系統提供的一些重要類,如JButton,JTextField等。下面是2個Java源文件的總體設計。(1)CalculatorWindow.java(主類)CalculatorWindow類負責創建計算器的主窗口,該類含有main方法,計算器從該類開始執行。CalculatorWindow類有4種類型的對象,分別是:LinkedList<String>、NumberButton、JButton、JTextField。(2)NumberButton.javaNumberButton類創建的對象是主類CalculatorWindow窗口的一個“數字”按鈕。NumberButton有一個int類型的成員temp,用于標明所創建的按鈕所含有的運算符號。NumberButton所創建的22個按鈕被添加到CalculatorWindow窗口中。1、CalculatorWindow類(主類)(1)數據和方法CalculatorWindow類是javax.swing包中JFrame的一個字類,并實現了ActionListener接口。類中有關數據和方法的詳細說明。1)成員變量jbArray是NumberButton型數組,每個單元是一個NumberButton類創建的“數字按鈕”對象,該數組長度為10。numberButton數組中的“數字按鈕”含有的數字依次為0~9。每個“數字按鈕”都注冊有ActionEvent事件監聽器。2)方法main(Stringargs[])方法是計算器程序運行的入口方法。CalculatorWindow()是構造方法,負責完成窗口的初始化。三、源代碼importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassjisuanqiextendsJFrameimplementsActionListener{ privateJTextFieldjtResult=newJTextField(); privateJButtonjb_clear=newJButton("復位"); privateJButtonjb_delete=newJButton("刪除"); privatestaticJButton[][]jbArray={{newJButton("7"),newJButton("4"),newJButton("1"),newJButton("0")}, {newJButton("8"),newJButton("5"),newJButton("2"),newJButton("+/-")}, {newJButton("9"),newJButton("6"),newJButton("3"),newJButton(".")}, {newJButton("/"),newJButton("*"),newJButton("-"),newJButton("+")}, {newJButton("sqrt"),newJButton("%"),newJButton("1/x"),newJButton("=")} }; intfirst=0; doubleqian;Stringfuhao;booleanclear=true,clickable=true; publicjisuanqi() { setFrame(); addListener(); } publicvoidsetFrame() { this.setLayout(null); this.setTitle("計算器"); jtResult.setBounds(120,100,310,30); jtResult.setEditable(false); jtResult.setHorizontalAlignment(JTextField.RIGHT); this.add(jtResult); jb_clear.setBounds(290,150,60,30); this.add(jb_clear); for(inti=0;i<jbArray.length;i++) { for(intj=0;j<jbArray[0].length;j++) { jbArray[i][j].setBounds(50+80*i,200+60*j,60,30); this.add(jbArray[i][j]); } } jb_delete.setBounds(370,150,60,30); this.add(jb_delete); this.setBounds(430,130,500,500); this.setVisible(true); } publicvoidaddListener() { jtResult.addActionListener(this); jb_clear.addActionListener(this); jb_delete.addActionListener(this); for(inti=0;i<jbArray.length;i++) { for(intj=0;j<jbArray[0].length;j++) { jbArray[i][j].addActionListener(this); } } } publicvoidactionPerformed(ActionEvente) { Objecttemp=e.getSource(); if(temp==jb_clear) { jtResult.setText(""); } if(temp==jb_delete) { Strings=jtResult.getText(); jtResult.setText(""); for(inti=0;i<s.length()-1;i++) { chara=s.charAt(i); jtResult.setText(jtResult.getText()+a); } } if(temp==jbArray[0][3])//點擊"0"按鈕 { if(clear==false)//判斷是否點擊了符號位 jtResult.setText(""); jtResult.setText(jtResult.getText()+"0"); } if(temp==jbArray[0][2])//點擊"1"按鈕 { if(clear==false) jtResult.setText(""); jtResult.setText(jtResult.getText()+"1"); clear=true;//第二次不在清空 } if(temp==jbArray[1][2])//點擊"2"按鈕 { if(clear==false) jtResult.setText(""); jtResult.setText(jtResult.getText()+"2"); clear=true; } if(temp==jbArray[2][2])//點擊"3"按鈕 { if(clear==false) jtResult.setText(""); jtResult.setText(jtResult.getText()+"3"); clear=true; } if(temp==jbArray[0][1])//點擊"4"按鈕 { if(clear==false) jtResult.setText(""); jtResult.setText(jtResult.getText()+"4"); clear=true; } if(temp==jbArray[1][1])//點擊"5"按鈕 { if(clear==false) jtResult.setText(""); jtResult.setText(jtResult.getText()+"5"); clear=true; } if(temp==jbArray[2][1])//點擊"6"按鈕 { if(clear==false) jtResult.setText(""); jtResult.setText(jtResult.getText()+"6"); clear=true; } if(temp==jbArray[0][0])//點擊"7"按鈕 { if(clear==false) jtResult.setText(""); jtResult.setText(jtResult.getText()+"7"); clear=true; }if(temp==jbArray[1][0])//點擊"8"按鈕 { if(clear==false) jtResult.setText(""); jtResult.setText(jtResult.getText()+"8"); clear=true; } if(temp==jbArray[2][0])//點擊"9"按鈕 { if(clear==false) jtResult.setText(""); jtResult.setText(jtResult.getText()+"9"); clear=true; } if(temp==jbArray[2][3])//點擊"."按鈕 { clickable=true; for(inti=0;i<jtResult.getText().length();i++) if('.'==jtResult.getText().charAt(i)) { clickable=false; break; }//第一層判斷是否里面含有小數點; if(clickable==true)//第二壇判斷 jtResult.setText(jtResult.getText()+"."); } try { if(temp==jbArray[3][3])//點擊"+"按鈕 { qian=Double.parseDouble(jtResult.getText()); fuhao="+"; clear=false; } if(temp==jbArray[3][2])//點擊"-"按鈕 { qian=Double.parseDouble(jtResult.getText()); fuhao="-"; clear=false; } if(temp==jbArray[3][1])//點擊"*"按鈕 { qian=Double.parseDouble(jtResult.getText()); fuhao="*"; clear=false; } if(temp==jbArray[3][0])//點擊"/"按鈕 { qian=Double.parseDouble(jtResult.getText()); fuhao="/"; clear=false; } if(temp==jbArray[4][3])//點擊"="按鈕 { doubless=Double.parseDouble(jtResult.getText()); jtResult.setText(""); if(fuhao=="+") jtResult.setText(qian+ss+""); if(fuhao=="-") jtResult.setText(qian-ss+""); if(fuhao=="*") jtResult.setText(qian*ss+""); if(fuhao=="/") jtResult.setText(qian/ss+""); clear=false;//要清空前一次的數據 } if(temp==jbArray[4][0])//點擊"sqrt"按鈕 { Strings=jtResult.getText(); if(s.charAt(0)=='-') { jtResult.setText("負數不能開根號"); } else jtResult.setText(Double.toString(java.lang.Math.sqrt(Double.parseDouble(jtResult.getText())))); clear=false; } if(temp==jbArray[4][2])//點擊"1/x"按鈕 { if(jtResult.getText().charAt(0)=='0'&&jtResult.getText().length()==1) { jtResult.setText("除數不能為零"); } else { booleanisDec=true; inti,j,k; Strings=Double.toString(1/Double.parseDouble(jtResult.getText())); for(i=0;i<s.length();i++) if(s.charAt(i)=='.') break; for(j=i+1;j<s.length();j++) if(s.charAt(j)!='0') { isDec=false; break; } if(isDec==true) { Stringstemp=""; for(k=0;k<i;k++) stemp+=s.charAt(k); jtResult.setText(stemp); } else jtResult.setText(s); } clear=false; } if(temp==jbArray[4][1])//點擊"%"按鈕 { jtResult.setText("0"); clear=false; } if(temp==jbArray[1][3])//點擊"+/-"按鈕 { booleanisNumber=true; Strings=jtResult.getText(); for(inti=0;i<s.length();i++) if(!(s.charAt(i)>='0'&&s.charAt(i)<='9'||s.charAt(i)=='.'||s.charAt(i)=='-')) { isNumber=false; break; } if(isNumber==true) { //如果當前字符串首字母有'-'號,代表現在是個負數,再按下時,則將首符號去掉 if(s.charAt(0)=='-') { jtResult.setText(""); for(inti=1;i<s.length();i++) {
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 聚焦過程安全管理制度
- 綠地日常維護管理制度
- 婚紗館員工管理制度
- 科研費用預算管理制度
- 船上加固鎖具管理制度
- 膨化食品公司管理制度
- 科任老師獎罰管理制度
- 社區杏林醫療管理制度
- 職工餐廳休息管理制度
- 網絡平臺密碼管理制度
- 高墩柱墩身施工方案
- 2023年甘肅蘭州大學網絡與繼續教育學院人員招聘2人高頻考點題庫(共500題含答案解析)模擬練習試卷
- 肝內膽管結石詳解
- 發電機勵磁系統檢修與維護
- 2023-2024學年福建省泉州市小學語文六年級期末自測模擬試卷
- GB 29541-2013熱泵熱水機(器)能效限定值及能效等級
- 控規用地代碼
- 2023年上杭縣社區工作者招聘考試筆試題庫及答案解析
- 2021年曹楊二中自招數學試卷
- 新能源汽車底盤檢修全套課件
- 幼兒園大班數學口算練習題可打印
評論
0/150
提交評論