版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 課程設(shè)計(jì)報告</b></p><p> 題 目: 基于JAVA計(jì)算器小軟件設(shè)計(jì) </p><p> 學(xué)生姓名: </p><p> 學(xué)生學(xué)號:
2、 </p><p> 系 別: 電氣信息工程學(xué)院 </p><p> 專 業(yè): 電子信息科學(xué)與技術(shù) </p><p> 屆 別:
3、 </p><p> 指導(dǎo)教師: </p><p><b> 2012年5月</b></p><p> 基于JAVA計(jì)算器小軟件設(shè)計(jì)</p><p> 1 課程設(shè)計(jì)的任務(wù)及要求</p><p&g
4、t; 1.1課程設(shè)計(jì)的任務(wù)</p><p> ?。?)掌握J(rèn)AVA語言。</p><p> ?。?)創(chuàng)建一個簡單的計(jì)算器,具有簡單人機(jī)交互界面,易于操作,便于進(jìn)行 </p><p> 數(shù)據(jù)之間的簡單運(yùn)算。</p><p> ?。?)設(shè)計(jì)要完成設(shè)計(jì)、編碼、測試等過程。</p><p> 1.2 課程設(shè)計(jì)的要求&l
5、t;/p><p> (1) 能夠?qū)崿F(xiàn)簡單的加、減、乘、除四則運(yùn)算。</p><p> ?。?) 運(yùn)算結(jié)果能夠正常顯示,并能夠清零。</p><p> ?。?)實(shí)數(shù)運(yùn)算中小數(shù)位的精度一致。</p><p> 1.3 課程設(shè)計(jì)的研究基礎(chǔ)及主要設(shè)計(jì)思想</p><p> 對于此計(jì)算器程序,首先要設(shè)計(jì)其GUI界面,總體界面有
6、一個文本框,19個按鈕,總體界面用GridBagLayout布局。</p><p> 文本框放置在JTextField,然后0到9以及+,-,×,÷的按鈕放置一個面板container中,添加到整體布局中,界面設(shè)計(jì)完成。</p><p> 布局設(shè)計(jì)好后再添加按鈕事件。對于此程序要考慮到點(diǎn)擊加、減、乘、除按鈕時是否有點(diǎn)擊數(shù)字按鈕,如果是第一次點(diǎn)擊數(shù)字按鈕或者是點(diǎn)擊數(shù)
7、字按鈕前點(diǎn)擊了加、減、乘、除按鈕則直接把數(shù)字按鈕的數(shù)值設(shè)置到文本框中,否則則應(yīng)把文本框中的內(nèi)容加上你所點(diǎn)擊按鈕的數(shù)值設(shè)置到文本框中。</p><p> 在進(jìn)行加、減、乘、除計(jì)算時要把點(diǎn)擊加、減、乘、除按鈕之前的數(shù)值保存下來,運(yùn)算時是這個被保存下來的數(shù)值和文本框中的數(shù)值加、減、乘、除。</p><p><b> 2 總體方案制定</b></p><
8、;p><b> 2.1需求分析</b></p><p> 日常生活中經(jīng)常需要用到計(jì)算器,比如科學(xué)計(jì)算、數(shù)值計(jì)算、會計(jì)業(yè)務(wù)等,在Applet中實(shí)現(xiàn)一個精巧實(shí)用的計(jì)算器,可以讓用戶在使用網(wǎng)站服務(wù)的同時,可以很方便的驚醒數(shù)據(jù)運(yùn)算,可增加頁面的實(shí)用性,同時讓用戶的操作也更加方便月快捷。</p><p> 本項(xiàng)目需要實(shí)現(xiàn)一個具有四則運(yùn)算的小型計(jì)算器,擁有加,減,乘,
9、除功能。</p><p><b> 2.2 總體設(shè)計(jì)</b></p><p><b> (1)界面設(shè)計(jì)</b></p><p> 界面設(shè)計(jì)要求用GUI,界面設(shè)計(jì)中有用到swing組件的JTextField,用到awt中的GridLayout布局管理方式,窗體名稱Conclutor繼承JFrame類,Insert
10、Action實(shí)現(xiàn)ActionListener一個接口,并實(shí)現(xiàn)public void actionPerformed(ActionEvent e){}方法。定義菜單、菜單條、菜單項(xiàng)、按鈕、文本框、容器,設(shè)置為private類型。定義變量double result;//使用內(nèi)存中存儲的數(shù)字和結(jié)果;JTextField resultfield;//顯示計(jì)算結(jié)果。使用private void addButton()方法添加按鈕
11、并給按鈕命名;其圖形界面如下圖(1):</p><p><b> 圖1:圖形界面</b></p><p><b> (2)功能介紹</b></p><p> 這是計(jì)算器中的一種:簡單計(jì)算器,本項(xiàng)目用到了Java中的GUI界面和swing組件以及awt布局,所以簡單易用,它能完成如下的幾個小功能:</p>
12、;<p> 點(diǎn)擊按鈕中的數(shù)字鍵和運(yùn)算符鍵就能進(jìn)行簡單的加、減、乘、除求模四則運(yùn)算 ;</p><p> 還能通過用戶自己在文本框中輸入數(shù)字,進(jìn)行簡單運(yùn)算;如果輸入有誤時可以按BackSpace撤銷后重新輸入新數(shù)據(jù)也可以通過CE清除所有數(shù)據(jù)。</p><p><b> 3 詳細(xì)方案設(shè)計(jì)</b></p><p> 3.1 設(shè)
13、計(jì)所需的環(huán)境及軟件介紹</p><p> (1)JDK(Java Development Kit)是Sun Microsystems針對Java開發(fā)員的產(chǎn)品。JDK是整個Java的核心,包括了Java運(yùn)行環(huán)境、Java工具和Java基礎(chǔ)類庫。 </p><p> ?。?)本次設(shè)計(jì)使用Eclipe開發(fā)平臺。Eclipse 是一個開放源代碼的、基于Java的可擴(kuò)展開發(fā)平臺。就其本身而言,它
14、只是一個框架和一組服務(wù), 用于通過插件組建構(gòu)建開發(fā)環(huán)境。</p><p> 3.2 程序流程圖如下:</p><p> 圖(2):程序設(shè)計(jì)流程圖</p><p> 3.3 部分代碼說明</p><p> ?。?)程序的主框架設(shè)計(jì)代碼:</p><p> private Container container;
15、</p><p> private GridBagLayout layout;</p><p> private GridBagConstraints constraints;</p><p> private JTextField resultfield;// 計(jì)算結(jié)果顯示區(qū)</p><p> private String last
16、Command;// 保存+,-,×,÷,=命令</p><p> private double result;// 保存計(jì)算結(jié)果</p><p> private boolean start;// 判斷是否為數(shù)字的開始</p><p> public Conclutor() {</p><p> //創(chuàng)建和定義計(jì)
17、算器的圖形界面;</p><p> setTitle("計(jì)算器");</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ù)字按鈕以及符號按鈕并對按鈕進(jìn)行監(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); // 實(shí)現(xiàn)負(fù)數(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> ?。?)程序運(yùn)算過程的設(shè)計(jì)代碼 :</
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> (4)計(jì)算器入口程序設(shè)計(jì)代碼:</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)試與運(yùn)行結(jié)果說明</p><p> 示例1 當(dāng)乘數(shù)為0時的運(yùn)行結(jié)果如下圖(3)所示:</p><p><b> 圖(
44、3)</b></p><p> 示例2:43.6+23.4 預(yù)計(jì)結(jié)果 67.0 實(shí)際結(jié)果如下圖(4)所示:</p><p><b> 圖(4)</b></p><p> 示例3: 189/4 預(yù)計(jì)結(jié)果47.25 實(shí)際結(jié)果如下圖(5)所示:</p><p><b> 圖(5)<
45、;/b></p><p> 示例4: 11-88 預(yù)計(jì)結(jié)果-77.0 實(shí)際結(jié)果如下圖(6)所示:</p><p><b> 圖(6)</b></p><p> 示例5: -8*6 預(yù)計(jì)結(jié)果 -48.0 實(shí)際結(jié)果如下圖(7)所示:</p><p><b> 圖(7)</b></
46、p><p> 示例 6:當(dāng)除數(shù)為0時的運(yùn)行結(jié)果如下圖(8)所示:</p><p><b> 圖(8)</b></p><p><b> 5 設(shè)計(jì)總結(jié)</b></p><p> 通過此次的課程設(shè)計(jì)實(shí)踐,我們不但進(jìn)一步理解掌握了課上老師教授的知識,而且通過查找資料學(xué)會了課上沒有的東西,進(jìn)一步理解了面
47、向?qū)ο蟮暮x,發(fā)現(xiàn)了很多它比面向過程突出的地方,第一次接觸了圖形界面,初步了解了GUI方面的知識。</p><p> 這次課程設(shè)計(jì),我們按照課程設(shè)計(jì)的要求,。在實(shí)踐中我遇到許多的問題,但我們都克服,最終我成功的完成了這次課程設(shè)計(jì)。從中我充分理解了Java面對對象的特性,并體會到Java與C語言的不同之處。</p><p> 在實(shí)踐的同時,我又從中成長了許多,特別是在對程序的編譯和調(diào)試中
48、掌握了許多的技巧和方法,為今后的其他計(jì)算機(jī)語言的學(xué)習(xí)奠定了一定的基礎(chǔ)。</p><p> 通過編寫這個相對復(fù)雜的程序,我們認(rèn)識解決實(shí)際問題前應(yīng)先建立模型,再通過建立的模型使問題簡單化,從而解決問題。這次編寫的程序大部分是通過調(diào)用各包中的方法來實(shí)現(xiàn)的,這也讓我充分理解了包和類調(diào)用的關(guān)系。由于這次編寫的程序相對比較復(fù)雜,所以不能一次性編寫、調(diào)試,也由此讓我學(xué)會把程序分塊,逐個編寫、調(diào)試。</p>&l
49、t;p><b> 6 參考文獻(xiàn)</b></p><p> [1] 王鵬,零基礎(chǔ)學(xué)Java[M],機(jī)械工業(yè)出版社,2008-1-1.</p><p> [2] 王鵬,何昀峰.Java Swing圖形界面開發(fā)案例詳解[M],清華大學(xué)出版社,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;// 計(jì)算結(jié)果顯示區(qū)</p><p> private String lastCommand;// 保存+,-,×,÷,=命令</p><p> private double result;// 保存計(jì)算結(jié)果</p><p> private boolean start;// 判斷是否為數(shù)字的開始</p>
53、;<p> public Conclutor() {</p><p> //創(chuàng)建和定義計(jì)算器的圖形界面;</p><p> setTitle("計(jì)算器");</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> //增加計(jì)算器的按鈕</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、實(shí)現(xiàn)負(fù)數(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> // 實(shí)現(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)容里面會有圖紙預(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- java課程設(shè)計(jì)---java計(jì)算器
- 計(jì)算器java課程設(shè)計(jì)--簡單計(jì)算器
- java課程設(shè)計(jì)---計(jì)算器
- java課程設(shè)計(jì)—計(jì)算器
- java課程設(shè)計(jì)計(jì)算器
- java計(jì)算器課程設(shè)計(jì)
- java課程設(shè)計(jì)--計(jì)算器
- java課程設(shè)計(jì)計(jì)算器
- java_計(jì)算器課程設(shè)計(jì)
- java課程設(shè)計(jì)-計(jì)算器系統(tǒng)
- java課程設(shè)計(jì)---科學(xué)計(jì)算器
- java課程設(shè)計(jì)報告—計(jì)算器
- java課程設(shè)計(jì)----簡易計(jì)算器
- java計(jì)算器課程設(shè)計(jì)-- 計(jì)算器的設(shè)計(jì)與實(shí)現(xiàn)
- java實(shí)現(xiàn)計(jì)算器課程設(shè)計(jì)
- java課程設(shè)計(jì)-計(jì)算器系統(tǒng)
- java計(jì)算器課程設(shè)計(jì)報告
- java計(jì)算器課程設(shè)計(jì)報告---模擬科學(xué)計(jì)算器
- 基于javajdk的簡易計(jì)算器java課程設(shè)計(jì)
- java計(jì)算器課程設(shè)計(jì)---計(jì)算器模擬程序
評論
0/150
提交評論