版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quá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> 參考文獻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è)置標題欄</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();//對計算器進行初始化</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、負數(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("負數(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ù)放進行階乘操作</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("無法進行階乘");</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è)部分程序是通過外部資料得到的,這使得我認識到查閱資料和開外多看書 籍的重要性.但不主張照搬,因為那不是我們自己成果,那是不光彩的!總之通過此次課設(shè)我學(xué)到了好多,也掌握了好多關(guān)于 JavaApplet 的事件管理和按鈕功能實現(xiàn)方法。</p><p><b> 參考文獻</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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 模擬科學(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
提交評論