




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1基于JAVA的計算器的設(shè)計與實(shí)現(xiàn)學(xué)院(系):軟件學(xué)院專業(yè): 軟件工程學(xué)生: 學(xué)號:班級:指導(dǎo)教師: 完成日期2016年10月基于JAVA的計算器的設(shè)計與實(shí)現(xiàn)[摘要]該文檔是關(guān)于對Java版計算器的功能進(jìn)行描述和介紹,該程序是要個圖形界面的簡單Java計算器,具有良好的界面使用人員能快捷簡單的進(jìn)行操作。即時準(zhǔn)確的獲得需要的計算結(jié)果,充分降低了數(shù)字計算的難度和節(jié)約了時間,對人們的生活有一定的幫助??梢赃M(jìn)行簡單的四則運(yùn)算(加、減、乘、除等)。界面簡單易操作
,具體程序?qū)崿F(xiàn)了:實(shí)現(xiàn)簡單的加、減、乘、除、運(yùn)算。實(shí)現(xiàn)了除了加、減、乘、除按鈕外其他按鈕功能,如:C表示清零,del表示刪除。實(shí)現(xiàn)了連續(xù)運(yùn)算能力。關(guān)鍵詞:Java語言四則運(yùn)算計算器目錄TOC\o"1-3"\h\u1,緒論 21.1java版計算器的意義與結(jié)構(gòu) 21.1.1java版計算器的意義 21.1.2java版計算器的論文結(jié)構(gòu) 22,開發(fā)平臺簡介相關(guān)技術(shù)簡介 22.1開發(fā)平臺簡介 22.1.11JAVA平臺 22.1.2windows系統(tǒng) 22.1.3eclipse環(huán)境22.2關(guān)鍵技術(shù)簡介 22.2.1JFrame 22.2.2按鈕的創(chuàng)建 22.2.3GUI22.3本章小結(jié) 23,需求分析 33.1可行性分析 33.2需求描述 33.3面向?qū)ο蠓治觯ㄓ美龍D) 33.4功能分析33.5本章小結(jié)34,系統(tǒng)設(shè)計 34.1概要設(shè)計 34.2詳細(xì)設(shè)計 35,系統(tǒng)實(shí)現(xiàn) 36,總結(jié)與展望 47,參考文獻(xiàn) 48,致謝 4第一章:緒論1,java版計算器的意義與結(jié)構(gòu)java版計算器的意義所謂計算器一般指的是電子計算器。計算器是日常生活中十分便攜有效的工具,能夠?qū)崿F(xiàn)加減乘除等簡單的運(yùn)算功能。本論文采用了java編程語言實(shí)現(xiàn)計算機(jī)的功能。該計算器大大降低了數(shù)字計算的難度并且提高了計算準(zhǔn)確度和精確度。使用簡單,適合廣大工作人員和學(xué)生使用。隨著信息時代的步伐,越來越得多的數(shù)字需要我們?nèi)ヌ幚?,然而在我們?nèi)粘I钪杏龅降囊恍┗緮?shù)字運(yùn)算,以往簡單的口算筆算,然而現(xiàn)在不同了,人們對計算機(jī)手機(jī)的依賴越來越高,遇到計算機(jī)問題不愿意用腦去思考,而是交由計算機(jī)或者手機(jī)來完成。為了給自己設(shè)計一個能夠勝任自己學(xué)習(xí)的工作機(jī)會的計算器,決定自己通過所學(xué)的知識來編寫一個簡單的計算機(jī)。(2)論文結(jié)構(gòu)本文共分為8章,各章的主要內(nèi)容介紹如下:第一章:首先介紹課題研究的意義,java版計算器的主要意義以及本論文的組織結(jié)構(gòu)。第二章:主要介紹系統(tǒng)開發(fā)的平臺,主要關(guān)鍵技術(shù)如下:Frame創(chuàng)建,按鈕的創(chuàng)建。第三章:主要介紹本系統(tǒng)的可行性分析,性能分析,用戶功能需求分析,需求分析,面向?qū)ο蠓治?,主要功能分析。第四章:主要介紹系統(tǒng)設(shè)計,概念設(shè)計,包括功能模塊圖,詳細(xì)設(shè)計,時序圖,流程圖以及概述,還有邏輯設(shè)計。第五章:主要介紹系統(tǒng)實(shí)現(xiàn),主要編碼和實(shí)現(xiàn)過程。主要功能界面,界面流程描述,核心代碼。第六章:主要介紹總結(jié)與展望第七章:主要介紹參考文獻(xiàn),在完成代碼的過程中參考的書籍都有哪些;第八章:致謝:感謝老師的指導(dǎo),感謝同學(xué)的指引,感謝同學(xué)們在學(xué)習(xí)過程中提供的素材和幫助。還有在論文以及排版的過程中提供的熱心幫助。本章小結(jié):本章主要介紹了java版計算器的意義,以及本論文結(jié)構(gòu)。:開發(fā)平臺簡介與關(guān)鍵技術(shù)1,開發(fā)平臺簡介(1)Java平臺Java是一個可以在不同操作系統(tǒng)(例如windows,unix等)上運(yùn)行的編程語言,Java平臺是指運(yùn)行在各終端(如pc,服務(wù)器,移動設(shè)備,嵌入式設(shè)備)的系統(tǒng)軟件。PC機(jī)上的Java程序是javaSE上開發(fā)出來的,服務(wù)器端的java程序是javaEE開發(fā)出來的,移動設(shè)備的java程序是用JAVAME開發(fā)出來的。Java語言在網(wǎng)絡(luò)編程方面應(yīng)用得很廣泛,作為一個新的程序設(shè)計語言,它簡單多變,面向?qū)ο?,不依賴操作系統(tǒng)的特點(diǎn),具有很好的移植性和安全性,這些特點(diǎn)給網(wǎng)絡(luò)編程帶來了很多便利。Java的平臺根據(jù)用途來區(qū)分,可以分為三個版本。JavaSE—JavaStandardEdition,這個是Java的標(biāo)準(zhǔn)版,主要用于桌面級的應(yīng)用和數(shù)據(jù)開發(fā)。JavaEE-JavaEnterpriseEdition,這個是Java的企業(yè)版本,提供了企業(yè)級開發(fā)的各種技術(shù),主要用于企業(yè)開發(fā),現(xiàn)在用的最多的也就是這個平臺。JavaME-JavaMicroEdition,這個版本煩人java平臺主要用于嵌入式和移動式的開發(fā),最常用的就是手機(jī)應(yīng)用軟件開發(fā)。Java作為一門優(yōu)秀的編程語言,相對于其他類似的語言具有一定的優(yōu)越性,這是由Java語言的如下特點(diǎn)決定的。Java語言具有簡單,面向?qū)ο?,分布式,安全,可移植性,多態(tài)的特點(diǎn)。Java語言是一種面向?qū)ο蟮恼Z言,通過理解一些重要的概念就能編寫出各種功能的代碼。Java語言主要集中用在類的設(shè)計和接口功能方面,提供了繼承及多態(tài)的機(jī)制,對類中的成員變量和方法可進(jìn)行覆蓋和重寫,實(shí)現(xiàn)了代碼的重復(fù)使用,使代碼編寫簡單。Java語言不支持指針,所有的訪問,必須通過具體的對象變量來實(shí)現(xiàn),這樣既保護(hù)了私有變量,同時也避免了一些錯誤。Java語言編譯產(chǎn)生的文件是字節(jié)碼文件,字節(jié)碼文件和平臺無關(guān)。Java語言支持多線程技術(shù),將多個程序任務(wù)分成幾個并行的子任務(wù)。windows系統(tǒng)1980年,喬布斯介紹了一項新技術(shù),用戶圖形界面,比爾蓋茨也意識到這項技術(shù)的潛在的價值,于是帶領(lǐng)微軟開始了Winows工作。1985年又發(fā)布了第一代窗口式多任務(wù)系統(tǒng),該操作系統(tǒng)的推出,意味著PC機(jī)開始進(jìn)入了圖形界面,大部分操作對象都用相應(yīng)的圖標(biāo)來表示,這種操作界面形象直觀,隨著不斷的改進(jìn),它還增加了幾個系統(tǒng)工具,用于自動檢測硬盤,文件系統(tǒng)和配置信息,可以自動修復(fù)一些一般性的系統(tǒng)錯誤。內(nèi)部還安置了大量的驅(qū)動程序,基本上包括了市面上流行的各種品牌,各種型號硬件的最新驅(qū)動程序,而且硬件檢測能力也有了很大的提高。同時,還提供了文件分配系統(tǒng),可支持2G以上的大分區(qū),而對硬盤,無需重新分區(qū)和格式化,直接可以使用轉(zhuǎn)換器轉(zhuǎn)換。把最新的多媒體技術(shù),網(wǎng)絡(luò)技術(shù)和Internet技術(shù)結(jié)合在了一起,使訪問網(wǎng)絡(luò)更加方便和快捷。技術(shù)是在不斷進(jìn)步的,操作系統(tǒng)也在不斷更新,沒有那個版本的操作系統(tǒng)是永恒的主流,因此,我們在學(xué)習(xí)和使用某個操作系統(tǒng)的過程中把握住它的最基本的方面,并在此基礎(chǔ)上進(jìn)行大膽的嘗試和創(chuàng)新,從而跟上它的發(fā)展步伐。eclipse環(huán)境Eclipse是一個開放源代碼的,基于Java可擴(kuò)展開發(fā)平臺。就其本身而言,它只是一個框架和一組服務(wù),用于通過插件組成構(gòu)建開發(fā)環(huán)境。幸運(yùn)的是,Eclipse附帶了一個標(biāo)準(zhǔn)的插件集,包括Java開發(fā)工具(JavaDevelepmentTools,JDK).Eclipse是一個開放源代碼的軟件項目,專注于為高度集成的工具開發(fā)提供一個全功能的,具有商業(yè)品質(zhì)的工業(yè)平臺。它主要由Eclipse項目,Eclipse工具項目和Eclipse技術(shù)項目三個項目三個項目組成,具體包括四個部分組成EclipsePlatform則是一個開放的可擴(kuò)展IDE,提供了一個通用的開發(fā)平臺。它提供建造塊和構(gòu)造并運(yùn)行集成軟件開發(fā)工具的基礎(chǔ)。EclipsePlatform允許工具建造者獨(dú)立開發(fā)與其他工具無縫集成的工具從而無需分辨一個工具功能在哪里結(jié)束,而另外一個工具功能在哪里開始。軟件開發(fā)包是Eclipse是EclipsePlatform,JDT和PDE所生產(chǎn)的組件合并,它們可以一次下載。這些部分在一起提供了一個具有豐富特性的開發(fā)環(huán)境,允許開發(fā)者有效的建造可以無縫集成到EclipsePlatform中的工具。EclipseSDK由ECLIPSE項目生產(chǎn)的工具和來自其它開放源代碼的第三方軟件組合而成。Eclipse項目的生產(chǎn)的軟件以GPL發(fā)布,第三方組件各自自身的許可協(xié)議。2,關(guān)鍵技術(shù)簡介JFrameJava的GUI程序的基本思路是以JFrame為基礎(chǔ)的,它是屏幕上window的對象,能夠最小化和最大化,關(guān)閉。它的基本板塊是swing,swing的三個基本構(gòu)造塊是標(biāo)簽,按鈕,文本字段。并希望用戶知道如何處理它們。JFrame類就是解決這個問題它是一個容器,允許程序員把其他組件添加到它里面,把它們組織起來,并把它們呈現(xiàn)給用戶。JFrame實(shí)際上僅僅讓程序員把組件放入其中并呈現(xiàn)給用戶。比起它表面的上的簡單性,它實(shí)際上是Swing包中最復(fù)雜的組件。為了最大程度地簡化組件,在獨(dú)立于操作系統(tǒng)的Swing組件與實(shí)際運(yùn)行這些組件系統(tǒng)之間,JFrame起著橋梁作用。JFrame在操作系統(tǒng)中是以窗口的形式注冊的,這樣就可以得到許多的窗口特性。顯示文件在窗體上的類也擴(kuò)展了JFrame,讀取文件的類也擴(kuò)展了JFrame;按鈕的創(chuàng)建:含義:對話框中的一種圖形元素。當(dāng)激活它時,能執(zhí)行指定功能。用戶可以采用以下方法來激活按鈕:用鼠標(biāo)在其上單擊,或者當(dāng)按鈕獲得聚焦時按下enter鍵。在button元素內(nèi)部,您可以放置內(nèi)容,比如文本或圖像。使用:創(chuàng)建按鈕在窗體上,用來窗體跳轉(zhuǎn)的連接。點(diǎn)擊按鈕來實(shí)現(xiàn)跳轉(zhuǎn)。關(guān)鍵字:setBounds表示按鈕的大小位置setText表示按鈕上顯示的內(nèi)容Buttonb=newButton()用來創(chuàng)建對象。initGUIGUI的全稱為GraphicalUserInterface,簡稱GUI,又稱圖形用戶接口,是指采用圖形方式顯示的計算機(jī)操作用戶界面。圖形用戶界面是一種人與計算機(jī)通信的界面顯示格式,允許用戶使用鼠標(biāo)等輸入設(shè)備操縱屏幕上的圖標(biāo)或者菜單選項,以命令,調(diào)用文件,啟動程序或執(zhí)行其他一些日常任務(wù)。與通過鍵盤輸入文本或字符命令來完成例行任務(wù)的字符界面相比,圖形界面有許多有優(yōu)點(diǎn)。圖形界面由窗口,下拉菜單,對話框以及其相應(yīng)的控制機(jī)制構(gòu)成,在各種樣式應(yīng)用程序中都是標(biāo)準(zhǔn)化的,既相同的操作總是以同樣的方式來完成,在圖形用戶界面,用戶看到和操作的都是圖形對象。GUI即人機(jī)交互圖形化用戶界面設(shè)計。GUI的廣泛應(yīng)用是當(dāng)今計算機(jī)發(fā)展的重大成就之一,它極大地方便了非專業(yè)用戶的使用。人們從此不再需要死記硬背大量的命令,取而代之的是可以通過窗口,菜單,按鍵等方式來方便地進(jìn)行操作。而嵌入式GUI具有下面幾個方面的基本要求:輕型,占用資源少,高性能,高可靠性,便于移植,可配置等。3,本章小結(jié)本章主要講述本課程設(shè)計用到所用到的關(guān)鍵技術(shù),以及關(guān)鍵的知識點(diǎn)。本系統(tǒng)是在Windows系統(tǒng)Java平臺下eclipse環(huán)境下完成的,所以窗體的創(chuàng)建,按鈕的創(chuàng)建這都是Java典型的程序開發(fā)。:需求分析1,可行性分析:(1)實(shí)用性分析在我們?nèi)粘I钪?,計算開支收入時,大額數(shù)字或者是多倍小數(shù)的計算都需要計算器的幫助,而在學(xué)習(xí)一些科目是,也常常要處理數(shù)字。雖然現(xiàn)在的計算器價格比較低廉,但是功能過于簡單計算器不能滿足個人需求,多功能的價格比較貴,很多功能根本用不到。所以我們想用自己所學(xué)知識設(shè)計開發(fā)一個屬于自己的簡單計算器來完成學(xué)習(xí)生活的需求。(2)經(jīng)濟(jì)可行性本課程設(shè)計的開發(fā)過程中,不需要其他額外的經(jīng)濟(jì)成本,所以經(jīng)濟(jì)是具有良好的可行性的。2,需求描述(1)編寫目的a:復(fù)習(xí)鞏固java語言的基礎(chǔ)知識,進(jìn)一步加深對java語言的理解和掌控。通過本課程設(shè)計使我們能夠全面的掌握面向?qū)ο笤O(shè)計的有關(guān)概念和開發(fā)方法,以便能較全面的理解掌握和綜合運(yùn)用所學(xué)的知識,提高自身的編程能力。設(shè)計uige計算器的界面,定義計算器所需的按鈕并賦予給其他按鈕名稱,使得使用計算器時簡單明了,清晰可見,操作輕松。b:課程設(shè)計為大家提供了一個既動手又動腦,獨(dú)立實(shí)踐的機(jī)會,將課本上的理論知識和實(shí)際有機(jī)結(jié)合起來,鍛煉我們的分析解決實(shí)際問題的能力。提高魔門適應(yīng)實(shí)際,實(shí)際編程的能力。給各個按鈕進(jìn)行算法,利用鼠標(biāo)點(diǎn)擊事件,當(dāng)鼠標(biāo)點(diǎn)擊某個按鈕時就開始執(zhí)行那個按鈕所定義的算法,生成算法并顯示。c:培養(yǎng)我們在項目開發(fā)中創(chuàng)新意思及能力,通過親身實(shí)踐,利用所學(xué)編寫簡單的面向?qū)ο蟪绦?,提高對面向?qū)ο蠹癹ava語言的理解。功能模塊設(shè)計a:加法兩個數(shù)據(jù)進(jìn)行加法操作,可以為小數(shù)b:減法兩個數(shù)據(jù)進(jìn)行減法操作c:乘法兩個數(shù)相乘操作d:除法兩個數(shù)相除操作e:開平方兩個非負(fù)數(shù)進(jìn)行開方運(yùn)算,可以是小數(shù)3,面向?qū)ο蠓治觯?)含義:面向?qū)ο蠓治鲆环N新的系統(tǒng)分析方法。它采用的是面向?qū)ο蟮娘L(fēng)格進(jìn)行系統(tǒng)分析和需求定義的重要方法。面向?qū)ο蠓治龅年P(guān)鍵在于理解問題控件并將其模型化。面向?qū)ο蠓治霾捎萌藗冋J(rèn)識客觀事物和理解現(xiàn)實(shí)世界過程中常用的基本法則:a:認(rèn)識對象以及其屬性;b:認(rèn)識對象的整體及其組成部分;c:對象的形成及類的區(qū)分;d:對問題空間進(jìn)行理解并抽象成模型;面向?qū)ο蠓治鲇形鍌€階段:標(biāo)識對象,標(biāo)識結(jié)構(gòu),標(biāo)識主題,定義屬性,定義服務(wù),即分五個層次建立面向?qū)ο蠓治龅哪P?。面向?qū)ο蠓治龅膬?yōu)點(diǎn)是使功能分析與數(shù)據(jù)分析統(tǒng)一的概念和方法,克服了結(jié)構(gòu)化分析中兩者之間的不一致性和協(xié)調(diào)性。:系統(tǒng)功能圖:加法運(yùn)算開方加法運(yùn)算開方減法預(yù)算減法預(yù)算計算器計算器乘法運(yùn)算乘法運(yùn)算除法運(yùn)算除法運(yùn)算相反數(shù)相反數(shù)圖3.1(3)用例圖:計算器輸入數(shù)據(jù)輸入數(shù)據(jù)存儲數(shù)據(jù)存儲數(shù)據(jù)計算計算用戶顯示結(jié)果顯示結(jié)果圖3.25,本章小結(jié):本章主要介紹了系統(tǒng)的可行性分析以及各種需求分析??尚行苑治鲈诘谝徽乱灿兴w現(xiàn),本系統(tǒng)具有良好的發(fā)展前景,并且技術(shù)也比較常用,成熟,經(jīng)濟(jì)可行性良好,數(shù)據(jù)可行性也良好。Java環(huán)境對開發(fā)程序?qū)π阅艿男枨筝^高。第四章系統(tǒng)設(shè)計1,概要設(shè)計(1)含義:概要設(shè)計是一個設(shè)計師根據(jù)用戶交互過程和用戶需求來形成交互框架的過程,其結(jié)果往往以反映交互控件布置,界面元素分組以及界面整體版式的頁面框架圖的形式來呈現(xiàn)。這是一個在用戶研究和設(shè)計之間架起的橋梁,使用戶研究和設(shè)計無縫結(jié)合,將用戶目標(biāo)與需求轉(zhuǎn)換成具體界面設(shè)計解決方案的重要階段。概要設(shè)計的主要任務(wù)是把需求分析得到的系統(tǒng)擴(kuò)展用例圖轉(zhuǎn)換成軟件結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)。設(shè)計軟件結(jié)構(gòu)的具體任務(wù)是:將一個復(fù)雜系統(tǒng)按功能進(jìn)行模塊劃分,建立模塊的層次結(jié)構(gòu)及調(diào)用關(guān)系,確定模塊間的接口及人機(jī)界面等。數(shù)據(jù)結(jié)構(gòu)設(shè)計包括數(shù)據(jù)特征的描述,確定數(shù)據(jù)的結(jié)構(gòu)特性,以及數(shù)據(jù)庫的設(shè)計。顯然,概要設(shè)計建立的是目標(biāo)系統(tǒng)的邏輯模型。模塊圖計算器計算器類的繼承創(chuàng)建按鈕創(chuàng)建窗體類的繼承創(chuàng)建按鈕創(chuàng)建窗體圖圖4.1概述:標(biāo)準(zhǔn)計算器的界面采用“圖形界面程序(GUI)”。GUI為用戶和應(yīng)用程序之間的交互提供了直觀方便的交流方式。用戶使用鼠標(biāo)鍵盤操作圖像界面上的按鈕菜單等單位元素向計算機(jī)系統(tǒng)發(fā)送命令,系統(tǒng)運(yùn)行的結(jié)果以圖形的方式顯示給用戶。2,詳細(xì)設(shè)計(時序圖)(1)時序圖如果所示結(jié)果顯示界面按鈕界面結(jié)果顯示界面按鈕界面用戶 1,開始2,點(diǎn)擊按鈕3,接受到數(shù)據(jù) 4,獲取信息,將要顯示界面 5,顯示 6,用戶查看結(jié)果圖4.2(2)概述:a:用圖形界面實(shí)現(xiàn)界面;b:通過設(shè)置布局,控件等來豐富界面;c:按鈕鍵接收數(shù)據(jù),處理后顯示結(jié)果;:系統(tǒng)實(shí)現(xiàn)1:主要功能界面圖5.12:界面功能描述(1)加法運(yùn)算本計算器可以實(shí)現(xiàn)多個運(yùn)算數(shù)相加,例如:1+2+3運(yùn)算結(jié)果為6(2)減法運(yùn)算本計算器可以實(shí)現(xiàn)多個運(yùn)算數(shù)相減,例如:4-3-2運(yùn)算結(jié)果為-1(3)乘法運(yùn)算本計算器可以實(shí)現(xiàn)多個運(yùn)算數(shù)相乘,例如:2*3*4運(yùn)算結(jié)果為24(4)除法運(yùn)算本計算器可以實(shí)現(xiàn)多個運(yùn)算數(shù)相除(除數(shù)不為0)例如:15/5/3運(yùn)算結(jié)果為1,當(dāng)除數(shù)為0時,計算器無法運(yùn)算顯示結(jié)果為0(5)求相反數(shù)本計算器可以求任意一個數(shù)的相反數(shù),例如:1的相反數(shù)所求結(jié)果為-1(6)開方運(yùn)算本計算器可以對非負(fù)數(shù)進(jìn)行開方運(yùn)算,例如:9開方運(yùn)算結(jié)果為33,核心代碼:(1)窗口和按鈕面板publicCalculator(){//主面板panelSuper=newJPanel();panelSuper.setLayout(null);//設(shè)置窗口位置doublewidth=Toolkit.getDefaultToolkit().getScreenSize().width;doubleheight=Toolkit.getDefaultToolkit().getScreenSize().height;this.setBounds((int)(width-WIN_W)/2,(int)(height-WIN_H)/2,WIN_W,WIN_H);//窗口配置this.setTitle("java版計算器");this.validate();this.setResizable(false);this.setVisible(true);this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);//添加計算器按鈕面板myPanel=newMyPanel();this.add(myPanel,BorderLayout.CENTER);}(2)計算器顯示屏jTextField=newJTextField(25);jTextField.setHorizontalAlignment(JTextField.RIGHT);jTextField.setEditable(false);jTextField.setBackground(newColor(255,255,255));jTextField.setText("0");this.add(jTextField);(3)配置按鈕大小button1.setPreferredSize(newDimension(67,40));button2.setPreferredSize(newDimension(67,40));button3.setPreferredSize(newDimension(67,40));button4.setPreferredSize(newDimension(67,40));button5.setPreferredSize(newDimension(67,40));button6.setPreferredSize(newDimension(67,40));button7.setPreferredSize(newDimension(67,40));button8.setPreferredSize(newDimension(67,40));button9.setPreferredSize(newDimension(67,40));button0.setPreferredSize(newDimension(67,40));buttonJia.setPreferredSize(newDimension(67,40));buttonJian.setPreferredSize(newDimension(67,40));buttonCheng.setPreferredSize(newDimension(67,40));buttonChu.setPreferredSize(newDimension(67,40));buttonDeng.setPreferredSize(newDimension(67,40));buttonDian.setPreferredSize(newDimension(67,40));buttonDel.setPreferredSize(newDimension(67,40));buttonC.setPreferredSize(newDimension(67,40));buttonZF.setPreferredSize(newDimension(67,40));buttonGH.setPreferredSize(newDimension(67,40));(4)計算器初始化publicvoidinit(){d1=newBigDecimal("0");d1=newBigDecimal("0");key="=";oper='=';jTextField.setText("0");irst=true;//用于標(biāo)記是否進(jìn)行連續(xù)操作(5)計算publicBigDecimaloperate(BigDecimala1,charc,BigDecimala2){MathContextmc=newMathContext(10,RoundingMode.HALF_DOWN);switch(c){case'+':returna1.add(a2);case'-':returna1.subtract(a2);case'*':returna1.multiply(a2);case'/':if(pareTo(newBigDecimal("0"))==0){init();returnnewBigDecimal("0");}returna1.divide(a2,mc);default:returna2;:總結(jié)與展望在設(shè)計程序過程中,老師和同學(xué)給了我很多幫助和支持,老師認(rèn)真負(fù)責(zé)的工作態(tài)度和嚴(yán)謹(jǐn)?shù)闹螌W(xué)風(fēng)格讓我深受啟發(fā)。和同學(xué)們之間的討論讓我受益匪淺。當(dāng)然,我還需要不斷學(xué)習(xí),因?yàn)樵谀壳翱磥?,我所設(shè)計的計算器還存在很多不足,今后還需不斷努力完善自己,用知識武裝自己,只有使用社會發(fā)展的需求適應(yīng)時代發(fā)展的需求,才能在競爭日益激烈的社會中立足。所以,在今后的學(xué)習(xí)中,我會在今后的學(xué)習(xí)中嚴(yán)格要求自己,希望在老師的幫助下在,自己的努力下,在生活中找到屬于自己的位置,取得更大的進(jìn)步。:參考文獻(xiàn)[1]馬世霞,《java程序設(shè)計》,機(jī)械工業(yè)出版社.2010.1[2]楊武,劉貞《java編程及應(yīng)用》,北京:高等教育出版社.2004[3]丁振凡《java語言使用教程》,北京郵電大學(xué)出版社.2006.9:致謝在此我要感謝我的老師在課程設(shè)計上給予我們的指導(dǎo)和給予的幫助,這是我們能順利完成這次課程設(shè)計的主要原因,更重要的是老師在課堂上精彩的講解,讓我們在寫課程設(shè)計時更加完善。在此期間,我不僅學(xué)到了許多新知識,而且也開闊了視野,提高了自己的設(shè)計能力。其次,我要感謝幫助過我的同學(xué),他們?yōu)槲医鉀Q了很多不太明白的地方,還有一些素材的提供。最后,再次感謝我的老師和同學(xué),誠心說一句:謝謝!附源代碼:importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.*;importjava.awt.*;importjava.math.BigDecimal;importjava.math.MathContext;importjava.math.RoundingMode;importjava.awt.Color;/***java版計算器*/publicclassCalculatorextendsJFrame{finalintWIN_W=295,WIN_H=292;JPanelmyPanel,panelSuper;publicCalculator(){//主面板panelSuper=newJPanel();panelSuper.setLayout(null);//設(shè)置窗口位置doublewidth=Toolkit.getDefaultToolkit().getScreenSize().width;doubleheight=Toolkit.getDefaultToolkit().getScreenSize().height;this.setBounds((int)(width-WIN_W)/2,(int)(height-WIN_H)/2,WIN_W,WIN_H);//窗口配置this.setTitle("java版計算器");this.validate();this.setResizable(false);this.setVisible(true);this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);//添加計算器按鈕面板myPanel=newMyPanel();this.add(myPanel,BorderLayout.CENTER);}publicstaticvoidmain(String[]args){newCalculator();}/***計算器按鈕面板類*/classMyPanelextendsJPanelimplementsActionListener{JButtonbutton1,button2,button3,button4,button5,button6,button7,button8,button9,button0,buttonJia,buttonJian,buttonCheng,buttonChu,buttonDeng,buttonDian,buttonC,buttonDel,buttonZF,buttonGH;JTextFieldjTextField;//計算器顯示屏charoper;//操作符Stringkey,allKey="1234567890.±del",jjccKey="+-*/";BigDecimald1,d2;booleanfirst;publicMyPanel(){//設(shè)置布局this.setLayout(newFlowLayout(FlowLayout.LEFT,4,5));//計算器顯示屏jTextField=newJTextField(25);jTextField.setHorizontalAlignment(JTextField.RIGHT);jTextField.setEditable(false);jTextField.setBackground(newColor(255,255,255));jTextField.setText("0");this.add(jTextField);//計算器按鈕button1=newJButton("1");button2=newJButton("2");button3=newJButton("3");button4=newJButton("4");button5=newJButton("5");button6=newJButton("6");button7=newJButton("7");button8=newJButton("8");button9=newJButton("9");button0=newJButton("0");buttonJia=newJButton("+");buttonJian=newJButton("-");buttonCheng=newJButton("*");buttonChu=newJButton("/");buttonDeng=newJButton("=");buttonDian=newJButton(".");buttonDel=newJButton("del");buttonC=newJButton("c");buttonZF=newJButton("±");buttonGH=newJButton("√");button1.setPreferredSize(newDimension(67,40));button2.setPreferredSize(newDimension(67,40));button3.setPreferredSize(newDimension(67,40));button4.setPreferredSize(newDimension(67,40));button5.setPreferredSize(newDimension(67,40));button6.setPreferredSize(newDimension(67,40));button7.setPreferredSize(newDimension(67,40));button8.setPreferredSize(newDimension(67,40));button9.setPreferredSize(newDimension(67,40));button0.setPreferredSize(newDimension(67,40));buttonJia.setPreferredSize(newDimension(67,40));buttonJian.setPreferredSize(newDimension(67,40));buttonCheng.setPreferredSize(newDimension(67,40));buttonChu.setPreferredSize(newDimension(67,40));buttonDeng.setPreferredSize(newDimension(67,40));buttonDian.setPreferredSize(newDimension(67,40));buttonDel.setPreferredSize(newDimension(67,40));buttonC.setPreferredSize(newDimension(67,40));buttonZF.setPreferredSize(newDimension(67,40));buttonGH.setPreferredSize(newDimension(67,40));this.add(buttonDel);this.add(buttonC);this.add(buttonZF);this.add(buttonGH);this.add(button1);this.add(button2);this.add(button3);this.add(buttonJia);this.add(button4);this.add(button5);this.add(button6);this.add(buttonJian);this.add(button7);this.add(button8);this.add(button9);this.add(buttonCheng);this.add(button0);this.add(buttonDian);this.add(buttonDeng);this.add(buttonChu);buttonDel.addActionListener(this);buttonC.addActionListener(this);buttonZF.addActionListener(this);buttonGH.addActionListener(this);button1.addActionListener(this);button2.addActionListener(this);button3.addActionListener(this);button4.addActionListener(this);button5.addActionListener(this);button6.addActionListener(this);button7.addActionListener(this);button8.addActionListener(this);button9.addActionListener(this);button0.addActionListener(this);buttonJia.addActionListener(this);buttonJian.addActionListener(this);buttonCheng.addActionListener(this);buttonChu.addActionListener(this);buttonDeng.addActionListener(this);buttonDian.addActionListener(this);//計算器初始化init();}/***計算器初始化*/publicvoidinit(){d1=newBigDecimal("0");d1=newBigDecimal("0");key="=";oper='=';jTextField.setText("0");first=true;//用于標(biāo)記是否進(jìn)行連續(xù)操作(例如按鍵順序?yàn)椤?*9====”,第一次等于first由true變?yōu)閒alse,如果!first,按等號相當(dāng)于用上一次的結(jié)果與第二個操作數(shù)相乘)}/***按鈕監(jiān)聽*/publicvoidactionPerformed(ActionEvente){JButtonb=(JButton)e.getSource();if(b==buttonDian){//按下.jTextField.setText(jTextField.getText()+".");if(first){d2=d1=getNum();}else{d2=getNum();}}elseif(b==buttonZF){//按下±BigDecimald=getNum();d=newBigDecimal("0").subtract(d);setFormatNum(d);if(first){d2=d1=getNum();}else{d2=getNum();}}elseif(b==buttonDel){//按下delif(jTextField.getText().length()==1||jTextField.getText().length()==2&&jTextField.getText().startsWith("-")){jTextField.setText("0");}else{Strings=jTextField.getText();s=s.substring(0,s.length()-1);if(s.endsWith("E+")||s.endsWith("E-"))s=s.substring(0,s.length()-2);jTextField.setText(s);if(first){d2=d1=getNum();}else{d2=getNum();}}}elseif(b==buttonC){//按下cinit();}elseif(b==buttonJia){//按下+BigDecimals;if(!first&&allKey.indexOf(key)>=0){if(oper=='-'||oper=='/'){s=operate(d1,oper,d2);}else{s=operate(d2,oper,d1);}setFormatNum(s);}//如果不是第一次,且上一次操作是對數(shù)字進(jìn)行操作else{first=false;}d2=d1=getNum();//System.out.print("111我執(zhí)行啦\n");oper='+';}elseif(b==buttonJian){//按下-BigDecimals;if(!first&&allKey.indexOf(key)>=0){s=operate(d1,oper,d2);setFormatNum(s);}//如果不是第一次,且上一次操作是對數(shù)字進(jìn)行操作else{first=false;}d2=d1=getNum();oper='-';}elseif(b==buttonCheng){//按下*BigDecimals;if(!first&&allKey.indexOf(key)>=0){if(oper=='-'||oper=='/'){s=operate(d1,oper,d2);}else{s=operate(d2,oper,d1);}setFormatNum(s);}//如果不是第一次,且上一次操作是對數(shù)字進(jìn)行操作else{first=false;}d2=d1=getNum();oper='*';}elseif(b==buttonChu){//按下/BigDecimals;if(!first&&allKey.indexOf(key)>=0){s=operate(d1,oper,d2);setFormatNum(s);}//如果不是第一次,且上一次操作是對數(shù)字進(jìn)行操作else{first=false;}d2=d1=getNum();oper='/';}elseif(b==buttonGH){//按下平方根if(jTextField.getText().startsWith("-")){init();return;}BigDecimald=getNum();MathContextmc=newMathContext(10,RoundingMode.HALF_DOWN);d=newBigDecimal(Math.sqrt(d.doubleValue()),mc);setFormatNum(d);if(first){d2=d1=getNum();}else{d2=getNum();}}elseif(b==buttonDeng){//按下=BigDecimals=null;d2=getNum();if(!key.equals("=")){s=operate(d1,oper,d2);}else{s=operate(d2,oper,d1);}if(oper!='='&&!key.equals("=")){//上一次操作為+-*/d1=getNum();}setFormatNum(s);first=true;}else{//按下其他按鈕if(this.jTextField.getText().equals("0")||allKey.indexOf(key)==-1){this.jTextField.setText(b.getText());}else{this.jTextField.setText(jTextField.getText()+b.getText());}if(first){d2=d1=getNum();}else{d2=getNum();}//d2作被加數(shù):d2+d1}key=b.getText();}/***獲取操作數(shù)**@return操作數(shù)*/publicBigDecimalgetNum(){BigDecimald=newBigDecimal(jTextField.getText());returnd;}publicvoidsetFormatNum(BigDecimaldd){MathContextmc=newMathContext(18,RoundingMode.HALF_DOWN);BigDecimald=newBigDecimal(dd.toString(),mc);Stringnum=d.toString();if(num.endsWith(".0"))num=num.replaceAll("\\.0","");this.jTextField.setText(num);}/***計算**@parama1*操作數(shù)1*@paramc*操作符*@parama2*操作數(shù)2*@return*/publicBigDecimaloperate(BigDecimala1,charc,BigDecimala2){MathContextmc=newMathContext(10,RoundingMode.HALF_DOWN);switch(c){case'+':returna1.add(a2);case'-':returna1.subtract(a2);case'*':returna1.multiply(a2);case'/':if(pareTo(newBigDecimal("0"))==0){init();returnnewBigDecimal("0");}returna1.divide(a2,mc);default:returna2;}}}}基于C8051F單片機(jī)直流電動機(jī)反饋控制系統(tǒng)的設(shè)計與研究基于單片機(jī)的嵌入式Web服務(wù)器的研究MOTOROLA單片機(jī)MC68HC(8)05PV8/A內(nèi)嵌EEPROM的工藝和制程方法及對良率的影響研究基于模糊控制的電阻釬焊單片機(jī)溫度控制系統(tǒng)的研制基于MCS-51系列單片機(jī)的通用控制模塊的研究基于單片機(jī)實(shí)現(xiàn)的供暖系統(tǒng)最佳啟停自校正(STR)調(diào)節(jié)器單片機(jī)控制的二級倒立擺系統(tǒng)的研究基于增強(qiáng)型51系列單片機(jī)的TCP/IP協(xié)議棧的實(shí)現(xiàn)基于單片機(jī)的蓄電池自動監(jiān)測系統(tǒng)基于32位嵌入式單片機(jī)系統(tǒng)的圖像采集與處理技術(shù)的研究基于單片機(jī)的作物營養(yǎng)診斷專家系統(tǒng)的研究基于單片機(jī)的交流伺服電機(jī)運(yùn)動控制系統(tǒng)研究與開發(fā)基于單片機(jī)的泵管內(nèi)壁硬度測試儀的研制基于單片機(jī)的自動找平控制系統(tǒng)研究基于C8051F040單片機(jī)的嵌入式系統(tǒng)開發(fā)基于單片機(jī)的液壓動力系統(tǒng)狀態(tài)監(jiān)測儀開發(fā)模糊Smith智能控制方法的研究及其單片機(jī)實(shí)現(xiàn)一種基于單片
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)村門臉出售合同標(biāo)準(zhǔn)文本
- 加工花茶售賣合同范例
- 修魚塘合同范例
- 會展策劃施工合同標(biāo)準(zhǔn)文本
- 以車抵債合同范例
- 買賣教室課桌合同標(biāo)準(zhǔn)文本
- 基于問題的學(xué)習(xí)方式與學(xué)生動力提升
- 2025安康紫陽縣農(nóng)村供水管理有限公司招聘(21人)筆試參考題庫附帶答案詳解
- 跨區(qū)域合作機(jī)制下的人才教育與培養(yǎng)模式
- 信息安全與社會責(zé)任擔(dān)當(dāng)
- 《Android手機(jī)軟件開發(fā)》說課課件
- 《建筑裝飾構(gòu)造》全套教案(完整版)
- 新版病案首頁
- 國家工作人員因私出國(境)審批表
- 魯班尺和丁蘭尺速查表
- WES溢流堰面曲線計算
- 外觀GRR考核表
- 不合格品控制流程圖xls
- 奧特林豪斯離合器 簡版樣本中文_圖文
- 元素周期表中英文讀音(共3頁)
- 幕墻淋水試驗(yàn)方案
評論
0/150
提交評論