版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 課程設計報告</b></p><p> 題 目: 基于JAVA計算器小軟件設計 </p><p> 學生姓名: </p><p> 學生學號:
2、 </p><p> 系 別: 電氣信息工程學院 </p><p> 專 業(yè): 電子信息科學與技術(shù) </p><p> 屆 別:
3、 </p><p> 指導教師: </p><p><b> 2012年5月</b></p><p> 基于JAVA計算器小軟件設計</p><p> 1 課程設計的任務及要求</p><p&g
4、t; 1.1課程設計的任務</p><p> ?。?)掌握JAVA語言。</p><p> ?。?)創(chuàng)建一個簡單的計算器,具有簡單人機交互界面,易于操作,便于進行 </p><p> 數(shù)據(jù)之間的簡單運算。</p><p> ?。?)設計要完成設計、編碼、測試等過程。</p><p> 1.2 課程設計的要求&l
5、t;/p><p> ?。?) 能夠?qū)崿F(xiàn)簡單的加、減、乘、除四則運算。</p><p> (2) 運算結(jié)果能夠正常顯示,并能夠清零。</p><p> (3)實數(shù)運算中小數(shù)位的精度一致。</p><p> 1.3 課程設計的研究基礎及主要設計思想</p><p> 對于此計算器程序,首先要設計其GUI界面,總體界面有
6、一個文本框,19個按鈕,總體界面用GridBagLayout布局。</p><p> 文本框放置在JTextField,然后0到9以及+,-,×,÷的按鈕放置一個面板container中,添加到整體布局中,界面設計完成。</p><p> 布局設計好后再添加按鈕事件。對于此程序要考慮到點擊加、減、乘、除按鈕時是否有點擊數(shù)字按鈕,如果是第一次點擊數(shù)字按鈕或者是點擊數(shù)
7、字按鈕前點擊了加、減、乘、除按鈕則直接把數(shù)字按鈕的數(shù)值設置到文本框中,否則則應把文本框中的內(nèi)容加上你所點擊按鈕的數(shù)值設置到文本框中。</p><p> 在進行加、減、乘、除計算時要把點擊加、減、乘、除按鈕之前的數(shù)值保存下來,運算時是這個被保存下來的數(shù)值和文本框中的數(shù)值加、減、乘、除。</p><p><b> 2 總體方案制定</b></p><
8、;p><b> 2.1需求分析</b></p><p> 日常生活中經(jīng)常需要用到計算器,比如科學計算、數(shù)值計算、會計業(yè)務等,在Applet中實現(xiàn)一個精巧實用的計算器,可以讓用戶在使用網(wǎng)站服務的同時,可以很方便的驚醒數(shù)據(jù)運算,可增加頁面的實用性,同時讓用戶的操作也更加方便月快捷。</p><p> 本項目需要實現(xiàn)一個具有四則運算的小型計算器,擁有加,減,乘,
9、除功能。</p><p><b> 2.2 總體設計</b></p><p><b> (1)界面設計</b></p><p> 界面設計要求用GUI,界面設計中有用到swing組件的JTextField,用到awt中的GridLayout布局管理方式,窗體名稱Conclutor繼承JFrame類,Insert
10、Action實現(xiàn)ActionListener一個接口,并實現(xiàn)public void actionPerformed(ActionEvent e){}方法。定義菜單、菜單條、菜單項、按鈕、文本框、容器,設置為private類型。定義變量double result;//使用內(nèi)存中存儲的數(shù)字和結(jié)果;JTextField resultfield;//顯示計算結(jié)果。使用private void addButton()方法添加按鈕
11、并給按鈕命名;其圖形界面如下圖(1):</p><p><b> 圖1:圖形界面</b></p><p><b> (2)功能介紹</b></p><p> 這是計算器中的一種:簡單計算器,本項目用到了Java中的GUI界面和swing組件以及awt布局,所以簡單易用,它能完成如下的幾個小功能:</p>
12、;<p> 點擊按鈕中的數(shù)字鍵和運算符鍵就能進行簡單的加、減、乘、除求模四則運算 ;</p><p> 還能通過用戶自己在文本框中輸入數(shù)字,進行簡單運算;如果輸入有誤時可以按BackSpace撤銷后重新輸入新數(shù)據(jù)也可以通過CE清除所有數(shù)據(jù)。</p><p><b> 3 詳細方案設計</b></p><p> 3.1 設
13、計所需的環(huán)境及軟件介紹</p><p> ?。?)JDK(Java Development Kit)是Sun Microsystems針對Java開發(fā)員的產(chǎn)品。JDK是整個Java的核心,包括了Java運行環(huán)境、Java工具和Java基礎類庫。 </p><p> ?。?)本次設計使用Eclipe開發(fā)平臺。Eclipse 是一個開放源代碼的、基于Java的可擴展開發(fā)平臺。就其本身而言,它
14、只是一個框架和一組服務, 用于通過插件組建構(gòu)建開發(fā)環(huán)境。</p><p> 3.2 程序流程圖如下:</p><p> 圖(2):程序設計流程圖</p><p> 3.3 部分代碼說明</p><p> ?。?)程序的主框架設計代碼:</p><p> private Container container;
15、</p><p> private GridBagLayout layout;</p><p> private GridBagConstraints constraints;</p><p> private JTextField resultfield;// 計算結(jié)果顯示區(qū)</p><p> private String last
16、Command;// 保存+,-,×,÷,=命令</p><p> private double result;// 保存計算結(jié)果</p><p> private boolean start;// 判斷是否為數(shù)字的開始</p><p> public Conclutor() {</p><p> //創(chuàng)建和定義計
17、算器的圖形界面;</p><p> setTitle("計算器");</p><p> setSize(300, 500);</p><p> setVisible(true);</p><p> container = getContentPane();</p><p> layout
18、= new GridBagLayout();</p><p> container.setLayout(layout);</p><p> constraints = new GridBagConstraints();</p><p> constraints.gridx = 0;</p><p> constraints.gridy
19、 = 0;</p><p> constraints.gridwidth = 4;</p><p> constraints.gridheight = 1;</p><p> constraints.fill = GridBagConstraints.BOTH;</p><p> constraints.weightx = 300;&
20、lt;/p><p> constraints.weighty = 300;</p><p> resultfield = new JTextField(19);</p><p> resultfield.setHorizontalAlignment(JTextField.RIGHT);</p><p> start = true;<
21、/p><p> result = 0;</p><p> lastCommand = "=";</p><p> layout.setConstraints(resultfield, constraints);</p><p> container.add(resultfield);</p><p&
22、gt; ?。?)增加數(shù)字按鈕以及符號按鈕并對按鈕進行監(jiān)聽的代碼:</p><p> ActionListener insert = new InsertAction();</p><p> ActionListener command = new CommandAction();</p><p> addButton("Backspace"
23、, 0, 1, 2, 1, insert);</p><p> addButton("CE", 2, 1, 2, 1, insert);</p><p> addButton("7", 0, 2, 1, 1, insert);</p><p> addButton("8", 1, 2, 1, 1, i
24、nsert);</p><p> addButton("9", 2, 2, 1, 1, insert);</p><p> addButton("÷", 3, 2, 1, 1, command);</p><p> addButton("4", 0, 3, 1, 1, insert);<
25、;/p><p> addButton("5", 1, 3, 1, 1, insert);</p><p> addButton("6", 2, 3, 1, 1, insert);</p><p> addButton("×", 3, 3, 1, 1, command);</p>&
26、lt;p> addButton("1", 0, 4, 1, 1, insert);</p><p> addButton("2", 1, 4, 1, 1, insert);</p><p> addButton("3", 2, 4, 1, 1, insert);</p><p> addBut
27、ton("-", 3, 4, 1, 1, command);</p><p> addButton(".", 0, 5, 1, 1, insert);</p><p> addButton("+/-", 2, 5, 1, 1, insert); // 實現(xiàn)負數(shù)輸入</p><p> addBut
28、ton("0",1, 5, 1, 1, insert);</p><p> addButton("+", 3, 5, 1, 1, command);</p><p> addButton("=", 0, 6, 4, 1, command);</p><p> ?。?)程序運算過程的設計代碼 :</
29、p><p> private class InsertAction implements ActionListener {</p><p> public void actionPerformed(ActionEvent event) {</p><p> String input = event.getActionCommand();</p>&l
30、t;p> if (start) {</p><p> resultfield.setText("");</p><p> start = false;</p><p> if (input.equals("+/-")){</p><p> //if(displayField.g
31、etText().charAt(0)!='-'){</p><p> resultfield.setText( "-" + resultfield.getText() );</p><p><b> }</b></p><p> //}else {</p><p>
32、//displayField.setText(displayField.getText().substring(1));</p><p> //return;</p><p><b> //}</b></p><p><b> }</b></p><p> if (!
33、input.equals("+/-")) {</p><p> if (input.equals("Backspace")) {</p><p> String str = resultfield.getText();</p><p> if (str.length() > 0)</p><p&
34、gt; resultfield</p><p> .setText(str.substring(0, str.length() - 1));</p><p> } else if (input.equals("CE")) {</p><p> resultfield.setText("0");</p>&
35、lt;p> start = true;</p><p><b> } else</b></p><p> resultfield.setText(resultfield.getText() + input);</p><p><b> }</b></p><p><b>
36、}</b></p><p><b> }</b></p><p> private class CommandAction implements ActionListener {</p><p> public void actionPerformed(ActionEvent evt) {</p><p&g
37、t; String command = evt.getActionCommand();</p><p> if (start) {</p><p> lastCommand = command;</p><p><b> } else {</b></p><p> calculate(Double.parseD
38、ouble(resultfield.getText()));</p><p> lastCommand = command;</p><p> start = true;</p><p><b> }</b></p><p><b> }</b></p><p>&l
39、t;b> }</b></p><p> public void calculate(double x) {</p><p> if (lastCommand.equals("+"))</p><p> result += x;</p><p> else if (lastCommand.equa
40、ls("-"))</p><p> result -= x;</p><p> else if (lastCommand.equals("×"))</p><p> result *= x;</p><p> else if (lastCommand.equals("
41、7;"))</p><p> result /= x;</p><p> else if (lastCommand.equals("="))</p><p> result = x;</p><p> resultfield.setText("" + result);</p>
42、;<p><b> }</b></p><p> ?。?)計算器入口程序設計代碼:</p><p> public static void main(String[] args) {</p><p> Conclutor calculator = new Conclutor();</p><p>
43、 calculator.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);</p><p><b> }</b></p><p> 4 程序的調(diào)試與運行結(jié)果說明</p><p> 示例1 當乘數(shù)為0時的運行結(jié)果如下圖(3)所示:</p><p><b> 圖(
44、3)</b></p><p> 示例2:43.6+23.4 預計結(jié)果 67.0 實際結(jié)果如下圖(4)所示:</p><p><b> 圖(4)</b></p><p> 示例3: 189/4 預計結(jié)果47.25 實際結(jié)果如下圖(5)所示:</p><p><b> 圖(5)<
45、;/b></p><p> 示例4: 11-88 預計結(jié)果-77.0 實際結(jié)果如下圖(6)所示:</p><p><b> 圖(6)</b></p><p> 示例5: -8*6 預計結(jié)果 -48.0 實際結(jié)果如下圖(7)所示:</p><p><b> 圖(7)</b></
46、p><p> 示例 6:當除數(shù)為0時的運行結(jié)果如下圖(8)所示:</p><p><b> 圖(8)</b></p><p><b> 5 設計總結(jié)</b></p><p> 通過此次的課程設計實踐,我們不但進一步理解掌握了課上老師教授的知識,而且通過查找資料學會了課上沒有的東西,進一步理解了面
47、向?qū)ο蟮暮x,發(fā)現(xiàn)了很多它比面向過程突出的地方,第一次接觸了圖形界面,初步了解了GUI方面的知識。</p><p> 這次課程設計,我們按照課程設計的要求,。在實踐中我遇到許多的問題,但我們都克服,最終我成功的完成了這次課程設計。從中我充分理解了Java面對對象的特性,并體會到Java與C語言的不同之處。</p><p> 在實踐的同時,我又從中成長了許多,特別是在對程序的編譯和調(diào)試中
48、掌握了許多的技巧和方法,為今后的其他計算機語言的學習奠定了一定的基礎。</p><p> 通過編寫這個相對復雜的程序,我們認識解決實際問題前應先建立模型,再通過建立的模型使問題簡單化,從而解決問題。這次編寫的程序大部分是通過調(diào)用各包中的方法來實現(xiàn)的,這也讓我充分理解了包和類調(diào)用的關(guān)系。由于這次編寫的程序相對比較復雜,所以不能一次性編寫、調(diào)試,也由此讓我學會把程序分塊,逐個編寫、調(diào)試。</p>&l
49、t;p><b> 6 參考文獻</b></p><p> [1] 王鵬,零基礎學Java[M],機械工業(yè)出版社,2008-1-1.</p><p> [2] 王鵬,何昀峰.Java Swing圖形界面開發(fā)案例詳解[M],清華大學出版社,2008-12-01.</p><p><b> 7 附錄</b><
50、/p><p> package cn.hn.school;</p><p> import java.awt.*;</p><p> import java.awt.event.*;</p><p> import javax.swing.*;</p><p> public class Conclutor ex
51、tends JFrame {</p><p> private Container container;</p><p> private GridBagLayout layout;</p><p> private GridBagConstraints constraints;</p><p> private JTextField
52、 resultfield;// 計算結(jié)果顯示區(qū)</p><p> private String lastCommand;// 保存+,-,×,÷,=命令</p><p> private double result;// 保存計算結(jié)果</p><p> private boolean start;// 判斷是否為數(shù)字的開始</p>
53、;<p> public Conclutor() {</p><p> //創(chuàng)建和定義計算器的圖形界面;</p><p> setTitle("計算器");</p><p> setSize(300, 500);</p><p> setVisible(true);</p><p
54、> container = getContentPane();</p><p> layout = new GridBagLayout();</p><p> container.setLayout(layout);</p><p> constraints = new GridBagConstraints();</p><p>
55、; constraints.gridx = 0;</p><p> constraints.gridy = 0;</p><p> constraints.gridwidth = 4;</p><p> constraints.gridheight = 1;</p><p> constraints.fill = GridBagCo
56、nstraints.BOTH;</p><p> constraints.weightx = 300;</p><p> constraints.weighty = 300;</p><p> resultfield = new JTextField(19);</p><p> resultfield.setHorizontalAli
57、gnment(JTextField.RIGHT);</p><p> start = true;</p><p> result = 0;</p><p> lastCommand = "=";</p><p> layout.setConstraints(resultfield, constraints);<
58、;/p><p> container.add(resultfield);</p><p> //增加計算器的按鈕</p><p><b> /**</b></p><p> * 調(diào)用監(jiān)聽輸入操作的命令;</p><p> * insert 表示輸入字符;</p><p
59、> * command 表示輸入符號 </p><p><b> */</b></p><p> ActionListener insert = new InsertAction();</p><p> ActionListener command = new CommandAction();</p><p&g
60、t; addButton("Backspace", 0, 1, 2, 1, insert);</p><p> addButton("CE", 2, 1, 2, 1, insert);</p><p> addButton("7", 0, 2, 1, 1, insert);</p><p> add
61、Button("8", 1, 2, 1, 1, insert);</p><p> addButton("9", 2, 2, 1, 1, insert);</p><p> addButton("÷", 3, 2, 1, 1, command);</p><p> addButton(&qu
62、ot;4", 0, 3, 1, 1, insert);</p><p> addButton("5", 1, 3, 1, 1, insert);</p><p> addButton("6", 2, 3, 1, 1, insert);</p><p> addButton("×",
63、 3, 3, 1, 1, command);</p><p> addButton("1", 0, 4, 1, 1, insert);</p><p> addButton("2", 1, 4, 1, 1, insert);</p><p> addButton("3", 2, 4, 1, 1, in
64、sert);</p><p> addButton("-", 3, 4, 1, 1, command);</p><p> addButton(".", 0, 5, 1, 1, insert);</p><p> addButton("+/-", 2, 5, 1, 1, insert); //
65、實現(xiàn)負數(shù)輸入</p><p> addButton("0",1, 5, 1, 1, insert);</p><p> addButton("+", 3, 5, 1, 1, command);</p><p> addButton("=", 0, 6, 4, 1, command);</p>
66、;<p> this.setResizable(false);</p><p><b> }</b></p><p> private void addButton(String label, int row, int column, int with,</p><p> int height, ActionListene
67、r listener) {</p><p> JButton button = new JButton(label);</p><p> constraints.gridwidth = with;</p><p> constraints.gridheight = height;</p><p> constraints.gridx
68、= row;</p><p> constraints.gridy = column;</p><p> constraints.fill = GridBagConstraints.BOTH;</p><p> button.addActionListener(listener);</p><p> layout.setConstra
69、ints(button, constraints);</p><p> container.add(button);</p><p><b> }</b></p><p> public static void main(String[] args) {</p><p> Conclutor calculator
70、 = new Conclutor();</p><p> calculator.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);</p><p><b> }</b></p><p> // 實現(xiàn)ActionListener這樣一個監(jiān)聽器接口 </p><p> pr
71、ivate class InsertAction implements ActionListener {</p><p> public void actionPerformed(ActionEvent event) {</p><p> String input = event.getActionCommand();</p><p> if (start)
72、{</p><p> resultfield.setText("");</p><p> start = false;</p><p> if (input.equals("+/-")){</p><p> //if(displayField.getText().charAt(0)!=
73、'-'){</p><p> resultfield.setText( "-" + resultfield.getText() );</p><p><b> }</b></p><p> //}else {</p><p> //displayField.s
74、etText(displayField.getText().substring(1));</p><p> //return;</p><p><b> //}</b></p><p><b> }</b></p><p> if (!input.equals("+
75、/-")) {</p><p> if (input.equals("Backspace")) {</p><p> String str = resultfield.getText();</p><p> if (str.length() > 0)</p><p> resultfield<
76、/p><p> .setText(str.substring(0, str.length() - 1));</p><p> } else if (input.equals("CE")) {</p><p> resultfield.setText("0");</p><p> start = tr
77、ue;</p><p><b> } else</b></p><p> resultfield.setText(resultfield.getText() + input);</p><p><b> }</b></p><p><b> }</b></p>
78、;<p><b> }</b></p><p> private class CommandAction implements ActionListener {</p><p> public void actionPerformed(ActionEvent evt) {</p><p> String command =
79、 evt.getActionCommand();</p><p> if (start) {</p><p> lastCommand = command;</p><p><b> } else {</b></p><p> calculate(Double.parseDouble(resultfield.ge
80、tText()));</p><p> lastCommand = command;</p><p> start = true;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b>
81、</p><p> public void calculate(double x) {</p><p> if (lastCommand.equals("+"))</p><p> result += x;</p><p> else if (lastCommand.equals("-"))&l
82、t;/p><p> result -= x;</p><p> else if (lastCommand.equals("×"))</p><p> result *= x;</p><p> else if (lastCommand.equals("÷"))</p>
83、<p> result /= x;</p><p> else if (lastCommand.equals("="))</p><p> result = x;</p><p> resultfield.setText("" + result);</p><p><b>
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- java課程設計---java計算器
- 計算器java課程設計--簡單計算器
- java課程設計---計算器
- java課程設計—計算器
- java課程設計計算器
- java計算器課程設計
- java課程設計--計算器
- java課程設計計算器
- java_計算器課程設計
- java課程設計-計算器系統(tǒng)
- java課程設計---科學計算器
- java課程設計報告—計算器
- java課程設計----簡易計算器
- java計算器課程設計-- 計算器的設計與實現(xiàn)
- java實現(xiàn)計算器課程設計
- java課程設計-計算器系統(tǒng)
- java計算器課程設計報告
- java計算器課程設計報告---模擬科學計算器
- 基于javajdk的簡易計算器java課程設計
- java計算器課程設計---計算器模擬程序
評論
0/150
提交評論