版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、武漢工商學(xué)院信息工程學(xué)院項(xiàng)目名稱: 計(jì)算器 學(xué)生姓名: 董瑩 學(xué) 號: 14406005 班 級: 物聯(lián)1班 指導(dǎo)教師: 李鳳麟 2015年12月29日摘 要本計(jì)算器是由java語言所編程設(shè)計(jì)的標(biāo)準(zhǔn)計(jì)算器,該計(jì)算器能夠?qū)崿F(xiàn)計(jì)算器最基本的運(yùn)算功能,可以進(jìn)行十進(jìn)制下簡單的四則運(yùn)算(加法、減法、乘法、除法)、求余,且有小數(shù)點(diǎn)、正負(fù)號、求倒數(shù)、退格和清零功能。利用java gui圖形界面首先開始設(shè)計(jì)一個(gè)計(jì)算器的界面,定義計(jì)算器所需要的按鈕并賦給其按鈕名稱,在設(shè)計(jì)完計(jì)算器的界面后還需要建立事件監(jiān)聽函數(shù),還有獲取事件源標(biāo)簽函數(shù),等一系列的函數(shù)來實(shí)現(xiàn)計(jì)算其內(nèi)部功能的實(shí)現(xiàn)。使得使用計(jì)算器時(shí)簡單明了,清晰可見,
2、操作輕松。該課程設(shè)計(jì)涉及的知識范圍廣泛,需要查閱大量的資料。通過本課程設(shè)計(jì)能夠使學(xué)生本身較全面的掌握面向?qū)ο蟪绦蛟O(shè)計(jì)的有關(guān)概念和開發(fā)方法,通過對已學(xué)知識的運(yùn)用以及拓展,是學(xué)生能較全面地理解、掌握和綜合運(yùn)用所學(xué)的知識,提高自身的編程能力。關(guān)鍵字:java語言,計(jì)算器,算法目 錄1 需求分析12 系統(tǒng)分析23.1.1 界面設(shè)計(jì)33.1.2 初步設(shè)計(jì)思路33.2 詳細(xì)設(shè)計(jì)43.2.1 程序流程圖43.2.2 程序主要代碼及說明54.1 界面的實(shí)現(xiàn)84.2 基本運(yùn)算功能的實(shí)現(xiàn)851 加法運(yùn)算952 減法運(yùn)算953 倒數(shù)運(yùn)算954 取余數(shù)運(yùn)算1055 開方運(yùn)算1056 負(fù)數(shù)運(yùn)算115.7 退格運(yùn)算115
3、.8 清零運(yùn)算12總結(jié)與心得13參考文獻(xiàn)14語言類綜合項(xiàng)目實(shí)訓(xùn)報(bào)告1 需求分析隨著人類生活水平的提高,人類的需求也在不斷的增加,數(shù)據(jù)出現(xiàn)在生活中的每一個(gè)角落,因此計(jì)算機(jī)便成了必不可少的生活工具。隨著數(shù)據(jù)量的不斷增加,古老的計(jì)算工具已經(jīng)被人類淘汰,只有計(jì)算器才能代替計(jì)算這一項(xiàng)艱巨的任務(wù)。計(jì)算器的優(yōu)點(diǎn)在于運(yùn)算速度快,攜帶更加便捷,價(jià)格便宜,操作更加方便。在這個(gè)生活節(jié)奏極其快速的時(shí)代,沒有計(jì)算器將會帶來意想不到的麻煩。因此計(jì)算器的誕生其實(shí)是一種必然的事件。計(jì)算器功能主要包括:加、減、乘、除、取余、小數(shù)點(diǎn)、正負(fù)號、求倒數(shù)、開根號,退格和清零功能。其中基本運(yùn)算功能分別通過handlenumber和 ha
4、ndleoperator函數(shù)來實(shí)現(xiàn)。例如加法運(yùn)算的實(shí)現(xiàn),在handleoperator函數(shù)下用if語句進(jìn)行判斷字符串operator與字符串“+”是否相等,如果相等,函數(shù)handlenumber和 handleoperator共同作用下實(shí)現(xiàn)加法運(yùn)算功能。同樣計(jì)算器的其他運(yùn)算減法,乘法,除法等都是需要進(jìn)行operator與字符串“-”、“*”、“/”等字符串的比較來實(shí)現(xiàn)相應(yīng)的功能。該系統(tǒng)功能的模塊圖如圖1.1所示。計(jì)算器減法運(yùn)算加法運(yùn)算乘法運(yùn)算除法運(yùn)算倒數(shù)運(yùn)算求余數(shù)運(yùn)算開根運(yùn)算求負(fù)數(shù)系統(tǒng)功能模塊圖1.12 系統(tǒng)分析整個(gè)計(jì)算器的程序中運(yùn)用窗體容器jframe以及面板容器jpanel,引用接口(事件
5、偵聽器)actionlistener。程序布局選用了網(wǎng)格布局(gridlayout),邊界布局(borderlayout),基本控件包括文本框控件(jtextfield)。根據(jù)程序設(shè)計(jì)要求要實(shí)現(xiàn)各種功能,如加、減、乘、除,以及求余、小數(shù)點(diǎn)、正負(fù)號、求倒數(shù)、退格和清零功能。那么一開始就需要?jiǎng)?chuàng)建一個(gè)計(jì)算器界面,其次還要選用網(wǎng)格布局,便于各類按鈕之間的分布。之后,計(jì)算器上的功能需要以按鈕的形式呈現(xiàn)在窗口內(nèi),需要定義jbutton類,并實(shí)例化對象。創(chuàng)建構(gòu)造函數(shù),初始化計(jì)算器,設(shè)置窗口大小及位置、顏色布局。并設(shè)置面板將各部分的組件放置在單獨(dú)的面板內(nèi),設(shè)置面板的位置。最后將各部分面板整合在一個(gè)大窗口內(nèi)。定
6、義多種處理事件函數(shù),保證程序能夠正常執(zhí)行。 當(dāng)然了在輸入數(shù)據(jù)時(shí)還要進(jìn)行異常捕捉,防止越界的現(xiàn)象的發(fā)生(例如輸入的數(shù)據(jù)為非字符串),所以該程序中最后還需要有異常處理機(jī)制。3 概要設(shè)計(jì)與詳細(xì)設(shè)計(jì)3.1 概要設(shè)計(jì)3.1.1 界面設(shè)計(jì)思路設(shè)計(jì)一個(gè)計(jì)算器界面,首先要了解界面的布局情況,其次要明白計(jì)算器基本框架。如何才能實(shí)現(xiàn)計(jì)算器的最基本界面,即包括所有控件大容器是如何創(chuàng)建的。通過查閱相關(guān)資料可知jframe是窗體類,jpanl是面板類。首先創(chuàng)建窗口,讓計(jì)算器的各部分控件有一個(gè)位置去存放,而控件有需要通過中間橋梁面板才能存放在窗體中,所以需要將所有控件放在相應(yīng)的面板內(nèi),由于控件數(shù)目多,需要利用字符串來定義
7、各部分控件。還有需要利用構(gòu)造函數(shù)給計(jì)算器命名,以及設(shè)置jframe窗口的大小以及位置分布還有顏色等的設(shè)置。3.1.2 初步設(shè)計(jì)思路(1)根據(jù)設(shè)計(jì)出來的圖形界面,首先應(yīng)該設(shè)計(jì)其gui界面,總體的界面有一個(gè)文本框,23個(gè)按鈕,總體界面采用了gridlayout和borderlayout布局,將文本框放置在最北方,然后將數(shù)字以及算術(shù)按鈕放置到一個(gè)面板panel內(nèi),并且將該部分內(nèi)容置于界面的南方,完成界面的設(shè)計(jì)。(2)根據(jù)界面可知設(shè)計(jì)計(jì)算流程首先要點(diǎn)擊數(shù)字,通過數(shù)值按鈕可以將數(shù)值添加到文本框內(nèi),因?yàn)橛行┻\(yùn)算設(shè)計(jì)的數(shù)值有好幾位數(shù),所以需要將輸入的數(shù)值保存到一個(gè)字符串當(dāng)中,當(dāng)再次點(diǎn)擊數(shù)字按鈕時(shí)將之前輸入的
8、數(shù)字與新的數(shù)字拼接起來,一起添加到文本框中,直到點(diǎn)擊運(yùn)算符按鈕,將文本框中的字符串保存在一個(gè)字符串變量中,然后重置文本框內(nèi)容,輸入運(yùn)算符隱藏到文本框內(nèi),隨后輸入第二個(gè)數(shù)據(jù),用相同的方法保存數(shù)據(jù),輸入完畢后,通過控制等號運(yùn)算符將字符串?dāng)?shù)據(jù)轉(zhuǎn)換成雙精度類型,然后就計(jì)算出結(jié)果,并顯示在文本框中。(3)基本運(yùn)算都能夠?qū)崿F(xiàn)之后,該系統(tǒng)為滿足計(jì)算的需求,還設(shè)置了前清零、退格、開方、求余數(shù)等運(yùn)算。清零只需要直接重置文本框內(nèi)容。退格功能采用substring函數(shù)截取字符串長度來實(shí)現(xiàn)退格功能。還有雙精度數(shù)的運(yùn)算,需要用到if循環(huán)語句對數(shù)字進(jìn)行控制輸出。3.2 詳細(xì)設(shè)計(jì)3.2.1 程序流程圖開始輸入第一個(gè)數(shù)字按“
9、+”號輸入第二個(gè)數(shù)字按“*”號按“-”號按“/”號按“%”號按“sqrt”號按“1/x”號按“=”號輸出結(jié)果程序流程圖3.1.23.2.2 程序主要代碼及說明程序采用繼承jframe類,利用數(shù)組來定義jbutton按鈕,使界面獲得多個(gè)按鈕,同時(shí)在程序中引用監(jiān)聽接口,采用4行5列的網(wǎng)格布局,來完成計(jì)算器界面的基本設(shè)置。設(shè)置窗體方面,設(shè)置jframe為可見,默認(rèn)為不可見。最后對按鈕進(jìn)行計(jì)算分析,分別設(shè)定處理數(shù)據(jù)的handlenumber方法,運(yùn)算符控制的handleoperator方法,處理退格handlebackspace方法、以及計(jì)算結(jié)果的方法等等。一步一步的實(shí)現(xiàn)計(jì)算器的基本功能。(1)處理數(shù)
10、據(jù)的方法private void handlenumber(string key) if (firstdigit) / 輸入的第一個(gè)數(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ù)的長度,定義一個(gè)int型的變量i來判斷數(shù)據(jù)長度,如果文本框數(shù)據(jù)長度大于0,則退格,將數(shù)據(jù)的自后一個(gè)字符去掉,當(dāng)數(shù)據(jù)長度i等于0時(shí),表示文本框內(nèi)無數(shù)據(jù)內(nèi)容,則此時(shí)退格表示初始化計(jì)算器內(nèi)的數(shù)值。否則顯示新輸入的內(nèi)容。4 編碼實(shí)現(xiàn)4.1 界面的實(shí)現(xiàn)計(jì)算器整個(gè)程序主要采用網(wǎng)格布局的方式,所以一開始需要導(dǎo)入gridlayout的包,還有控件jbutton包, 窗體jframe包,面板jpanel包,以及界面內(nèi)部的文本框需要導(dǎo)入的jtextfield包。程序一開始需要定義一個(gè)自定義類mi讓他繼承窗體jframe并引用行為監(jiān)聽接口actionlistener。然后定義一個(gè)
12、字符串?dāng)?shù)組string keys是控件獲得相關(guān)運(yùn)算符的名字,以及功能鍵的名字,初始化控件字符串?dāng)?shù)組長度以及文本框內(nèi)容。編寫構(gòu)造函數(shù),將窗口標(biāo)題設(shè)置為“簡易計(jì)算器”。同時(shí)定義一個(gè)init函數(shù)初始化計(jì)算器,設(shè)置面板背景顏色為灰色,設(shè)置窗口位置(x,y)坐標(biāo)為(500,500)。初始化計(jì)算器將文本框內(nèi)容設(shè)置為右對齊方式,同時(shí)將文本框的顏色設(shè)置為白色。初始化計(jì)算器按鈕,將數(shù)字與運(yùn)算符鍵放在同一個(gè)面板內(nèi),實(shí)例化一個(gè)面板的對象calckeyspanel,通過對象調(diào)用方法setlayout來設(shè)置數(shù)字鍵與運(yùn)算鍵在文本框中處的位置。通過for循環(huán)來控制控件數(shù)。初始化功能鍵,將功能鍵放置到一個(gè)面板內(nèi),并設(shè)置面板位
13、置。新建一個(gè)大的面板,將開始建立的兩個(gè)小面板放在這個(gè)大面板內(nèi),然后調(diào)整蓋大面板的位置。另外再建一個(gè)新面板放置文本框,設(shè)置其位置。因?yàn)閖frame不能直接添加組件,需要用getcontentpane()函數(shù)獲取內(nèi)容面板,再在內(nèi)容面板上進(jìn)行添加組件,最后是整體布局,將文本框面板放在最北方,大面板放在窗體中間,整個(gè)窗體布局建造完成。4.2 基本運(yùn)算功能的實(shí)現(xiàn)(1)基本運(yùn)算的實(shí)現(xiàn)(加、減、乘、除、取余、開方、取負(fù)數(shù)、倒數(shù))將輸入的第一個(gè)數(shù)值保存到一個(gè)字符串當(dāng)中,當(dāng)再次點(diǎn)擊數(shù)字按鈕時(shí)將之前輸入的數(shù)字與新的數(shù)字拼接起來,一起添加到文本框中,直到點(diǎn)擊運(yùn)算符按鈕,將文本框中的字符串保存在一個(gè)字符串變量中,然后
14、重置文本框內(nèi)容,輸入運(yùn)算符隱藏到文本框內(nèi),隨后輸入第二個(gè)數(shù)據(jù),用相同的方法保存數(shù)據(jù),輸入完畢后,按“=”鍵獲得結(jié)果。而開方、取余數(shù)、求倒數(shù)這三個(gè)運(yùn)算符的操作數(shù)只有一個(gè),即輸入操作數(shù)后保存到字符串當(dāng)中直接輸入運(yùn)算符按等號鍵直接獲取結(jié)果。(2)功能的實(shí)現(xiàn)面板內(nèi)有多種按鈕存在時(shí),需要定義一個(gè)獲取事件源標(biāo)簽label,調(diào)用getcontentpane函數(shù),將事件源標(biāo)簽與用戶按壓的按鈕進(jìn)行比較,以保證計(jì)算器能夠正確無誤的執(zhí)行指令,例如如果點(diǎn)擊的是退格鍵,則文本框數(shù)據(jù)的最末一位數(shù)會消失,其他功能按鈕原理類同。5 程序運(yùn)行結(jié)果51 加法運(yùn)算加法運(yùn)算結(jié)果被設(shè)置在文本框內(nèi),并且是以右對齊的方式至于文本框內(nèi),當(dāng)再
15、次輸入數(shù)據(jù)時(shí),計(jì)算器將自動(dòng)清除執(zhí)行過的數(shù)據(jù),繼續(xù)執(zhí)行下一步運(yùn)算。加法運(yùn)算結(jié)果如下圖5.1所示(運(yùn)算案例:12+56)。加法運(yùn)算結(jié)果圖5.152 減法運(yùn)算減法運(yùn)算結(jié)果被設(shè)置在文本框內(nèi),并且是以右對齊的方式至于文本框內(nèi),當(dāng)再次輸入數(shù)據(jù)時(shí),計(jì)算器將自動(dòng)清除執(zhí)行過的數(shù)據(jù),繼續(xù)執(zhí)行下一步運(yùn)算。減法運(yùn)算結(jié)果如下圖5.2所示(運(yùn)算案例:97-67)。減法運(yùn)算結(jié)果圖5.253 倒數(shù)運(yùn)算既可以直接輸入數(shù)據(jù)進(jìn)行倒數(shù)運(yùn)算,還可以先求出一個(gè)數(shù)據(jù)的倒數(shù)然后再執(zhí)行其他的運(yùn)算符,程序能夠正常執(zhí)行,毫無影響,同時(shí)當(dāng)輸入的數(shù)據(jù)為0時(shí),文本框內(nèi)會報(bào)錯(cuò),提示用戶0是沒有倒數(shù)的。倒數(shù)運(yùn)算結(jié)果如下圖5.3所示(運(yùn)算案例:2)。倒數(shù)運(yùn)算
16、結(jié)果圖5.354 取余數(shù)運(yùn)算取余數(shù)運(yùn)算通過“%”這一運(yùn)算符實(shí)現(xiàn)數(shù)據(jù)的運(yùn)算,執(zhí)行此運(yùn)算時(shí),除數(shù)也不能夠?yàn)?,否則將失去取余數(shù)運(yùn)算的意義。取余數(shù)運(yùn)算結(jié)果如下圖5.4所示(運(yùn)算案例:5%8)。取余數(shù)運(yùn)算結(jié)果圖5.455 開方運(yùn)算執(zhí)行開方運(yùn)算需要注意的是開根數(shù)必須大于或等于零,否則執(zhí)行結(jié)果將會報(bào)錯(cuò)。開方運(yùn)算結(jié)果如下圖5.5所示(運(yùn)算案例:16)。開方運(yùn)算結(jié)果圖5.556 負(fù)數(shù)運(yùn)算輸入一個(gè)數(shù)字,大小范圍不限,然后輸入負(fù)數(shù)運(yùn)算按鈕執(zhí)行結(jié)果。負(fù)數(shù)運(yùn)算結(jié)果如下圖5.6所示(運(yùn)算案例:26)。負(fù)數(shù)運(yùn)算結(jié)果圖5.65.7 退格運(yùn)算執(zhí)行退格運(yùn)算符時(shí)需要注意的是,被清除掉的數(shù)字是從右往左的第一個(gè)數(shù)字,如果該數(shù)據(jù)經(jīng)過多
17、次執(zhí)行退格運(yùn)算符后,文本沒有任何內(nèi)容,則backspace的含義表示初始化計(jì)算器里面的數(shù)據(jù)。退格運(yùn)算結(jié)果如下圖5.7所示(運(yùn)算案例:-26)。退格運(yùn)算結(jié)果圖5.75.8 清零運(yùn)算清零運(yùn)算與初始化運(yùn)算有一定的區(qū)別,清零運(yùn)算會將數(shù)值變成0,當(dāng)下次直接輸入數(shù)據(jù)時(shí)數(shù)據(jù)左邊會多出一個(gè)零來,因此如果想要是數(shù)據(jù)清空時(shí)最好不要選擇此按鈕。清零運(yùn)算結(jié)果如下圖5.8所示(運(yùn)算案例:-2)。清零運(yùn)算結(jié)果圖5.8總結(jié)與心得一學(xué)期一次的課程設(shè)計(jì)終于接近尾聲了,其實(shí)一開始我還是有點(diǎn)小擔(dān)心的,但是又有點(diǎn)小小的喜悅,擔(dān)心是因?yàn)檎n程設(shè)計(jì)是一項(xiàng)艱巨的任務(wù),需要花大量的時(shí)間查閱相關(guān)的資料,將所學(xué)知識進(jìn)行整合總結(jié)。但是相對于c語言來
18、說,我還是很自信的覺得java比c語言學(xué)得更好,基本的語法已經(jīng)掌握。通過對這次的計(jì)算器窗體的編寫,我更加熟悉了java圖形用戶界面的設(shè)計(jì)原理和程序的結(jié)構(gòu)以及java awt和swing的組合。學(xué)會將書本上的知識運(yùn)用在實(shí)際中,提升了編程能力,尤其在java gui圖形界面的布局方面學(xué)到頗多,以前布局很亂并且很多布局都是無效的。在編寫程序過程中我還是遇到了不少的困難,比如說按鈕布局大小及其位置不能夠得到很好地調(diào)節(jié),還有對于按鈕的顏色調(diào)節(jié)不知道該用什么方法,通過在網(wǎng)上查找資料案例才了解到了setforeground這個(gè)函數(shù)可以控制按鈕顏色。還有其他的一些問題,通過查閱大量的資料和同學(xué)的互相幫助,解決了遇到的一些問題,該程序充分發(fā)揮了java gui界面布局的優(yōu)越性。另外按鈕功能的實(shí)現(xiàn)也是本次課程設(shè)計(jì)
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度交通安全知識普及與駕駛技能培訓(xùn)合同
- 企業(yè)并購居間合同委托書
- 二零二五年度辦公室勞動(dòng)合同地址確認(rèn)及員工離職補(bǔ)償協(xié)議
- 三農(nóng)田灌溉方案與實(shí)施手冊
- 汽車維修保養(yǎng)規(guī)范手冊
- 醫(yī)療器械產(chǎn)品采購合同
- 石材購銷合同補(bǔ)充合同
- 合作收購不良資產(chǎn)協(xié)議
- 人力資源管理勞動(dòng)法律法規(guī)遵守作業(yè)指導(dǎo)書
- 企業(yè)并購交易操作指導(dǎo)書
- 計(jì)算機(jī)控制系統(tǒng) 課件 第10章 網(wǎng)絡(luò)化控制系統(tǒng)的分析與設(shè)計(jì)
- 魯教版(五四制)七年級數(shù)學(xué)上冊期末考試卷-附帶答案
- 南京大學(xué)儀器分析習(xí)題集
- 空調(diào)維保應(yīng)急預(yù)案
- 小學(xué)六年級數(shù)學(xué)上冊解決問題專項(xiàng)必考題西師大版
- 2023年高考語文全國乙卷作文范文及導(dǎo)寫(解讀+素材+范文)課件版
- 模塊建房施工方案
- 多域聯(lián)合作戰(zhàn)
- 美容美發(fā)場所衛(wèi)生規(guī)范
- 《隧道工程》(第二版)課件 第1、2章 緒論、隧道工程勘測
- 設(shè)計(jì)師績效考核
評論
0/150
提交評論