java課程設計報告---計算器應用程序實驗報告_第1頁
已閱讀1頁,還剩16頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  實驗一:計算器應用程序實驗報告</p><p><b>  目錄</b></p><p><b>  一 概述2</b></p><p>  二 總體方案設計3</p><p><b>  三 詳細設計11</b></p><p&

2、gt;  五 課程設計體會和總結12</p><p>  六 附錄…………………………………………….…13</p><p><b>  一 概述</b></p><p>  1.程序具備的功能:</p><p> ?。?)使用圖形用戶界面:一個文本框;0-9數(shù)字按鈕;加、減、乘、除運算符;“小數(shù)點”和“等于”符號;

3、復位按鈕;清空按鈕;開方和平方以及求倒按鈕;</p><p> ?。?)完成整數(shù)、實數(shù)的四則運算(加、減、乘、除);</p><p> ?。?)通過按鈕點擊實現(xiàn)數(shù)據(jù)的復位(清空);</p><p> ?。?)通過按鈕點擊實現(xiàn)數(shù)據(jù)的刪除;</p><p>  (5)通過按鈕點擊實現(xiàn)對數(shù)據(jù)的開方或平方。</p><p> 

4、 2.課程設計的主要設計思想 </p><p>  對于此計算器程序,首先要設計其GUI界面,總體界面有一個文本框,22個按鈕,總體界面用BorderLayout布局。</p><p>  文本框放置在最上端,然后0到9以及+,-,*,/,sqrt,平方,求倒的按鈕放置到一個面板Panel中,添加到整體布局的中,界面設計完成。</p><p>  布局設計好后再添加

5、按鈕事件。對于此程序要考慮到點擊加、減、乘、除按鈕時是否有點擊數(shù)字按鈕,如果是第一次點擊數(shù)字按鈕或者是點擊數(shù)字按鈕前點擊了加、減、乘、除按鈕則直接把數(shù)字按鈕的數(shù)值設置到文本框中,否則則應把文本框中的內容加上你所點擊按鈕的數(shù)值設置到文本框中。</p><p>  在進行加、減、乘、除計算時要把點擊加、減、乘、除按鈕之</p><p>  前的數(shù)值保存下來,運算時是這個被保存下來的數(shù)值和文本框

6、中的數(shù)值加、減、乘、除。</p><p><b>  二 總體方案設計</b></p><p><b>  1.界面設計</b></p><p>  界面設計要求用GUI,界面設計中有用到swing組件的TextField和Button,用到awt中的BorderLayout和GridLayout布局管理方式,其圖形界面如

7、下:</p><p><b>  2.功能介紹</b></p><p>  這是一種簡單的計算器中,本項目用到了Java中的GUI界面和swing組件以及awt布局,簡單易用,它能完成如下的幾個小功能:</p><p>  點擊按鈕中的數(shù)字鍵和運算符鍵就能進行簡單的加、乘、乘、除求模四則運算 ;</p><p>  還能

8、通過按鈕鍵進行開方和平方及求倒運算;</p><p>  如果輸入有誤時可以清空按鈕撤銷后重新輸入新數(shù)據(jù);</p><p>  還可以后退按鈕來向后退一位數(shù)字而不必全部刪除。</p><p><b>  三詳細設計</b></p><p><b>  程序流程圖如下:</b></p>

9、<p>  部分代碼展示及說明:</p><p> ?。?)這段代碼主要是對程序的主框架進行相應的設置。</p><p>  class JSQFrame extends JFrame</p><p><b>  {</b></p><p>  public JSQFrame()</p><

10、p><b>  {</b></p><p>  setTitle("計算器");</p><p>  setSize(WIDTH,HEIGHT);</p><p>  JSQPanel panel=new JSQPanel();</p><p>  panel.setBackground(Col

11、or.blue);//設置背景顏色為藍色</p><p>  Border border=BorderFactory.createLoweredBevelBorder();</p><p>  Border bj=BorderFactory.createTitledBorder(border,"計算器");</p><p>  panel.set

12、Border(bj);</p><p>  Container contentPane=getContentPane();</p><p>  contentPane.add(panel); </p><p>  l = new JLabel(TP);</p><p>  l.setBounds(3, 0,333, 375);&l

13、t;/p><p>  contentPane.add(l);//在面板上增加圖片</p><p>  contentPane.add(panel); </p><p><b>  }</b></p><p>  public static final int WIDTH=333;</p><p> 

14、 public static final int HEIGHT=375;//設置大小</p><p>  protected JLabel l;</p><p>  protected ImageIcon TP;</p><p><b>  }</b></p><p> ?。?)這段代碼是在框架上加按鈕及背景外觀的設置:

15、</p><p>  public JSQPanel()</p><p><b>  {</b></p><p>  i = new ImageIcon("1.jpg");</p><p>  lab = new JLabel(i);</p><p>  add(lab);/

16、/顯示圖片</p><p>  display=new JTextField("",30);</p><p>  display.setBounds(0, 15,15, 25);</p><p>  add(display)</p><p>  JPanel Buttons=new JPanel();</p>

17、<p>  Buttons.setLayout(new GridLayout(4,6,6,6));</p><p>  addButton(this," ← "); addButton(this," 清空 ");</p><p>  String buttons="123=a4

18、56+-789*/.0";</p><p>  for(int i=0;i<buttons.length();i++)</p><p>  addButton(Buttons,buttons.substring(i,i+1));</p><p>  addButton(Buttons,"sqrt");</p><

19、;p>  addButton(Buttons,"求倒");</p><p>  addButton(Buttons,"平方");</p><p>  add(Buttons);//在框架上加按鈕</p><p><b>  }</b></p><p>  (3)這段代碼是對

20、不同按鈕顏色的設置:</p><p>  private void addButton(Container c,String s)</p><p>  { JButton b=new JButton(s);</p><p>  if(s.charAt(0)>='0'&&s.charAt(0)<='9')&

21、lt;/p><p>  b.setBackground(Color.green);</p><p>  else b.setBackground(Color.orange);</p><p><b>  c.add(b);</b></p><p>  b.addActionListener(this);</p>

22、;<p><b>  }</b></p><p> ?。?)這段代碼是對程序如何進行運算的設計</p><p>  public void actionPerformed(ActionEvent event)</p><p><b>  {</b></p><p>  String s

23、=event.getActionCommand();</p><p>  if(s.charAt(0)>='0'&&s.charAt(0)<='9'||s.equals("."))</p><p><b>  {</b></p><p>  if(start) di

24、splay.setText(s);</p><p>  else display.setText(display.getText()+s);</p><p>  start=false;//判斷是不是數(shù)字或小數(shù)點</p><p><b>  }</b></p><p><b>  else</b>&

25、lt;/p><p><b>  {</b></p><p><b>  if(start)</b></p><p><b>  {</b></p><p>  if(s.equals("-"))</p><p><b>  {&

26、lt;/b></p><p>  display.setText(s);</p><p>  start=false;</p><p><b>  }</b></p><p>  else op=s;</p><p><b>  }</b></p><

27、;p>  if(s.equals(" 清空 "))</p><p>  { arg=0;</p><p><b>  op="=";</b></p><p>  display.setText("");}//清空按鈕作用設置</p><p&g

28、t;  else if(s.equals(" ← "))</p><p><b>  {</b></p><p>  String a=display.getText();</p><p>  String s1=a.substring(0,a.length()-1);</p>

29、<p>  arg=Double.parseDouble(s1);</p><p>  display.setText(s1+"");//退后按鈕作用設置</p><p><b>  }</b></p><p>  else if(s.equals("sqrt")) </p>&l

30、t;p><b>  {</b></p><p>  double x=Double.parseDouble(display.getText()); </p><p>  arg=jc(x);//調用函數(shù)</p><p>  display.setText(""+arg);</p><p>  t

31、art=true;</p><p><b>  }</b></p><p>  else if(s.equals("平方")) </p><p><b>  {</b></p><p>  double x=Double.parseDouble(display.getText()

32、); </p><p>  arg=x*x;//平方算法</p><p>  display.setText(""+arg);</p><p>  start=true; }</p><p>  else if(s.equals("求倒")) </p><p><b&g

33、t;  {</b></p><p>  double x=Double.parseDouble(display.getText());</p><p>  arg=1/x;//求倒算法</p><p>  display.setText(""+arg);</p><p>  start=true;</p&

34、gt;<p><b>  } </b></p><p><b>  else</b></p><p><b>  {</b></p><p>  double x=Double.parseDouble(display.getText()); </p><p> 

35、 calculate(x);</p><p><b>  op=s;</b></p><p>  start=true;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b

36、></p><p>  public void calculate(double n)</p><p><b>  {</b></p><p>  if(op.equals("+")) arg+=n ; //加法算法</p><p>  else if(op.equals("-&quo

37、t;)) arg-=n;//減法算法</p><p>  else if(op.equals("/")) arg/=n;//除法算法</p><p>  else if(op.equals("*")) arg*=n;//乘法算法</p><p>  else if(op.equals("=")) arg=n

38、; </p><p>  display.setText(""+arg); </p><p>  start=true;</p><p><b>  }</b></p><p>  public double jc(double x)</p><p><

39、;b>  {</b></p><p><b>  double t;</b></p><p>  t=Math.sqrt(x);</p><p>  return(t);//開方的算法</p><p><b>  }</b></p><p>  privat

40、e JTextField display;</p><p>  private double arg=0;</p><p>  private String op="=";</p><p>  private boolean start=true;</p><p>  private ImageIcon i;</p&

41、gt;<p>  private JLabel lab;</p><p><b>  }</b></p><p>  四 程序的調試與運行結果說明</p><p>  事例1:45+87 預計結果 132 實際結果</p><p>  事例2: 29-87 預計結果-58 實際結果:</p

42、><p>  事例2:45/5 預計結果 9 實際結果</p><p>  事例3 9的平方及開方 預計結果81和3 實際結果

43、 </p><p>  五 課程設計體會和總結</p><p><b>  六 附錄</b></p><p>  import javax.swing.*;</p><p>  import java.awt.*;</p>

44、<p>  import java.awt.event.*;</p><p>  import java.awt.color.*;</p><p>  import javax.swing.border.*;</p><p>  import java.util.*;</p><p>  import java.lang.*;<

45、;/p><p>  public class JSQ</p><p><b>  {</b></p><p>  public static void main(String[] args)</p><p><b>  {</b></p><p>  JSQFrame frame

46、=new JSQFrame();</p><p>  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);</p><p>  frame.show();</p><p><b>  }</b></p><p><b>  }</b></

47、p><p>  class JSQFrame extends JFrame</p><p><b>  {</b></p><p>  public JSQFrame()</p><p><b>  {</b></p><p>  setTitle("計算器"

48、);</p><p>  setSize(WIDTH,HEIGHT);</p><p>  JSQPanel panel=new JSQPanel();</p><p>  panel.setBackground(Color.blue);</p><p>  Border border=BorderFactory.createLoweredB

49、evelBorder();</p><p>  Border bj=BorderFactory.createTitledBorder(border,"計算器");</p><p>  panel.setBorder(bj);</p><p>  Container contentPane=getContentPane()</p>&

50、lt;p>  contentPane.add(panel); </p><p>  l = new JLabel(TP);</p><p>  l.setBounds(3, 0,333, 375);</p><p>  contentPane.add(l);</p><p>  contentPane.add(panel);

51、 </p><p><b>  }</b></p><p>  public static final int WIDTH=333;</p><p>  public static final int HEIGHT=375;</p><p>  protected JLabel l;</p><p&

52、gt;  protected ImageIcon TP;</p><p><b>  }</b></p><p>  class JSQPanel extends JPanel implements ActionListener</p><p><b>  {</b></p><p>  publi

53、c JSQPanel()</p><p><b>  {</b></p><p>  i = new ImageIcon("1.jpg");</p><p>  lab = new JLabel(i);</p><p><b>  add(lab);</b></p>

54、<p>  display=new JTextField("",30);</p><p>  display.setBounds(0, 15,15, 25);</p><p>  add(display);</p><p>  JPanel Buttons=new JPanel();</p><p>  Bu

55、ttons.setLayout(new GridLayout(4,6,6,6));</p><p>  addButton(this," ← ");</p><p>  addButton(this," 清空 ");</p><p>  String buttons="1

56、23=a456+-789*/.0";</p><p>  for(int i=0;i<buttons.length();i++)</p><p>  addButton(Buttons,buttons.substring(i,i+1));</p><p>  addButton(Buttons,"sqrt");</p>

57、<p>  addButton(Buttons,"求倒");</p><p>  addButton(Buttons,"平方");</p><p>  add(Buttons);</p><p><b>  }</b></p><p>  private void

58、addButton(Container c,String s)</p><p><b>  {</b></p><p>  if(s.charAt(0)>='0'&&s.charAt(0)<='9')</p><p>  b.setBackground(Color.green);<

59、;/p><p>  else b.setBackground(Color.orange);</p><p><b>  c.add(b);</b></p><p>  b.addActionListener(this);</p><p><b>  }</b></p><p>

60、;  public void actionPerformed(ActionEvent event)</p><p><b>  {</b></p><p>  String s=event.getActionCommand();</p><p>  if(s.charAt(0)>='0'&&s.charAt

61、(0)<='9'||s.equals("."))</p><p><b>  {</b></p><p>  if(start) display.setText(s);</p><p>  else display.setText(display.getText()+s);</p><

62、;p>  start=false;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p><b>  if(start)</b></p><p

63、><b>  {</b></p><p>  if( s.equals("-"))</p><p><b>  {</b></p><p>  display.setText(s);</p><p>  start=false;</p><p>&l

64、t;b>  }</b></p><p>  else op=s;</p><p><b>  }</b></p><p>  if(s.equals(" 清空 "))</p><p><b>  {</b></p><p>

65、<b>  arg=0;</b></p><p><b>  op="=";</b></p><p>  display.setText("");</p><p><b>  }</b></p><p>  else if(s.equal

66、s(" ← "))</p><p><b>  {</b></p><p>  String a=display.getText();</p><p>  String s1=a.substring(0,a.length()-1);</p><p>  arg=Doub

67、le.parseDouble(s1);</p><p>  display.setText(s1+"");</p><p><b>  }</b></p><p>  else if(s.equals("sqrt")) </p><p><b>  {</b>

68、</p><p>  double x=Double.parseDouble(display.getText()); </p><p>  arg=jc(x);</p><p>  display.setText(""+arg);</p><p>  start=true;</p><p><

69、b>  }</b></p><p>  else if(s.equals("平方")) </p><p><b>  {</b></p><p>  double x=Double.parseDouble(display.getText()); </p><p><b> 

70、 arg=x*x;</b></p><p>  display.setText(""+arg);</p><p>  start=true; }</p><p>  else if(s.equals("求倒")) </p><p><b>  {</b></p&g

71、t;<p>  double x=Double.parseDouble(display.getText());</p><p><b>  arg=1/x;</b></p><p>  display.setText(""+arg);</p><p>  start=true;</p><p

72、><b>  } </b></p><p><b>  else</b></p><p><b>  {</b></p><p>  double x=Double.parseDouble(display.getText()); </p><p>  calculate

73、(x);</p><p><b>  op=s;</b></p><p>  start=true;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></

74、p><p>  public void calculate(double n)</p><p><b>  {</b></p><p>  if(op.equals("+")) arg+=n ; </p><p>  else if(op.equals("-")) arg-=n;<

75、;/p><p>  else if(op.equals("/")) arg/=n;</p><p>  else if(op.equals("*")) arg*=n;</p><p>  else if(op.equals("=")) arg=n; </p><p>

76、  display.setText(""+arg); </p><p>  start=true;</p><p><b>  }</b></p><p>  public double jc(double x)</p><p><b>  {</b></p>&l

77、t;p><b>  double t;</b></p><p>  t=Math.sqrt(x);</p><p>  return(t);</p><p><b>  }</b></p><p>  private JTextField display;</p><p&g

78、t;  private double arg=0;</p><p>  private String op="=";</p><p>  private boolean start=true;</p><p>  private ImageIcon i;</p><p>  private JLabel lab;</

溫馨提示

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

評論

0/150

提交評論