版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)報(bào)告課程設(shè)計(jì)題目:計(jì)算器 學(xué)生姓名 :李婉如 專(zhuān) 業(yè):信息管理與信息系統(tǒng)班 級(jí) :1424603 指導(dǎo)教師 :司紅偉 2016年 5 月 25 日一、課設(shè)任務(wù)及要求1)課設(shè)任務(wù): 設(shè)計(jì)的計(jì)算器應(yīng)用程序可以完成加法、減法、乘法、除法以及取余運(yùn)算(可以進(jìn)行浮點(diǎn)數(shù)和負(fù)數(shù)的運(yùn)算)。有求倒數(shù)、退格和清零功能。2)創(chuàng)新要求:能進(jìn)行正切、余弦,以及求平方根、指數(shù) (包括對(duì)e)、自然對(duì)數(shù)運(yùn)算。3)設(shè)計(jì)要求設(shè)計(jì)的計(jì)算器應(yīng)用程序可以完成加法、減法、乘法、除法和取余運(yùn)算。且有小數(shù)點(diǎn)、正負(fù)號(hào)、求倒數(shù)、退格和清零功能。課程設(shè)計(jì)可選用Eclipse、JBuilder、NetB
2、eans等作為開(kāi)發(fā)平臺(tái)以提高開(kāi)發(fā)效率,通過(guò)資料查閱和學(xué)習(xí)盡可能熟練掌握其中一種集成開(kāi)發(fā)環(huán)境。認(rèn)真按時(shí)完成課程設(shè)計(jì)報(bào)告,課程設(shè)計(jì)報(bào)告內(nèi)容包括:設(shè)計(jì)任務(wù)與要求、需求分析、設(shè)計(jì)思路、詳細(xì)設(shè)計(jì)、運(yùn)行調(diào)試與分析討論和設(shè)計(jì)體會(huì)與小結(jié)六個(gè)部分。二、設(shè)計(jì)思路本應(yīng)用程序繼承自框架類(lèi)(JFrame),容器Container c采用BorderLayout邊緣布局,將單行文本框加入到“North”區(qū)域,包含各種按鈕的面板JPanel p加入到”Center”區(qū)域。包含各種按鈕的面板JPanel p 采用3行6列的網(wǎng)格布局,然后將數(shù)字按鈕和運(yùn)算符按鈕以及控制按鈕用一個(gè)for循環(huán)添加到面板中同時(shí)注冊(cè)按鈕事件監(jiān)聽(tīng)器。如:
3、Button b=new Button();b.addActionListener(事件監(jiān)聽(tīng)器);事件監(jiān)聽(tīng)器中的事件處理方法void actionPerformed(ActionEvent evt)完成主要的按鈕事件的處理。事件處理分以下幾種情況:數(shù)字按鈕事件(”0”,”1”,”2”8”,”9”)、運(yùn)算符按鈕事件(”+”,”“,”*”,”/”,”%”)、正負(fù)號(hào)按鈕事件(”+/-“)、小數(shù)點(diǎn)按鈕事件(”.”)、等號(hào)按鈕事件(”)、求倒按鈕事件(”求倒”)、退格按鈕事件(”退格”)、清除按鈕事件(“C”) 、正切(tan)、余弦(cos),以及求平方根(sqrt)、指數(shù) (pow)、對(duì)e的指數(shù)(e
4、xp)、對(duì)數(shù)運(yùn)算(log)。 在事件處理,觸發(fā)按鈕事件時(shí),先判斷是或是數(shù)字是或是“-/+”是或是“.”,是的話(huà)就將負(fù)號(hào)“-” 、數(shù)字、小數(shù)點(diǎn)“.”分別寫(xiě)入文本框并存放在sum中,然后判斷是或是“退格”、“求倒”等,是的話(huà)進(jìn)行相應(yīng)的處理,都不是的話(huà)則跳到doOperation()執(zhí)行運(yùn)算同時(shí)將運(yùn)算符存放在preOperater中。觸發(fā)按鈕事件時(shí),要進(jìn)一步分析,是重新開(kāi)始計(jì)算時(shí)觸發(fā)的按鈕事件還是計(jì)算中間觸發(fā)的按鈕事件。計(jì)算器完成的是一個(gè)數(shù)學(xué)表達(dá)式,如:32,所以可以采用一個(gè)數(shù)組來(lái)存儲(chǔ)數(shù)字或字符,如3,2分別存儲(chǔ)在數(shù)組中,最后運(yùn)算時(shí),可以一一取出來(lái)進(jìn)行運(yùn)算。利用按鈕設(shè)計(jì)計(jì)算器的各個(gè)運(yùn)算符和操作符,通
5、過(guò)按鈕的事件處理實(shí)現(xiàn)按鈕計(jì)算功能。利用文本框顯示操作數(shù)和運(yùn)算結(jié)果。三、詳細(xì)設(shè)計(jì)、功能實(shí)現(xiàn): 加減乘除求余以及指數(shù)運(yùn)算void doOperation()double m=Double.parseDouble(x.getText();if(preOperater.equals("") sum=m; /無(wú)前一操作,結(jié)果為剛輸入數(shù)/將結(jié)果與文本框中的數(shù)據(jù)按照前一個(gè)運(yùn)算符運(yùn)算if(preOperater.equals("+") sum=sum+m; /加法運(yùn)算if(preOperater.equals("-") sum=sum-m; /減法運(yùn)
6、算if(preOperater.equals("*") sum=sum*m; /乘法運(yùn)算if(preOperater.equals("/") sum=sum/m; /除法運(yùn)算if(preOperater.equals("%") sum=sum%m; /求余if(preOperater.equals("pow") sum=Math.pow(sum, m); /求冪,指數(shù)運(yùn)算其他運(yùn)算 、求平方根Void sqrt()double m=Double.parseDouble(x.getText();if (m<0)
7、x.setText("負(fù)數(shù)不能開(kāi)根號(hào)");elsex.setText(""+Math.sqrt(m);、對(duì)數(shù)運(yùn)算Void log()double m=Double.parseDouble(x.getText();if (m<0) x.setText("負(fù)數(shù)不能進(jìn)行自然對(duì)數(shù)運(yùn)算");elsex.setText(""+Math.log(m);、余弦運(yùn)算Void cos()double m=Double.parseDouble(x.getText();x.setText(""+Math.cos(
8、m);、正切運(yùn)算Void tan()double m=Double.parseDouble(x.getText();x.setText(""+Math.tan(m);、e的指數(shù)運(yùn)算Void exp()double m=Double.parseDouble(x.getText();x.setText(""+Math.exp(m);、倒數(shù)運(yùn)算Void daoshu()if (Double.parseDouble(x.getText()=0) x.setText("除數(shù)不能為零");elsex.setText(""+1/
9、(Double.parseDouble(x.getText();preOperater=""主要方法說(shuō)明public cos(double x)/求x的余弦函數(shù)public tan (double x)/求x的正切函數(shù)public sqrt(double x)/求x的平方根public log (double x)/求x的自然對(duì)數(shù)運(yùn)算public exp (double x)/求e的x次冪public pow (double a,double b)/求a的b次冪public daoshu (double x)/求x的倒數(shù)、算法思路:這是一個(gè)簡(jiǎn)單的計(jì)算器,里面所涉及到的功能就
10、是加、減、乘、除、等基本功能。在輸入數(shù)據(jù)之后Character.isDigit(Command.charAt(0)判斷輸入的數(shù)據(jù)是否符合要求。不符合要求給出提示,符合要求以后將判斷點(diǎn)擊的運(yùn)算符,執(zhí)行相應(yīng)的操作。對(duì)于單運(yùn)算操作要進(jìn)一步判斷是否符合要求,如果是就進(jìn)入下步計(jì)算,如果不是就彈出相應(yīng)的提示: “負(fù)數(shù)不能開(kāi)根號(hào)"; "除數(shù)不能為零";用try.catch捕獲異常,如果有異常則中止活動(dòng)。在進(jìn)行開(kāi)方(sqrt)運(yùn)算時(shí),如果輸入數(shù)為負(fù)數(shù),則彈出"負(fù)數(shù)不能開(kāi)根號(hào)",中止運(yùn)算。在進(jìn)行自然對(duì)數(shù)運(yùn)算時(shí)(log)如果輸入數(shù)為負(fù)數(shù),則彈出"負(fù)數(shù)不能
11、進(jìn)行自然對(duì)數(shù)運(yùn)算”。在進(jìn)行三角函數(shù)運(yùn)算時(shí)(cos、tan)不必考慮輸入的數(shù)字是否符合規(guī)范,對(duì)于任意輸入的數(shù)函數(shù)本身有一個(gè)判斷的過(guò)程,都能把輸入的數(shù)轉(zhuǎn)化為合適的范圍,進(jìn)而得到正確的結(jié)果。對(duì)于加減乘除等雙運(yùn)算操作,每個(gè)功能都由每一個(gè)模塊來(lái)實(shí)現(xiàn),當(dāng)按下加按鈕時(shí),進(jìn)行相應(yīng)的加法操作,這一塊對(duì)相應(yīng)的操作數(shù)沒(méi)有要求;當(dāng)點(diǎn)擊減號(hào)時(shí),則進(jìn)行減法操作,由jTextField.getText()得到數(shù)字按鈕的值顯示在相應(yīng)的文本框中;乘法操作在點(diǎn)擊一個(gè)操作數(shù)然后點(diǎn)擊乘號(hào)再點(diǎn)擊另一個(gè)時(shí)得出相應(yīng)的結(jié)果顯示在文本框中;在作除法運(yùn)算時(shí),當(dāng)被除數(shù)點(diǎn)擊為零時(shí),調(diào)用catch進(jìn)行異常處理,彈出“Infinity”。、數(shù)據(jù)分析在事
12、件處理,觸發(fā)按鈕事件時(shí),先判斷是或是數(shù)字是或是“-/+”是或是“.”,是的話(huà)就將負(fù)號(hào)“-” 、數(shù)字、小數(shù)點(diǎn)“.”分別寫(xiě)入文本框并存放在sum中,然后判斷是或是“退格”、“求倒”等,是的話(huà)進(jìn)行相應(yīng)的處理,都不是的話(huà)則跳到doOperation()執(zhí)行運(yùn)算同時(shí)將運(yùn)算符存放在preOperater中。觸發(fā)按鈕事件時(shí),要進(jìn)一步分析,是重新開(kāi)始計(jì)算時(shí)觸發(fā)的按鈕事件還是計(jì)算中間觸發(fā)的按鈕事件。、程序代碼import java.util.*;import javax.swing.*;import java.awt.*;import java.awt.event.*;public class Calculat
13、er extends JFrame implements ActionListenerJTextField x; /文本框String preOperater="" /上一次的運(yùn)算符double sum=0; /運(yùn)算結(jié)果public Calculater(String title)super(title);Container c=getContentPane(); /容器c.setLayout(new BorderLayout(); /容器采用邊緣布局x=new JTextField(50);c.add("North",x); String button
14、ed="0","1","2","3","+/-",".","C","退格","求倒","4","5","6","7","+","-","*","/","%","8","9","="
15、,"sqrt","pow","log","cos","tan","exp"JPanel p=new JPanel(); /面板p.setLayout(new GridLayout(3,9,10,10); /面板采用行列數(shù)3,6的網(wǎng)格布局for(int k=0;k<buttoned.length;k+) /用一個(gè)for循環(huán)將按鈕添加進(jìn)面板并注冊(cè)監(jiān)聽(tīng)器JButton b=new JButton(buttonedk);p.add(b);b.addActionListener(
16、this);c.add("Center",p);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/響應(yīng)用戶(hù)事件,根據(jù)點(diǎn)擊按鈕實(shí)現(xiàn)相關(guān)操作public void actionPerformed(ActionEvent e)String Command=e.getActionCommand();tryif(Character.isDigit(Command.charAt(0) /如果按鈕事件為數(shù)字鍵x.setText(x.getText()+Command); /添加數(shù)字else if(Command.equals(&qu
17、ot;.") /如果按鈕事件為"."鍵xiaoshu();else if(Command.equals("+/-") /如果按鈕事件為"+/-"鍵fuhao();else if (Command.equals("退格") /如果按鈕事件為"退格"鍵backspace();else if(Command.equals("=") /如果按鈕事件為"="鍵dengyu();else if(Command.equals("sqrt")
18、 /如果按鈕事件為"sqrt"鍵sqrt();else if(Command.equals("log") /如果按鈕事件為"log"鍵log();else if(Command.equals("cos") /如果按鈕事件為"cos"鍵cos();else if(Command.equals("tan") /如果按鈕事件為"tan"鍵tan();else if(Command.equals("exp") /如果按鈕事件為"exp
19、"鍵exp();else if (Command.equals("求倒") /如果按鈕事件為"求倒"鍵qiudao();else if(Command.equals("C") /如果按鈕事件為"C"鍵clear();else doOperation(); /記錄運(yùn)算符和輸入的數(shù)字x.setText("");preOperater=Command;catch(Exception ex) sum=0; x.setText("");void xiaoshu() /添加小數(shù)
20、點(diǎn)String s=x.getText();if(s.indexOf(".")=-1) x.setText(s+".");void fuhao() /添加負(fù)號(hào)String s=x.getText();if(s.indexOf("-")=-1) x.setText("-"+x.getText(); void backspace() /退格String s=x.getText(); if(s.length()>0) x.setText(s.substring(0,s.length()-1); /刪除最后一個(gè)字符v
21、oid dengyu() /等號(hào),顯示計(jì)算結(jié)果doOperation();x.setText(""+sum);preOperater=""void sqrt() /求該數(shù)的平方根double m=Double.parseDouble(x.getText();if (m<0) x.setText("負(fù)數(shù)不能開(kāi)根號(hào)");elsex.setText(""+Math.sqrt(m);void log() /求該數(shù)的自然對(duì)數(shù)double m=Double.parseDouble(x.getText();if (m<
22、;0) x.setText("負(fù)數(shù)不能進(jìn)行自然對(duì)數(shù)運(yùn)算");elsex.setText(""+Math.log(m);void cos() /求該數(shù)的余弦double m=Double.parseDouble(x.getText();x.setText(""+Math.cos(m);void tan() /求該數(shù)的正切double m=Double.parseDouble(x.getText();x.setText(""+Math.tan(m);void exp() /求e的冪double m=Double.par
23、seDouble(x.getText();x.setText(""+Math.exp(m);void qiudao() /求倒if (Double.parseDouble(x.getText()=0) x.setText("除數(shù)不能為零");elsex.setText(""+1/(Double.parseDouble(x.getText();preOperater=""void clear() /清零sum=0;x.setText("");preOperater=""/根據(jù)記
24、錄的運(yùn)算符將前面記錄的結(jié)果sum與文本框中的數(shù)據(jù)進(jìn)行運(yùn)算void doOperation()double m=Double.parseDouble(x.getText();if(preOperater.equals("") sum=m;/將結(jié)果與文本框中的數(shù)據(jù)按照前一個(gè)運(yùn)算符運(yùn)算if(preOperater.equals("+") sum=sum+m; /加法運(yùn)算if(preOperater.equals("-") sum=sum-m; /減法運(yùn)算if(preOperater.equals("*") sum=sum
25、*m; /乘法運(yùn)算if(preOperater.equals("/") sum=sum/m; /除法運(yùn)算if(preOperater.equals("%") sum=sum%m; /求余if(preOperater.equals("pow") sum=Math.pow(sum, m); /求冪public static void main(String a)JFrame x=new Calculater("計(jì)算器");x.setSize(650,300);x.setVisible(true);四、運(yùn)行調(diào)試設(shè)計(jì)時(shí)先在設(shè)計(jì)界面中添加按鈕等控件,后在按鈕的actionPerformed事件中添加代碼完成其功能其中調(diào)用了Java類(lèi)中的Math函數(shù)庫(kù)以及各種字符串操作。設(shè)計(jì)的界面如下:圖1 計(jì)算器運(yùn)行界面進(jìn)行加減乘除求余以及指數(shù)運(yùn)算。帶負(fù)數(shù)的浮點(diǎn)加法運(yùn)算(例:-1.2+2=0.8)依次按“+/-”(也可以最后按) ,“1” ,“.” ,“2”鍵按下“+”鍵按下“2”鍵按下“=”鍵其余運(yùn)算同理,鑒于篇幅此處就不再一一列舉
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023八年級(jí)數(shù)學(xué)上冊(cè) 第13章 全等三角形13.2三角形全等的判定 4角邊角說(shuō)課稿 (新版)華東師大版
- 2024年四年級(jí)品社下冊(cè)《怎樣到達(dá)目的地》說(shuō)課稿2 蘇教版
- 2025鋼質(zhì)門(mén)小型鋼結(jié)構(gòu)制作及安裝合同
- 2025個(gè)人電路出租合同書(shū)
- 2025公司經(jīng)理勞動(dòng)合同
- 道路邊坡加固維修施工方案
- 交通圍欄銷(xiāo)售合同范本
- 農(nóng)業(yè)營(yíng)銷(xiāo)合作合同范本
- 保溫鋼結(jié)構(gòu)合同范本
- Sara's Medicine(說(shuō)課稿)-2023-2024學(xué)年麗聲北極星分級(jí)繪本四年級(jí)上(江蘇版)
- 2025年高考作文備考:議論文寫(xiě)作的論證手法
- 2024年可行性研究報(bào)告投資估算及財(cái)務(wù)分析全套計(jì)算表格(含附表-帶只更改標(biāo)紅部分-操作簡(jiǎn)單)
- 2024年廣州市黃埔區(qū)數(shù)學(xué)六上期末綜合測(cè)試模擬試題含解析
- 數(shù)獨(dú)6宮格300試題
- 24年注安-管理的題
- 2024至2030年中國(guó)心理咨詢(xún)行業(yè)市場(chǎng)預(yù)測(cè)與投資規(guī)劃分析報(bào)告
- 國(guó)際貿(mào)易地理 全套課件
- 廣西2024年高考物理模擬試卷及答案1
- GB/T 20878-2024不銹鋼牌號(hào)及化學(xué)成分
- 某房屋建筑工程監(jiān)理大綱
- 英語(yǔ)考綱詞匯表3500詞
評(píng)論
0/150
提交評(píng)論