版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 《Java程序設(shè)計》課程設(shè)計</p><p> 設(shè)計題目 模擬科學(xué)計算器 </p><p> 設(shè)計時間 2013.6.18 至 2013.6.24 </p><p> 學(xué)生姓名 </p><p> 學(xué)生學(xué)號
2、 </p><p> 所在班級 </p><p> 指導(dǎo)教師 </p><p><b> 目 錄</b></p><p><b> 1 設(shè)計目的1</b><
3、;/p><p><b> 2 設(shè)計任務(wù)1</b></p><p><b> 3 設(shè)計內(nèi)容1</b></p><p> 3.1 需求分析1</p><p> 3.1.1 問題描述1</p><p> 3.1.2 基本要求1</p><p>
4、; 3.2 設(shè)計方法及設(shè)計方案1</p><p> 3.2.1 包的描述1</p><p> 3.2.2 類的描述1</p><p> 3.2.3 類之間的關(guān)系1</p><p> 3.3 系統(tǒng)設(shè)計2</p><p> 3.3.1 操作流程圖2</p><p> 3.3
5、.2界面設(shè)計2</p><p> 3.4 系統(tǒng)實現(xiàn)3</p><p> 3.4.1 源程序3</p><p> 3.4.2 測試及運行結(jié)果10</p><p> 4 總結(jié)與心得體會11</p><p><b> 參考文獻(xiàn)12</b></p><p>&
6、lt;b> 1 設(shè)計目的</b></p><p> 實現(xiàn)基本數(shù)學(xué)運算、函數(shù)等功能:加、減、乘、除、階乘、正弦、余弦和指數(shù)運算。</p><p><b> 2 設(shè)計任務(wù)</b></p><p> 界面模擬Windows中的計算器程序。</p><p> 實現(xiàn)基本數(shù)學(xué)運算、函數(shù)等功能:加、減、乘、
7、除、階乘、正弦、余弦和指數(shù)運算。</p><p><b> 3 設(shè)計內(nèi)容</b></p><p><b> 3.1 需求分析</b></p><p> 3.1.1 問題描述 </p><p> 日常生活中經(jīng)常需要用到計算器,比如科學(xué)計算, 數(shù)值計算, 會計業(yè)務(wù)等等,在Applet中實現(xiàn)一個精
8、巧的計算器,可以讓用戶的 操作也更方便和快捷。 </p><p> 3.1.2 基本要求</p><p> 本項目需要實現(xiàn)一個具有四則運算的計算器,能夠?qū)崿F(xiàn)基本的加、減、乘、除、正弦、余弦和指數(shù)運算,以及其它的輔助功能;界面簡潔適用。</p><p> 3.2 設(shè)計方法及設(shè)計方案</p><p> 3.2.1 包的描述</p&g
9、t;<p> import java.awt.*;</p><p> import java.awt.event.*;</p><p> import java.text.DecimalFormat;</p><p> import javax.swing.*;</p><p> 3.2.2 類的描述</p>
10、;<p> public Calucator()</p><p> private void init()</p><p> private void addButton()</p><p> private void getResult ()</p><p> 3.2.3 類之間的關(guān)系</p><
11、p> public class Calucator extends JFrame</p><p> class Signs implements ActionListener</p><p> class Clear implements ActionListener</p><p> class Num implements ActionListen
12、er</p><p> class Dot implements ActionListener</p><p><b> 3.3 系統(tǒng)設(shè)計</b></p><p> 3.3.1 操作流程圖</p><p> 3.3.2 界面設(shè)計</p><p><b> 3.4 系統(tǒng)實現(xiàn)<
13、;/b></p><p><b> 3.4.1 源程序</b></p><p> import java.awt.*;</p><p> import java.awt.event.*;</p><p> import java.text.DecimalFormat;</p><p>
14、; import javax.swing.*;</p><p> public class Calucator extends JFrame {</p><p> private JTextField tf;</p><p> private JPanel panel1, panel2, panel3, panel4;</p><p>
15、; private String back;</p><p> private boolean IfResult = true, flag = false;</p><p> private String oper = "=";</p><p> private double result = 0;</p><p>
16、; private Num numActionListener;</p><p> private DecimalFormat df;</p><p> public Calucator(){</p><p> super("科學(xué)計算器");//設(shè)置標(biāo)題欄</p><p> df = new DecimalFor
17、mat("#.####");//保留四位小數(shù)</p><p> this.setLayout(new BorderLayout(10, 5));</p><p> panel1 = new JPanel(new GridLayout(1, 3, 10, 10));</p><p> panel2 = new JPanel(new GridL
18、ayout(5, 6, 5, 5));//5行6列</p><p> panel3 = new JPanel(new GridLayout(5, 1, 5, 5));</p><p> panel4 = new JPanel(new BorderLayout(5, 5));</p><p> numActionListener = new Num();//實現(xiàn)
19、數(shù)字監(jiān)聽</p><p> tf = new JTextField();</p><p> tf.setEditable(false);//文本區(qū)域不可編輯</p><p> tf.setBackground(Color.white);//文本區(qū)域的背景色</p><p> tf.setHorizontalAlignment(JTex
20、tField.RIGHT);//文字右對齊</p><p> tf.setText("0");</p><p> tf.setBorder(BorderFactory.createLoweredBevelBorder());</p><p> init();//對計算器進(jìn)行初始化</p><p><b>
21、 }</b></p><p> private void init(){</p><p> addButton(panel1, "Backspace", new Clear(), Color.red);</p><p> addButton(panel1, "CE", new Clear(), Color.r
22、ed);</p><p> addButton(panel1, "C", new Clear(), Color.red);</p><p> addButton(panel2, "1/x", new Signs(), Color.magenta);</p><p> addButton(panel2, "log
23、", new Signs(), Color.magenta);</p><p> addButton(panel2, "7", numActionListener, Color.blue);</p><p> addButton(panel2, "8", numActionListener, Color.blue);</p>
24、<p> addButton(panel2, "9", numActionListener, Color.blue);</p><p> addButton(panel2, "÷", new Signs(), Color.red);</p><p> addButton(panel2, "n!", n
25、ew Signs(), Color.magenta);</p><p> addButton(panel2, "sqrt", new Signs(), Color.magenta);</p><p> addButton(panel2, "4", numActionListener, Color.blue);</p><p&g
26、t; addButton(panel2, "5", numActionListener, Color.blue);</p><p> addButton(panel2, "6", numActionListener, Color.blue);</p><p> addButton(panel2, "×", new
27、Signs(), Color.red);</p><p> addButton(panel2, "sin", new Signs(), Color.magenta);</p><p> addButton(panel2, "x^2", new Signs(), Color.magenta);</p><p> addBu
28、tton(panel2, "1", numActionListener, Color.blue);</p><p> addButton(panel2, "2", numActionListener, Color.blue);</p><p> addButton(panel2, "3", numActionListener,
29、 Color.blue);</p><p> addButton(panel2, "-", new Signs(), Color.red);</p><p> addButton(panel2, "cos", new Signs(), Color.magenta);</p><p> addButton(panel2,
30、"x^3", new Signs(), Color.magenta);</p><p> addButton(panel2, "0", numActionListener, Color.blue);</p><p> addButton(panel2, "-/+", new Clear(), Color.blue);</
31、p><p> addButton(panel2, ".", new Dot(), Color.blue);</p><p> addButton(panel2, "+", new Signs(), Color.red);</p><p> addButton(panel2, "tan", new Sign
32、s(), Color.magenta);</p><p> addButton(panel2, "%", new Signs(), Color.magenta);</p><p> addButton(panel2, "π", numActionListener, Color.orange);</p><p> addB
33、utton(panel2, "e", numActionListener, Color.orange);</p><p> addButton(panel2, "′″", new Signs(), Color.orange);</p><p> addButton(panel2, "=", new Signs(), Color
34、.red);</p><p> JButton btns = new JButton("計算器");</p><p> btns.setBorder(BorderFactory.createLoweredBevelBorder());</p><p> btns.setEnabled(false);//按鈕不可操作</p>&
35、lt;p> btns.setPreferredSize(new Dimension(20, 20));</p><p> panel3.add(btns);//加入按鈕</p><p> addButton(panel3, "MC", null, Color.red);</p><p> addButton(panel3, &quo
36、t;MR", null, Color.red);</p><p> addButton(panel3, "MS", null, Color.red);</p><p> addButton(panel3, "M+", null, Color.red);</p><p> panel4.add(panel1, B
37、orderLayout.NORTH);</p><p> panel4.add(panel2, BorderLayout.CENTER);</p><p> this.add(tf, BorderLayout.NORTH);</p><p> this.add(panel3, BorderLayout.WEST);</p><p>
38、this.add(panel4);</p><p><b> pack();</b></p><p> this.setResizable(false);//窗口不可改變大小</p><p> this.setLocation(300, 200);</p><p> this.setDefaultCloseOpe
39、ration(JFrame.EXIT_ON_CLOSE);</p><p><b> }</b></p><p> private void addButton(JPanel panel, String name, ActionListener action, Color color){</p><p> JButton bt = new
40、 JButton(name);</p><p> panel.add(bt);//在面板上增加按鈕</p><p> bt.setForeground(color);//設(shè)置前景(字體)顏色</p><p> bt.addActionListener(action);//增加監(jiān)聽事件</p><p><b> }</b
41、></p><p> private void getResult (double x){</p><p> if(oper == "+"){result += x;}</p><p> else if(oper == "-"){result -= x;}</p><p> else if
42、(oper == "×"){result *= x;}</p><p> else if(oper == "÷"){result /= x;}</p><p> else if(oper == "="){result = x;}</p><p> tf.setText(df.for
43、mat(result));</p><p><b> }</b></p><p> class Signs implements ActionListener{</p><p> public void actionPerformed(ActionEvent e) {</p><p> String str =
44、e.getActionCommand();</p><p> /* sqrt求平方根 */</p><p> if(str.equals("sqrt")){</p><p> double i = Double.parseDouble(tf.getText());</p><p><b> if(i>
45、;=0){</b></p><p> tf.setText(String.valueOf(df.format(Math.sqrt(i))));</p><p><b> }</b></p><p><b> else{</b></p><p> tf.setText("
46、負(fù)數(shù)不能開平方根");</p><p><b> }</b></p><p><b> }</b></p><p> /* log求常用對數(shù) */</p><p> else if(str.equals("log")){</p><p>
47、 double i = Double.parseDouble(tf.getText());</p><p><b> if(i>0){</b></p><p> tf.setText(String.valueOf(df.format(Math.log(i))));</p><p><b> }else{</b>
48、;</p><p> tf.setText("負(fù)數(shù)不能求對數(shù)");</p><p><b> }</b></p><p><b> }</b></p><p> /* %求百分比 */</p><p> else if(str.equals(&q
49、uot;%")){</p><p> tf.setText(df.format(Double.parseDouble(tf.getText()) / 100));</p><p><b> }</b></p><p> /* 1/x求倒數(shù) */</p><p> else if(str.equals(&
50、quot;1/x")){</p><p> if(Double.parseDouble(tf.getText()) == 0){</p><p> tf.setText("除數(shù)不能為零");</p><p><b> }else{</b></p><p> tf.setText(df
51、.format(1 / Double.parseDouble(tf.getText())));</p><p><b> }</b></p><p><b> }</b></p><p> /* sin求正弦函數(shù) */</p><p> else if(str.equals("si
52、n")){</p><p> double i = Double.parseDouble(tf.getText());</p><p> tf.setText(String.valueOf(df.format(Math.sin(i))));</p><p><b> }</b></p><p> /*
53、cos求余弦函數(shù) */</p><p> else if(str.equals("cos")){</p><p> double i = Double.parseDouble(tf.getText());</p><p> tf.setText(String.valueOf(df.format(Math.cos(i))));</p&g
54、t;<p><b> }</b></p><p> /* tan求正切函數(shù) */</p><p> else if(str.equals("tan")){</p><p> double i = Double.parseDouble(tf.getText());</p><p>
55、 tf.setText(String.valueOf(df.format(Math.tan(i))));</p><p><b> }</b></p><p> /* n!求階乘 */</p><p> else if(str.equals("n!")){</p><p> double i
56、 = Double.parseDouble(tf.getText());</p><p> if((i%2==0)||(i%2==1))//判斷為整數(shù)放進(jìn)行階乘操作</p><p><b> {</b></p><p> int j = (int)i;//強制類型轉(zhuǎn)換</p><p> int result=1;
57、</p><p> for(int k=1;k<=j;k++)</p><p> result *= k;</p><p> tf.setText(String.valueOf(result));</p><p><b> }</b></p><p><b> else&
58、lt;/b></p><p><b> {</b></p><p> tf.setText("無法進(jìn)行階乘");</p><p><b> }</b></p><p><b> }</b></p><p> /* x^
59、2求平方 */</p><p> else if(str.equals("x^2")){</p><p> double i = Double.parseDouble(tf.getText());</p><p> tf.setText(String.valueOf(df.format(i*i)));</p><p>
60、;<b> }</b></p><p> /* x^3求立方 */</p><p> else if(str.equals("x^3")){</p><p> double i = Double.parseDouble(tf.getText());</p><p> tf.setText(S
61、tring.valueOf(df.format(i*i*i)));</p><p><b> }</b></p><p> else if(str.equals("′″")){</p><p> double i = Double.parseDouble(tf.getText());</p><p&
62、gt; tf.setText(String.valueOf(i/180*Math.PI));</p><p><b> }</b></p><p><b> else{</b></p><p><b> if(flag){</b></p><p> IfResult
63、= false;</p><p><b> }</b></p><p> if(IfResult){</p><p> oper = str;</p><p><b> }else{ </b></p><p> getResult(Double.parseDoubl
64、e(tf.getText()));</p><p> oper = str;</p><p> IfResult = true;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b>&
65、lt;/p><p><b> }</b></p><p> class Clear implements ActionListener{</p><p> public void actionPerformed(ActionEvent e) {</p><p> String str = e.getActionCom
66、mand();</p><p> if(str == "C"){</p><p> tf.setText("0");</p><p> IfResult = true;</p><p> result = 0;</p><p> }else if(str == &quo
67、t;-/+"){</p><p> double i = 0 - Double.parseDouble(tf.getText().trim());</p><p> tf.setText(df.format(i));</p><p> }else if(str == "Backspace"){</p><p&g
68、t; if(Double.parseDouble(tf.getText()) > 0){</p><p> if(tf.getText().length() > 1){</p><p> tf.setText(tf.getText().substring(0, tf.getText().length() - 1));</p><p> //使用退
69、格刪除最后一位字符</p><p><b> }else{</b></p><p> tf.setText("0");</p><p> IfResult = true;</p><p><b> }</b></p><p><b>
70、}else{</b></p><p> if(tf.getText().length() > 2){</p><p> tf.setText(tf.getText().substring(0, tf.getText().length() - 1));</p><p><b> }else{</b></p>
71、<p> tf.setText("0");</p><p> IfResult = true;</p><p><b> }</b></p><p><b> }</b></p><p> }else if(str == "CE"){<
72、;/p><p> tf.setText("0");</p><p> IfResult = true;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p
73、><p> class Num implements ActionListener{</p><p> public void actionPerformed(ActionEvent e) {</p><p> String str = e.getActionCommand();</p><p> if(IfResult){</p&
74、gt;<p> tf.setText("");</p><p> IfResult = false;</p><p><b> }</b></p><p> if(str=="π")</p><p><b> {</b></p&g
75、t;<p> tf.setText(String.valueOf(Math.PI));</p><p><b> }</b></p><p> else if(str=="e")</p><p><b> {</b></p><p> tf.setText
76、(String.valueOf(Math.E));</p><p><b> }</b></p><p><b> else{</b></p><p> tf.setText(tf.getText().trim() + str);</p><p> if(tf.getText().equal
77、s("0")){</p><p> tf.setText("0");</p><p> IfResult = true;</p><p> flag = true;</p><p><b> }</b></p><p><b> }<
78、;/b></p><p><b> }</b></p><p><b> }</b></p><p> class Dot implements ActionListener{</p><p> public void actionPerformed(ActionEvent e) {&
79、lt;/p><p> IfResult = false;</p><p> if(tf.getText().trim().indexOf(".") == -1){</p><p> tf.setText(tf.getText() + ".");</p><p><b> }</b&g
80、t;</p><p><b> }</b></p><p><b> }</b></p><p> public static void main(String[] args) {</p><p> new Calucator().setVisible(true);</p>&
81、lt;p><b> }</b></p><p><b> } </b></p><p> 3.4.2 測試及運行結(jié)果</p><p><b> 1、輸入數(shù)字20</b></p><p><b> 計算5!</b></p>&
82、lt;p><b> 4 總結(jié)與心得體會</b></p><p> 通過本次課程設(shè)計我學(xué)到了好多,也發(fā)現(xiàn)了自己的好多不足!很顯然最明顯的收獲是理解和較熟練的掌握了JavaApplet 圖形界面的基本方法,尤其在 JavaApplet 圖形界面的布局方面學(xué)到頗多,以前布局很亂并且很多布局都是無效的.在此次課設(shè)中通過查閱很多資料和同學(xué)的互相幫助,充分發(fā)揮了 JavaApplet 界面布局
83、的優(yōu)越性.另外按鈕功能的實現(xiàn)也是本次課設(shè)的一大難點,怎樣實現(xiàn)那些功能是關(guān)鍵.通過這次課設(shè)我又學(xué)會了好多函數(shù)。另外我這次課設(shè)部分程序是通過外部資料得到的,這使得我認(rèn)識到查閱資料和開外多看書 籍的重要性.但不主張照搬,因為那不是我們自己成果,那是不光彩的!總之通過此次課設(shè)我學(xué)到了好多,也掌握了好多關(guān)于 JavaApplet 的事件管理和按鈕功能實現(xiàn)方法。</p><p><b> 參考文獻(xiàn)</b&g
84、t;</p><p> [1] 屈輝立,陳可明,石武信.JSP網(wǎng)站編程教程[M].第1版, 北京:北京希望電子出版社,2005 </p><p> [2] 白勇.用B/S模式構(gòu)建在線考試系統(tǒng)[J],重慶電力高等專科學(xué)校學(xué)報,2003,10(4): 100~130. </p><p> [3]劉萬軍,梁清華,王
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 模擬科學(xué)計算器 課程設(shè)計報告
- 模擬科學(xué)計算器課程設(shè)計
- java模擬科學(xué)計算器課程設(shè)計
- java課程設(shè)計模擬科學(xué)計算器
- java課程設(shè)計-模擬科學(xué)計算器
- java模擬科學(xué)計算器課程設(shè)計
- java模擬科學(xué)計算器課程設(shè)計
- 面向?qū)ο笳n程設(shè)計--模擬科學(xué)計算器
- 課程設(shè)計計算器模擬
- mfc課程設(shè)計報告—模擬計算器
- java課程設(shè)計---科學(xué)計算器
- 計算器課程設(shè)計報告
- java計算器課程設(shè)計---計算器模擬程序
- 課程設(shè)計報告---計算器設(shè)計
- java課程設(shè)計報告—計算器
- 簡單計算器課程設(shè)計報告
- 簡易計算器課程設(shè)計報告
- 硬件課程設(shè)計報告--計算器
- java計算器課程設(shè)計報告
- vb計算器課程設(shè)計報告
評論
0/150
提交評論