java簡易計算器課程設(shè)計_第1頁
java簡易計算器課程設(shè)計_第2頁
java簡易計算器課程設(shè)計_第3頁
java簡易計算器課程設(shè)計_第4頁
java簡易計算器課程設(shè)計_第5頁
已閱讀5頁,還剩28頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、最新java簡易計算器課程設(shè)計 目 錄1設(shè)計目的22 設(shè)計題目及要求33設(shè)計算法分析4 3.1 模塊調(diào)用層次圖4 3.2 核心算法描述5 3.3 系統(tǒng)特點74程序代碼85調(diào)試情況166結(jié)論18參考文獻 19簡易計算器1.設(shè)計目的本課程設(shè)計的目的就是要通過一次集中的強化訓(xùn)練,使學(xué)生能及時穩(wěn)固已學(xué)的知識,補充未學(xué)的但又必要的內(nèi)容。進行課程設(shè)計目的在于加深對程序設(shè)計根底中根底理論和根本知識的理解,促進理論與實踐的結(jié)合,進一步提高程序設(shè)計的能力。具體目的如下:1使學(xué)生更深入地理解和掌握該課程中的有關(guān)根本概念,程序設(shè)計思想和方法。2培養(yǎng)學(xué)生綜合運用所學(xué)知識獨立完成課題的能力。3培養(yǎng)學(xué)生勇于探索、嚴(yán)謹(jǐn)推理

2、、實事求是、有錯必改,用實踐來檢驗理論,全方位考慮問題等科學(xué)技術(shù)人員應(yīng)具有的素質(zhì)。4提高學(xué)生對工作認(rèn)真負責(zé)、一絲不茍,對同學(xué)團結(jié)友愛,協(xié)作攻關(guān)的根本素質(zhì)。5培養(yǎng)學(xué)生從資料文獻、科學(xué)實驗中獲得知識的能力,提高學(xué)生從別人經(jīng)驗中找到解決問題的新途徑的悟性,初步培養(yǎng)工程意識和創(chuàng)新能力。6對學(xué)生掌握知識的深度、運用理論去處理問題的能力、實驗?zāi)芰?、課程設(shè)計能力、書面及口頭表達能力進行考核。 2.設(shè)計題目及要求【1】設(shè)計題目 簡易計算器 【2】設(shè)計要求1單獨一人完成課程設(shè)計,不得抄襲。2應(yīng)用自己所學(xué)課程知識完成對計算器的根本任務(wù)。3查閱相關(guān)資料,學(xué)習(xí)和掌握工程中涉及的新知識,提高自學(xué)能力。4通過應(yīng)用java

3、程序編寫計算器來提升自己對簡單的圖形界面有一定的掌握和了解。5設(shè)計的簡易計算器應(yīng)能夠?qū)崿F(xiàn)求倒數(shù)等根本運算功能,類似于Windows中的計算器。6設(shè)計一個簡單,親和圖形界面GUI的計算機應(yīng)用程序3.設(shè)計算法分析 3.1 模塊調(diào)用層次圖 【1】變量描述數(shù)組:1 JButton b = new JButton10; 創(chuàng)立按鈕類型的數(shù)組,為數(shù)字鍵0-9這 10個按鈕。全局變量:JFrame frame;創(chuàng)立一個jFrame類型的框架,為frame,用來存放需要顯示的一些東西。JTextField show;創(chuàng)立一個JtextField類型的展示框,為show。上面用來顯示輸出或計算的結(jié)果。double

4、 sum = 0, getValue;創(chuàng)立一個類型為雙精度的變量,其初始值為0.返回計算后得到的值。JDialog about;創(chuàng)立一個類型為Jdialog的對話框abhout,其顯示的該計算器的一些關(guān)于內(nèi)容。final int slength = 30;創(chuàng)立一個為類型為整形的slength,其值為30,意味該計算器顯示的有效長度最大值為30,超過30的話,計算器將不能夠全部顯示。6 JButton bc, c, ce, ab, jia, jian, cheng, chu, equ, point, sqrt, ds, bfh,zf;創(chuàng)立類型為Jbuttond的按鈕退格,清空,復(fù)位,關(guān)于,加,減

5、,乘,除,等號,小數(shù)點,2次方根,倒數(shù),百分號,正負號,當(dāng)按下這些按鈕的話,便會觸發(fā)相應(yīng)的監(jiān)聽器,根據(jù)這些監(jiān)聽器的設(shè)置,執(zhí)行對應(yīng)的程序。7 int i = 0, j = 0, p = 0, l, action;創(chuàng)立類型為整形的初始化書i、j、p。這幾個按鈕在算法初始化時實現(xiàn)。 8 Panel dispMain = new Panel() 創(chuàng)立類型為panel的面板dispMain,用來存放另一些控件。函數(shù):public void disp() 創(chuàng)立無值函數(shù)disp,用來存放界面所需要展示的元素,包括有面板,按鈕,彈出對話框,顯示框等。public void actionPerformed(Ac

6、tionEvent e)創(chuàng)立無值函數(shù)actionPerformed(ActionEvent e),其允許的輸入值類型為ActionEvent e,在里面編寫的是加減陳除等一些算法。public void setSum()創(chuàng)立無值函數(shù)setSum,顯示出經(jīng)過算法計算出的結(jié)果,public void windowClosing(WindowEvent e)創(chuàng)立無值函數(shù)windowClosingWindowEvent e,當(dāng)顯示程序界面右上角的x時,將關(guān)閉程序。public static void main(String args)創(chuàng)立靜態(tài)無值函數(shù)main主函數(shù),用來調(diào)用以上所示的函數(shù)?!?】程序流

7、程1 系統(tǒng)模塊調(diào)用層次圖Main disp()actionPerformed(ActionEvent e)setSum()windowClosing(WindowEvent e)3.2核心算法描述通過該步驟可實現(xiàn)累加功能: setSum();j+;p = 0;i = 0;action = ? 判斷最后一個操作數(shù)的類型: else if (e.getSource() = equ) / 等號,運算最后一個操作數(shù)switch (action) case 1:show.setText(String.valueOf(sum += getValue);break;case 2:show.setText(S

8、tring.valueOf(sum -= getValue);break;case 3:show.setText(String.valueOf(sum *= getValue);break;case 4:show.setText(String.valueOf(sum /= getValue);break; 設(shè)定數(shù)字按鈕的觸發(fā)算法: for (l = 0; l 10; l+) / 09數(shù)字鍵觸發(fā)if (e.getSource() = bl) if (i = 0)show.setText();String s = show.getText();if (s.length() = 0; l-) bl

9、= new JButton(String.valueOf(l);dispLeft.add(bl);bl.addActionListener(this);/新建其余按鈕,并分別將其添加到各自的面板中jia = new JButton(+);jia.setForeground(Color.RED);jian = new JButton(-);jian.setForeground(Color.RED);cheng = new JButton(*);cheng.setForeground(Color.RED);chu = new JButton(/);chu.setForeground(Color.R

10、ED);equ = new JButton(=);equ.setForeground(Color.RED);point = new JButton(.);zf = new JButton( +/- );sqrt = new JButton(sqrt);bfh = new JButton(%);ds = new JButton(1/x);dispRight.add(chu);dispRight.add(sqrt);dispRight.add(cheng);dispRight.add(bfh);dispRight.add(jian);dispRight.add(ds);dispRight.add(

11、jia);dispRight.add(equ);dispLeft.add(zf);dispLeft.add(point);/為各個按鈕綁定 監(jiān)聽器about.addWindowListener(this);bc.addActionListener(this);ce.addActionListener(this);c.addActionListener(this);ab.addActionListener(this);jia.addActionListener(this);jian.addActionListener(this);cheng.addActionListener(this);chu

12、.addActionListener(this);equ.addActionListener(this);point.addActionListener(this);zf.addActionListener(this);sqrt.addActionListener(this);bfh.addActionListener(this);ds.addActionListener(this);frame.addWindowListener(this);frame.setVisible(true);public void actionPerformed(ActionEvent e) getValue =

13、 Double.valueOf(show.getText().doubleValue();if (e.getSource() = jia) / 加運算,可連加if (j = 0) sum = getValue; else if (action = 1) sum += getValue;setSum();j+;p = 0;i = 0;action = 1; else if (e.getSource() = jian) / 減運算,可連減if (j = 0) sum = getValue; else if (action = 2) sum -= getValue;setSum();j+;p = 0

14、;i = 0;action = 2; else if (e.getSource() = cheng) / 乘運算,可連乘if (j = 0) sum = getValue; else if (action = 3) sum *= getValue;setSum();j+;p = 0;i = 0;action = 3; else if (e.getSource() = chu) / 除運算,可連除if (j = 0)sum = getValue;else if (action = 4) sum /= getValue;setSum();j+;p = 0;i = 0;action = 4; els

15、e if (e.getSource() = equ) / 等號,運算最后一個操作數(shù)switch (action) case 1:show.setText(String.valueOf(sum += getValue);break;case 2:show.setText(String.valueOf(sum -= getValue);break;case 3:show.setText(String.valueOf(sum *= getValue);break;case 4:show.setText(String.valueOf(sum /= getValue);break;setSum();i

16、= 0;j = 0;action = 0; else if (e.getSource() = point) / 小數(shù)點,只能按一個小數(shù)點if (p = 0)show.setText(show.getText() + e.getActionCommand();p = 1; else if (e.getSource() = c | e.getSource() = ce) / 清空與復(fù)位i = 0;j = 0;p = 0;sum = 0;action = 0;show.setText(0); else if (e.getSource() = bc) / 退格String s = show.getTe

17、xt();if (s.length() 1) show.setText();for (l = 0; l s.length() - 1; l+) / 按一下,刪除尾部一位char a = s.charAt(l);show.setText(show.getText() + a); elseshow.setText(0); else if (e.getSource() = ab) / 關(guān)于about.setVisible(true); else if (e.getSource() = sqrt) / 開2次方根sum = Math.sqrt(getValue);setSum();i = 0; els

18、e if (e.getSource() = ds) / 求倒數(shù)sum = 1 / getValue;setSum();i = 0; else if (e.getSource() = bfh) / 百分號sum = getValue / 100;setSum();i = 0; else if (e.getSource() = zf) / 正負號切換,正號不顯示String s = show.getText();char a = s.charAt(0);if (a = -) show.setText();for (l = 1; l s.length(); l+) / 去掉負號show.setTex

19、t(show.getText() + s.charAt(l); else if (getValue != 0) / 加上負號show.setText(- + s);for (l = 0; l 10; l+) / 09數(shù)字鍵觸發(fā)if (e.getSource() = bl) if (i = 0)show.setText();String s = show.getText();if (s.length() slength)show.setText(show.getText() + e.getActionCommand();if (e.getSource() = b0 & getValue = 0

20、& p = 0)show.setText(0);if (e.getSource() != b0 & getValue = 0 & p = 0)show.setText(e.getActionCommand();i+;/ i用來標(biāo)記數(shù)字鍵觸發(fā)的狀態(tài)public void setSum() / 把計算結(jié)果顯示出來show.setText(String.valueOf(sum);String s = show.getText();char a = s.charAt(s.length() - 1);char b = s.charAt(s.length() - 2);if (a = 0 & b = .)

21、 / 如果是整數(shù),那么去掉后面的小數(shù)點和0show.setText(String.valueOf(Math.round(sum);public void windowClosing(WindowEvent e) if (e.getSource() = about)about.setVisible(false);else if (e.getSource() = frame)System.exit(0);public static void main(String args) new Calculator().disp();【2】程序執(zhí)行結(jié)果由于計算器的結(jié)果是根據(jù)輸入值而確定的,當(dāng)輸出不一樣的值會

22、都得不同的結(jié)果,故程序?qū)嵭薪Y(jié)果將在調(diào)制中進行從而得出?!?】結(jié)果的討論 5.調(diào)試情況 1按鈕測試:只要測試程序界面顯示是否正常,按鈕是否能夠正確使用 程序整個界面如下圖: 經(jīng)過測試,按鈕、顯示框顯示正常,無錯位無延遲。測試about彈出對話框,顯示正常,結(jié)果如下圖:2運算測試:主要測試計算器運算功能 測試用例:1加法測試:8222+1500.2,結(jié)果為9722.2。結(jié)果正確,結(jié)果如下圖: 2減法測試:0.58-2.891,結(jié)果為-2.311。結(jié)果正確,結(jié)果如下圖: 3乘法測試:458*-156.22,結(jié)果為-71548.46。結(jié)果正確,結(jié)果如下圖: 0*-7.234,結(jié)果為0 。結(jié)果正確,結(jié)果如下圖: 4 除法測試:7.2/0,結(jié)果為infinity。結(jié)果正確,結(jié)果如下圖: 0/88,結(jié)果為0。結(jié)果正確,結(jié)果如下圖: 100/15.3,結(jié)果為6.54。結(jié)果正確,結(jié)果如下圖: 6.結(jié)論本次課程設(shè)計到此算是告一段落了,經(jīng)過這次的學(xué)習(xí),我學(xué)到了很多東西,在此根底上更加穩(wěn)固了自己對java的

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論