版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、編號編號: 面向?qū)ο蟪绦蛟O(shè)計(jì)(面向?qū)ο蟪绦蛟O(shè)計(jì)(JAVAJAVA) 課程設(shè)計(jì)課程設(shè)計(jì)( (論文論文) )檔案檔案 題題 目目: 保存計(jì)算過程的計(jì)算器 學(xué)學(xué) 院院: 信息學(xué)院 專專 業(yè)業(yè): 姓姓 名名: 學(xué)學(xué) 號號: 班班 級級: 指導(dǎo)教師指導(dǎo)教師: 職職 稱稱: 講師 完成日期完成日期: 2013 年 12 月 面向?qū)ο蟪绦蛟O(shè)計(jì)(面向?qū)ο蟪绦蛟O(shè)計(jì)(JAVAJAVA) 課程設(shè)計(jì)課程設(shè)計(jì)( (論文論文) ) 題題 目目: 保存計(jì)算過程的計(jì)算器 學(xué)學(xué) 院院: 信息學(xué)院 專專 業(yè)業(yè): 姓姓 名名: 學(xué)學(xué) 號號: 班班 級級: 指導(dǎo)教師指導(dǎo)教師: 職職 稱稱: 講師 完成日期完成日期: 2013 年 1
2、2 月 摘 要 當(dāng)下計(jì)算機(jī)技術(shù)發(fā)展迅捷,人們已經(jīng)不能滿足于采用人工進(jìn)行大量的計(jì) 算,計(jì)算器快速的計(jì)算速度和穩(wěn)定的準(zhǔn)確率很好的滿足了用戶的需要,然而 Windows 自帶的計(jì)算器所提供的功能已經(jīng)無法滿足人民日益增長的需求,保 存計(jì)算過程的計(jì)算器更是能夠讓用戶隨時(shí)隨地的查找以前的計(jì)算過程,能夠 提供給用戶更加好的體驗(yàn)感受。 基于上面的幾點(diǎn)因素,保存計(jì)算過程的計(jì)算器正是在這樣的需求之下應(yīng) 運(yùn)而生的,目的旨在幫助用戶快速準(zhǔn)確的得到計(jì)算結(jié)果。本次實(shí)驗(yàn)課題使用 了 JAVA 語言,開發(fā)平臺選用 Eclipse 這個(gè)開源的編譯軟件,主要原因就是 其強(qiáng)大的跨平臺能力與超過 C+語言 MFC 所提供的包含框架界
3、面設(shè)計(jì)功能。 由于其是面向?qū)ο蟮恼Z言,所以整個(gè)代碼看上去盡然有序,更加健壯、易讀。 對于程序本身,由于時(shí)間有限只能做出簡易的計(jì)算功能,旨在實(shí)現(xiàn)保存 計(jì)算過程這一目標(biāo),更加多的科學(xué)計(jì)算器功能可以通過模塊的方式進(jìn)行快速 集成,體現(xiàn)出了面向?qū)ο蟮哪K化設(shè)計(jì)的特性。 【關(guān)鍵字】保存計(jì)算過程,計(jì)算器,JAVA 語言,Eclipse,模塊化 Abstract With the rapid development of computer technology nowadays, people are not satisfied with the manually way that conduct a lar
4、ge number of calculations any more. Computers, which have the high speed of the calculation and stable accuracy, meet users needs well. However, the functions of Windows own calculator have been unable to meet the growing needs of people. But the calculator saving the calculation procedure enables u
5、sers to search the procedure at any time and no matter where they are and it provides the users with a better and totally new experience. Taking all the facts above into consideration, the calculator that saving the calculation procedure works, in such a condition. It aims at helping the users to ge
6、t the calculation results as quickly as possible. For this experimental subject, JAVA language has been used.Also used Eclipse software. The main reason of it is that it has quite a powerful ability of cross platform. Besides, the function of framework interface designation surpasses the C+ MFCs. Si
7、nce it is an object- oriented language, the whole codes seem more orderly, stronger and easier to read. As for the process itself, only the simple calculations can be made due to the limited time. Nevertheless, to make the calculation procedure saved, more and more scientific calculator functions ca
8、n be quickly integrated through the way of module which reflects the features of object-oriented modular design. 【Key words】Save computational process;Calculator;JAVA language;Eclipse;Modularization 目 錄 前言前言.1 1 需求分析需求分析.2 1.1 設(shè)計(jì)目的.2 1.2 程序需求分析.2 1.3 系統(tǒng)目標(biāo).2 1.4 主要設(shè)計(jì)思想.3 1.5 開發(fā)環(huán)境配置.3 2 2 程序設(shè)計(jì)程序設(shè)計(jì).4 2
9、.1 概要設(shè)計(jì).4 2.2 詳細(xì)設(shè)計(jì).7 2.3 設(shè)計(jì)小結(jié).9 3 代碼編寫代碼編寫.10 3.1 導(dǎo)入包.10 3.2 各模塊代碼.10 4 測試與調(diào)試測試與調(diào)試.14 4.1 主界面測試.14 4.2 計(jì)算操作.14 4.3 清零操作.15 4.4 保存操作.15 4.5 清除操作.16 5 軟件發(fā)布軟件發(fā)布.17 總結(jié)與體會總結(jié)與體會.18 參考文獻(xiàn)參考文獻(xiàn).19 致謝致謝.20 附錄附錄.21 前前 言言 在日常生活中人們總是難以避免的要進(jìn)行一些運(yùn)算,當(dāng)運(yùn)算比較復(fù)雜時(shí) 沒有一個(gè)計(jì)算器就會顯得很麻煩。為了解決這種日常生活中的困難特意設(shè)計(jì) 了這個(gè)計(jì)算器小程序。 該程序不僅可以進(jìn)行整數(shù)的加、
10、減、乘、除等簡單運(yùn)算,也可以進(jìn)行浮 點(diǎn)數(shù)的加、減、乘、除等運(yùn)算。除此之外還可以對已計(jì)算的結(jié)果和計(jì)算步驟 進(jìn)行復(fù)制、粘貼等儲存功能,同時(shí)具有清屏按鍵,讓顯示更加美觀。 人們應(yīng)用它可以解決日常生活中的一些運(yùn)算問題,比如做買賣時(shí),進(jìn)行 交易的過程中就可以利用該計(jì)算器進(jìn)行數(shù)量、價(jià)格以及總金額的計(jì)算與保存。 學(xué)生也可以利用該計(jì)算器進(jìn)行數(shù)學(xué)運(yùn)算,并且對計(jì)算過程進(jìn)行保存,方便日 后檢驗(yàn)跟進(jìn)。整個(gè)計(jì)算器的功能簡單易懂,界面清新簡潔,并且在日后再開 發(fā)時(shí)可以方便的進(jìn)行功能的添加與更改。 最后,該程序使用 JAVA 作為平臺開發(fā),充分體現(xiàn)了其跨平臺的優(yōu)勢, 可以在 Windows、Linux、MAC OS 等系統(tǒng)
11、,還有各類手持便攜系統(tǒng)中使用, 大大提升了應(yīng)用范圍,減小了成本。 1 1 需求分析需求分析 1.11.1 設(shè)計(jì)設(shè)計(jì)目的目的 1、掌握 JAVA 語言編程的基礎(chǔ)知識并能熟練運(yùn)用。 2、熟悉類聲明與對象的使用。 3、理解委托時(shí)間處理模型。 4、了解 JAVA 語言的圖形用戶界面 JAVA SWING 的設(shè)計(jì)知識。 5、運(yùn)用 Eclipse 編寫簡單計(jì)算器程序,并實(shí)現(xiàn)其功能。 6、掌握 Windows 環(huán)境下 JDK 的安裝與配置。 7、掌握 JAVA 程序的運(yùn)行方法與 Eclipse 開發(fā)軟件的使用方法。 1.21.2 程序需求程序需求分析分析 Windows 2000/XP 系統(tǒng)中的“計(jì)算器”是
12、一個(gè)方便實(shí)用的計(jì)算工具,但 沒有提供顯示計(jì)算過程和保存計(jì)算過程的功能。該計(jì)算器將加入這兩個(gè)功能, 其余功能與自帶計(jì)算器所遵循的計(jì)算規(guī)則相同。 1、單擊“計(jì)算器”上的數(shù)字按鈕可以設(shè)置參與計(jì)算的運(yùn)算數(shù)。 2、單擊“計(jì)算器”上的運(yùn)算符按鈕可以選擇運(yùn)算符號。 3、單擊“計(jì)算器”上的函數(shù)按鈕可以計(jì)算出相應(yīng)的函數(shù)值。 4、單擊“計(jì)算器”上的“=”按鈕顯示計(jì)算結(jié)果。 5、在一個(gè)文本框中顯示當(dāng)前的計(jì)算過程,在一個(gè)文本區(qū)中顯示以往的 計(jì)算過程。 6、單擊“保存”按鈕可以將文本區(qū)中的全部計(jì)算過程保存到文件;單 擊“復(fù)制”按鈕可以將文本區(qū)中選中的文本復(fù)制到剪貼板;單擊“清除”按 鈕可以清除文本區(qū)中的全部內(nèi)容。 通過
13、使用所學(xué)的 SWT 構(gòu)件出計(jì)算器的界面,包括添加數(shù)字按鈕、運(yùn)算 符按鈕、文本框、菜單欄、功能按鈕等。然后通過對界面上面按鈕或者菜單 欄內(nèi)容的監(jiān)聽,使其在點(diǎn)擊按鈕的時(shí)候產(chǎn)生相應(yīng)的效果。 1.31.3 系統(tǒng)目標(biāo)系統(tǒng)目標(biāo) 一個(gè)簡單的計(jì)算器程序,用戶可以利用鼠標(biāo)點(diǎn)擊數(shù)值或操作符按鍵完成 計(jì)算的輸入, 計(jì)算的結(jié)果將被顯示在窗口右側(cè)的文本框中。通過右側(cè)底部 的保存按鈕,可以完成對歷史步驟的保存,可以導(dǎo)出成文本格式。點(diǎn)擊清除 按鈕,可以將文本框清空。 1.41.4 主要設(shè)計(jì)思想主要設(shè)計(jì)思想 對于此計(jì)算器程序,首先要設(shè)計(jì)其 GUI 界面,總體界面有一個(gè)文本框, 23 個(gè)按鈕,上部的文本顯示區(qū)和文本框下部的 3
14、 個(gè)核心功能按鈕。 文本框放置在右側(cè),然后 0 到 9 以及+,-,*,/,Sin 的按鈕放置到一 個(gè)面板中,添加到整體布局中,界面設(shè)計(jì)完成。 布局設(shè)計(jì)好后再添加按鈕事件,對于此程序要考慮到點(diǎn)擊加、減、乘、 除按鈕時(shí)是否有點(diǎn)擊數(shù)字按鈕,如果是第一次點(diǎn)擊數(shù)字按鈕或者是點(diǎn)擊數(shù)字 按鈕前點(diǎn)擊了加、減、乘、除按鈕則直接把數(shù)字按鈕的數(shù)值設(shè)置到文本框中, 否則則應(yīng)把文本框中的內(nèi)容加上你所點(diǎn)擊按鈕的數(shù)值設(shè)置到文本框中。 在進(jìn)行加、減、乘、除計(jì)算時(shí)要把點(diǎn)擊加、減、乘、除按鈕之前的數(shù)值 保存下來,運(yùn)算時(shí)是這個(gè)被保存下來的數(shù)值和文本框中的數(shù)值加、減、乘、 除。 程序的運(yùn)算功能結(jié)束后,輸出到文本顯示區(qū),在右側(cè)文本框
15、中增加一條 記錄。通過文本框底部的保存文本框中的計(jì)算歷史,或者復(fù)制文本框中的內(nèi) 容到剪貼板待用。如果不需要保存,通過點(diǎn)擊清除按鈕,完成對文本框的初 始化,整個(gè)程序循環(huán)結(jié)束。 1.1.5 5 開發(fā)環(huán)境配置開發(fā)環(huán)境配置 通過 Sun 公司官網(wǎng)下載對應(yīng)版本 JDK 后,雙擊進(jìn)行默認(rèn)設(shè)置安裝。結(jié)束后, 必須設(shè)置 Windows 下的 Java 運(yùn)行的環(huán)境變量,步驟如下: 1) 在系統(tǒng)變量中,新建 JAVA_HOME 名稱的變量,填入 JDK 安裝的目錄 即可; 2) 新建 PATH 名稱的變量,變量值為% JAVA_HOME%bin;%JAVA_HOME%jrebin; 3) 新建 CLASSPATH
16、 名稱的變量,變量值為. ;%JAVA_HOME%libdt.jar;%JAVA_HOME%libtools.jar。 完成后,通過命令提示符 CMD 輸入“javac”和“java version”進(jìn)行驗(yàn)證, 以確定 JDK 和環(huán)境變量正確設(shè)置。 2 2 程序程序設(shè)計(jì)設(shè)計(jì) 2.12.1 概要概要設(shè)計(jì)設(shè)計(jì) 2.1.12.1.1 功能框圖功能框圖 根據(jù)所構(gòu)造好的計(jì)算器的各個(gè)功能,設(shè)計(jì)出計(jì)算器運(yùn)行的功能框圖如圖 2-1 所示。 圖 2-1 計(jì)算器運(yùn)行的功能框圖 設(shè)計(jì)好的程序框圖中,包含有如下模塊:單擊數(shù)字按鈕設(shè)置計(jì)算的運(yùn)算 數(shù)、單擊運(yùn)算符按鈕選擇運(yùn)算符、單擊函數(shù)按鈕計(jì)算相應(yīng)函數(shù)值、單擊等號 顯示計(jì)
17、算結(jié)果、在一個(gè)文本框中顯示當(dāng)前的計(jì)算過程、在一個(gè)文本區(qū)中顯示 以往的計(jì)算過程、單擊保存按鈕可以將文本區(qū)中的全部計(jì)算過程保存到文件、 單擊復(fù)制按鈕可以將文本區(qū)中選中的文本復(fù)制到剪貼板、單擊清除按鈕可以 清除文本區(qū)中的全部內(nèi)容。 各個(gè)功能模塊相互配合、調(diào)用,組成了一個(gè)可以保存計(jì)算過程的計(jì)算器 的基本功能。 保存過程的計(jì)算器 單擊數(shù) 字按鈕 設(shè)置計(jì) 算的運(yùn) 算數(shù) 在一個(gè) 文本框 中顯示 計(jì)算過 程 單擊清 除按鈕 可以清 除文本 區(qū)中的 全部內(nèi) 容 單擊復(fù) 制按鈕 可以將 文本區(qū) 中選中 的文本 復(fù)制到 剪貼板 單擊保 存按鈕 可以將 文本區(qū) 中的全 部計(jì)算 過程保 存到文 件 單擊等 號顯示 計(jì)算
18、結(jié) 果 單擊函 數(shù)按鈕 計(jì)算相 應(yīng)函數(shù) 值 單擊運(yùn) 算符按 鈕選擇 運(yùn)算符 2.1.2.1.2 2 類組合關(guān)系類組合關(guān)系圖圖 根據(jù)程序框圖,設(shè)計(jì)出包含如下類: 1、主類:CalculatorWindow 2、功能類: NumberButton、OperationButton、HandleDigit、HandleDot、HandleOperation 、HandlePOrN、HandleEquality、HandleSin、HandleBack、HandleClear 通過上述 11 個(gè)類之間的組合關(guān)系,設(shè)計(jì)出的類之間的組合關(guān)系圖如圖 2-2 所示。 圖 2-2 類之間的組合關(guān)系圖 計(jì)算器除了上
19、述 11 個(gè) Java 源文件所給出的類外,還需要 Java 系統(tǒng)提 供的一些重要的類,如 Jbutton,JTextField,JTextArea,LinkedList 等。 這些也是構(gòu)成程序框架必不可少的一些類,通過調(diào)用這些類來進(jìn)行計(jì)算器按 鈕、文本區(qū)、文本框等等的構(gòu)建。 以上各類的詳細(xì)說明將會在后文中出現(xiàn),這一步主要完成了程序框架架 構(gòu)的設(shè)計(jì),即模塊化的設(shè)計(jì),為各項(xiàng)功能的實(shí)現(xiàn)打下基礎(chǔ)。 CalculatorWindow LinkedList HandleDigit HandleClear HandleBack HandleSin HandleEquality HandlePOrN Han
20、dleOperation HandleDot OperationButton NumberButton JTexArea JTextField JButton 2.1.2.1.3 3 程序流程圖程序流程圖 根據(jù)之前對各功能模塊與各個(gè)類組合關(guān)系的設(shè)計(jì),設(shè)計(jì)出程序運(yùn)行流程 圖如圖 2-3 所示。 圖 2-3 程序運(yùn)行流程圖 通過分析需求,該計(jì)算器的程序流程如圖中,先各變量初始化,之后根 據(jù)不同按鈕監(jiān)聽返回的內(nèi)容來選擇使用不同功能運(yùn)行,最后獲取到等于按鈕 時(shí)判斷是否輸出結(jié)果,或者清除文本區(qū)內(nèi)容之后初始化變量,結(jié)束整個(gè)循環(huán)。 經(jīng)過該步驟對程序運(yùn)行流程的設(shè)計(jì),整個(gè)程序由立項(xiàng),功能模塊確定再 到功能類關(guān)系
21、組合等,這一系列設(shè)計(jì)共同組成了程序先期的工作方向,以下 開始便是進(jìn)行代碼實(shí)現(xiàn)階段,對各個(gè)設(shè)定好的功能類進(jìn)行代碼編寫,以實(shí)現(xiàn) 整個(gè)保存計(jì)算過程的計(jì)算器的核心功能。 開始 退格 初始化變量 數(shù)字 結(jié)束 刪除輸入的數(shù) 輸出數(shù)字 運(yùn)算符 進(jìn)行計(jì)算 等號 輸出結(jié)果 清除 初始化變量 是 否 否 否 是 是 是 否 否 是 2.22.2 詳細(xì)詳細(xì)設(shè)計(jì)設(shè)計(jì) 2.2.12.2.1 各類的功能各類的功能 1、主類 CalculatorWindow 類負(fù)責(zé)創(chuàng)建計(jì)算器的主窗口,該類包含有 main 方法。 計(jì)算器從該類開始執(zhí)行,其中包含 14 種類型的對象,分別是: NumberButton、OperationBu
22、tton、HandleDigit、HandleDot、HandleOperation 、HandlePOrN、HandleEquality、HandleSin、HandleBack 和 HandleClear 對 象。 CalculatorWindow 類是 javax.swing 包中 JFrame 的一個(gè)子類,并實(shí)現(xiàn) 了 ActionListener 接口。標(biāo)明該類的主要成員變量和方法的 UML 圖如圖 2-4 所示。 圖 2-4 CalculatorWindow 類的 UML 圖 CalculatorWindow 類的 UML 圖中,包含成員變量: numberButton,operat
23、ionButton,小數(shù)點(diǎn)操作,正負(fù)號操作,退格操作,等 號操作,清零操作, sin,saveButton,copyButton,clearButton,resultShow,showComputerProce ss,saceComputerProcess,list,handleDigit,HandleOperation,HandleBack ,HandleClear,handleEquality,handleDot,handlePOrN,HandleSin。包含 JFrameActionListener CalculatorWindow numberButton operationButto
24、n 小數(shù)點(diǎn)操作,正負(fù)號操作,退格操作,等號操作,清零操作,sin,saveButton,co pyButton,clearButton,resultShow,showComputerProcess saveComputerProcess list handleDigit handleOperation handleBack handleClear handleEquality handleDot handlePOrN handleSin actionPeformed():void CalculatorWindow() main():void 方法:actionPeformed(),Calcul
25、atorWindow(),main()。 2、功能類 1)NumberButton 類 該類創(chuàng)建的對象是主類 CalculatorWindow 窗口中的一個(gè)“數(shù)字”按鈕。 NumberButton 類有一個(gè) int 類型的成員 number,標(biāo)明所創(chuàng)建的按鈕所含有 的數(shù)字。該類所創(chuàng)建的 10 個(gè)按鈕被添加到 CalculatorWindow 窗口中。 2)OperationButton 類 該類創(chuàng)建的對象是主類 CalculatorWindow 窗口中的一個(gè)“運(yùn)算符”按 鈕。OperationButton 類有一個(gè) String 類的成員 operateSign,用于標(biāo)明所創(chuàng)建 的按鈕所含有的
26、運(yùn)算符號。該類所創(chuàng)建的 4 個(gè)按鈕被添加到 CalculatorWindow 窗口中。 3)HandleDigit 類 該類創(chuàng)建的對象負(fù)責(zé)處理 ActionEvent 事件。當(dāng)用戶單擊“數(shù)字”按鈕 時(shí),該類所創(chuàng)建的對象負(fù)責(zé)處理和數(shù)字有關(guān)的計(jì)算過程。 4)HandleOperation 類 該類創(chuàng)建的對象負(fù)責(zé)處理 ActionEvent 事件。當(dāng)用戶單擊“運(yùn)算符”按 鈕時(shí),該類所創(chuàng)建的對象負(fù)責(zé)處理和運(yùn)算符有關(guān)的計(jì)算過程。 5)HandleDot 類 該類創(chuàng)建的對象負(fù)責(zé)處理 ActionEvent 事件。當(dāng)用戶單擊“.”按鈕時(shí), 該類所創(chuàng)建的對象負(fù)責(zé)處理小數(shù)點(diǎn)。 6)HandlePOrN 類 該類
27、創(chuàng)建的對象負(fù)責(zé)處理 ActionEvent 事件。當(dāng)用戶單擊“+/-”按鈕時(shí), 該類所創(chuàng)建的對象負(fù)責(zé)處理數(shù)字的正負(fù)轉(zhuǎn)換。 7)HandleEquality 類 該類創(chuàng)建的對象負(fù)責(zé)處理 ActionEvent 事件。當(dāng)用戶單擊“=”按鈕時(shí), 該類所創(chuàng)建的對象計(jì)算有關(guān)數(shù)據(jù)。 8)HandleSin 類 該類創(chuàng)建的對象負(fù)責(zé)處理 ActionEvent 事件。當(dāng)用戶單擊 Sin 按鈕時(shí), 該類所創(chuàng)建的對象負(fù)責(zé)計(jì)算正弦三角函數(shù)的值。 9)HandleBack 類 該類創(chuàng)建的對象負(fù)責(zé)處理 ActionEvent 事件。當(dāng)用戶單擊“退格”按鈕 時(shí),該類所創(chuàng)建的對象負(fù)責(zé)進(jìn)行退格操作。 10)HandleCle
28、ar 類 該類創(chuàng)建的對象負(fù)責(zé)處理 ActionEvent 事件。當(dāng)用戶成功單擊 C 按鈕時(shí), 該類所創(chuàng)建的對象負(fù)責(zé)清除有關(guān)的計(jì)算結(jié)果。 2.32.3 設(shè)計(jì)設(shè)計(jì)小結(jié)小結(jié) 根據(jù)上述概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)得出了一份完整的程序設(shè)計(jì)清單,包括將 要實(shí)現(xiàn)的功能類、類之間的組合關(guān)系和程序的運(yùn)行流程,通過這些清單,可 以有條理,分層次、模塊的進(jìn)行代碼的編寫,讓自己的編程思路更加清晰, 達(dá)成了程序健壯性、易讀性等目標(biāo)。 在程序的設(shè)計(jì)階段,碰到很多棘手的問題,由于第一次進(jìn)行 Java 程序 的編寫,對其提供的基礎(chǔ)類不熟悉,導(dǎo)致在構(gòu)建程序框架的時(shí)候出現(xiàn)諸多問 題,在不斷的查書、請教老師的過程中,終于使所有問題迎刃而解,
29、讓自己 更加透徹的了解了 Java 界面架構(gòu)類的使用方法和技巧,為之后的代碼編寫 打下了堅(jiān)實(shí)基礎(chǔ)。 3 3 代碼編寫代碼編寫 3.13.1 導(dǎo)入包導(dǎo)入包 import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; import java.util.LinkedList; import java.io.*; 3.23.2 各模塊代碼各模塊代碼 3.2.13.2.1 HandleBackHandleBack 類類 HandleBack 類實(shí)現(xiàn)了 ActionListen
30、er 接口,創(chuàng)建的對象 handleBack 是 CalculatorWindow 窗口的成員之一,該類實(shí)現(xiàn)了退格算法。 使用到如下代碼進(jìn)行退格判定和操作: if(num.length()=1) num=num.substring(0,num.length()-1); list.set(0,num); resultShow.setText(num); showComputerProcess.setText(+num); else list.removeLast(); resultShow.setText(0); showComputerProcess.setText(0); 該類中包含了成員變
31、量:list、resultShow、showComputerProcess;包含 方法:構(gòu)造方法 HandleBack(LinkedList,JtextField,JtextField)、 HandleBack 類實(shí)現(xiàn)的 ActionListener 接口中的方法。 3.2.3.2.2 2 HandleHandleClearClear 類類 HandleClear 類實(shí)現(xiàn)了 ActionListener 接口,創(chuàng)建的對象 handleBack 是 CalculatorWindow 窗口的成員之一,該類實(shí)現(xiàn)了清零算法。 使用到如下代碼進(jìn)行清零: resultShow.setText(0); li
32、st.clear(); showComputerProcess.setText(null); 該類中包含了成員變量:list、resultShow、showComputerProcess;包含 方法:構(gòu)造方法 HandleClear(LinkedList,JtextField,JtextField)、 HandleClear 類實(shí)現(xiàn)的 ActionListener 接口中的方法。當(dāng)用戶點(diǎn)擊“清零操作” 按鈕時(shí)就會觸發(fā) ActionEvent 事件,執(zhí)行 actionPerformed(ActionEvent)方法, 將 resultShow 中顯示的數(shù)字設(shè)置為 0,并清除 showComput
33、erProcess 中顯示 的計(jì)算過程。 3.2.3.2.3 3 HandleHandleDotDot 類類 HandleDot 類實(shí)現(xiàn)了 ActionListener 接口,創(chuàng)建的對象 handleDot 是 CalculatorWindow 窗口的成員之一,該類實(shí)現(xiàn)了處理小數(shù)點(diǎn)算法。 使用到如下代碼進(jìn)行小數(shù)點(diǎn)的判定和處理: String dot=e.getActionCommand(); String num=list.getFirst(); String s=null; if(num.indexOf(dot)=-1) s=num.concat(dot); list.set(0,s); e
34、lse s=num; list.set(0,s); resultShow.setText(s); showComputerProcess.setText(+list.get(0); 3.2.3.2.4 4 HandleHandleDigitDigit 類類 HandleDigit 類實(shí)現(xiàn)了 ActionListener 接口,創(chuàng)建的對象 handleDigit 是 CalculatorWindow 窗口的成員之一,該類實(shí)現(xiàn)了獲取數(shù)字的算法。 通過此語句獲得點(diǎn)擊的數(shù)字: NumberButton b=(NumberButton)e.getSource(); 傳遞、顯示點(diǎn)擊的數(shù)字: int num
35、ber=b.getNumber(); list.add(+number); resultShow.setText(+number); showComputerProcess.setText(+list.get(0); 3.2.3.2.5 5 HandleHandleOperationOperation 類類 HandleOperation 類實(shí)現(xiàn)了 ActionListener 接口,創(chuàng)建的對象 handleOperation 是 CalculatorWindow 窗口的成員之一,該類實(shí)現(xiàn)了獲取符號 的算法。 通過此語句獲得點(diǎn)擊的符號: OperationButton b=(Operation
36、Button)e.getSource(); 通過如下代碼進(jìn)行加減乘除的判斷和運(yùn)算: if(運(yùn)算符號.equals(+) result=n1+n2; else if(運(yùn)算符號.equals(-) result=n1-n2; else if(運(yùn)算符號.equals(*) result=n1*n2; else if(運(yùn)算符號.equals(/) result=n1/n2; 該類中包含了成員變量:list、resultShow、showComputerProcess;包含 方法:構(gòu)造方法 HandleOperation(LinkedList,JtextField,JtextField)、 Handle
37、Operation 類實(shí)現(xiàn)的 ActionListener 接口中的方法。當(dāng)用戶點(diǎn)擊運(yùn)算符 按鈕時(shí)就會觸發(fā) ActionEvent 事件,執(zhí)行 actionPerformed(ActionEvent)方法, 負(fù)責(zé)處理 list 鏈表中存儲的運(yùn)算符和必要的計(jì)算。 3.2.3.2.6 6 HandleHandleSinSin 類類 HandleSin 類實(shí)現(xiàn)了 ActionListener 接口,創(chuàng)建的對象 handleSin 是 CalculatorWindow 窗口的成員之一,該類實(shí)現(xiàn)了正弦函數(shù)值算法。 當(dāng) list.size()=1|list.size()=2 時(shí),需要算法: double
38、x=Double.parseDouble(numOne); double result=Math.sin(x); String str=String.valueOf(result); list.set(0,str); resultShow.setText(str); list.removeLast(); /移掉運(yùn)算符號 當(dāng) list.size()=3)時(shí),需要算法: String numTwo=list.getLast(); double x=Double.parseDouble(numTwo); double result=Math.sin(x); String str=String.val
39、ueOf(result); list.set(0,str); resultShow.setText(str); list.removeLast(); /移掉第 2 個(gè)運(yùn)算數(shù) list.removeLast(); /移掉運(yùn)算符號 該類中包含了成員變量:list、resultShow、showComputerProcess;包含 方法:構(gòu)造方法 HandleSin(LinkedList,JtextField,JtextField)、 HandleSin 類實(shí)現(xiàn)的 ActionListener 接口中的方法。當(dāng)用戶點(diǎn)擊“Sin”按鈕 時(shí)就會觸發(fā) ActionEvent 事件,執(zhí)行 actionPer
40、formed(ActionEvent)方法,將 輸入的數(shù)字的正弦函數(shù)值計(jì)算出來。 注:由于主類 CalculatorWindow 中為窗口的創(chuàng)建代碼,負(fù)責(zé)調(diào)用各個(gè) 功能類,實(shí)現(xiàn) main()方法等,所以重在對各模塊代碼的分析,主類的代碼見 附錄。 4 4 測試與調(diào)試測試與調(diào)試 4.14.1 主界面測試主界面測試 運(yùn)行 CalculatorWindow 類后,主界面如圖 4-1 所示。 圖 4-1 主界面圖 圖中,主界面包含:程序名稱“計(jì)算器” ;左側(cè)界面:10 個(gè)數(shù)字按鈕, 運(yùn)算符按鈕,清零、退格按鈕,正負(fù)數(shù)變換按鈕,小數(shù)點(diǎn)按鈕,正弦函數(shù)運(yùn) 算按鈕和等于按鈕;右側(cè)界面:保存、復(fù)制、清除按鈕和一
41、個(gè)文本框。 4.24.2 計(jì)算操作計(jì)算操作 使用計(jì)算器進(jìn)行加、減、乘、除操作和正弦計(jì)算操作,操作后的界面如 圖 4-2 所示。 圖 4-2 計(jì)算操作圖 4.34.3 清零操作清零操作 對文本區(qū)進(jìn)行清零操作,將文本區(qū)重置為 0,清零操作如圖 4-3 所示。 圖 4-3 清零操作圖 4.44.4 保存操作保存操作 將文本框中保存的歷史計(jì)算過程以文本格式“l(fā)sj.txt”進(jìn)行保存,保存 操作如圖 4-4 所示。 圖 4-4 保存操作圖 4.54.5 清除操作清除操作 將所有保存在文本框中的歷史計(jì)算過程清除,進(jìn)行新的計(jì)算任務(wù),清除 操作前如圖 4-5 所示,清除操作成功如圖 4-6 所示。 圖 4-5
42、 清除操作前 圖 4-6 清除操作成功 5 5 軟件發(fā)布軟件發(fā)布 軟件的發(fā)布可以使用 jar.exe 命令制作 JAR 文件來發(fā)布編寫的軟件。 1)首先用文本編輯器,如 Windows 下的“記事本” ,編寫一個(gè)清單文 件: mymoon.mf ManifestVersion: 1.0 MainClass: CalculatorWindow CreatedBy: 1.2(Sun Microsystems Inc.) 將 mymoon.mf 保存到與程序所用的字節(jié)碼文件保存在相同的目錄中。 2)生成 JAR 文件 D:*jar cfm Calculator.jar mymoon.mf *.cla
43、ss 其中,參數(shù) c 表示要生成一個(gè)新的 JAR 文件,f 表示要生成的 JAR 文 件的名字,m 表示清單文件的名字。 現(xiàn)在就可以將 Calculator.jar 復(fù)制到任何一個(gè)安裝了 Java 運(yùn)行環(huán)境的計(jì) 算機(jī)上,用戶雙擊該文件即可運(yùn)行該軟件。 總結(jié)與體會總結(jié)與體會 通過這次實(shí)習(xí)讓我更加深刻的理解了書本上的知識,得到了一個(gè)運(yùn)用 JAVA 語言編寫程序的實(shí)踐機(jī)會,將課本上的知識變?yōu)閷?shí)踐。通過這兩個(gè)周 的實(shí)習(xí)也大大的鍛煉了我分析解決問題的能力,在建立代碼的初期,我覺得 程序框架的建立好像不難,但是越往后做越發(fā)現(xiàn),越做越難,因?yàn)樵谕笞?的過程中,發(fā)現(xiàn)部分類的功能無法正常實(shí)現(xiàn),因此浪費(fèi)了很多的
44、時(shí)間。 令人遺憾的是在這次實(shí)踐中,我所做的保存計(jì)算過程的計(jì)算器并沒有完 成預(yù)期的功能,本來是想著挺簡單的,但是實(shí)踐起來真的很難,再加上時(shí)間 緊迫,所以就只實(shí)現(xiàn)了一些簡單的功能,并沒有加入科學(xué)計(jì)算等功能。 雖然這次實(shí)踐圓滿結(jié)束了,但我仍然不能放松前進(jìn)的腳步,在程序的編 寫過程中,自己對 JAVA 這門面向?qū)ο蟮恼Z言產(chǎn)生了濃厚的興趣。這門獨(dú)特 的語言并不像 C 語言那樣需要為指針地址煩惱,只是巧用搭積木的方法,便 讓一個(gè)帶圖形界面的小程序運(yùn)行起來,很驚嘆于 JAVA 語言的作者的無限的 創(chuàng)造能力,帶給了我們后人很多便捷,也帶來了許許多多優(yōu)秀的程序。 另外,此次課程設(shè)計(jì)讓我更了解熟悉了 Java 中
45、的圖形用戶界面和它的 編程方式。在完成課題的過程中也不斷充實(shí)了自己,學(xué)習(xí)到了很多以前沒有 學(xué)習(xí)到的知識,收獲很大。最大的收獲是在完成過程中培養(yǎng)的解決問題的能 力。在做課程設(shè)計(jì)時(shí)必然會遇到困難,會有不會的東西,重要的不是現(xiàn)在會 不會,而是遇到問題知道如何找到解決的途徑。還使我對所學(xué)知識能夠融會 貫通,又不斷豐富了新知識。Java 計(jì)算器設(shè)計(jì)使得我對所學(xué)的專業(yè)課有了 更為深刻的認(rèn)識,使得知識得到了鞏固和提高。 參考文獻(xiàn)參考文獻(xiàn) 1耿祥義,張躍平.Java 程序設(shè)計(jì)(第二版)M.北京:清華大學(xué)出版社, 2008,23-49. 2耿祥義.Java 2 實(shí)用教程(第三版)M.北京:清華大學(xué)出版社,200
46、6. 3呂鳳翥.Java 語言程序設(shè)計(jì)(第二版)M.北京:清華大學(xué)出版社,2010. 4劉升華.JAVA 從入門到實(shí)踐M.北京:清華大學(xué)出版社,2008. 5陳平.軟件設(shè)計(jì)師教程M.北京:清華大學(xué)出版社,2004. 6繞一梅. Java 語言程序設(shè)計(jì)M.北京:人民郵電大學(xué)出版社,2010. 致致 謝謝 首先要感謝曾經(jīng)幫助過我的老師的悉心指導(dǎo),很多專業(yè)上的疑惑都是在 你幫助下解開的,然后還要感謝那些提供無私幫助的同學(xué)、朋友,沒有你們 我的程序也不會像今天一樣健壯! 我還要感謝那些書籍的編著者,您們就像一雙雙的手在我最困難的時(shí)候 幫助我渡過難關(guān),還有那些在網(wǎng)絡(luò)上留下資料幫助我的好心人,萍水相逢卻
47、不吝賜教讓我很感動(dòng)。 秉承著他們的精神,我會在以后的路途中,也幫助那些同我曾經(jīng)一樣迷 茫的朋友,為他們提供自己所學(xué)的知識,希望他們像我一樣從中得到靈感, 為 JAVA 程序的設(shè)計(jì)與發(fā)展做出更多貢獻(xiàn),在更多領(lǐng)域造福大眾,為國家的 信息科技發(fā)展注入新鮮血液。 附附 錄錄 CalculatorWindow 主類代碼如下: import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; import java.util.LinkedList; import java.io.*;
48、 public class CalculatorWindow extends JFrame implements ActionListener NumberButton numberButton; OperationButton operationButton; JButton 小數(shù)點(diǎn)操作,正負(fù)號操作,退格操作,等號操作,清零操作,sin; JTextField resultShow; /顯示計(jì)算結(jié)果 JTextField showComputerProcess; /顯示當(dāng)前計(jì)算過程 JTextArea saveComputerProcess; /顯示計(jì)算步驟 JButton saveButt
49、on,copyButton,clearButton; LinkedList list; /鏈表用來存放第一個(gè)運(yùn)算數(shù)、運(yùn)算符號和第 二個(gè)運(yùn)算數(shù) HandleDigit handleDigit; /負(fù)責(zé)處理 ActionEvent 事件 HandleOperation handleOperation ; HandleBack handleBack; HandleClear handleClear; HandleEquality handleEquality; HandleDot handleDot; HandlePOrN handlePOrN; HandleSin handleSin; publi
50、c CalculatorWindow() setTitle(計(jì)算器); JPanel panelLeft,panelRight; list=new LinkedList(); resultShow=new JTextField(10); resultShow.setHorizontalAlignment(JTextField.RIGHT); resultShow.setForeground(Color.blue); resultShow.setFont(new Font(TimesRoman,Font.BOLD,16); resultShow.setBorder(new SoftBevelBorder(BevelBorder.LOWERED); resultShow.setEditable(false); resultShow.setBackground(Color.white); showComputer
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年中國建筑科學(xué)研究院有限公司建筑防火研究所招聘備考題庫及答案詳解一套
- 2026年機(jī)器人行業(yè)創(chuàng)新報(bào)告:智能烹飪機(jī)器人應(yīng)用分析報(bào)告
- 2026年博思睿招聘(派遣至海寧市圖書館)備考題庫及一套答案詳解
- 2026年固定收益客需部人力資源部(黨委組織部)招聘備考題庫及答案詳解參考
- 2026年恒豐銀行上海分行社會招聘備考題庫及參考答案詳解
- 2026年中國電建集團(tuán)昆明勘測設(shè)計(jì)研究院有限公司招聘備考題庫帶答案詳解
- 2026年宜賓國企招聘集團(tuán)董事長機(jī)會難得點(diǎn)擊報(bào)名備考題庫完整答案詳解
- 2026春招:歐派家居面試題及答案
- 2026春招:媒介專員試題及答案
- 2026春招:機(jī)器人調(diào)試工程師筆試題及答案
- 假體豐胸培訓(xùn)課件
- GB/T 1040.1-2025塑料拉伸性能的測定第1部分:總則
- 管理學(xué)-李彥斌
- QC成果提高工業(yè)廠房基礎(chǔ)預(yù)埋地腳螺栓的精確度
- (完整word版)醫(yī)學(xué)學(xué)科專業(yè)分類及代碼
- 單極圓柱齒輪減速器說明書
- 北京版二年級數(shù)學(xué)(上冊)期末試題及答案
- 工程勘察設(shè)計(jì)收費(fèi)標(biāo)準(zhǔn)(2002年修訂本)完整版
- 物象內(nèi)涵作用4
- GB/T 26706-2011軟體家具棕纖維彈性床墊
- 鄉(xiāng)土中國-第6篇-《家族》課件
評論
0/150
提交評論