




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上精選優(yōu)質(zhì)文檔-傾情為你奉上專(zhuān)心-專(zhuān)注-專(zhuān)業(yè)專(zhuān)心-專(zhuān)注-專(zhuān)業(yè)精選優(yōu)質(zhì)文檔-傾情為你奉上專(zhuān)心-專(zhuān)注-專(zhuān)業(yè)目錄 TOC o 1-3 h z u 1.課程設(shè)計(jì)目的 通過(guò)課程設(shè)計(jì)把知識(shí)形成系統(tǒng),把自己所學(xué)的知識(shí)在實(shí)際問(wèn)題中加以運(yùn)用。如果自己編寫(xiě)的程序能夠給更多的人帶來(lái)方便,并且得到人們的好評(píng),那么自己編寫(xiě)的程序就可以實(shí)現(xiàn)商品化,形成產(chǎn)品給更多的人利用,并實(shí)現(xiàn)一定的商品價(jià)值。因此本次課程設(shè)計(jì)有目的有以下幾點(diǎn):(1)復(fù)習(xí)鞏固java語(yǔ)言的基礎(chǔ)知識(shí),進(jìn)一步加深對(duì)java語(yǔ)言的理解和掌控。 (2)提供一個(gè)既動(dòng)手又動(dòng)腦,獨(dú)立實(shí)踐的機(jī)會(huì),將課本上的理論知識(shí)和實(shí)際有機(jī)結(jié)合起來(lái),鍛煉我們的分析
2、解決實(shí)際問(wèn)題的能力。提高我們適應(yīng)實(shí)際,實(shí)踐編程的能力。 (3)培養(yǎng)我們?cè)陧?xiàng)目開(kāi)發(fā)中創(chuàng)新意識(shí)及能力,通過(guò)親身實(shí)踐,利用所學(xué)編寫(xiě)簡(jiǎn)單的面向?qū)ο蟪绦?,提高?duì)面向?qū)ο蠹癑AVA語(yǔ)言的理解。2.設(shè)計(jì)題目分析21 題目簡(jiǎn)介 設(shè)計(jì)一個(gè)圖形界面(GUI)的計(jì)算器應(yīng)用程序,完成簡(jiǎn)單的算術(shù)運(yùn)算、設(shè)計(jì)的計(jì)算器應(yīng)用程序可以完成家法、減法、乘法、除法。22 設(shè)計(jì)要求及需求分析 設(shè)計(jì)要求:由于現(xiàn)代用戶(hù)更傾向于由鼠標(biāo)方便操作的圖形用戶(hù)界面,所以我們采用GUI來(lái)實(shí)現(xiàn)計(jì)算器,并采用Swing組件,AWT事件處理等實(shí)現(xiàn)具體功能。背景需求分析:在我們?nèi)粘I钪校?jì)算開(kāi)支、收入時(shí),大額數(shù)字或是多倍小數(shù)的計(jì)算都需要計(jì)算器的幫助,而在學(xué)
3、習(xí)一些科目時(shí),也常常要處理數(shù)字。雖然現(xiàn)在的計(jì)算器價(jià)格比較低廉,但是功能過(guò)于簡(jiǎn)單的不能滿(mǎn)足個(gè)人需求,功能多的價(jià)格較貴,不僅操作不便,很多功能也根本用不到。所以我們想用自己所學(xué)設(shè)計(jì)開(kāi)發(fā)一個(gè)屬于自己的簡(jiǎn)單計(jì)算器來(lái)完成日常學(xué)習(xí)生活的需求。3.課程設(shè)計(jì)內(nèi)容31 總體設(shè)計(jì)本應(yīng)用程序繼承自框架類(lèi)(Frame),此程序使用Frame布局管理器BorderLayout,將單行文本框加入到“North”區(qū)域,包含各種按鈕的面板Panel p加入到”Center”區(qū)域。包含各種按鈕的面板Panel p 采用4行4列的網(wǎng)格布局,然后將數(shù)字按鈕和運(yùn)算符按鈕以及控制按鈕添加到面板中。同時(shí)注冊(cè)按鈕事件監(jiān)聽(tīng)器。如:Butto
4、n 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)按鈕事件(”)、求倒按鈕事件(”1/x”)、退格按鈕事件(”退格”)、清楚按鈕事件(“C”)。觸發(fā)按鈕事件時(shí),要進(jìn)一步分析,是重新開(kāi)始計(jì)算時(shí)觸發(fā)的按鈕事件還是計(jì)算中間觸發(fā)的按鈕事件。計(jì)算器完成的
5、是一個(gè)數(shù)學(xué)表達(dá)式,如:32,所以可以采用一個(gè)鏈表(LinkedList類(lèi))來(lái)存儲(chǔ)數(shù)字或字符,如3,2分別存儲(chǔ)在鏈表中,最后運(yùn)算時(shí),可以一一取出來(lái)進(jìn)行運(yùn)算。計(jì)算器設(shè)計(jì)外形及結(jié)構(gòu)如下:系統(tǒng)總體設(shè)計(jì)框架Panel2 Panel1 Panel:4*4的數(shù)字及運(yùn)算鍵Panel2:輸入及運(yùn)行結(jié)果顯示及倒退清空鍵3.2計(jì)算器功能模塊設(shè)計(jì)以下為標(biāo)準(zhǔn)計(jì)算器的基本功能:(1)加法 兩個(gè)數(shù)據(jù)進(jìn)行加操作,可以為小數(shù)。(2)減法 兩個(gè)數(shù)據(jù)進(jìn)行減操作,可以為負(fù)數(shù)相減。(3)乘法 兩個(gè)數(shù)相乘操作。(4)除法 兩個(gè)數(shù)相除操作。(5)清零 清除顯示框的數(shù)據(jù)。具體的計(jì)算器功能模塊圖如下:計(jì)算器 清零除乘減加 3.3計(jì)算器算法流程
6、設(shè)計(jì)計(jì)算器的程序設(shè)計(jì),必然有數(shù)據(jù)的輸入,當(dāng)中就包含運(yùn)算符和數(shù)字,都要通過(guò)計(jì)算器上的button按鈕選項(xiàng)按鍵輸入進(jìn)去,里面錄入的為字符型的數(shù)據(jù),若要進(jìn)行運(yùn)算,要將輸入的字符轉(zhuǎn)換成double型,以防運(yùn)算出錯(cuò)。實(shí)現(xiàn)計(jì)算器算法功能的流程圖如下所示:用戶(hù)點(diǎn)擊按鍵或鍵盤(pán)輸入文本框接收觸發(fā)事件文本框顯示結(jié)果調(diào)用計(jì)算函數(shù)運(yùn)算數(shù)據(jù)輸入主界面開(kāi)始結(jié)果輸出運(yùn)算符號(hào)繼續(xù)3.4類(lèi)的設(shè)計(jì)class jisuan extends JFrame implements ActionListener/jisuan 是初始化界面,以及響應(yīng)用戶(hù)的操作。jisuan是個(gè)內(nèi)部類(lèi),功能是進(jìn)行進(jìn)制的轉(zhuǎn)換。import java.awt.*
7、;import java.awt.event.*;import javax.swing.*;這三項(xiàng)是系統(tǒng)初始時(shí)需要引入的主類(lèi)以達(dá)到完成界面的目的。35代碼實(shí)現(xiàn):1、引入主類(lèi):import java.awt.*;import java.awt.event.*;import javax.swing.*;public class jisuan extends JFrame implements ActionListener 2、實(shí)現(xiàn)計(jì)算器界面的關(guān)閉與擴(kuò)展private static final long serialVersionUID = -L;private class WindowCloser
8、 extends WindowAdapter public void windowClosing(WindowEvent we) System.exit(0);3、建立按鍵并為每個(gè)按鍵賦予相應(yīng)的字符int i;private final String str = 7, 8, 9, /, 4, 5, 6, *, 1,2, 3, -, ., 0, =, + ;JButton buttons = new JButtonstr.length;JButton reset = new JButton(CE);JTextField display = new JTextField(0);4、設(shè)計(jì)計(jì)算器界面p
9、ublic jisuan() super(jisuan);JPanel panel1 = new JPanel(new GridLayout(4, 4);for (i = 0; i str.length; i+) buttonsi = new JButton(stri);panel1.add(buttonsi);JPanel panel2 = new JPanel(new BorderLayout();panel2.add(Center, display);panel2.add(East, reset);getContentPane().setLayout(new BorderLayout()
10、;getContentPane().add(North, panel2);getContentPane().add(Center, panel1);5、為各個(gè)按鍵及顯示框添加事件監(jiān)聽(tīng)for (i = 0; i 0)handleNumber(label);elsehandleOperator(label);boolean isFirstDigit = true;public void handleNumber(String key) if (isFirstDigit)display.setText(key);else if (key.equals(.) & (display.getText().
11、indexOf(.) 0)display.setText(display.getText() + .);else if (!key.equals(.)display.setText(display.getText() + key);isFirstDigit = false;7、重置功能的實(shí)現(xiàn)public void handleReset() display.setText(0);isFirstDigit = true;operator = =;double number = 0.0;String operator = =;8、運(yùn)算功能的實(shí)現(xiàn)public void handleOperator(
12、String key) if (operator.equals(+)number += Double.valueOf(display.getText();else if (operator.equals(-)number -= Double.valueOf(display.getText();else if (operator.equals(*)number *= Double.valueOf(display.getText();else if (operator.equals(/)number /= Double.valueOf(display.getText();else if (oper
13、ator.equals(=)number = Double.valueOf(display.getText();display.setText(String.valueOf(number);operator = key;isFirstDigit = true;public static void main(String args) new jisuan();35 設(shè)計(jì)結(jié)果與分析1、運(yùn)行的初始界面 2、數(shù)字計(jì)算演示以計(jì)算(789+45)*23=19182為例,計(jì)算過(guò)程如下: 輸入789與45相加所得結(jié)果輸入23并相乘得到最終結(jié)果點(diǎn)擊CE清零最后得到的結(jié)果為19182,結(jié)果正確,計(jì)算器的各個(gè)功能均
14、得以實(shí)現(xiàn)。4.設(shè)計(jì)心得與總結(jié)通過(guò)此次的課程設(shè)計(jì)實(shí)踐,我們不但進(jìn)一步理解掌握了課上老師教授的知識(shí),而且通過(guò)查找資料學(xué)會(huì)了課上沒(méi)有的東西,進(jìn)一步理解了面向?qū)ο蟮暮x,發(fā)現(xiàn)了很多它比面向過(guò)程突出的地方,第一次接觸了圖形界面,初步了解了GUI方面的知識(shí)。在實(shí)踐中我們遇到了很多問(wèn)題,但我們都努力克服,并最終成功的完成了這次課程設(shè)計(jì)。 通過(guò)編寫(xiě)這個(gè)相對(duì)復(fù)雜的程序,我們認(rèn)識(shí)解決實(shí)際問(wèn)題前應(yīng)先建立模型,再通過(guò)建立的模型使問(wèn)題簡(jiǎn)單化,從而解決問(wèn)題。并且這次編寫(xiě)的程序大部分是通過(guò)調(diào)用各包中的方法來(lái)實(shí)現(xiàn)的,這也讓我們充分理解了包和類(lèi)的調(diào)用關(guān)系。由于這次編寫(xiě)的程序比較復(fù)雜,所以不能一次性編寫(xiě)、調(diào)試,也由此讓我們學(xué)會(huì)把
15、程序分塊,逐個(gè)編寫(xiě)、調(diào)試。參考文獻(xiàn):2葉乃文,王丹面向?qū)ο蟪绦蛟O(shè)計(jì)M清華大學(xué)出版社,2009.2邱桃榮,陳軼,馮纓JAVA語(yǔ)言程序設(shè)計(jì)教程M機(jī)械工業(yè)出版社,2009.2於東軍,楊靜宇,李千目,王國(guó)全JAVA程序設(shè)計(jì)與應(yīng)用開(kāi)發(fā)M清華大學(xué)出版社,2006.附錄:計(jì)算器的完整實(shí)現(xiàn)代碼:import java.awt.*;import java.awt.event.*;import javax.swing.*;public class jisuan extends JFrame implements ActionListener private static final long serialVers
16、ionUID = -L;private class WindowCloser extends WindowAdapter public void windowClosing(WindowEvent we) System.exit(0);int i;/ Strings for Digit & Operator buttons.private final String str = 7, 8, 9, /, 4, 5, 6, *, 1,2, 3, -, ., 0, =, + ;/ Build buttons.JButton buttons = new JButtonstr.length;/ For c
17、ancel or reset.JButton reset = new JButton(CE);/ Build the text field to show the result.JTextField display = new JTextField(0);public jisuan() super(jisuan);/ Add a panel.JPanel panel1 = new JPanel(new GridLayout(4, 4);/ panel1.setLayout(new GridLayout(4,4);for (i = 0; i str.length; i+) buttonsi =
18、new JButton(stri);panel1.add(buttonsi);JPanel panel2 = new JPanel(new BorderLayout();/ panel2.setLayout(new BorderLayout();panel2.add(Center, display);panel2.add(East, reset);/ JPanel panel3 = new Panel();getContentPane().setLayout(new BorderLayout();getContentPane().add(North, panel2);getContentPan
19、e().add(Center, panel1);/ Add action listener for each digit & operator button.for (i = 0; i 0)handleNumber(label);elsehandleOperator(label);/ Is the first digit pressed?boolean isFirstDigit = true;public void handleNumber(String key) if (isFirstDigit)display.setText(key);else if (key.equals(.) & (display.getText().indexOf(.) 0)display.setText(display.getText() + .);else if (!key.equals(.)display.setText(display.getText() + key)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 浙江國(guó)企招聘2024臺(tái)州市永寧產(chǎn)業(yè)投資集團(tuán)有限公司招聘7人筆試參考題庫(kù)附帶答案詳解
- 浙江2024年12月舟山市住房和城鄉(xiāng)建設(shè)局公開(kāi)招考1名編外工作人員筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 弘揚(yáng)中華美育體悟古典園林之美設(shè)計(jì)繪畫(huà)第三單元課件
- 河南八市2024年高三2月開(kāi)學(xué)模擬(網(wǎng)絡(luò)考試)數(shù)學(xué)試題
- 建設(shè)工程管理專(zhuān)業(yè)教學(xué)課件
- 脊柱理療知識(shí)培訓(xùn)課件
- 云南省曲靖市第二小學(xué)2024-2025學(xué)年數(shù)學(xué)五下期末復(fù)習(xí)檢測(cè)試題含答案
- 大連工業(yè)大學(xué)《器官-系統(tǒng)模塊四》2023-2024學(xué)年第二學(xué)期期末試卷
- 江蘇城市職業(yè)學(xué)院《英語(yǔ)報(bào)刊閱讀》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025年長(zhǎng)陽(yáng)土家族自治縣小升初總復(fù)習(xí)數(shù)學(xué)測(cè)試卷含解析
- 2024年世界職業(yè)院校技能大賽“食品安全與質(zhì)量檢測(cè)組”參考試題庫(kù)(含答案)
- 《真希望你也喜歡自己》房琪-讀書(shū)分享
- 危險(xiǎn)品車(chē)輛安全運(yùn)輸安全生產(chǎn)值班制度(3篇)
- 第21課 磁懸浮列車(chē)(說(shuō)課稿)-2023-2024學(xué)年六年級(jí)科學(xué)下冊(cè)同步備課(青島版)
- 區(qū)域銷(xiāo)售規(guī)劃方案
- 防水項(xiàng)目招標(biāo)文件范本示例
- 腎穿術(shù)后護(hù)理查房
- 2025年高考作文備考之二元思辨作文講解
- 語(yǔ)文學(xué)習(xí)任務(wù)群的解讀及設(shè)計(jì)要領(lǐng)
- 2024年山東省高考生物試卷真題(含答案解析)
- 光伏發(fā)電站項(xiàng)目安全技術(shù)交底資料
評(píng)論
0/150
提交評(píng)論