

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 10/10JAVA實現計算器課程設計 JAVA實現計算器課程設計 計算機科學系 計應0701班 指導老師:劉其昌 設計人員:陳秀桃 設計日期:2009年11月10日2009年12月20日 計算器的設計 目錄 第一章緒 論 . (2) 1.1 開發環 境 . (2) 1.2 基本功能介 紹 2 第二章系統設 計 (3) 2.1 系統流程 圖 . (3) 2.2 系統功能框 圖 (3) 2.3 需求分 析 4 第三章軟件設 計 (5) 3.1 界面設 計 . (5) 3.2 代碼設 計 5 第四章測試分 析 . (10) 3.1 程序運行情 況: . (10) 3.2 程序異常處 理: . (1
2、0) 3.3 測試用 例 . (11) 3.3.1 加法測 試 . (11) 3.3.2 減法測 試 . (11) 3.3.3 乘法測 試 . (12) 3.3.4 除法測 試 13 第五章結束 語 14 第六章參考文 獻 . (14) 第 1 頁共 15 頁 計算器的設計 第一章緒論 1.1 開發環境 本系統是利用Java語言在NetBeans IDE6.5環境下開發的,Java語言是當今流行的網絡編程語言,它具有面向對象、跨平臺、分布應用等特點。面向對象的開發方法是當今世界最流行的開發方法,它不僅具有更貼近自然的語義,而且有利于軟件的維護和繼承。 為了進一步鞏固課堂上所學到的知識,深刻把握
3、Java語言的重要概念及其面向對象的特性,鍛煉學生熟練的應用面向對象的思想和設計方法解決實際問題的能力,開設了Java程序設計課程設計。 通過此次課程設計,鞏固所學Java語言基本知識,增進Java語言編輯基本功,掌握JDK、Editplus、Eclipse、JCreator等開發工具的運用,拓寬常用類庫的應用。使學生通過該教學環節與手段,把所學課程及相關知識加以融會貫通,全面掌握Java語言的編程思想及面向對象程序設計的方法,為今后從事實際工作打下堅實的基礎。 1.2 基本功能介紹 本系統實現了一個簡單而實用的計算器,通過這個計算器我們可以進行一些基本的運算操作,它可以進行簡單的四則運算(加
4、、減、乘、除)但僅限于十進制下,還可以進行(八進制,十進制,十六進制)之間的相互轉換,八進制最多可以輸入19位 數,十進制最多可以輸入18位數,十六進制最多可以輸入14位數,backspace表示退格,clear表示初始化,在window下直接運行(Jsp2003.bat)即可,界面為灰白對稱。它的設計按軟件工程的方法進行,系統具有良好的界面、必要的交互信息和較好的健壯性;醒目美觀的軟件封面。使用人員能快捷簡單地進行操作。即時準確地獲得需要的計算的結果,充分降低了數字計算的難度和節約了時間,對人們的生活有一定的幫助。 第 2 頁共 15 頁 計算器的設計 第二章系統設計 2.1 系統流程圖 2
5、.2 系統功能框圖 第 3 頁共 15 頁 計算器的設計 說明:在程序中構建類testZ,在其中封裝起界面、文本框、按鈕、數字、運算符等等成員,再引入成員函數testZ()進行計算器的模擬界面設計;其次設計出事件處理函數,如:運算事件、符號事件、等號事件等等;最后設計運算函數的響應事件。這樣設計的好處在于使得程序的實現思維更清晰,易懂,可讀性增強。反之則不然。 2.3 需求分析 首先分析這個說要完成的功能,它的主要任務是完成十六進制、十進制、八進制和二進制之間的相互轉化,需要包含負數,但不用考慮小數。 其次,確定接口參數。根據功能可知,它傳遞給外部的就是一個轉后的數據,而外部除了需要傳遞給轉化
6、前的數據以外,是否還需要其他參數呢,我們都知道,十進制的負數同樣可以利用其他進制進行表示,例如二進制,轉化方法是:求十進制數的絕對值對應的二進制數,最高位為1;然后對二進制逐位求反,最高位除外;接著最低一位加1,需要進位的話依次進位,最高位除外。如今的問題就擺在了我們面前,我們如何知道這個數的最高位是第幾位呢,也許有人會說,那就用轉化后 的前面再加上一位,好,即使這樣可以成立,那么-1轉化后就是11,3轉化后也為11,現在如果需要現在的把這個數二進制數再轉化為十進制,那么我們如何知道原來的是正數還是負數呢,如果要轉化為十六進制,八進制又當如何呢,經過以上的分析發現,還應該有另外一個參數二進制時
7、的寬度,只有這樣才能知道誰是最高位,因此就稱這個參數為位寬。 最后,設計類。根據第二步的分析,因為位寬對每一個方法都是一樣,所以可能把它作為類的成員變量,而另外兩個參數轉化前的值和轉化后的值就分別作為輸入參數和返回值。而類對外的接口只有各個轉化的方法,因此這幾個方法設計為public權限,而其它所有的輔助方法都為private權限。位寬通過構造函數傳遞,外部不能直接訪問和修改,設置也設置為private權限。為了減少計算量,所有的轉化都以二進制為中介。例如十六進制到十進制,是十六進制?二進制?十進制。 第 4 頁共 15 頁 計算器的設計 第三章軟件設計 3.1 界面設計 這個就是計算器界面,
8、簡潔易用,我們可以從中的數字按鍵和運算符按鈕 進行相應的數學計算,總共由,個按鈕(,個數字符+,個運算符號+,個 ,一個標簽、再加一個文本框組成。小數點+,個“clear”按鈕) 3.2 代碼設計 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Caculator public static void main(String args) JFrame frame = new JFrame(Caculator); frame.setDefaultCloseOperation(JFrame
9、.EXIT_ON_CLOSE); frame.getContentPane().add(new CaculatorPanel(); frame.pack(); frame.setVisible(true); class CaculatorPanel extends JPanel private JLabel namelabel,resultlabel; private JTextField resultField; 第 5 頁共 15 頁 計算器的設計 private JPanel labelPanel,numberPanel,toolPanel; private JButton s1,s2,
10、s3,s4,s5,s6,s7, s8, s9,s0, p1,p2,t1,t2,t3,t4,clear; private boolean end,add,sub,mul,div; private String str; private double num1,num2; public CaculatorPanel() namelabel = new JLabel(計算器); resultField = new JTextField(10); ButtonListener listener = new ButtonListener(); clear = new JButton(clear); cl
11、ear.addActionListener(listener); s1 = new JButton(1); s1.addActionListener(listener); s2 = new JButton(2); s2.addActionListener(listener); s3 = new JButton(3); s3.addActionListener(listener); s4 = new JButton(4); s4.addActionListener(listener); s5 = new JButton(5); s5.addActionListener(listener); s6
12、 = new JButton(6); s6.addActionListener(listener); s7 = new JButton(7); s7.addActionListener(listener); s8 = new JButton(8); s8.addActionListener(listener); s9 = new JButton(9); s9.addActionListener(listener); s0 = new JButton(0); s0.addActionListener(listener); p1 = new JButton(.); p1.addActionList
13、ener(listener); p2 = new JButton(=); p2.addActionListener(listener); t1 = new JButton(+); t1.addActionListener(listener); t2 = new JButton(-); t2.addActionListener(listener); t3 = new JButton(*); t3.addActionListener(listener); t4 = new JButton(/); t4.addActionListener(listener); labelPanel = new JP
14、anel(); labelPanel.add(namelabel); labelPanel.add(resultField); labelPanel.add(clear); numberPanel = new JPanel(); numberPanel.setLayout(new GridLayout(4,3); numberPanel.add(s1); numberPanel.add(s2); numberPanel.add(s3); numberPanel.add(s4); numberPanel.add(s5); numberPanel.add(s6); numberPanel.add(
15、s7); 第 6 頁共 15 頁 計算器的設計 numberPanel.add(s8); numberPanel.add(s9); numberPanel.add(s0); numberPanel.add(p1); numberPanel.add(p2); toolPanel = new JPanel(); toolPanel.setLayout(new GridLayout(4,1); toolPanel.add(t1); toolPanel.add(t2); toolPanel.add(t3); toolPanel.add(t4); setPreferredSize(new Dimensi
16、on(500,200); setBackground(Color.cyan); add(labelPanel); add(numberPanel); add(toolPanel); public void num(int i) String s = null; s=String.valueOf(i); if(end) /如果數字輸入結束,則將文本框置零,重新輸入resultField.setText(0); end=false; if(resultField.getText().equals(0) /如果文本框的內容為零,則覆蓋文本框的內容resultField.setText(s); els
17、e /如果文本框的內容不為零,則在內容后面添加數字 str = resultField.getText() + s; resultField.setText(str); private class ButtonListener implements ActionListener public void actionPerformed(ActionEvent e) /數字事件 if(e.getSource()=clear) 第 7 頁共 15 頁 計算器的設計 resultField.setText(0); else if(e.getSource()=s1) num(1); else if(e.
18、getSource()=s2) num(2); else if(e.getSource()=s3) num(3); else if(e.getSource()=s4) num(4); else if(e.getSource()=s5) num(5); else if(e.getSource()=s6) num(6); else if(e.getSource()=s7) num(7); else if(e.getSource()=s8) num(8); else if(e.getSource()=s9) num(9); else if(e.getSource()=s0) num(0); /符號事
19、件 else if(e.getSource()=t1) sign(1); else if(e.getSource()=t2) sign(2); else if(e.getSource()=t3) sign(3); else if(e.getSource()=t4) sign(4); /等號 else if(e.getSource()=p1) str=resultField.getText(); if(str.indexOf(.)=1) str+=.; resultField.setText(str); else if(e.getSource()=p2) num2=Double.parseDou
20、ble(resultField.getText(); if(add) num1=num1 + num2; 第 8 頁共 15 頁 計算器的設計 else if(sub) num1=num1 - num2; else if(mul) num1=num1 * num2; else if(div) num1=num1 / num2; resultField.setText(String.valueOf(num1); end=true; public void sign(int s) if(s=1) add=true; sub=false; mul=false; div=false; else if(
21、s=2) add=false; sub=true; mul=false; div=false; else if(s=3) add=false; sub=false; mul=true; div=false; else if(s=4) add=false; sub=false; mul=false; div=true; num1=Double.parseDouble(resultField.getText(); end=true; 第 9 頁共 15 頁 計算器的設計 第四章測試分析 4.1 程序運行情況: 程序正常的響應按鈕事件,輸入的數值長度受變量length的限定,進行混合四則運算的時候,
22、結果如果不是很大,可以正常顯示,但如果結果很大,就可能采用科學記數方式,這樣帶來了進制轉換時的麻煩,需要特殊的處理科學記數里的 E ,當結果太大的時候,有可能超出可能表示的最大值,(結果溢出),這個時候就要對結果進行必要的異常處理,我在輸出結果的方法內設置if 語句,如果結果大于某一個值就拋出一個This_number_too_big 類型的類,再使用try-catch,捕捉輸出結果的方法拋出的異常對象。然后進行,重制歸零的處理。 4.2 程序異常處理: 當結果超出Double.MAX_VALUE時,將拋出一個This_number_too_big 類的異常對象,這個是我自定義的一個異常類它繼
23、承自Exception 類,然后使用try-catch去捕捉這個異常,異常的處理如下: try js(); catch(This_number_too_big e) lab.setText(0); number=0; mark=n; Refresh=false; System.out.println(The number is too big); /如果出現異常則初始化效果如同clear鍵 第 10 頁共 15 頁 計算器的設計 4.3 測試用例 4.4.1 加法測試 (1) ,,,.,運行結果如下: (2) ,(,,(,(,)運行結果如下: 4.4.2 減法測試 (1) ,(, 運算結果如下: 第 11 頁共 15 頁 計算器的設計 (2) ,(, 運算結果如下: 4.4.3 乘法測試 (1) ,(,(,) 運算結果如下: (2) ,(, 運算結果如下
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 安全教育類題庫及答案
- 乘員安全測試題及答案
- 烏頭堿中毒試題及答案
- 海鹽縣城鄉污水處理廠(一期)ppp項目可行性研究報告
- “南方傳媒廣場”項目可行性研究報告
- 靈活辦公空間在NewNormal下的空間需求與供給研究-洞察闡釋
- 網絡安全場監管與數據保護合同
- 智能化工廠改建項目木工施工與材料供應合同
- 人力資源場交易居間服務協議
- 2025版權影視廣告合同范本
- 2025影視拍攝場地布置合同協議書
- 全國二卷-2025年高考語文真題作文深度點評與分析
- 2017司考題目及答案
- 防排煙系統設計畢業答辯
- 血脂異常健康管理專題
- 利用學習畫像實現個性化學習路徑設計與優化策略研究
- 2025年人工智能應用技術職業資格考試試卷及答案
- 網絡微短劇的內容創新策略及其傳播效果
- 2025年一級建造師《市政實務》考點精粹
- 融資專員測試題及答案
- 河北秦皇島事業單位招聘中小學教師類D類考試模擬題帶答案2024年
評論
0/150
提交評論