java課程設(shè)計(jì)報(bào)告---計(jì)算器應(yīng)用程序?qū)嶒?yàn)報(bào)告_第1頁(yè)
已閱讀1頁(yè),還剩16頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p>  實(shí)驗(yàn)一:計(jì)算器應(yīng)用程序?qū)嶒?yàn)報(bào)告</p><p><b>  目錄</b></p><p><b>  一 概述2</b></p><p>  二 總體方案設(shè)計(jì)3</p><p><b>  三 詳細(xì)設(shè)計(jì)11</b></p><p&

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

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

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

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

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

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

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

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

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

11、or.blue);//設(shè)置背景顏色為藍(lán)色</p><p>  Border border=BorderFactory.createLoweredBevelBorder();</p><p>  Border bj=BorderFactory.createTitledBorder(border,"計(jì)算器");</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;//設(shè)置大小</p><p>  protected JLabel l;</p><p>  protected ImageIcon TP;</p><p><b>  }</b></p><p> ?。?)這段代碼是在框架上加按鈕及背景外觀的設(shè)置:

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> ?。?)這段代碼是對(duì)

20、不同按鈕顏色的設(shè)置:</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> ?。?)這段代碼是對(duì)程序如何進(jìn)行運(yùn)算的設(shè)計(jì)</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ù)點(diǎn)</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("");}//清空按鈕作用設(shè)置</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+"");//退后按鈕作用設(shè)置</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);//調(diào)用函數(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);//開(kāi)方的算法</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>  四 程序的調(diào)試與運(yùn)行結(jié)果說(shuō)明</p><p>  事例1:45+87 預(yù)計(jì)結(jié)果 132 實(shí)際結(jié)果</p><p>  事例2: 29-87 預(yù)計(jì)結(jié)果-58 實(shí)際結(jié)果:</p

42、><p>  事例2:45/5 預(yù)計(jì)結(jié)果 9 實(shí)際結(jié)果</p><p>  事例3 9的平方及開(kāi)方 預(yù)計(jì)結(jié)果81和3 實(shí)際結(jié)果

43、 </p><p>  五 課程設(shè)計(jì)體會(huì)和總結(jié)</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("計(jì)算器"

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

評(píng)論

0/150

提交評(píng)論