![JAVA實(shí)現(xiàn)計(jì)算器課程設(shè)計(jì)要點(diǎn)_第1頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-3/9/630b588b-cfc2-48b3-834b-7dbc297f4797/630b588b-cfc2-48b3-834b-7dbc297f47971.gif)
![JAVA實(shí)現(xiàn)計(jì)算器課程設(shè)計(jì)要點(diǎn)_第2頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-3/9/630b588b-cfc2-48b3-834b-7dbc297f4797/630b588b-cfc2-48b3-834b-7dbc297f47972.gif)
![JAVA實(shí)現(xiàn)計(jì)算器課程設(shè)計(jì)要點(diǎn)_第3頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-3/9/630b588b-cfc2-48b3-834b-7dbc297f4797/630b588b-cfc2-48b3-834b-7dbc297f47973.gif)
![JAVA實(shí)現(xiàn)計(jì)算器課程設(shè)計(jì)要點(diǎn)_第4頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-3/9/630b588b-cfc2-48b3-834b-7dbc297f4797/630b588b-cfc2-48b3-834b-7dbc297f47974.gif)
![JAVA實(shí)現(xiàn)計(jì)算器課程設(shè)計(jì)要點(diǎn)_第5頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-3/9/630b588b-cfc2-48b3-834b-7dbc297f4797/630b588b-cfc2-48b3-834b-7dbc297f47975.gif)
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、計(jì) 算 機(jī) 科 學(xué) 系計(jì)算器的設(shè)計(jì)目錄第一章緒論 .21.1開(kāi)發(fā)環(huán)境 .21.2基本功能介紹 .2第二章系統(tǒng)設(shè)計(jì) .32.1系統(tǒng)流程圖 .32.2系統(tǒng)功能框圖 .32.3需求分析 .4第三章軟件設(shè)計(jì) .53.1界面設(shè)計(jì) .53.2代碼設(shè)計(jì) .5第四章測(cè)試分析 .103.1程序運(yùn)行情況 : .103.2程序異常處理 : .103.3測(cè)試用例 .113.3.1加法測(cè)試 .113.3.2減法測(cè)試 .113.3.3乘法測(cè)試 .123.3.4除法測(cè)試 .13第五章結(jié)束語(yǔ) .14第六章參考文獻(xiàn) .14第 1 頁(yè) 共 15 頁(yè)計(jì)算器的設(shè)計(jì)第一章緒論1.1 開(kāi)發(fā)環(huán)境本系統(tǒng)是利用 Java 語(yǔ)言在 NetBea
2、ns IDE6.5 環(huán)境下開(kāi)發(fā)的, Java 語(yǔ)言是當(dāng)今流行的網(wǎng)絡(luò)編程語(yǔ)言,它具有面向?qū)ο?、跨平臺(tái)、分布應(yīng)用等特點(diǎn)。面向?qū)ο蟮拈_(kāi)發(fā)方法是當(dāng)今世界最流行的開(kāi)發(fā)方法,它不僅具有更貼近自然的語(yǔ)義,而且有利于軟件的維護(hù)和繼承。為了進(jìn)一步鞏固課堂上所學(xué)到的知識(shí), 深刻把握 Java 語(yǔ)言的重要概念及其面向?qū)ο蟮奶匦?,鍛煉學(xué)生熟練的應(yīng)用面向?qū)ο蟮乃枷牒驮O(shè)計(jì)方法解決實(shí)際問(wèn)題的能力,開(kāi)設(shè)了 Java 程序設(shè)計(jì)課程設(shè)計(jì)。通過(guò)此次課程設(shè)計(jì),鞏固所學(xué) Java 語(yǔ)言基本知識(shí),增進(jìn) Java 語(yǔ)言編輯基本功,掌握 JDK 、Editplus 、Eclipse 、JCreator 等開(kāi)發(fā)工具的運(yùn)用,拓寬常用類(lèi)庫(kù)的應(yīng)用。
3、使學(xué)生通過(guò)該教學(xué)環(huán)節(jié)與手段,把所學(xué)課程及相關(guān)知識(shí)加以融會(huì)貫通,全面掌握 Java 語(yǔ)言的編程思想及面向?qū)ο蟪绦蛟O(shè)計(jì)的方法,為今后從事實(shí)際工作打下堅(jiān)實(shí)的基礎(chǔ)。1.2 基本功能介紹本系統(tǒng)實(shí)現(xiàn)了一個(gè)簡(jiǎn)單而實(shí)用的計(jì)算器,通過(guò)這個(gè)計(jì)算器我們可以進(jìn)行一些基本的運(yùn)算操作,它可以進(jìn)行簡(jiǎn)單的四則運(yùn)算(加、減、乘、除)但僅限于十進(jìn)制下,還可以進(jìn)行(八進(jìn)制,十進(jìn)制 ,十六進(jìn)制)之間的相互轉(zhuǎn)換,八進(jìn)制最多可以輸入 19 位數(shù) ,十進(jìn)制最多可以輸入18 位數(shù),十六進(jìn)制最多可以輸入14 位數(shù) ,backspace表 示 退 格 ,clear表 示 初 始 化, 在window下 直接 運(yùn) 行( Jsp2003.bat )
4、即可,界面為灰白對(duì)稱(chēng)。 它的設(shè)計(jì)按軟件工程的方法進(jìn)行 ,系統(tǒng)具有良好的界面、必要的交互信息和較好的健壯性;醒目美觀的軟件封面。使用人員能快捷簡(jiǎn)單地進(jìn)行操作。即時(shí)準(zhǔn)確地獲得需要的計(jì)算的結(jié)果,充分降低了數(shù)字計(jì)算的難度和節(jié)約了時(shí)間,對(duì)人們的生活有一定的幫助。第 2 頁(yè) 共 15 頁(yè)計(jì)算器的設(shè)計(jì)第二章系統(tǒng)設(shè)計(jì)2.1 系統(tǒng)流程圖2.2 系統(tǒng)功能框圖第 3 頁(yè) 共 15 頁(yè)計(jì)算器的設(shè)計(jì)說(shuō)明:在程序中構(gòu)建類(lèi)testZ ,在其中封裝起界面、文本框、按鈕、數(shù)字、運(yùn)算符等等成員,再引入成員函數(shù)testZ ()進(jìn)行計(jì)算器的模擬界面設(shè)計(jì);其次設(shè)計(jì)出事件處理函數(shù),如:運(yùn)算事件、符號(hào)事件、等號(hào)事件等等;最后設(shè)計(jì)運(yùn)算函數(shù)的
5、響應(yīng)事件。這樣設(shè)計(jì)的好處在于使得程序的實(shí)現(xiàn)思維更清晰,易懂,可讀性增強(qiáng)。反之則不然。2.3 需求分析首先分析這個(gè)說(shuō)要完成的功能,它的主要任務(wù)是完成十六進(jìn)制、十進(jìn)制、八進(jìn)制和二進(jìn)制之間的相互轉(zhuǎn)化,需要包含負(fù)數(shù),但不用考慮小數(shù)。其次,確定接口參數(shù)。根據(jù)功能可知,它傳遞給外部的就是一個(gè)轉(zhuǎn)后的數(shù)據(jù),而外部除了需要傳遞給轉(zhuǎn)化前的數(shù)據(jù)以外,是否還需要其他參數(shù)呢?我們都知道,十進(jìn)制的負(fù)數(shù)同樣可以利用其他進(jìn)制進(jìn)行表示,例如二進(jìn)制,轉(zhuǎn)化方法是:求十進(jìn)制數(shù)的絕對(duì)值對(duì)應(yīng)的二進(jìn)制數(shù),最高位為1;然后對(duì)二進(jìn)制逐位求反,最高位除外;接著最低一位加 1,需要進(jìn)位的話(huà)依次進(jìn)位,最高位除外。如今的問(wèn)題就擺在了我們面前,我們?nèi)绾?/p>
6、知道這個(gè)數(shù)的最高位是第幾位呢,也許有人會(huì)說(shuō),那就用轉(zhuǎn)化后的前面再加上一位,好,即使這樣可以成立,那么-1轉(zhuǎn)化后就是 11,3 轉(zhuǎn)化后也為 11,現(xiàn)在如果需要現(xiàn)在的把這個(gè)數(shù)二進(jìn)制數(shù)再轉(zhuǎn)化為十進(jìn)制,那么我們?nèi)绾沃涝瓉?lái)的是正數(shù)還是負(fù)數(shù)呢,如果要轉(zhuǎn)化為十六進(jìn)制,八進(jìn)制又當(dāng)如何呢?經(jīng)過(guò)以上的分析發(fā)現(xiàn),還應(yīng)該有另外一個(gè)參數(shù)二進(jìn)制時(shí)的寬度,只有這樣才能知道誰(shuí)是最高位,因此就稱(chēng)這個(gè)參數(shù)為位寬。最后,設(shè)計(jì)類(lèi)。根據(jù)第二步的分析,因?yàn)槲粚拰?duì)每一個(gè)方法都是一樣,所以可能把它作為類(lèi)的成員變量,而另外兩個(gè)參數(shù)轉(zhuǎn)化前的值和轉(zhuǎn)化后的值就分別作為輸入?yún)?shù)和返回值。而類(lèi)對(duì)外的接口只有各個(gè)轉(zhuǎn)化的方法,因此這幾個(gè)方法設(shè)計(jì)為 pub
7、lic 權(quán)限,而其它所有的輔助方法都為private 權(quán)限。位寬通過(guò)構(gòu)造函數(shù)傳遞,外部不能直接訪(fǎng)問(wèn)和修改,設(shè)置也設(shè)置為private 權(quán)限。為了減少計(jì)算量,所有的轉(zhuǎn)化都以二進(jìn)制為中介。例如十六進(jìn)制到十進(jìn)制,是十六進(jìn)制二進(jìn)制十進(jìn)制。第 4 頁(yè) 共 15 頁(yè)計(jì)算器的設(shè)計(jì)第三章軟件設(shè)計(jì)3.1 界面設(shè)計(jì)這個(gè)就是計(jì)算器界面,簡(jiǎn)潔易用,我們可以從中的數(shù)字按鍵和運(yùn)算符按鈕進(jìn)行相應(yīng)的數(shù)學(xué)計(jì)算,總共由個(gè)按鈕(個(gè)數(shù)字符+個(gè)運(yùn)算符號(hào) +個(gè)小數(shù)點(diǎn) +個(gè)“ clear ”按鈕),一個(gè)標(biāo)簽、再加一個(gè)文本框組成。3.2 代碼設(shè)計(jì)import java.awt.*;import java.awt.event.*;import
8、 javax.swing.*;public class Caculatorpublic static void main(String args)JFrame frame = new JFrame(Caculator);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.getContentPane().add(new CaculatorPanel();frame.pack();frame.setVisible(true);class CaculatorPanel extends JPanelprivate JLabel nam
9、elabel,resultlabel;private JTextField resultField;第 5 頁(yè) 共 15 頁(yè)計(jì)算器的設(shè)計(jì)private JPanel labelPanel,numberPanel,toolPanel;private JButton s1,s2,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
10、 = new JLabel( resultField = new JTextField(10);計(jì)算器 );ButtonListener listener = new ButtonListener();clear = new JButton(clear);clear.addActionListener(listener);s1 = new JButton(1); s1.addActionListener(listener);s2 = new JButton(2); s2.addActionListener(listener);s3 = new JButton(3); s3.addActionL
11、istener(listener);s4 = new JButton(4); s4.addActionListener(listener);s5 = new JButton(5); s5.addActionListener(listener);s6 = new JButton(6); s6.addActionListener(listener);s7 = new JButton(7); s7.addActionListener(listener);s8 = new JButton(8); s8.addActionListener(listener);s9 = new JButton(9); s
12、9.addActionListener(listener);s0 = new JButton(0); s0.addActionListener(listener);p1 = new JButton(.); p1.addActionListener(listener);p2 = new JButton(=); p2.addActionListener(listener);t1 = new JButton(+); t1.addActionListener(listener);t2 = new JButton(-); t2.addActionListener(listener);t3 = new J
13、Button(*); t3.addActionListener(listener);t4 = new JButton(/); t4.addActionListener(listener);labelPanel = new JPanel();labelPanel.add(namelabel);labelPanel.add(resultField);labelPanel.add(clear);numberPanel = new JPanel();numberPanel.setLayout(new GridLayout(4,3);numberPanel.add(s1);numberPanel.add
14、(s2);numberPanel.add(s3);numberPanel.add(s4);numberPanel.add(s5);numberPanel.add(s6);numberPanel.add(s7);第 6 頁(yè) 共 15 頁(yè)計(jì)算器的設(shè)計(jì)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.ad
15、d(t1);toolPanel.add(t2);toolPanel.add(t3);toolPanel.add(t4);setPreferredSize(new Dimension(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)/ 如果數(shù)字輸入結(jié)束,則將文本框置零,重新輸入 resultField.setText(0);end=false;if(r
16、esultField.getText().equals(0)/ 如果文本框的內(nèi)容為零,則覆蓋文本框的內(nèi)容 resultField.setText(s);else/ 如果文本框的內(nèi)容不為零,則在內(nèi)容后面添加數(shù)字 str = resultField.getText() + s; resultField.setText(str);private class ButtonListener implements ActionListener public void actionPerformed(ActionEvent e) /數(shù)字事件if(e.getSource()=clear)第 7 頁(yè) 共 15
17、頁(yè)計(jì)算器的設(shè)計(jì)resultField.setText(0);else if(e.getSource()=s1)num(1);else if(e.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.getS
18、ource()=s9)num(9);else if(e.getSource()=s0)num(0);/ 符號(hào)事件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);/ 等號(hào)else if(e.getSource()=p1)str=resultField.getText();if(str.indexOf(.)=1)str+=.;resultField.setText(str);else
19、if(e.getSource()=p2)num2=Double.parseDouble(resultField.getText();if(add)num1=num1 + num2;第 8 頁(yè) 共 15 頁(yè)計(jì)算器的設(shè)計(jì)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=fa
20、lse;div=false;else if(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 頁(yè) 共 15 頁(yè)計(jì)算器的設(shè)計(jì)第四章測(cè)試分析4.1 程序運(yùn)行情況 :程序正常的響應(yīng)按鈕事件,輸入的數(shù)值長(zhǎng)度受變量length 的限定,進(jìn)行混合四則運(yùn)算
21、的時(shí)候,結(jié)果如果不是很大,可以正常顯示,但如果結(jié)果很大,就可能采用科學(xué)記數(shù)方式,這樣帶來(lái)了進(jìn)制轉(zhuǎn)換時(shí)的麻煩,需要特殊的處理科學(xué)記數(shù)里的 E ,當(dāng)結(jié)果太大的時(shí)候, 有可能超出可能表示的最大值, (結(jié)果溢出),這個(gè)時(shí)候就要對(duì)結(jié)果進(jìn)行必要的異常處理,我在輸出結(jié)果的方法內(nèi)設(shè)置if 語(yǔ)句,如果結(jié)果大于某一個(gè)值就拋出一個(gè)This_number_too_big類(lèi)型的類(lèi),再使用try-catch ,捕捉輸出結(jié)果的方法拋出的異常對(duì)象。然后進(jìn)行,重制歸零的處理。4.2 程序異常處理 :當(dāng)結(jié)果超出 Double.MAX_VALUE時(shí),將拋出一個(gè) This_number_too_big類(lèi)的異常對(duì)象,這個(gè)是我自定義的一
22、個(gè)異常類(lèi)它繼承自Exception類(lèi),然后使用 try-catch去捕捉這個(gè)異常,異常的處理如下: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); /如果出現(xiàn)異常則初始化效果如同clear鍵第 10 頁(yè) 共 15 頁(yè)計(jì)算器的設(shè)計(jì)4.3 測(cè)試用例4.4.1 加法測(cè)試( 1) .運(yùn)行結(jié)果如下:( 2) ()運(yùn)行結(jié)果如下:4.4.2 減法測(cè)試( 1) 運(yùn)算結(jié)果如下:第 11 頁(yè) 共 15 頁(yè)計(jì)算器的設(shè)計(jì)( 2)運(yùn)算結(jié)果如下:4.4.3 乘法測(cè)試( 1)()運(yùn)算結(jié)果如下:( 2)運(yùn)算結(jié)果如下:第 12 頁(yè) 共 15 頁(yè)計(jì)算器的設(shè)計(jì)4.4.4 除法測(cè)試(1)運(yùn)算結(jié)果如下:( 2)運(yùn)算結(jié)果如下:( 3)運(yùn)算結(jié)果如下:第 13 頁(yè) 共 15 頁(yè)計(jì)算器的設(shè)計(jì)第五章結(jié)束語(yǔ)終于做完了這次的作業(yè),有一種如釋重?fù)?dān)的感覺(jué),但還是有一點(diǎn)點(diǎn)的留戀。這次做的計(jì)算器的實(shí)現(xiàn)算是一個(gè)比較簡(jiǎn)單的設(shè)計(jì) , 它牽涉的知識(shí)面并不是很多,實(shí)現(xiàn)的功能簡(jiǎn)單,對(duì)界面要求也不高,很適合我們做一些個(gè)人的程序開(kāi)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 ISO/TS 6201:2025 EN Health informatics - Personalized digital health framework
- 2025版新型實(shí)木地板安裝與維護(hù)一體化合同
- 2025年在線(xiàn)教育平臺(tái)課程銷(xiāo)售傭金及教學(xué)資源合作合同
- 2025年度綜合性幼兒園運(yùn)營(yíng)管理承包合同
- 2025年激光測(cè)距儀、測(cè)向儀合作協(xié)議書(shū)
- 2025年鋼鐵廠(chǎng)鋼筋施工勞務(wù)承包合同:成本控制
- 業(yè)務(wù)部門(mén)財(cái)務(wù)支持計(jì)劃
- 幼兒園小班的校園文化建設(shè)工作計(jì)劃
- 玩中學(xué)學(xué)中玩計(jì)劃
- 細(xì)化貨物標(biāo)識(shí)與管理的措施計(jì)劃
- 【湘教版】2024-2025學(xué)年七年級(jí)數(shù)學(xué)下冊(cè)教學(xué)工作計(jì)劃(及進(jìn)度表)
- 二零二五版洗煤廠(chǎng)與礦業(yè)公司合作洗煤業(yè)務(wù)合同3篇
- 2025年湖南高速鐵路職業(yè)技術(shù)學(xué)院高職單招高職單招英語(yǔ)2016-2024歷年頻考點(diǎn)試題含答案解析
- 2024預(yù)防流感課件完整版
- 2024年安徽省高校分類(lèi)考試對(duì)口招生語(yǔ)文試卷真題(含答案)
- 新概念英語(yǔ)第2冊(cè)課文(完整版)
- 房產(chǎn)部經(jīng)紀(jì)人崗前培訓(xùn)——稅費(fèi)計(jì)算ppt課件
- 室外道路及管網(wǎng)工程施工招標(biāo)文件(DOC43頁(yè))
- 《物理化學(xué)》電子教案(上冊(cè))(共84頁(yè))
- 煤礦績(jī)效考核管理辦法
- 設(shè)備安裝施工方案(完整版)
評(píng)論
0/150
提交評(píng)論