基于java的標(biāo)準(zhǔn)型計算器設(shè)計【畢業(yè)論文】_第1頁
已閱讀1頁,還剩38頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、<p><b>  本科畢業(yè)設(shè)計</b></p><p><b> ?。?0 屆)</b></p><p>  基于Java的標(biāo)準(zhǔn)型計算器設(shè)計</p><p>  所在學(xué)院 </p><p>  專業(yè)班級 通信工程

2、 </p><p>  學(xué)生姓名 學(xué)號 </p><p>  指導(dǎo)教師 職稱 </p><p>  完成日期 年 月 </p><p><b>  摘 要</b>&

3、lt;/p><p>  Java語言是由美國Sun Microsystems公司開發(fā)的一種程序設(shè)計語言,現(xiàn)在已經(jīng)成為Internet的主力開發(fā)語言。它采用了面向?qū)ο蠹夹g(shù),具有支持分布式、安全、結(jié)構(gòu)中立、可移植性強(qiáng)和多線程等特點,現(xiàn)在已經(jīng)成為網(wǎng)絡(luò)編程的首先語言。</p><p>  基于Java的標(biāo)準(zhǔn)型計算器設(shè)計旨在熟悉使用Java語言,并且運(yùn)用于實踐。目前計算器運(yùn)用領(lǐng)域非常廣泛。以體積小、分量

4、輕、便于攜帶等優(yōu)點,倍受室外工作者的青睞;另外,其更大的優(yōu)點是價格低廉、可靠耐用。進(jìn)一步熟悉并了解了Java語言中多種方法和類的使用。</p><p>  通過JBuilder開發(fā)工具編程基本實現(xiàn)預(yù)期目標(biāo)。課題運(yùn)用到大量的理論基礎(chǔ)作為支持,在設(shè)計Java計算器時按步驟進(jìn)行了設(shè)計:分析系統(tǒng)總功能,確定計算器軟件的基本功能;初步、粗略設(shè)計系統(tǒng)界面。使用Java進(jìn)行編寫程序,實現(xiàn)算術(shù)操作、平方根、百分比等基本運(yùn)算功能;

5、設(shè)計Java計算器各個模塊實現(xiàn)記憶功能,恢復(fù)以前保存的運(yùn)算結(jié)果;編寫各模塊代碼實現(xiàn)計算器的其他高級功能;調(diào)試Java計算器,完善計算器功能。</p><p>  經(jīng)過長時間的研究和學(xué)習(xí)。目前已經(jīng)基本實現(xiàn)了算術(shù)操作、平方根、百分比等基本運(yùn)算功能;實現(xiàn)記憶功能,恢復(fù)以前保存的運(yùn)算結(jié)果;實現(xiàn)計算器的其他高級功能;實現(xiàn)的客戶端界面友好美觀。</p><p>  關(guān)鍵詞:Java;JBuilder;

6、 廣泛;計算器;記憶;界面;</p><p><b>  Abstract</b></p><p>  Java language is from the developed from Microsystems a programming language, the internet has now become the main development langua

7、ge. It uses object-oriented technology, with support distributed, safety, structural neutral, portability, and strong characteristics such as multithreaded programming, have become the first language network. </p>

8、<p>  Based on Java standard calculator designed to familiar with use Java language and applied in practice. Currently calculator using field is very wide. With small volume, light weight, easy to carry, much outdo

9、or workers advantages of favour. In ddition, its greater advantage is cheap, reliable and durable. Further recognition and understanding the Java language in the use of various methods and classes.</p><p>  

10、Through the JBuilder development tools programming basic achieve the desired goals. Subject to apply a lot of theoretical basis as support. In design according to the procedures when Java calculator designed. Analysis th

11、e system total function, determine the basic functions; calculators software Preliminary, rough design system interface. Use Java for program, realize arithmetic operations, square root, basic computing functions; the pe

12、rcentage of Design Java calculator modules realize memory fu</p><p>  After a long time. research and study. At present already basically achieved arithmetic operations, square root, basic computing function

13、 percentage. Realize memory function, restore before the operation result. The other senior function realization calculator. Achieve client friendly interface beautiful. </p><p>  Key Words: Java; JBuilder;

14、widely; calculator; memory; interface </p><p><b>  目 錄</b></p><p><b>  1 概述1</b></p><p>  1.1 課題研究背景及意義1</p><p>  1.2 開發(fā)工作與論文的主要內(nèi)容2</p>

15、;<p>  1.2.1 開發(fā)工作主要內(nèi)容2</p><p>  1.2.2 論文主要內(nèi)容2</p><p><b>  2 事件處理2</b></p><p>  2.1 接口和包3</p><p>  2.1.1接口…………………………………………………………………….3</p>

16、<p>  2.1.2包.............................................................................................................4</p><p>  2.2 組件事件處理4</p><p>  2.3 GUI程序設(shè)計常用容器6</p><p&

17、gt;  2.3.1框架…………………………………………………………………….6</p><p>  2.3.2面板…………………………………………………………………….6</p><p>  2.4 布局管理器8</p><p>  2.4.1 FlowLayout布局管理器……………………………………………….9</p><p>  2

18、.4.2 BorderLayout布局管理器………………………………………………………...9</p><p>  2.4.3 GridLayout布局管理器………………………………………………10</p><p>  2.4.4 CardLayout布局管理器…………………………………………...…10</p><p>  2.5本章小結(jié)…………………………………

19、……………………………….….11</p><p><b>  3 軟件設(shè)計11</b></p><p>  3.1總體方案11</p><p>  3.2 開發(fā)平臺的選擇……………………………………………………………12</p><p>  3.3總體程序流程圖…………………………………………………………….13&

20、lt;/p><p>  3.4 制作和調(diào)試…………………………………………………………………14</p><p>  3.4.1基本思路…………………………………………………………....................…143.4.2關(guān)鍵代碼分析……………………………………………………………………14</p><p>  4 運(yùn)行結(jié)果分析16</p>

21、<p>  4.1 運(yùn)行情況16</p><p>  4.2 有待完善方面21</p><p>  5 結(jié)論……………………………………………………………………………...22</p><p><b>  致 謝23</b></p><p><b>  參考文獻(xiàn)24</b>&l

22、t;/p><p>  附錄1 主要源程序代碼25</p><p>  附錄2 畢業(yè)設(shè)計作品說明書38</p><p><b>  1 概述</b></p><p>  1.1 課題研究背景及意義</p><p>  Java語言是由美國Sun Microsystems公司開發(fā)的一種程序設(shè)計語言

23、,現(xiàn)在已經(jīng)成為Internet的主力開發(fā)語言。它采用了面向?qū)ο蠹夹g(shù),具有支持分布式、安全、結(jié)構(gòu)中立、可移植性強(qiáng)和多線程等特點,現(xiàn)在已經(jīng)成為網(wǎng)絡(luò)編程的首先語言。[1]</p><p>  隨著社會的進(jìn)步,科學(xué)的發(fā)展,計算器的使用經(jīng)歷了小編程容量計算器向較大編程容量計算器普及的過程。在這期間,又有不斷的升級換代,功能更加強(qiáng)勁。但編程的基本原理還是大同小易,目的都是為生產(chǎn)建設(shè)提供方便的服務(wù)。</p>&l

24、t;p>  基于Java的標(biāo)準(zhǔn)型計算器設(shè)計旨在熟悉使用Java語言,并且運(yùn)用于實踐。目前計算器運(yùn)用領(lǐng)域非常廣泛。計算器不僅在土木工程、森林調(diào)查、應(yīng)用化學(xué)領(lǐng)域中使用,而且在工程測量計算、測量機(jī)械作業(yè)面積等方面依然運(yùn)用廣泛[2]。以體積小、分量輕、便于攜帶等優(yōu)點,倍受室外工作者的青睞;另外,其更大的優(yōu)點是價格低廉、可靠耐用。</p><p>  自己編寫的基于Java計算器具備以下優(yōu)勢:</p>

25、<p>  可維護(hù)性強(qiáng);Java語言具有支持分布式、安全結(jié)構(gòu)中立、可移植性強(qiáng)和多線程等特點。做一個基于Java的計算器可維護(hù)性較強(qiáng)。</p><p>  可升級性強(qiáng);自己編寫的計算器熟悉代碼,發(fā)現(xiàn)不足之處可以及時的修改升級。</p><p>  具有友好的界面;計算器軟件界面可以設(shè)計的五花八門,根據(jù)用戶的需要可以編寫更適合的界面。例如按鍵的顏色、形狀都可以改變。</p>

26、;<p>  4 人性化;現(xiàn)在大多數(shù)手機(jī)等移動設(shè)備都支持Java,可能手機(jī)等設(shè)備都有計算器軟件,但是大多數(shù)都沒有強(qiáng)勁的功能或者友好的界面環(huán)境。因此可以根據(jù)需要在移動設(shè)備中加入自己編寫好的計算器軟件。</p><p>  1.2 開發(fā)工作與論文的主要內(nèi)容</p><p>  1.2.1 開發(fā)工作主要內(nèi)容</p><p>  本次課題主要研究的內(nèi)容是基

27、于Java平臺,通過JBuilder進(jìn)行軟件編程測試和運(yùn)行。</p><p>  1.2.2 論文主要內(nèi)容</p><p>  論文分成五章來介紹在Java平臺下標(biāo)準(zhǔn)型計算器開發(fā),包括了開發(fā)所需要的相關(guān)知識、開發(fā)的方案以及開發(fā)過程。</p><p>  第一章為本次課題的概述,介紹了課題研究背景及意義,同時簡單介紹了Java的地位以及前景。本次計算器軟件開發(fā)需要做的

28、事項以及論文的主要內(nèi)容也略有涉及。</p><p>  第二章為介紹事件處理,接口和包的介紹以及GUI布局管理器。介紹組件事件處理程序。著重介紹了了布局管理器最基本的4種。分別是FlowLayout 布局管理器(Panel類和Applet類的默認(rèn)布局管理器)、BorderLayout 布局管理器(Window/Dialog類和Frame類的默認(rèn)布局管理器)、 GridLayout 布局管理器 CardLayout

29、布局管理器。</p><p>  第三章為開發(fā)設(shè)計,介紹了總體的方案和開發(fā)平臺,同時還介紹Jbuilder開發(fā)平臺的優(yōu)缺點,最后重點介紹了軟件開發(fā)的思路以及程序中的關(guān)鍵代碼。并且介紹了基于Java的標(biāo)準(zhǔn)型計算器軟件設(shè)計的基本流程圖。</p><p>  第四章為運(yùn)行結(jié)果分析,主要是進(jìn)行測試,給出測試結(jié)果分析,同時給出了截圖。同時分析本次設(shè)計的不足的地方,還有后期有待完善和開發(fā)的方面。<

30、;/p><p>  第五章為結(jié)論,是對本次設(shè)計做的一個全面總結(jié)。指出了課題設(shè)計Java基礎(chǔ)知識的重要性,還有Java語言的博大精深。目前計算器運(yùn)用領(lǐng)域非常廣泛。然而在編寫Java計算器的時候還有很多地方存在著缺陷,主要的都體現(xiàn)在功能的完善和界面的美化上面等。</p><p><b>  2 事件處理</b></p><p><b>  2

31、.1 接口和包</b></p><p><b>  2.1.1接口</b></p><p>  Java提供接口概念,它允許一個類同時實現(xiàn)多個接口,它就相當(dāng)于部分實現(xiàn)多繼承。Java提供的包與此類似。</p><p>  接口就是一系列常量和空方法的集合,它提供了多個類共有的方法,但不限制每個類如何實現(xiàn)這些方法。接口繼承和實現(xiàn)繼承的

32、規(guī)則不同,一個類只有一個直接父類,但可以實現(xiàn)多個接口。[3]</p><p>  Java接口本身沒有任何實現(xiàn),因為Java接口不涉及表象,而只描述public行為,所以Java接口比Java抽象類更抽象化。Java接口的方法只能是抽象的和公開的,Java接口不能有構(gòu)造器,Java接口可以有public,靜態(tài)的和final屬性。接口把方法的特征和方法的實現(xiàn)分割開來。這種分割體現(xiàn)在接口常常代表一個角色,它包裝與該角

33、色相關(guān)的操作和屬性,而實現(xiàn)這個接口的類便是扮演這個角色的演員。一個角色由不同的演員來演,而不同的演員之間除了扮演一個共同的角色之外,并不要求其它的共同之處。</p><p>  1、Java接口常用方法[4]</p><p><b>  (1)單方法接口 </b></p><p><b>  以下是引用片段: </b>&l

34、t;/p><p>  public interface Actionlistener{ </p><p>  public abstract void actionPerformed(ActionEvent event); </p><p><b>  } </b></p><p>  僅且只有一個方法,只有實現(xiàn)了這個接口(

35、重寫這個接口中的唯一一個方法),你才有資格去事件監(jiān)聽器列表里注冊(參數(shù)為Actionlistener類型),當(dāng)事件源變動時,自動調(diào)用這個唯一的actionPerformed方法. </p><p><b>  (2)標(biāo)識接口 </b></p><p>  是沒有任何方法和屬性的接口。標(biāo)識接口不對實現(xiàn)它的類有任何語意上的要求,它僅僅表明了實現(xiàn)它的類屬于一個特定的類型(傳

36、遞)。 </p><p><b>  (3)常量接口 </b></p><p>  用Java接口來聲明一些常量,然后由實現(xiàn)這個接口的類使用這些常量(以前在做畫板的時候這么干過)。建議不要模仿這種常量接口的做法。</p><p><b>  2.1.2包</b></p><p><b> 

37、 1、Java包</b></p><p>  為了更好地組織類,Java提供了包機(jī)制。包是類的容器,用于分隔類名空間。如果沒有指定包名,所有的示例都屬于一個默認(rèn)的無名包。Java中的包一般均包含相關(guān)的類,例如,所有關(guān)于交通工具的類都可以放到名為Transportation的包中。程序員可以使用package指明源文件中的類屬于哪個具體的包。包語句的格式為: package pkg1[.pkg2[.pk

38、g3…]] [3] </p><p>  程序中如果有package語句,該語句一定是源文件中的第一條可執(zhí)行語句,它的前面只能有注釋或空行。另外,一個文件中最多只能有一條package語句。 </p><p>  包的名字有層次關(guān)系,各層之間以點分隔。包層次必須與Java開發(fā)系統(tǒng)的文件系統(tǒng)結(jié)構(gòu)相同。通常包名中全部用小寫字母,這與類名以大寫字母開頭,且各字的首字母亦大寫的命名約定有所不同。

39、</p><p>  當(dāng)使用包說明時,程序中無需再引用(import)同一個包或該包的任何元素。import語句只用來將其他包中的類引入當(dāng)前名字空間中。而當(dāng)前包總是處于當(dāng)前名字空間中。 </p><p>  如果文件聲明如下: package java.a(chǎn)wt.image </p><p>  則此文件必須存放在Windows的java\awt\image目錄下或u

40、nix的java/awt/image目錄下。 </p><p>  2.2 組件事件處理</p><p>  1、JButton與Button區(qū)別</p><p>  Button是在java.awt.*中的,JButton是在javax.swing.*中的</p><p>  swing類是awt的一個擴(kuò)展,它是由純JAVA語言編寫的,它

41、有一個與平臺無關(guān)的實現(xiàn),而且具有一個藝術(shù)狀態(tài)的屬性集。</p><p>  2、Button事件處理[6]</p><p>  當(dāng)用戶用鼠標(biāo)單擊Button對象時,僅僅產(chǎn)生一種ActionEvent事件。監(jiān)聽者必須實現(xiàn)ActionListener接口,并通過addActionListener()方法向事件源注冊。ActionListener接口僅有一個方法,它的定義是:</p>

42、<p>  Public interface ActionListener extends EventListener{</p><p>  Public void actionPerformed(ActionEvent e);}</p><p>  actionPerformed()方法中的e.getActionCommand()是獲取與此動作相關(guān)的命令名。testEven

43、tButton()構(gòu)造函數(shù)的a1.addActionListener(this),是將當(dāng)前對象(this指代的對象)注冊為a1對象的事件監(jiān)聽者,每當(dāng)a1對象被單擊時,將調(diào)用actionPerformed()進(jìn)行事件處理。</p><p>  3、JTextField事件處理</p><p>  JTextField是處理單行文本的,當(dāng)在這些對象中輸入數(shù)據(jù)并按下Enter鍵是,將觸發(fā)一個事件

44、。如果程序注冊一個事件監(jiān)聽者,那么監(jiān)聽者就可以處理這個事件,并可以使用此時的文本數(shù)據(jù)。</p><p>  當(dāng)有多個事件源時,可以使用ActionEvent參數(shù)的getSource()方法來確定用戶到底與哪一個GUI構(gòu)件進(jìn)行了交互操作,通過這個方法可以獲取事件產(chǎn)生的對象。</p><p>  在actionPerformed()方法中,通過getActionCommand()方法可以獲取文

45、本框中的內(nèi)容。對于Button按鈕,通過此方法可以獲取按鈕表面的信息。在構(gòu)造函數(shù)中f1.addActionListener(handler)是將handler注冊為f1對象的監(jiān)聽者。一個handler對象可以同時監(jiān)聽對個事件源,為了區(qū)別當(dāng)前事件是由那個事件源引起的,在actionPerformed()方法中,通過if-else語句進(jìn)行了事件源判別。雖然f1對象不可被編輯,但仍然可以響應(yīng)事件。當(dāng)鼠標(biāo)選中該對象以后,按Enter鍵同樣可以獲

46、取該對象的文本信息。JTextArea雖然也是與文本有關(guān)的組件,支持多行文本,但在其區(qū)域按Enter鍵不會產(chǎn)生事件。</p><p>  2.3 GUI程序設(shè)計常用容器</p><p>  GUI程序設(shè)計中的常用容器:框架和面板。</p><p><b>  2.3.1.框架</b></p><p>  框架(JFram

47、e)是一種獨(dú)立存在的容器,在Swing中采用JFrame類定義,JFrame對象包含有邊框,并且必須調(diào)用Window類的show()方法或Component類的setVisible()方法顯示框架,否則該框架不可見。</p><p>  SetDefaultCloseOperation()是Jframe類中的一個方法,它通過調(diào)用system.exit(0)結(jié)束程序。[5]</p><p>

48、  JFrame內(nèi)部由各種組件構(gòu)成。處理框架時,通常不是直接處理框架,而是處理內(nèi)部的組件,這就要用到其中的內(nèi)容格。通過getContPane()方法取得內(nèi)空格,返回一個可用的Container,并在其中設(shè)置布局管理器和添加組件。[6]</p><p><b>  2.3.2.面板</b></p><p>  面板與框架不同,它必須包括包含在另一個容器中。同時,在它的內(nèi)

49、部還可以布置其他組件和面板。面板在Swing中采用Jpanel定義,在AWT中采用Panel定義。面板必須包含在另一個容器中。同時,在它的內(nèi)部,還可以布置其他組件和面板。面板是一個輕量級容器組件,用法與Panel相同,用于容納界面元素,以便在布局管理器的設(shè)置下容納更多的組件,實現(xiàn)容器的嵌套。JPanel, JScrollPane, JsplitPane和JInternalFrame都屬于常用的中間容器,是輕量級組件。JPanel的默認(rèn)布

50、局管理器是FlowLayout</p><p>  java.lang.Object </p><p>  +--java.awt.Component</p><p>  +--java.awt.Container</p><p>  +--javax.swing.JComponent </p><p&

51、gt;  +--javax.swing.JPanel</p><p> ?。?)分層面板(JLayeredPane)</p><p>  Swing提供兩種分層面板:JLayeredPane和JDesktopPane。JDesktopPane是JLayeredPane的子類,專門為容納內(nèi)部框架(JInternalFrame)而設(shè)置。向一個分層面板中添加組件,需要說明將其加入哪一層,指明組件

52、在該層中的位置:add(Component c, Integer Layer, int position)。</p><p> ?。?)滾動窗口(JScrollPane)</p><p>  JScrollPane是帶滾動條的面板,主要通過移動JViewport(視口)來實現(xiàn)。JViewport是一種特殊的對象,用于查看基層組件,滾動條實際就是沿著組件移動視口,同時描繪出它“看到”的內(nèi)容。

53、</p><p> ?。?)分隔板(JSplitPane)</p><p>  java.lang.Object</p><p>  +--java.awt.Component</p><p>  +--java.awt.Container</p><p>  +--javax.swing.JComponent<

54、/p><p>  +--javax.swing.JSplitPane</p><p> ?。?)選項板(JTabbedPane)</p><p>  JTabbedPane提供一組可供用戶選擇的帶有標(biāo)簽或圖標(biāo)的開關(guān)鍵。常用的方法如下:add(String title,Component component) //增加一個帶特定標(biāo)簽的組件 addChangeListene

55、r(ChangeListener l) //選項板注冊一個變化監(jiān)聽器</p><p> ?。?)工具欄(JToolBar)</p><p>  JToolBar是用于顯示常用工具控件的容器。用戶可以拖拽出一個獨(dú)立的可顯示工具控件的窗口。常用的方法如下:</p><p>  JToolBar(String name) //構(gòu)造方法</p><p&g

56、t;  getComponentIndex(Component c) //返回一個組件的序號</p><p>  getComponentAtIndex(int i) //得到一個指定序號的組件</p><p> ?。?)內(nèi)部框架(JInternalFrame)</p><p>  內(nèi)部框架JInternalFrame就如同一個窗口在另一個窗口內(nèi)部,其特點如下:必須

57、把內(nèi)部框架添加到一個容器中(通常為JDesktopPane),否則不顯示;不必調(diào)用show()或setVisible()方法,內(nèi)部框架隨所在的容器一起顯示; 必須用setSize()、pack()或setBounds方法設(shè)置框架尺寸,否則尺寸為零,框架不能顯示;可以用setLocation()或setBounds()方法設(shè)置內(nèi)部框架在容器中的位置,默認(rèn)值為(0, 0),即容器的左上角; 像頂層JFrame一樣,對內(nèi)部框架添加組件也要加在

58、它的內(nèi)容面板上;在內(nèi)部框架中建立對話框,不能使用JDialog作為頂層窗口,必須用JOptionPane或JinternalFrame;內(nèi)部框架不能監(jiān)聽窗口事件,可以通過監(jiān)聽與窗口事件類似的內(nèi)部框架(JInternalFrameEvent)處理內(nèi)部框架窗口的操作。</p><p><b>  2.4 布局管理器</b></p><p>  Java語言中包含以下幾種布

59、局管理器:FlowLayout (Panel類和Applet類的默認(rèn)布局管理器);BorderLayout (Window/Dialog類和Frame類的默認(rèn)布局管理器); GridLayout ; CardLayout ; </p><p>  2.4.1FlowLayout布局管理器</p><p>  FlowLayout 有三種構(gòu)造方法:</p><p> 

60、 public FlowLayout( )</p><p>  public FlowLayout(int align)</p><p>  public FlowLayout(int align, int hgap, int vgap)</p><p>  在默認(rèn)情況下,F(xiàn)lowLayout將組件居中放置在容器的某一行上,FlowLayout的構(gòu)造方法中提供了一個

61、對齊方式的可選項align</p><p><b>  align的可取值</b></p><p>  FlowLayout.LEFT 左對齊</p><p>  FlowLayout.RIGHT 右對齊</p><p>  FlowLayout.CENTER 居中</p><p>  如:p2=

62、new Panel(new FlowLayout(FlowLayout.RIGHT))</p><p>  創(chuàng)建了一個左對齊方式的FlowLayout的實例。</p><p>  FlowLayout的構(gòu)造方法中還有一對可選項hgap和vgap,可以設(shè)定組件的水</p><p><b>  平間距和垂直間距。</b></p>&l

63、t;p>  FlowLayout布局管理器并不強(qiáng)行設(shè)定組件的大小,而是允許組件擁有它們自己所希望的尺寸。</p><p>  2.4.2 BorderLayout布局管理器</p><p>  BorderLayout是Dialog類和Frame類的默認(rèn)布局管理器,它提供了一種較為復(fù)雜的組件布局管理方案,每個被BorderLayout管理的容器均被劃分成五個區(qū)域:東(East)、南(

64、South)、西(West)、北(North)、中(Center)。North 在容器的上部,East在容器的右部,其他依此類推。Center當(dāng)然就是East,South,West和North所圍繞的中部。[7]</p><p>  BorderLayout布局管理器有兩種構(gòu)造方法:</p><p>  BorderLayout()構(gòu)造一個各部分間距為0的BorderLayout實例。&l

65、t;/p><p>  BorderLayout(int, int)構(gòu)造一個各部分具有指定間距的BorderLayout實例。</p><p>  在BorderLayout 布局管理器的管理下,組件必須通過add( )方法加入到容器的五個命名區(qū)域之一。</p><p>  p1.add(p3,BorderLayout.CENTER);</p><p&

66、gt;  在容器的每個區(qū)域,只能加入一個組件。</p><p>  可以使用內(nèi)部容器在BorderLayout的一個區(qū)域內(nèi)間接放入多個組件。</p><p>  如果某個區(qū)域沒有使用,那么它的大小將變?yōu)榱?,此時Center區(qū)域?qū)U(kuò)展并占據(jù)這個未用區(qū)域的位置。[8] </p><p>  2.4.3 GridLayout布局管理器</p><p&

67、gt;  GridLayout是一種網(wǎng)格式的布局管理器[9],它將容器空間劃分成若干行乘若干列的網(wǎng)格,組件依次放入其中,每個組件占據(jù)一格。</p><p>  GridLayout三種構(gòu)造方法:</p><p>  public GridLayout( )</p><p>  public GridLayout(int rows, int cols)</p&g

68、t;<p>  public GridLayout(int rows, int cols, int hgap, int vgap)</p><p>  第一種不帶參數(shù)的構(gòu)造方法創(chuàng)建一個只有一行的網(wǎng)格,網(wǎng)格的列數(shù)根據(jù)實際需要而定。</p><p>  參數(shù):rows和cols分別指定網(wǎng)格的行數(shù)和列數(shù),hgap和vgap分別表示網(wǎng)格間的水平間距和垂直間距。</p>

69、<p>  如:new GridLayout(3,2) ,可以創(chuàng)建一個三行乘兩列的布局管理器。</p><p>  rows和cols中的一個值可以為0,但是兩個值不能都是0。</p><p>  如果rows為0,那么網(wǎng)格的行數(shù)將根據(jù)實際需要而定;</p><p>  如果cols為0,那么網(wǎng)格的列數(shù)將根據(jù)實際需要而定。</p><p

70、>  2.4.4 CardLayout布局管理器</p><p>  CardLayout是一種卡片式的布局管理器,它將容器中的組件處理為一系列卡片,每一時刻只顯示出其中的一張。</p><p>  示例:為Frame類的實例f指定了一個 CardLayout類型的布局管理器,然后向其中加入了五張卡片,每張卡片都是Panel類的一個實例,并且具有不同的背景色。每當(dāng)在程序窗口單擊鼠標(biāo)時

71、,下一張卡片就會顯示出來。</p><p><b>  2.5 本章小結(jié)</b></p><p>  在GUI程序中,最重要的事實現(xiàn)用戶與程序的交互。組件事件處理:Button,TextField等事件處理方法,用鼠標(biāo)事件處理,分別從不同的角度對組件、容器和時間進(jìn)行綜合分析。產(chǎn)生一種ActionEvent事件。監(jiān)聽者必須實現(xiàn)ActionListener接口,并通過ad

72、dActionListener()方法向事件源注冊。</p><p>  每種容器都有一個默認(rèn)的布局管理器,例如:FlowLayout 默認(rèn)為Panel類和Applet類的布局管理器;BorderLayout 默認(rèn)為Window/Dialog類和Frame類的布局管理器。</p><p>  在程序設(shè)計中特別要注意這類問題。同時巧妙運(yùn)用到基于Java的標(biāo)準(zhǔn)型計算器的編程中去。</p&

73、gt;<p><b>  3 軟件設(shè)計</b></p><p><b>  3.1 總體方案</b></p><p>  本次課題的目標(biāo)是設(shè)計一個基于Java平臺的標(biāo)準(zhǔn)計算器軟件。設(shè)計中會使用到Java.awt包Java.awt.event包。Java.awt是構(gòu)件圖形用戶界面(GUI)的類庫。我們可用它來建立低級繪圖操作、圖形界面

74、組件和布局管理如Container類、LayoutManger接口等,以及界面用戶交互控制和時間響應(yīng),如Event類。Java.awt.event包是GUI事件處理包。[9]</p><p>  Java.awt.event提供處理由 AWT 組件所激發(fā)的各類事件的接口和類。有關(guān) AWT 事件模型的細(xì)節(jié)。事件由事件源所激發(fā)。向事件源注冊的事件偵聽器可接收有關(guān)特定事件類型的通知。此包定義了事件和事件偵聽器,以及事件

75、偵聽器適配器,它是讓事件偵聽器的編寫過程更為輕松的便捷類。</p><p>  本次程序設(shè)計中計劃將程序主要分成程序初始化主體、運(yùn)算處理部分、主程序三個部分。其中程序初始化主體部分主要用到了ActionListener類、BorderLayout類和Frame類,F(xiàn)rame類代表計算器的總體邊框。BorderLayout類代表了布局將容器空間分區(qū)域。ActionListener接口是為了產(chǎn)生ActionEvent

76、事件所準(zhǔn)備的。當(dāng)Button對象被單擊時,將調(diào)用ActionPerformed()進(jìn)行事件處理。</p><p>  3.2 JBuilder開發(fā)平臺的選擇</p><p>  JBuilder是Borland公司開發(fā)的針對Java的開發(fā)工具,是一個可視話Java開發(fā)工具。使用JBuilder將可以快速,有效的開發(fā)各類Java應(yīng)用。它是在Java2平臺上開發(fā)商業(yè)應(yīng)用程序、數(shù)據(jù)庫、發(fā)布程序的

77、優(yōu)秀工具。[10] [11]</p><p>  JBuilder開發(fā)系統(tǒng)的核心有一部采用了VCL技術(shù),使得程序條理非常清晰,即使是初學(xué)者都可以相對輕松得看完程度代碼。JBuilder還有另一個特點,就是它簡化了團(tuán)隊合作,它所采用的互聯(lián)網(wǎng)工作室設(shè)計使得即使是不同地區(qū),甚至是不同國家的開發(fā)人員聯(lián)合開發(fā)一個項目成為了可能。[12]</p><p>  Jbuilder支持最新的Java技術(shù),包

78、括Applets、JSP/Servlets、JavaBean以及EJB (Enterprise JavaBeans)的應(yīng)用。用戶可以自動地生成基于后端數(shù)據(jù)庫表的EJB Java類,利用Jbuilder可創(chuàng)建(沒有專有代碼和標(biāo)記)純Java2應(yīng)用。由于Jbuilder是用純J ava語言編寫的,其代碼不含任何專屬代碼和標(biāo)記,它支持最新的Java標(biāo)準(zhǔn)。Jbuilder擁有專業(yè)化的圖形調(diào)試界面,支持遠(yuǎn)程調(diào)試和多線程調(diào)試,調(diào)試器支持各種JDK版

79、本,包括J2ME/J2SE/J2EE。JBuilder環(huán)境開發(fā)程序方便,它是純的Java 開發(fā)環(huán)境,適合企業(yè)的J2EE開發(fā);缺點是往往一開始人們難于把握整個程序各部分之間的關(guān)系,對機(jī)器的硬件要求較高,比較吃內(nèi)存,這時運(yùn)行速度顯得較慢。[13]</p><p>  3.3 總體程序流程圖3-1</p><p>  圖3-1基于Java的標(biāo)準(zhǔn)型計算器程序流程圖</p><p

80、><b>  3.4 制作與調(diào)試</b></p><p>  3.4.1 基本思路</p><p>  本次設(shè)計是標(biāo)準(zhǔn)型計算器開發(fā),第一步初始化設(shè)計出計算器的基本界面,首先需要建Button、Panel、TestField,還需要將各個組件分別加入到addActionListener()方法中向事件源注冊。</p><p>  在順利完成

81、這部分程序初步完成后,就開始設(shè)計最重要的計算處理部分。這部分程序的編寫public void actionPerformed(ActionEvent e),這部分程序的最大難點就是如何獲取TestField中的結(jié)果和記憶功能,尤其是按鍵監(jiān)聽這部分,必須很好的與接收程序連接起來。考慮到按鍵的作用就是通過點擊按鍵,有2中方法。一種是設(shè)置監(jiān)聽一種是MouseListener接口,我們選擇的事第一種方法。</p><p>

82、;  最后反復(fù)調(diào)試,修改程序錯誤以及不足的地方。在允許的情況下優(yōu)化界面,添加一些其他功能。</p><p>  3.4.2 關(guān)鍵代碼分析</p><p><b>  1、Frame類</b></p><p>  Frame類用于定義整個計算器應(yīng)用程序所需的框架,同時創(chuàng)建了框架的標(biāo)題是“標(biāo)準(zhǔn)計算器”。并且定義了框架的大小尺寸和位置所在以及背景顏色

83、。</p><p>  Frame f=new Frame("標(biāo)準(zhǔn)計算器");</p><p>  f.setSize(260,190);//大小尺寸</p><p>  f.setLocation(500,320); //位置</p><p>  f.setLayout(new BorderLayout()); <

84、;/p><p>  2、TextField類和Panel類</p><p>  TextField類是處理單行文本的,用于顯示計算的結(jié)果。文本組件加入到框架中。并設(shè)置了文本組件顯示的最大長度為30個字符。背景顏色白色。</p><p>  t1=new TextField(30);//設(shè)置t1的長度</p><p>  t1.setEditabl

85、e(false);</p><p>  t1.setBackground(Color.WHITE);//設(shè)置顏色</p><p>  Panel類表示的也是組件。Panel1組件加入到框架Frame中。其它的Panel2、Panel3組件加入到Panel1中。同時也明確了p2、p3所在的方位是北和中。</p><p>  p1=new Panel(new Borde

86、rLayout());//新建一個組件Panel</p><p>  f.add(p1,BorderLayout.SOUTH);//p1所在位置南</p><p>  p1.add(p2,BorderLayout.NORTH);//p2所在的位置為北</p><p>  p1.add(p3,BorderLayout.CENTER);//p3所在位置為中</p&

87、gt;<p>  //其它的Button組件加入到p2和p3中去。</p><p>  p2=new Panel(new FlowLayout(FlowLayout.RIGHT));</p><p>  p2.add(t2);//把添t2加到p2中</p><p>  p3=new Panel(new GridLayout(4,6,2,2));<

88、/p><p>  // GridLayout(4,6,2,2)表示 行數(shù)、列數(shù)、水平和垂直間隔的設(shè)置</p><p>  p3.add(b14);</p><p><b>  3、運(yùn)算處理</b></p><p>  計算器軟件的主體部分主要事運(yùn)算的處理。用到了addActionListener類和ActionEvent類

89、。首先addActionListener類是按鍵監(jiān)聽。</p><p>  a0.addActionListener(this);//a0加入監(jiān)聽 </p><p>  通過if else語句判斷輸入。通過e.getSource()獲取事件。</p><p>  if(e.getSource()==a7)//判斷是否等于a7(a7=7)</p><

90、;p>  { if(push==0.)//判斷是否有健按下</p><p>  t1.setText(e.getActionCommand());</p><p><b>  else</b></p><p>  t1.setText(t1.getText()+e.getActionCommand());</p><p

91、><b>  push=1;}</b></p><p><b>  4、記憶功能</b></p><p>  如果按下的鍵是M+或者M(jìn)s的話加入記憶,存取記憶的數(shù)值為cur,存取記憶的標(biāo)志為Ms,并且在t2文本框顯示字符M。如果按鍵為Mc則記憶清零。</p><p>  if(e.getSource()==b16||

92、e.getSource()==b17)//判斷輸入為M+或Ms</p><p><b>  {</b></p><p>  t2.setText("M");//在t2顯示框上顯示M</p><p>  cur=Double.parseDouble(t1.getText());//把記憶數(shù)值記入cur</p>&

93、lt;p>  Ms=1;//標(biāo)識Ms=1說明有記憶值</p><p><b>  }</b></p><p>  if(e.getSource()==b15)//判斷如果輸入為MR</p><p>  {if(Ms==1)//二次判斷是有記憶標(biāo)記,如果Ms=1則如下</p><p>  t1.setText(Dou

94、ble.toString(cur));//在顯示框t1顯示記憶數(shù)值</p><p><b>  else</b></p><p>  t1.setText("0.");</p><p><b>  }</b></p><p>  if(e.getSource()==b14)//如

95、果輸入為MC</p><p><b>  {</b></p><p>  t2.setText(" ");//t2顯示框上空白</p><p>  Ms=0;//記憶標(biāo)識為0,無記憶</p><p><b>  }</b></p><p><b>

96、;  5、計算程序</b></p><p>  分多種計算的情況進(jìn)行分類。如果按下的事=鍵。則之前按下的運(yùn)算鍵有8種分類。分別是case0~case7這8種情況。</p><p>  if(e.getSource()==b12)//如果輸入為b12(b12為=符號)</p><p>  { second=Double.parseDouble(t1.get

97、Text());//把第二次輸入的數(shù)存在second中</p><p>  if(num==0)//如果是第一次運(yùn)算</p><p>  m=second;//把第二次的數(shù)值給m中間量</p><p>  num=1;//標(biāo)示已經(jīng)經(jīng)過一次計算</p><p>  switch(flag)//flag標(biāo)示輸入運(yùn)算符的代碼</p>

98、<p>  { case 1: result=first+second;//加法運(yùn)算</p><p>  first=m;//把m的數(shù)值給first</p><p>  t1.setText(String.valueOf(result));//輸出顯示</p><p><b>  break;</b></p><p

99、><b>  4 運(yùn)行結(jié)果分析</b></p><p><b>  4.1 運(yùn)行情況</b></p><p>  1、用JBuilder2005編譯連接運(yùn)行Run。如圖4-1所示。</p><p>  圖4-1 運(yùn)行程序</p><p>  2、主要是參考了電腦的計算器進(jìn)行排版</p&

100、gt;<p>  圖4-2 電腦標(biāo)準(zhǔn)計算器界面對比</p><p>  3、經(jīng)過編譯運(yùn)行的計算器小程序顯示如下,如圖4-3所示。</p><p>  圖4-3 計算器界面</p><p>  4、之后就可以順利運(yùn)行了,運(yùn)行結(jié)果如圖4-4所示。</p><p>  圖4-4 運(yùn)算12+12的結(jié)果顯示</p>&

101、lt;p>  5、完成的計算機(jī)難道較大的部分記憶功能,運(yùn)行結(jié)果如圖4-5所示。其主要是通過定義一個Ms來標(biāo)識,用cur來存記憶的數(shù)值。</p><p>  圖4-5 12*12記憶結(jié)果通過MR調(diào)出運(yùn)算結(jié)果</p><p>  6、當(dāng)用戶輸入錯誤運(yùn)算時,程序提醒用戶,運(yùn)行結(jié)果如圖4-6所示。</p><p>  圖4-5 計算12/0結(jié)果提示被除數(shù)不能為0&

102、lt;/p><p>  7、運(yùn)算結(jié)束后,點界面右上角的叉,退出程序。</p><p>  4.2 有待于開發(fā)的地方</p><p>  經(jīng)過測試,在本程序的基礎(chǔ)還可以做出如下改進(jìn):</p><p>  1、進(jìn)一步美化界面。用Jbutton代替Button設(shè)置按鍵的大小顏色間距等。</p><p>  2、進(jìn)一步完善程序,可

103、以實現(xiàn)連續(xù)運(yùn)算。</p><p>  3、進(jìn)一步完善程序,把TextField改成TextArea一行結(jié)果變多行結(jié)果記錄。</p><p>  4、增加組選擇框功能。</p><p><b>  5 結(jié)論</b></p><p>  本次設(shè)計認(rèn)真按照要求,對Java語言有了初步認(rèn)識并且更加熟悉的使用Jbuilder開發(fā)工

104、具編程,在了解Java的內(nèi)容以及熟悉面向?qū)ο笙嚓P(guān)技術(shù)之后,又進(jìn)一步對組件事件處理和GUI布局管理器進(jìn)行了解,在準(zhǔn)備工作完成之后,就開始設(shè)計Java計算器的編程方案。隨著社會的進(jìn)步,科學(xué)的發(fā)展,計算器的使用經(jīng)歷了小編程容量計算器向較大編程容量計算器普及的過程。在這期間,又有不斷的升級換代,功能更加強(qiáng)勁。但編程的基本原理還是大同小易,目的都是為生產(chǎn)建設(shè)提供方便的服務(wù)。</p><p>  基于Java的標(biāo)準(zhǔn)型計算器設(shè)

105、計旨在熟悉使用Java語言,并且運(yùn)用于實踐。目前計算器運(yùn)用領(lǐng)域非常廣泛。然而在編寫Java計算器的時候還有很多地方存在著缺陷,主要的都體現(xiàn)在功能的完善和界面的美化上面,具體的如下:</p><p>  1、可以把TextField單行文本框改成多行,一目了然。</p><p>  2、沒有把連續(xù)的運(yùn)算加進(jìn)去。</p><p>  3、界面太小可以適當(dāng)?shù)姆糯蠼缑妗?l

106、t;/p><p>  當(dāng)然,本次設(shè)計還存在其他的一些不足之處。通過這次的設(shè)計,讓我對JAVA計算器有了更深一步的了解,也對組件事件處理和GUI布局管理有了比較全面的認(rèn)識。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 顧孝烈,程效軍.fx-4850p計算器土木工程測量計算程序開發(fā)與應(yīng)用[M].同濟(jì)大學(xué)出版社,2007,1

107、. </p><p>  [2] 劉婭. 表達(dá)式計算器的設(shè)計[J]. 電腦編程技巧與維護(hù),2008,(01):27~29.</p><p>  [3] http://baike.baidu.com/view/993516.htm [EB/OL]</p><p>  [4] http://baike.baidu.com/view/4414875.htm [EB/OL

108、]</p><p>  [5] 皮德常.Java2簡明教程 [M].清華大學(xué)出版社.2006.7</p><p>  [6] 劉永華.Java網(wǎng)絡(luò)編程技術(shù)[M].清華大學(xué)出版社.2008.5</p><p>  [7] Mark A. White. Financial analysis with an electronic calculator [M].McGraw

109、-Hill Companies, Inc.2007</p><p>  [8] 陳雄華, 涂傳濱等. 精通JBuilder 2005[M]. 電子工業(yè)出版社,2005.6</p><p>  [9] 汪強(qiáng).計算機(jī)應(yīng)用基礎(chǔ)[M]. 中國人民大學(xué)出版社. 2010.1</p><p>  [10] 四維科技. JBuilder編程技術(shù)與實例[M]. 人民郵電出版社,20

110、06.</p><p>  [11]Y. Daniel Liang. Introduction to Java Programming[monograph][M]. Prentice Hall,2005.</p><p>  [12] 戚汝鵬. JBuilder 2005開發(fā)實例完全剖析[M]. 中國電力出版社

111、,2006.</p><p>  [13] 楊建武,李蓉. 基于編譯原理的表達(dá)式計算器設(shè)計[J]. 現(xiàn)代計算機(jī)(專業(yè)版),2009,(07):151~153.</p><p>  附錄1 主要源程序代碼</p><p>  import java.awt.*;</p><p>  import java.awt.event.*;</p

112、><p>  public class Calculator implements ActionListener</p><p><b>  {</b></p><p>  Panel p1,p2,p3;</p><p>  TextField t1,t2;</p><p>  Button b1,b

113、2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17;</p><p>  Button a0,a1,a2,a3,a4,a5,a6,a7,a8,a9; //數(shù)字0-9</p><p>  int Ms=0;//標(biāo)識M+,Ms</p><p>  int flag=0;//運(yùn)算符標(biāo)識</p><

114、;p>  int num=0;//實現(xiàn)連續(xù)運(yùn)算</p><p>  double m=0;//實現(xiàn)連續(xù)運(yùn)算</p><p>  double k=0;//實現(xiàn)負(fù)號</p><p>  double cur=0;//保存記憶的值</p><p>  double k1;//Backspace</p><p>  d

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論