




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、武漢工商學院信息工程學院項目名稱: 計算器 學生姓名: 董瑩 學 號: 14406005 班 級: 物聯(lián)1班 指導教師: 李鳳麟 2015年12月29日摘 要本計算器是由java語言所編程設計的標準計算器,該計算器能夠?qū)崿F(xiàn)計算器最基本的運算功能,可以進行十進制下簡單的四則運算(加法、減法、乘法、除法)、求余,且有小數(shù)點、正負號、求倒數(shù)、退格和清零功能。利用java gui圖形界面首先開始設計一個計算器的界面,定義計算器所需要的按鈕并賦給其按鈕名稱,在設計完計算器的界面后還需要建立事件監(jiān)聽函數(shù),還有獲取事件源標簽函數(shù),等一系列的函數(shù)來實現(xiàn)計算其內(nèi)部功能的實現(xiàn)。使得使用計算器時簡單明了,清晰可見,
2、操作輕松。該課程設計涉及的知識范圍廣泛,需要查閱大量的資料。通過本課程設計能夠使學生本身較全面的掌握面向?qū)ο蟪绦蛟O計的有關(guān)概念和開發(fā)方法,通過對已學知識的運用以及拓展,是學生能較全面地理解、掌握和綜合運用所學的知識,提高自身的編程能力。關(guān)鍵字:java語言,計算器,算法目 錄1 需求分析12 系統(tǒng)分析23.1.1 界面設計33.1.2 初步設計思路33.2 詳細設計43.2.1 程序流程圖43.2.2 程序主要代碼及說明54.1 界面的實現(xiàn)84.2 基本運算功能的實現(xiàn)851 加法運算952 減法運算953 倒數(shù)運算954 取余數(shù)運算1055 開方運算1056 負數(shù)運算115.7 退格運算115
3、.8 清零運算12總結(jié)與心得13參考文獻14語言類綜合項目實訓報告1 需求分析隨著人類生活水平的提高,人類的需求也在不斷的增加,數(shù)據(jù)出現(xiàn)在生活中的每一個角落,因此計算機便成了必不可少的生活工具。隨著數(shù)據(jù)量的不斷增加,古老的計算工具已經(jīng)被人類淘汰,只有計算器才能代替計算這一項艱巨的任務。計算器的優(yōu)點在于運算速度快,攜帶更加便捷,價格便宜,操作更加方便。在這個生活節(jié)奏極其快速的時代,沒有計算器將會帶來意想不到的麻煩。因此計算器的誕生其實是一種必然的事件。計算器功能主要包括:加、減、乘、除、取余、小數(shù)點、正負號、求倒數(shù)、開根號,退格和清零功能。其中基本運算功能分別通過handlenumber和 ha
4、ndleoperator函數(shù)來實現(xiàn)。例如加法運算的實現(xiàn),在handleoperator函數(shù)下用if語句進行判斷字符串operator與字符串“+”是否相等,如果相等,函數(shù)handlenumber和 handleoperator共同作用下實現(xiàn)加法運算功能。同樣計算器的其他運算減法,乘法,除法等都是需要進行operator與字符串“-”、“*”、“/”等字符串的比較來實現(xiàn)相應的功能。該系統(tǒng)功能的模塊圖如圖1.1所示。計算器減法運算加法運算乘法運算除法運算倒數(shù)運算求余數(shù)運算開根運算求負數(shù)系統(tǒng)功能模塊圖1.12 系統(tǒng)分析整個計算器的程序中運用窗體容器jframe以及面板容器jpanel,引用接口(事件
5、偵聽器)actionlistener。程序布局選用了網(wǎng)格布局(gridlayout),邊界布局(borderlayout),基本控件包括文本框控件(jtextfield)。根據(jù)程序設計要求要實現(xiàn)各種功能,如加、減、乘、除,以及求余、小數(shù)點、正負號、求倒數(shù)、退格和清零功能。那么一開始就需要創(chuàng)建一個計算器界面,其次還要選用網(wǎng)格布局,便于各類按鈕之間的分布。之后,計算器上的功能需要以按鈕的形式呈現(xiàn)在窗口內(nèi),需要定義jbutton類,并實例化對象。創(chuàng)建構(gòu)造函數(shù),初始化計算器,設置窗口大小及位置、顏色布局。并設置面板將各部分的組件放置在單獨的面板內(nèi),設置面板的位置。最后將各部分面板整合在一個大窗口內(nèi)。定
6、義多種處理事件函數(shù),保證程序能夠正常執(zhí)行。 當然了在輸入數(shù)據(jù)時還要進行異常捕捉,防止越界的現(xiàn)象的發(fā)生(例如輸入的數(shù)據(jù)為非字符串),所以該程序中最后還需要有異常處理機制。3 概要設計與詳細設計3.1 概要設計3.1.1 界面設計思路設計一個計算器界面,首先要了解界面的布局情況,其次要明白計算器基本框架。如何才能實現(xiàn)計算器的最基本界面,即包括所有控件大容器是如何創(chuàng)建的。通過查閱相關(guān)資料可知jframe是窗體類,jpanl是面板類。首先創(chuàng)建窗口,讓計算器的各部分控件有一個位置去存放,而控件有需要通過中間橋梁面板才能存放在窗體中,所以需要將所有控件放在相應的面板內(nèi),由于控件數(shù)目多,需要利用字符串來定義
7、各部分控件。還有需要利用構(gòu)造函數(shù)給計算器命名,以及設置jframe窗口的大小以及位置分布還有顏色等的設置。3.1.2 初步設計思路(1)根據(jù)設計出來的圖形界面,首先應該設計其gui界面,總體的界面有一個文本框,23個按鈕,總體界面采用了gridlayout和borderlayout布局,將文本框放置在最北方,然后將數(shù)字以及算術(shù)按鈕放置到一個面板panel內(nèi),并且將該部分內(nèi)容置于界面的南方,完成界面的設計。(2)根據(jù)界面可知設計計算流程首先要點擊數(shù)字,通過數(shù)值按鈕可以將數(shù)值添加到文本框內(nèi),因為有些運算設計的數(shù)值有好幾位數(shù),所以需要將輸入的數(shù)值保存到一個字符串當中,當再次點擊數(shù)字按鈕時將之前輸入的
8、數(shù)字與新的數(shù)字拼接起來,一起添加到文本框中,直到點擊運算符按鈕,將文本框中的字符串保存在一個字符串變量中,然后重置文本框內(nèi)容,輸入運算符隱藏到文本框內(nèi),隨后輸入第二個數(shù)據(jù),用相同的方法保存數(shù)據(jù),輸入完畢后,通過控制等號運算符將字符串數(shù)據(jù)轉(zhuǎn)換成雙精度類型,然后就計算出結(jié)果,并顯示在文本框中。(3)基本運算都能夠?qū)崿F(xiàn)之后,該系統(tǒng)為滿足計算的需求,還設置了前清零、退格、開方、求余數(shù)等運算。清零只需要直接重置文本框內(nèi)容。退格功能采用substring函數(shù)截取字符串長度來實現(xiàn)退格功能。還有雙精度數(shù)的運算,需要用到if循環(huán)語句對數(shù)字進行控制輸出。3.2 詳細設計3.2.1 程序流程圖開始輸入第一個數(shù)字按“
9、+”號輸入第二個數(shù)字按“*”號按“-”號按“/”號按“%”號按“sqrt”號按“1/x”號按“=”號輸出結(jié)果程序流程圖3.1.23.2.2 程序主要代碼及說明程序采用繼承jframe類,利用數(shù)組來定義jbutton按鈕,使界面獲得多個按鈕,同時在程序中引用監(jiān)聽接口,采用4行5列的網(wǎng)格布局,來完成計算器界面的基本設置。設置窗體方面,設置jframe為可見,默認為不可見。最后對按鈕進行計算分析,分別設定處理數(shù)據(jù)的handlenumber方法,運算符控制的handleoperator方法,處理退格handlebackspace方法、以及計算結(jié)果的方法等等。一步一步的實現(xiàn)計算器的基本功能。(1)處理數(shù)
10、據(jù)的方法private void handlenumber(string key) if (firstdigit) / 輸入的第一個數(shù)字resulttext.settext(key); else if (key.equals(.)& (resulttext.gettext().indexof(.) 0) text = text.substring(0, i - 1);if (text.length() = 0) resulttext.settext(0);firstdigit = true;operator = =; else resulttext.settext(text);功能說明:首先獲
11、取文本框內(nèi)的數(shù)據(jù),然后需要判斷該數(shù)據(jù)的長度,定義一個int型的變量i來判斷數(shù)據(jù)長度,如果文本框數(shù)據(jù)長度大于0,則退格,將數(shù)據(jù)的自后一個字符去掉,當數(shù)據(jù)長度i等于0時,表示文本框內(nèi)無數(shù)據(jù)內(nèi)容,則此時退格表示初始化計算器內(nèi)的數(shù)值。否則顯示新輸入的內(nèi)容。4 編碼實現(xiàn)4.1 界面的實現(xiàn)計算器整個程序主要采用網(wǎng)格布局的方式,所以一開始需要導入gridlayout的包,還有控件jbutton包, 窗體jframe包,面板jpanel包,以及界面內(nèi)部的文本框需要導入的jtextfield包。程序一開始需要定義一個自定義類mi讓他繼承窗體jframe并引用行為監(jiān)聽接口actionlistener。然后定義一個
12、字符串數(shù)組string keys是控件獲得相關(guān)運算符的名字,以及功能鍵的名字,初始化控件字符串數(shù)組長度以及文本框內(nèi)容。編寫構(gòu)造函數(shù),將窗口標題設置為“簡易計算器”。同時定義一個init函數(shù)初始化計算器,設置面板背景顏色為灰色,設置窗口位置(x,y)坐標為(500,500)。初始化計算器將文本框內(nèi)容設置為右對齊方式,同時將文本框的顏色設置為白色。初始化計算器按鈕,將數(shù)字與運算符鍵放在同一個面板內(nèi),實例化一個面板的對象calckeyspanel,通過對象調(diào)用方法setlayout來設置數(shù)字鍵與運算鍵在文本框中處的位置。通過for循環(huán)來控制控件數(shù)。初始化功能鍵,將功能鍵放置到一個面板內(nèi),并設置面板位
13、置。新建一個大的面板,將開始建立的兩個小面板放在這個大面板內(nèi),然后調(diào)整蓋大面板的位置。另外再建一個新面板放置文本框,設置其位置。因為jframe不能直接添加組件,需要用getcontentpane()函數(shù)獲取內(nèi)容面板,再在內(nèi)容面板上進行添加組件,最后是整體布局,將文本框面板放在最北方,大面板放在窗體中間,整個窗體布局建造完成。4.2 基本運算功能的實現(xiàn)(1)基本運算的實現(xiàn)(加、減、乘、除、取余、開方、取負數(shù)、倒數(shù))將輸入的第一個數(shù)值保存到一個字符串當中,當再次點擊數(shù)字按鈕時將之前輸入的數(shù)字與新的數(shù)字拼接起來,一起添加到文本框中,直到點擊運算符按鈕,將文本框中的字符串保存在一個字符串變量中,然后
14、重置文本框內(nèi)容,輸入運算符隱藏到文本框內(nèi),隨后輸入第二個數(shù)據(jù),用相同的方法保存數(shù)據(jù),輸入完畢后,按“=”鍵獲得結(jié)果。而開方、取余數(shù)、求倒數(shù)這三個運算符的操作數(shù)只有一個,即輸入操作數(shù)后保存到字符串當中直接輸入運算符按等號鍵直接獲取結(jié)果。(2)功能的實現(xiàn)面板內(nèi)有多種按鈕存在時,需要定義一個獲取事件源標簽label,調(diào)用getcontentpane函數(shù),將事件源標簽與用戶按壓的按鈕進行比較,以保證計算器能夠正確無誤的執(zhí)行指令,例如如果點擊的是退格鍵,則文本框數(shù)據(jù)的最末一位數(shù)會消失,其他功能按鈕原理類同。5 程序運行結(jié)果51 加法運算加法運算結(jié)果被設置在文本框內(nèi),并且是以右對齊的方式至于文本框內(nèi),當再
15、次輸入數(shù)據(jù)時,計算器將自動清除執(zhí)行過的數(shù)據(jù),繼續(xù)執(zhí)行下一步運算。加法運算結(jié)果如下圖5.1所示(運算案例:12+56)。加法運算結(jié)果圖5.152 減法運算減法運算結(jié)果被設置在文本框內(nèi),并且是以右對齊的方式至于文本框內(nèi),當再次輸入數(shù)據(jù)時,計算器將自動清除執(zhí)行過的數(shù)據(jù),繼續(xù)執(zhí)行下一步運算。減法運算結(jié)果如下圖5.2所示(運算案例:97-67)。減法運算結(jié)果圖5.253 倒數(shù)運算既可以直接輸入數(shù)據(jù)進行倒數(shù)運算,還可以先求出一個數(shù)據(jù)的倒數(shù)然后再執(zhí)行其他的運算符,程序能夠正常執(zhí)行,毫無影響,同時當輸入的數(shù)據(jù)為0時,文本框內(nèi)會報錯,提示用戶0是沒有倒數(shù)的。倒數(shù)運算結(jié)果如下圖5.3所示(運算案例:2)。倒數(shù)運算
16、結(jié)果圖5.354 取余數(shù)運算取余數(shù)運算通過“%”這一運算符實現(xiàn)數(shù)據(jù)的運算,執(zhí)行此運算時,除數(shù)也不能夠為0,否則將失去取余數(shù)運算的意義。取余數(shù)運算結(jié)果如下圖5.4所示(運算案例:5%8)。取余數(shù)運算結(jié)果圖5.455 開方運算執(zhí)行開方運算需要注意的是開根數(shù)必須大于或等于零,否則執(zhí)行結(jié)果將會報錯。開方運算結(jié)果如下圖5.5所示(運算案例:16)。開方運算結(jié)果圖5.556 負數(shù)運算輸入一個數(shù)字,大小范圍不限,然后輸入負數(shù)運算按鈕執(zhí)行結(jié)果。負數(shù)運算結(jié)果如下圖5.6所示(運算案例:26)。負數(shù)運算結(jié)果圖5.65.7 退格運算執(zhí)行退格運算符時需要注意的是,被清除掉的數(shù)字是從右往左的第一個數(shù)字,如果該數(shù)據(jù)經(jīng)過多
17、次執(zhí)行退格運算符后,文本沒有任何內(nèi)容,則backspace的含義表示初始化計算器里面的數(shù)據(jù)。退格運算結(jié)果如下圖5.7所示(運算案例:-26)。退格運算結(jié)果圖5.75.8 清零運算清零運算與初始化運算有一定的區(qū)別,清零運算會將數(shù)值變成0,當下次直接輸入數(shù)據(jù)時數(shù)據(jù)左邊會多出一個零來,因此如果想要是數(shù)據(jù)清空時最好不要選擇此按鈕。清零運算結(jié)果如下圖5.8所示(運算案例:-2)。清零運算結(jié)果圖5.8總結(jié)與心得一學期一次的課程設計終于接近尾聲了,其實一開始我還是有點小擔心的,但是又有點小小的喜悅,擔心是因為課程設計是一項艱巨的任務,需要花大量的時間查閱相關(guān)的資料,將所學知識進行整合總結(jié)。但是相對于c語言來
18、說,我還是很自信的覺得java比c語言學得更好,基本的語法已經(jīng)掌握。通過對這次的計算器窗體的編寫,我更加熟悉了java圖形用戶界面的設計原理和程序的結(jié)構(gòu)以及java awt和swing的組合。學會將書本上的知識運用在實際中,提升了編程能力,尤其在java gui圖形界面的布局方面學到頗多,以前布局很亂并且很多布局都是無效的。在編寫程序過程中我還是遇到了不少的困難,比如說按鈕布局大小及其位置不能夠得到很好地調(diào)節(jié),還有對于按鈕的顏色調(diào)節(jié)不知道該用什么方法,通過在網(wǎng)上查找資料案例才了解到了setforeground這個函數(shù)可以控制按鈕顏色。還有其他的一些問題,通過查閱大量的資料和同學的互相幫助,解決了遇到的一些問題,該程序充分發(fā)揮了java gui界面布局的優(yōu)越性。另外按鈕功能的實現(xiàn)也是本次課程設計
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 塑料制品設計創(chuàng)新與用戶體驗優(yōu)化考核試卷
- 嵌入式考試必看問題試題及答案
- 行政組織理論的行業(yè)應用分析試題及答案
- 石棉在消防安全中的應用考核試卷
- 監(jiān)理師考試考點突破試題及答案2025年
- 嵌入式系統(tǒng)中的時鐘管理技術(shù)試題及答案
- 公路工程項目管理能力的提升方法試題及答案
- 坐姿習慣養(yǎng)成管理制度
- 基地農(nóng)戶養(yǎng)殖管理制度
- 古代文言文與現(xiàn)代漢語的語法對比研究
- 幼兒園中班端午節(jié)安全教育
- 質(zhì)量管理七種工具
- 安全教育培訓記錄表
- 設備檢維修申請單
- 成年人正畸治療-成年人的輔助性矯治(口腔正畸學課件)
- 甘油栓的制備
- 超星爾雅學習通《紅色經(jīng)典影片與近現(xiàn)代中國發(fā)展》章節(jié)測試答案
- 浙江山塘綜合整治工作探討
- 7nsc330最近總控使用說明
- 連續(xù)剛構(gòu)箱梁體外預應力施工技術(shù)
評論
0/150
提交評論