java_計算器課程設計_第1頁
已閱讀1頁,還剩17頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  摘 要</b></p><p>  該程序是一個圖形界面的java計算器,其界面主要采用了swing包,利用eclipse工具并采用網格包布局開發(fā) 程序實現了:</p><p>  (1)實現簡單加、減、乘、除的運算。</p><p> ?。?)實現除了加、減、乘、除按鈕外其他按鈕功能。</p>&

2、lt;p> ?。?)在數據輸入方面,可以輸入負數</p><p> ?。?)可以取余數,開根號等運算</p><p> ?。?)實現了小數的算術運算</p><p>  關鍵字:java程序 網格包布局 面向對象 計算器</p><p><b>  目 錄</b></p><p>&l

3、t;b>  一、問題描述3</b></p><p><b>  1.1課設任務3</b></p><p><b>  1.2設計要求3</b></p><p><b>  二、分析與設計4</b></p><p><b>  2.1功能描述

4、4</b></p><p><b>  2.2算法思路4</b></p><p>  2.3程序流程圖5</p><p>  2.4程序預期結果6</p><p><b>  2.5模塊實現7</b></p><p>  三、源代碼選摘11</p&

5、gt;<p>  3.1 源代碼11</p><p><b>  四、總結16</b></p><p>  4.1設計體會16</p><p>  4.2設計中遇到的重點及難點16</p><p><b>  五、參考文獻17</b></p><p>

6、<b>  一、問題描述</b></p><p><b>  1.1課設任務:</b></p><p>  設計GUI界面的計算器程序,用戶可以通過鼠標依次輸入參加計算的數值,進行加、減、乘、除等混合運算。</p><p><b>  1.2設計要求</b></p><p> 

7、 設計的計算器應用程序可以完成加法、減法、乘法、除法、取余運算及開根號。且有小數點、正負號、退格和清零功能。</p><p>  課程設計可用Eclipse作為開發(fā)平臺以提高開發(fā)效率,通過資料查閱和學習盡可能熟練掌握</p><p>  保持代碼簡潔,復雜代碼寫后不易理解,在修改和重寫上難度比較大,使工作更加復雜,所以編寫代碼時應保持代碼的簡潔易懂。</p><p>

8、;  認真按時完成課程設計報告,課程設計報告內容包括:問題描述、分析與設計、源代碼選摘、總結、參考文獻五個部分。</p><p><b>  二、分析與設計</b></p><p><b>  2.1 功能描述:</b></p><p>  這是一個簡單的計算器,里面所涉及到的功能就是加、減、乘、除、開根號運算、等基本功能

9、。對于單運算操作要進一步判斷是否符合要求,如果是就進入下步計算,如果不是就彈出相應的提示: “負數不能開根號"; ";在進行開根號(√)運算時,如果輸入數為負數,則彈出"負數不能開根號",中止運算。對于加減乘除等雙運算操作,用lastCommand來判斷最后一個輸入的操作符是什么,是“+”就執(zhí)行加法,是“=”就計算結果。運用事件監(jiān)聽來監(jiān)聽按鈕事件。定義一個布爾值start來實現負號,初始置為tru

10、e,command=event.getActionCommand();來取得事件的值 ,當第一個操作符為“-”時顯示出來“-”, start置為false,這是不能輸入操作符了,只能輸入數字,輸入數字后,顯示出來,start置為true,這是又可以輸入操作符了。這樣就實現負號。</p><p><b>  2.2 算法思路:</b></p><p>  ⑴、本應用程序

11、繼承自框架類(JFrame),容器Container c采用GridLayout網格布局,將單行文本框加入到“North”區(qū)域,包含各種按鈕的面板JPanel panel加入到”Center”區(qū)域。包含各種按鈕的面板JPanel panel采用5行4列的網格布局,然后將數字按鈕和運算符按鈕以及控制按鈕添加到面板中同時注冊按鈕事件監(jiān)聽器。如:</p><p>  private void addButton(Str

12、ing label,ActionListener listener){</p><p>  JButton btn=new JButton(label);</p><p>  btn.addActionListener(listener); (事件監(jiān)聽器);</p><p>  panel.add(btn);</p><p><b>

13、;  }</b></p><p> ?、?、事件監(jiān)聽器中的事件處理方法void actionPerformed(ActionEvent event)完成主要的按鈕事件的處理。事件處理分以下幾種情況:操作數按鈕事件(”0”,”1”,”2”…”8”,”9”)、操作符按鈕事件(”+”,”-“,”*”,”/”,”%”)、正負號按鈕事件(”+/-“)、小數點按鈕事件(”.”)、等號按鈕事件(”=”)、退格按鈕事件

14、(”←”)、清除按鈕事件(“C”) 、以及求平方根(”√”) </p><p> ?。?)、計算器完成的是一個數學表達式,如:3+2,所以先輸入一個數字存儲,輸入操作符,利用循環(huán)再次輸入數字如:</p><p>  private void calcultor(double x) {</p><p>  // TODO 自動生成的方法存根</p>&l

15、t;p>  if(lastCommand.equals("+")) result+=x;</p><p>  else if(lastCommand.equals("-")) result -=x;</p><p>  else if(lastCommand.equals("*")) result *=x;</p>

16、;<p>  else if(lastCommand.equals("/")) result /=x;</p><p>  else if(lastCommand.equals("%")) result %=x;</p><p>  else if(lastCommand.equals("=")) result =x

17、;</p><p>  btn1.setText(""+result);</p><p><b>  }</b></p><p> ?、?、利用按鈕設計計算器的各個操作數和操作符,通過按鈕的事件處理實現按鈕計算功能。</p><p> ?、?、利用文本框顯示操作數和運算結果。</p><

18、;p><b>  2.3程序流程圖</b></p><p>  2.4程序預期結果:</p><p><b>  程序界面</b></p><p>  計算2+3,結果應為5.</p><p>  負號開根號 結果輸出負數不能開根號</p><p><b>

19、  2.5模塊實現</b></p><p>  2.5.1 顯示窗口</p><p>  btn1=new JButton(" ");</p><p>  btn1.setEnabled(false); //該顯現區(qū)域不能輸入,只能顯示</p><p>  add(btn1,BorderLayout.NORT

20、H);</p><p>  2.5.2 窗口布局</p><p>  panel=new JPanel();</p><p>  panel.setLayout(new GridLayout(5,4));</p><p>  addButton("C",insert);</p><p>  add

21、Button("←",insert);</p><p>  addButton("√",insert);</p><p>  addButton("%",command);</p><p>  addButton("7",insert);</p><p>  ad

22、dButton("8",insert);</p><p>  addButton("9",insert);</p><p>  addButton("/",command);</p><p>  addButton("4",insert);</p><p>  a

23、ddButton("5",insert);</p><p>  addButton("6",insert);</p><p>  addButton("*",command);</p><p>  addButton("1",insert);</p><p>  

24、addButton("2",insert);</p><p>  addButton("3",insert);</p><p>  addButton("-",command);</p><p>  addButton("0",insert);</p><p> 

25、 addButton(".",insert);</p><p>  addButton("=",command);</p><p>  addButton("+",command);</p><p>  add(panel,BorderLayout.CENTER);</p><p>

26、  2.5.3 加減乘除 取余運算</p><p>  private void calcultor(double x) {</p><p>  // TODO 自動生成的方法存根</p><p>  if(lastCommand.equals("+")) result+=x;</p><p>  else if(las

27、tCommand.equals("-")) result -=x;</p><p>  else if(lastCommand.equals("*")) result *=x;</p><p>  else if(lastCommand.equals("/")) result /=x;</p><p>  

28、else if(lastCommand.equals("%")) result %=x;</p><p>  else if(lastCommand.equals("=")) result =x;</p><p>  btn1.setText(""+result);</p><p><b>  }

29、</b></p><p>  2.5.4退格“←”實現</p><p>  if(input.equals("←")){ // ← 事件執(zhí)行backspace()</p><p>  backspace();}</p><p>  public void backspace(){ //退格</p>

30、;<p>  String s=btn1.getText();</p><p>  btn1.setText(s.substring(0,s.length()-1));</p><p><b>  }</b></p><p>  2.5.5清除功能實現</p><p>  else if(input.equ

31、als("C")){ // C 事件執(zhí)行clear()</p><p>  clear(); </p><p>  void clear(){ //清除 </p><p>  btn1.setText(""); </p><p><b>  result=0;</b><

32、/p><p><b>  }</b></p><p>  2.5.6開根號功能實現</p><p>  else if(input.equals("√")){ // √ 事件執(zhí)行sqrt()</p><p><b>  sqrt();</b></p><p>

33、;<b>  }</b></p><p>  void sqrt(){ //開根號</p><p>  double m=Double.parseDouble(btn1.getText()); </p><p><b>  if (m<0) </b></p><p>  btn1.setTex

34、t("負數不能開根號"); </p><p><b>  else </b></p><p>  btn1.setText(""+Math.sqrt(m)); }</p><p>  2.5.7 負號實現</p><p>  private class CommandActi

35、on implements ActionListener{</p><p><b>  @Override</b></p><p>  public void actionPerformed(ActionEvent event) {</p><p>  // TODO 自動生成的方法存根</p><p>  String

36、 command=event.getActionCommand();</p><p>  if(start){</p><p>  if(command.equals("-")){ //負號設定</p><p>  btn1.setText(command);</p><p>  start=false;</p&

37、gt;<p><b>  }</b></p><p>  else lastCommand=command;</p><p><b>  }</b></p><p><b>  else{</b></p><p>  calcultor(Double.parseD

38、ouble(btn1.getText()));</p><p>  lastCommand=command;</p><p>  start=true;</p><p><b>  }</b></p><p><b>  }</b></p><p>  2.5.8 數字0~9

39、實現</p><p>  private class InsertAction implements ActionListener{</p><p><b>  @Override</b></p><p>  public void actionPerformed(ActionEvent event){</p><p>

40、;  // TODO 自動生成的方法存根</p><p>  String input=event.getActionCommand();</p><p>  if(start){</p><p>  btn1.setText("");</p><p>  start=false;</p><p>

41、<b>  }</b></p><p>  if(input.equals("←")){ // ← 事件執(zhí)行backspace()</p><p>  backspace();}</p><p>  else if(input.equals("C")){ // C 事件執(zhí)行clear()</p

42、><p>  clear(); </p><p><b>  }</b></p><p>  else if(input.equals("√")){ // √ 事件執(zhí)行sqrt()</p><p><b>  sqrt();</b></p><p><

43、;b>  }</b></p><p><b>  else</b></p><p>  btn1.setText(btn1.getText()+input);</p><p><b>  }</b></p><p><b>  }</b></p>

44、<p><b>  三 、源代碼摘選</b></p><p><b>  3.1 源代碼</b></p><p>  package calculator;</p><p>  import java.awt.BorderLayout;</p><p>  import java.awt

45、.Dimension;</p><p>  import java.awt.Event;</p><p>  import java.awt.Frame;</p><p>  import java.awt.GridLayout;</p><p>  import java.awt.Toolkit;</p><p> 

46、 import java.awt.event.ActionEvent;</p><p>  import java.awt.event.ActionListener;</p><p>  import javax.swing.JButton;</p><p>  import javax.swing.JFrame;</p><p>  imp

47、ort javax.swing.JPanel;</p><p>  public class CalculatorPanel extends JPanel{</p><p>  //設計計算機的界面</p><p>  private JButton btn1;</p><p>  private JPanel panel;</p>

48、;<p>  private double result;</p><p>  private String lastCommand;</p><p>  private boolean start;</p><p>  public CalculatorPanel(){</p><p>  setLayout(new Bord

49、erLayout());</p><p><b>  result=0;</b></p><p>  lastCommand="=";</p><p>  start=true;//設置布爾值為true</p><p>  //添加面板panel</p><p>  btn1=

50、new JButton(" ");</p><p>  btn1.setEnabled(false);</p><p>  add(btn1,BorderLayout.NORTH);</p><p>  ActionListener insert=new InsertAction();</p><p>  ActionLi

51、stener command=new CommandAction();</p><p>  //添加按鈕進5*4網格布局</p><p>  panel=new JPanel();</p><p>  panel.setLayout(new GridLayout(5,4));//采用網格布局</p><p><b>  //添加第一

52、排按鈕</b></p><p>  addButton("C",insert);</p><p>  addButton("←",insert);</p><p>  addButton("√",insert);</p><p>  addButton("%&q

53、uot;,command);</p><p><b>  //添加第二排按鈕</b></p><p>  addButton("7",insert);</p><p>  addButton("8",insert);</p><p>  addButton("9"

54、;,insert);</p><p>  addButton("/",command);</p><p><b>  //添加第三排按鈕</b></p><p>  addButton("4",insert);</p><p>  addButton("5",i

55、nsert);</p><p>  addButton("6",insert);</p><p>  addButton("*",command);</p><p><b>  //添加第四排按鈕</b></p><p>  addButton("1",inse

56、rt);</p><p>  addButton("2",insert);</p><p>  addButton("3",insert);</p><p>  addButton("-",command);</p><p><b>  //添加第五排按鈕</b>

57、;</p><p>  addButton("0",insert);</p><p>  addButton(".",insert);</p><p>  addButton("=",command);</p><p>  addButton("+",comman

58、d);</p><p>  add(panel,BorderLayout.CENTER);</p><p><b>  }</b></p><p>  private void addButton(String label,ActionListener listener){ </p><p>  //把按鈕添加進面

59、板</p><p>  JButton btn=new JButton(label);</p><p>  btn.addActionListener(listener);</p><p>  panel.add(btn);</p><p><b>  }</b></p><p><b>

60、;  //鼠標事件監(jiān)聽</b></p><p>  private class InsertAction implements ActionListener{</p><p><b>  @Override</b></p><p>  public void actionPerformed(ActionEvent event){&

61、lt;/p><p>  // TODO 自動生成的方法存根</p><p>  String input=event.getActionCommand();</p><p>  if(start){</p><p>  btn1.setText("");</p><p>  start=false;&l

62、t;/p><p><b>  }</b></p><p>  if(input.equals("←")){ // ← 事件執(zhí)行backspace()</p><p>  backspace();}</p><p>  else if(input.equals("C")){ //

63、C 事件執(zhí)行clear()</p><p>  clear(); </p><p><b>  }</b></p><p>  else if(input.equals("√")){ // √ 事件執(zhí)行sqrt()</p><p><b>  sqrt();</b></

64、p><p><b>  }</b></p><p><b>  else</b></p><p>  btn1.setText(btn1.getText()+input);//獲得數字</p><p><b>  }</b></p><p><b>

65、;  }</b></p><p>  //+ - * / %操作符事件監(jiān)聽</p><p>  private class CommandAction implements ActionListener{</p><p><b>  @Override</b></p><p>  public void ac

66、tionPerformed(ActionEvent event) {</p><p>  // TODO 自動生成的方法存根</p><p>  String command=event.getActionCommand();</p><p>  if(start){</p><p>  if(command.equals("-&q

67、uot;)){ //負號設定</p><p>  btn1.setText(command);</p><p>  start=false;</p><p><b>  }</b></p><p>  else lastCommand=command;</p><p><b>  }

68、</b></p><p><b>  else{</b></p><p>  calcultor(Double.parseDouble(btn1.getText()));</p><p>  lastCommand=command;</p><p>  start=true;</p><p

69、><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  //計算</b></p><p>  private void calcultor(double x) {</

70、p><p>  // TODO 自動生成的方法存根</p><p>  if(lastCommand.equals("+")) result+=x; //執(zhí)行加法</p><p>  else if(lastCommand.equals("-")) result -=x; //執(zhí)行減法</p>

71、<p>  else if(lastCommand.equals("*")) result *=x; //執(zhí)行乘法</p><p>  else if(lastCommand.equals("/")) result /=x; //執(zhí)行除法</p><p>  else if(lastCommand.equals("%&qu

72、ot;)) result %=x; //執(zhí)行取余</p><p>  else if(lastCommand.equals("=")) result =x;</p><p>  btn1.setText(""+result);</p><p><b>  }</b></p><p&

73、gt;  public void backspace(){ //退格</p><p>  String s=btn1.getText();</p><p>  btn1.setText(s.substring(0,s.length()-1));</p><p><b>  }</b></p><p>  void cle

74、ar(){ //清除 </p><p>  btn1.setText(""); </p><p><b>  result=0;</b></p><p><b>  }</b></p><p>  void sqrt(){ //開根號</p><p> 

75、 double m=Double.parseDouble(btn1.getText()); </p><p><b>  if (m<0) </b></p><p>  btn1.setText("負數不能開根號"); </p><p><b>  else </b></p>&l

76、t;p>  btn1.setText(""+Math.sqrt(m)); </p><p><b>  }</b></p><p>  public static void main(String[] args){</p><p>  JFrame f=new JFrame();</p><p&

77、gt;  f.setTitle("計算器");</p><p><b>  //計算器居中</b></p><p>  Toolkit toolkit=Toolkit.getDefaultToolkit();</p><p>  Dimension Screen=toolkit.getScreenSize();</p&

78、gt;<p>  int x=(Screen.width-f.getWidth())/2-150;</p><p>  int y=(Screen.height-f.getHeight())/2-150;</p><p>  f.setLocation(x,y);</p><p>  f.setSize(300,200);//設置大小</p>

79、;<p>  f.add(new CalculatorPanel());</p><p>  f.setVisible(true);</p><p>  //不允許用戶修改大小</p><p>  f.setResizable(false);</p><p>  f.setDefaultCloseOperation(JFrame

80、.EXIT_ON_CLOSE); //設置關閉屬性</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  四、總結</b></p><p><b>  4.1 設計體會</b></p>

81、<p>  這次做的課程設計Java計算器。運行java計算器以后出現的那個框架圖就是我們所說的java圖形用戶界面(GUI),它是程序與用戶進行交流的圖像窗口,為應用程序提供一個圖形化的界面,程序通過GUI與用戶交互,GUI通過事件機制響應用戶和程序的交互。如當用戶單擊某個按鈕時就會產生動作事件,要處理產生的事件,需要在特定的方法中編寫處理事件的程序。這樣,當產生某種事件時就會調用處理這種事件的方法,從而實現用戶與程序的交互

82、。另外GUI能使一個應用程序具有與眾不同的“外觀”與“感覺”。有了GUI,用戶就不用花很多時間去記憶各個鍵盤序列的功能,從而把更多的時間投入到有效地使用應用程序本身上。</p><p>  這次課程設計,除了全面系統(tǒng)的理解了JAVA面向對象編程原理的一般原理和基本實現方法,還把死板的課本知識變得生動有趣,激發(fā)了學習的積極性。把學過的編程原理的知識強化,把課堂上學的知識通過自己設計的程序表示出來,這加深了對理論知識

83、的理解。課程設計中程序比較復雜,在調試時應該仔細,在程序調試時,注意盡力尋找程序中存在的不足之處,進而使功能更加完善。</p><p>  當然在做課程設計要有很大的耐心,做的過程就是不斷的調試—修改—調試過程,只有靜下心來才能把問題解決。</p><p>  4.2設計中遇到的重點及難點</p><p> ?。?)Java計算器在進行混合運算時,不能準備的進行計算

84、,后面輸入的數值會覆蓋先前輸入的數據,造成數據丟失 ,</p><p>  主要的解決步驟分為以下幾點:</p><p>  在文件開頭部分定義一個標志性布爾型變量start,并賦初值為true;</p><p>  在操作數事件處理里添加if判斷語句,如果start值為false,就得到輸入的數,如果start值為false,不輸出,并改變start的值為true

85、;</p><p>  String input=event.getActionCommand();</p><p>  if(start){</p><p>  btn1.setText("");</p><p>  start=false;</p><p><b>  else<

86、/b></p><p>  btn1.setText(btn1.getText()+input);</p><p><b>  }</b></p><p> ?。?)Java計算器實現負號</p><p> ?、僭谖募_頭部分定義一個標志性布爾型變量start,并賦初值為true;</p><p

87、> ?、谌绻鹲tart的值為true,看輸入的操作符是否為“-”。如果是“-”號,則輸出負號并把start的值為false</p><p>  if(start){</p><p>  if(command.equals("-")){ //負號設定</p><p>  btn1.setText(command);</p>

88、<p>  start=false;</p><p><b>  }</b></p><p>  else lastCommand=command;</p><p><b>  }</b></p><p><b>  else{</b></p><

89、p>  calcultor(Double.parseDouble(btn1.getText()));</p><p>  lastCommand=command;</p><p>  start=true;</p><p><b>  }</b></p><p><b>  }</b><

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論