基于java的小型計(jì)算器課程設(shè)計(jì)_第1頁
已閱讀1頁,還剩16頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論