



版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
下載可編輯《面向對象程序設計》課程設計報告課程設計題目:計算器學生姓名 :李婉如專 業:信息管理與信息系統班 級 :1424603指導教師 :司紅偉.專業.整理.下載可編輯2016年 5月 25 日一、課設任務及要求1)課設任務:⑴設計的計算器應用程序可以完成加法 、減法、乘法、除法以及取余運算(可以進行浮點數和負數的運算 )。⑵有求倒數、退格和清零功能。2)創新要求:能進行正切、余弦,以及求平方根、指數(包括對 e)、自然對數運算。)設計要求①設計的計算器應用程序可以完成加法 、減法、乘法、除法和取余運算。且有小數點、正負號、求倒數、退格和清零功能。②課程設計可選用 Eclipse、JBuilder、NetBeans等作為開發平臺以提高開發效率,通過資料查閱和學習盡可能熟練掌握其中一種集成開發環境。③認真按時完成課程設計報告 ,課程設計報告內容包括 :設計任務與.專業.整理.下載可編輯要求、需求分析、設計思路、詳細設計、運行調試與分析討論和設計體會與小結六個部分。二、設計思路⑴本應用程序繼承自框架類(JFrame),容器 Container c 采用BorderLayout 邊緣布局,將單行文本框加入到 “North”區域,包含各種按.專業.整理.下載可編輯鈕的面板JPanelp加入到”Center”區域。包含各種按鈕的面板 JPanelp采用3行6列的網格布局,然后將數字按鈕和運算符按鈕以及控制按鈕用一個for循環添加到面板中同時注冊按鈕事件監聽器。如:Buttonb=newButton();b.addActionListener( 事件監聽器);⑵事件監聽器中的事件處理方法 void actionPerformed(ActionEvent evt)完成主要的按鈕事件的處理 。事件處理分以下幾種情況 :數字按鈕事件”0”,”1”,”2”?”8,”9”)、運算符按鈕事件(”+”,”-“,”*”,”/”,”%”)、正負號按鈕事件(”+/-“)、小數點按鈕事件(”.”)、等號按鈕事件(”=”)、求倒按鈕事件(”求倒”)、退格按鈕事件(”退格”)、清除按鈕事件(“C”)、正切(tan)、余弦(cos),以及求平方根(sqrt)、指數(pow)、對e的指數(exp)、對數運算(log)。⑶在事件處理,觸發按鈕事件時,先判斷是或是數字是或是 “-/+”是或是“.”,是的話就將負號“-”、數字、小數點“.”分別寫入文本框并存放在 sum中,然后判斷是或是“退格”、求“倒”等,是的話進行相應的處理,都不是的話則跳到doOperation()執行運算同時將運算符存放在preOperater中。觸發按鈕事件時,要進一步分析,是重新開始計算時觸發的按鈕事件還是計算中間觸發的按鈕事件。⑷計算器完成的是一個數學表達式,如:3+2,所以可以采用一個數組來.專業.整理.下載可編輯存儲數字或字符,如3,+,2分別存儲在數組中,最后運算時,可以一一取出來進行運算。⑸利用按鈕設計計算器的各個運算符和操作符 ,通過按鈕的事件處理實現按鈕計算功能。⑹利用文本框顯示操作數和運算結果 。三、詳細設計⑴、功能實現:①加減乘除求余以及指數運算voiddoOperation(){doublem=Double.parseDouble(x.getText());if(preOperater.equals(""))sum=m;// 無前一操作,結果為剛輸入數將結果與文本框中的數據按照前一個運算符運算.專業.整理.下載可編輯if(preOperater.equals("+"))sum=sum+m; //加法運算if(preOperater.equals("-"))sum=sum-m; //減法運算if(preOperater.equals("*"))sum=sum*m; //乘法運算if(preOperater.equals("/"))sum=sum/m; //除法運算if(preOperater.equals("%"))sum=sum%m; //求余if(preOperater.equals("pow"))sum=Math.pow(sum,m);// 求冪,指數運算}②其他運算Ⅰ、求平方根Voidsqrt(){doublem=Double.parseDouble(x.getText());if(m<0)x.setText("負數不能開根號");elsex.setText(""+Math.sqrt(m));}Ⅱ、對數運算Voidlog(){.專業.整理.下載可編輯doublem=Double.parseDouble(x.getText());if(m<0)x.setText("負數不能進行自然對數運算 ");elsex.setText(""+Math.log(m));}Ⅲ、余弦運算Voidcos(){doublem=Double.parseDouble(x.getText());x.setText(""+Math.cos(m));}Ⅳ、正切運算Voidtan(){doublem=Double.parseDouble(x.getText());x.setText(""+Math.tan(m));}Ⅴ、e的指數運算Voidexp(){doublem=Double.parseDouble(x.getText());.專業.整理.下載可編輯x.setText(""+Math.exp(m));}Ⅵ、倒數運算Voiddaoshu(){if(Double.parseDouble(x.getText())==0)x.setText("除數不能為零");else{x.setText(""+1/(Double.parseDouble(x.getText())));preOperater="";}}③主要方法說明publiccos(doublex)//求x的余弦函數publictan(doublex)//求x的正切函數publicsqrt(doublex)//求x的平方根publiclog(doublex)//求x的自然對數運算publicexp(doublex)//求e的x次冪publicpow(doublea,doubleb)//求a的b次冪publicdaoshu(doublex)//求x的倒數.專業.整理.下載可編輯⑵、算法思路:這是一個簡單的計算器 ,里面所涉及到的功能就是加 、減、乘、除、等基本功能。在輸入數據之后 Character.isDigit(Command.charAt(0)) 判斷輸入的數據是否符合要求 。不符合要求給出提示 ,符合要求以后將判斷點擊的運算符,執行相應的操作。對于單運算操作要進一步判斷是否符合要求 ,如果是就進入下步計算,如果不是就彈出相應的提示 :“負數不能開根號 ";"除數不能為零";用try .?catch捕獲異常,如果有異常則中止活動 。在進行開方(sqrt)運算時,如果輸入數為負數 ,則彈出"負數不能開根號",中止運算。在進行自然對數運算時(log)如果輸入數為負數 ,則彈出"負數不能進行自然對數運算”。在進行三角函數運算時(cos、tan)不必考慮輸入的數字是否符合規范,對于任意輸入的數函數本身有一個判斷的過程 ,都能把輸入的數轉化為合適的范圍,進而得到正確的結果 。對于加減乘除等雙運算操作 ,每個功能都由每一個模塊來實現 ,當按下加按鈕時 ,進行相應的加法操作,這一塊對相應的操作數沒有要求 ;當點擊減號時,則進行減法操作,由jTextField.getText()得到數字按鈕的值顯示在相應的文本框中 ;乘法操作在點擊一個操作數然后點擊乘號再點擊另一個時得出相應的結果顯示在文本框中;在作除法運算時,當被除數點擊為零時,調用catch進行異常處理,彈出“Infinity”。.專業.整理.下載可編輯⑶、數據分析在事件處理,觸發按鈕事件時,先判斷是或是數字是或是 “-/+”是或是“.”,是的話就將負號“-”、數字、小數點“.”分別寫入文本框并存放在 sum中,然后判斷是或是“退格”、求“倒”等,是的話進行相應的處理 ,都不是的話則跳到doOperation()執行運算同時將運算符存放在 preOperater中。觸發按鈕事件時,要進一步分析,是重新開始計算時觸發的按鈕事件還是計算中間觸發的按鈕事件 。⑷、程序代碼publicclassCalculaterextendsJFrameimplementsActionListener{JTextFieldx;//文本框StringpreOperater="";// 上一次的運算符doublesum=0;// 運算結果publicCalculater(Stringtitle){super(title);.專業.整理.下載可編輯Containerc=getContentPane();// 容器c.setLayout(newBorderLayout());// 容器采用邊緣布局x=newJTextField(50);c.add("North",x);String buttoned[]={"0","1","2","3","+/-",".","C"," 退 格 "," 求 倒","4","5","6","7","+","-","*","/","%","8","9","=","sqrt","pow","log","cos","tan","exp"};JPanelp=newJPanel();// 面板p.setLayout(new GridLayout(3,9,10,10)); //面板采用行列數 3,6的網格布局for(intk=0;k<buttoned.length;k++){// 用一個for循環將按鈕添加進面板并注冊監聽器JButtonb=newJButton(buttoned[k]);p.add(b);b.addActionListener(this);}c.add("Center",p);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}.專業.整理.下載可編輯響應用戶事件,根據點擊按鈕實現相關操作publicvoidactionPerformed(ActionEvente){StringCommand=e.getActionCommand();try{if(Character.isDigit(Command.charAt(0))){ //如果按鈕事件為數字鍵x.setText(x.getText()+Command);// 添加數字}elseif(Command.equals(".")){// 如果按鈕事件為"."鍵xiaoshu();}elseif(Command.equals("+/-")){// 如果按鈕事件為"+/-"鍵fuhao();}elseif(Command.equals(" 退格")){//如果按鈕事件為"退格"鍵backspace();}elseif(Command.equals("=")){ //如果按鈕事件為"="鍵dengyu();.專業.整理.下載可編輯}elseif(Command.equals("sqrt")){// 如果按鈕事件為"sqrt"鍵sqrt();}elseif(Command.equals("log")){ //如果按鈕事件為"log"鍵log();}elseif(Command.equals("cos")){// 如果按鈕事件為"cos"鍵cos();}elseif(Command.equals("tan")){ //如果按鈕事件為"tan"鍵tan();}elseif(Command.equals("exp")){// 如果按鈕事件為"exp"鍵exp();}elseif(Command.equals("求倒")){ //如果按鈕事件為"求倒"鍵qiudao();.專業.整理.下載可編輯}elseif(Command.equals("C")){ //如果按鈕事件為"C"鍵clear();}else{ doOperation(); //記錄運算符和輸入的數字x.setText("");preOperater=Command;}}catch(Exceptionex){sum=0;x.setText("");}}voidxiaoshu(){ //添加小數點Strings=x.getText();if(s.indexOf(".")==-1)x.setText(s+".");}voidfuhao(){ //添加負號Strings=x.getText();if(s.indexOf("-")==-1)x.setText("-"+x.getText());.專業.整理.下載可編輯}voidbackspace(){ //退格Strings=x.getText();if(s.length()>0)x.setText(s.substring(0,s.length()-1));// 刪除最后一個字符}voiddengyu(){ //等號,顯示計算結果doOperation();x.setText(""+sum);preOperater="";}voidsqrt(){ //求該數的平方根doublem=Double.parseDouble(x.getText());if(m<0)x.setText("負數不能開根號");elsex.setText(""+Math.sqrt(m));}voidlog(){ //求該數的自然對數.專業.整理.下載可編輯doublem=Double.parseDouble(x.getText());if(m<0)x.setText("負數不能進行自然對數運算 ");elsex.setText(""+Math.log(m));}voidcos(){ //求該數的余弦doublem=Double.parseDouble(x.getText());x.setText(""+Math.cos(m));}voidtan(){ //求該數的正切doublem=Double.parseDouble(x.getText());x.setText(""+Math.tan(m));}voidexp(){ //求e的冪doublem=Double.parseDouble(x.getText());x.setText(""+Math.exp(m));}voidqiudao(){ //求倒.專業.整理.下載可編輯if(Double.parseDouble(x.getText())==0)x.setText("除數不能為零");else{x.setText(""+1/(Double.parseDouble(x.getText())));preOperater="";}}voidclear(){ //清零sum=0;x.setText("");preOperater="";}根據記錄的運算符將前面記錄的結果sum與文本框中的數據進行運算voiddoOperation(){doublem=Double.parseDouble(x.getText());if(preOperater.equals(""))sum=m;將結果與文本框中的數據按照前一個運算符運算if(preOperater.equals("+"))sum=sum+m; //加法運算if(preOperater.equals("-"))sum=sum-m; //減法運算.專業.整理.下載可編輯if(preOperater.equals("*"))sum=sum*m; //乘法運算if(preOperater.equals("/"))sum=sum/m; //除法運算if(preOperater.equals("%"))sum=sum%m; //求余if(preOperater.equals("pow"))sum=Math.pow(sum,m);// 求冪}publicstaticvoidmain(Stringa[]){JFramex=newCalculater(" 計算器");x.setSize(650,300);x.setVisible(true);}}四、運行調試設計時先在設計界面中添加按鈕等控件,后在按鈕的actionPerformed 事件中添加代碼完成其功能其中調用了 Java類中的Math函數庫以及各種字符串操作 。設計的界面如下:.專業.整理.下載可編輯圖1計算器運行界面進行加減乘除求余以及指數運算。①帶負數的浮點加法運算(例:-1.2+2=0.8)依次按“+/-”(也可以最后按),“1”,“.”,“2”鍵.專業.整理.下載可編輯按下“+”鍵按下“2”鍵按下“=”鍵.專業.整理.下載可編輯其余運算同理,鑒于篇幅此處就不再一一列舉 。⑵、求倒再按下“求倒”鍵⑶、退格按下“退格”鍵⑷、清零.專業.整理.下載可編輯按下“c”鍵⑸、求余弦、求正切、對e求冪、求平方根、求自然對數、求倒運算。(例:cos4) 按下“4”鍵按下“cos”鍵.專業.整理.下載可編輯其余運算同理,鑒于篇幅此處就不再一一列舉 。⑺、異常處
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 摩托車銷售合同協議書
- 物資采購合同安全協議書
- 合同洽談協議書模板圖片
- 街邊店面物業合同協議書
- 2025年中國紅景天苷項目商業計劃書
- 天氣美術課件圖片
- 重慶鋁鑄汽車零部件項目申請報告
- 中國有機硅DMC項目商業計劃書
- 汽修廠門衛合同協議書
- 安全方針課件
- 心率變異性與情緒狀態的相關性-洞察闡釋
- 門面房贈予合同協議
- 女性更年期保健
- 2025-2030中國再生纖維行業市場發展現狀及競爭策略與投資前景研究報告
- 2025屆湖北省示范中學高考沖刺押題(最后一卷)英語試卷含答案
- 《嘉靖中興》課件
- 2025年上海市長寧區高三語文二模作文題目解析及范文:網絡評論區的情緒表達往往直接而激烈
- 脂肪肝的護理診斷及措施
- 2025年初中語文名著閱讀《林海雪原》知識點總結及練習
- 防溺水的家長會課件
- 華電煤業集團有限公司招標管理辦法
評論
0/150
提交評論