版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 工學(xué)系課程設(shè)計(jì)報(bào)告</b></p><p> 設(shè) 計(jì) 題 目:計(jì)算帶變量的數(shù)學(xué)表達(dá)式程序 </p><p> 系 別:工學(xué)系 </p><p> 專 業(yè) (方 向):信息管理與信息系統(tǒng)
2、 </p><p> 年 級、 班:2012級本科(1)班 </p><p> 2014年6月30日</p><p> 帶變量的數(shù)學(xué)運(yùn)算表達(dá)式</p><p><b> 系統(tǒng)開發(fā)的背景</b></p><p> 在我們?nèi)粘I钪?,?jì)算開支
3、、收入時(shí),大額數(shù)字或是多倍小數(shù)的計(jì)算都需要計(jì)算器的幫助,而在學(xué)習(xí)一些科目時(shí),也常常要處理數(shù)字。雖然現(xiàn)在的計(jì)算器價(jià)格比較低廉,但是功能過于簡單的不能滿足個(gè)人需求,功能多的價(jià)格較貴,不僅操作不便,很多功能也根本用不到。為了設(shè)計(jì)開發(fā)一個(gè)屬于自己的簡單計(jì)算器來完成日常學(xué)習(xí)生活的需求。因此,我們用自己所學(xué)的知識,采用GUI來實(shí)現(xiàn)計(jì)算器,并采用Swing組件,AWT事件處理等實(shí)現(xiàn)具體功能。</p><p><b>
4、 系統(tǒng)分析與設(shè)計(jì)</b></p><p><b> ?。ㄒ唬┫到y(tǒng)功能要求</b></p><p> 由于現(xiàn)代用戶更傾向于由鼠標(biāo)方便操作的圖形用戶界面,所以我們采用GUI來實(shí)現(xiàn)計(jì)算器,并采用Swing組件,AWT事件處理等實(shí)現(xiàn)具體功能。功能要求: </p><p> ?。?)由用戶輸入一個(gè)表達(dá)式,求出其計(jì)算結(jié)果后顯示。&
5、#160;</p><p> ?。?)允許在表達(dá)式中出現(xiàn)常用的數(shù)學(xué)函數(shù),如絕對值、取整、三角函數(shù)、倒數(shù)、平方根、平方、立方等。 </p><p> (3)要能夠判斷出表達(dá)式中的變量名及其個(gè)數(shù),按照變量名自動彈出/出現(xiàn)輸入界面逐個(gè)讓用戶輸入變量。 </p><p> ?。?)盡量使用圖形界面實(shí)現(xiàn),要符合日常軟件使用規(guī)范來設(shè)計(jì)菜單和界面。</
6、p><p> ?。?)如果無法實(shí)現(xiàn)圖形界面,則在命令行方式下也需要提供菜單,方便用戶操作。</p><p> ?。ǘ┫到y(tǒng)模塊結(jié)構(gòu)設(shè)計(jì)</p><p> 通過對系統(tǒng)功能的分析,計(jì)算帶變量的數(shù)學(xué)表達(dá)式系統(tǒng)功能模板如下圖所示:</p><p> 通過上圖的功能分析,把整個(gè)系統(tǒng)劃分為2個(gè)大模塊,9個(gè)小功能:</p><p>
7、 簡單計(jì)算,具體實(shí)現(xiàn)功能:計(jì)算加、減、乘、除。</p><p> 簡單科學(xué)計(jì)算,具體實(shí)現(xiàn)功能:開平方運(yùn)算、平方、立方、取整、三角函數(shù)、倒數(shù)。</p><p><b> 系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)</b></p><p> 以下是部分類功能的說明:</p><p> CalFrame //構(gòu)造新窗體</p>
8、<p> CalPanelL //定義面板容器</p><p> CalButton//定義按鈕</p><p><b> 系統(tǒng)測試</b></p><p><b> 主要問題:</b></p><p> 1.標(biāo)點(diǎn)符號問題,經(jīng)常出現(xiàn)漏打分號,忽略中英文標(biāo)點(diǎn)轉(zhuǎn)換等問題,所以一定要謹(jǐn)
9、慎仔細(xì).</p><p> 2.進(jìn)制轉(zhuǎn)換的實(shí)現(xiàn)及正/余弦計(jì)算經(jīng)常出現(xiàn)問題,結(jié)果不正確,經(jīng)過查閱資料及反復(fù)調(diào)試,我終于克服了這一難題.</p><p> 3.界面設(shè)計(jì),開始我的設(shè)計(jì)不太合理,各類功能鍵排序不合理,看起來雜亂無章,既不美觀也不實(shí)用。經(jīng)過多次調(diào)整程序終于能使界面美觀實(shí)用。</p><p> 4.要注意類、成員變量、成員方法的命名,其中,class后的
10、類名由一個(gè)或多個(gè)英文</p><p> 5.單詞構(gòu)成,每個(gè)單詞的第一個(gè)字符必須是大寫;而成員變量和成員方法名的第一個(gè)單詞的第一個(gè)字母必須小寫,其他單詞第一個(gè)字母大寫。</p><p> 6.以下是其中一些主要功能演示過程:</p><p> 運(yùn)行界面: </p><p&g
11、t;<b> 總結(jié)</b></p><p> 通過此次的課程設(shè)計(jì)實(shí)踐,我不但進(jìn)一步理解掌握了老師教授的知識,而且通過查找資料學(xué)會了課上沒有的東西,進(jìn)一步理解了面向?qū)ο蟮暮x,發(fā)現(xiàn)了很多它比面向過程突出的地方,第一次接觸了圖形界面,初步了解了GUI方面的知識。在實(shí)踐中我遇到了很多問題,但我都努力克服,并最終成功的完成了這次課程設(shè)計(jì)。</p><p> 通過編寫這個(gè)
12、相對復(fù)雜的程序,我認(rèn)識解決實(shí)際問題前應(yīng)先建立模型,再通過建立的模型使問題簡單化,從而解決問題。并且這次編寫的程序大部分是通過調(diào)用各包中的方法來實(shí)現(xiàn)的,這也讓我充分理解了包和類的調(diào)用關(guān)系。由于這次編寫的程序比較復(fù)雜,所以不能一次性編寫、調(diào)試,也由此讓我學(xué)會把程序分塊,逐個(gè)編寫、調(diào)試。</p><p><b> 附件(源代碼)</b></p><p> import
13、java.awt.*; </p><p> import java.awt.event.*;</p><p> public class Cal {</p><p> public static void main(String[] args) {</p><p> CalFrame f = new CalFrame(); <
14、/p><p><b> }</b></p><p><b> }</b></p><p> class CalFrame extends Frame {//定義窗口類</p><p> double d1, d2 ,c;//兩個(gè)數(shù)對象d1,d2</p><p> int
15、 op = 0;// 為下面實(shí)現(xiàn)接口處理異常做準(zhǔn)備</p><p> TextField tf;//定義文本域</p><p> CalPanelL p1;//左容器對象</p><p> CalPanelR p2;//右容器對象</p><p> CalFrame()//構(gòu)造函數(shù){</p><p> sup
16、er("計(jì)算數(shù)學(xué)表達(dá)式的程序");//設(shè)置圖形界面Frame標(biāo)題</p><p> setLayout(new FlowLayout(FlowLayout.CENTER,8,10));</p><p> setBackground(new Color(140,120,110));</p><p> setForeground(Color.w
17、hite);</p><p> setResizable(false);</p><p> setSize(250,200);</p><p> setLocation(400,260);//設(shè)置Frame相應(yīng)屬性</p><p> tf = new TextField(22);</p><p> tf.se
18、tEditable(false);</p><p> tf.setBackground(Color.white);</p><p> tf.setForeground(Color.black);</p><p> tf.setFont(new Font("Arial",Font.BOLD,16));//定義文本框?qū)傩?lt;/p>
19、<p> add(tf);//添加文本框到圖形界面</p><p> p1 = new CalPanelL();</p><p> p2 = new CalPanelR();//初始化容器</p><p><b> add(p1);</b></p><p> add(p2);//添加容器到圖形界面&l
20、t;/p><p> setVisible(true);</p><p> addWindowListener(new Wclose());//添加關(guān)閉窗口事件監(jiān)聽者</p><p> }//構(gòu)造函數(shù)定義結(jié)束</p><p> class CalButton extends Button {//CAlButton類的域定義(內(nèi)部類)<
21、/p><p> CalButton(String s){</p><p><b> super(s);</b></p><p> setBackground(Color.gray);//定義按鈕顏色為灰色</p><p><b> }</b></p><p><b&
22、gt; }</b></p><p> class CalPanelL extends Panel {</p><p> CalButton b0, b1, b2, b3,</p><p> b4, b5, b6, b7,</p><p> b8, b9, bPN, bPoint;//分別代表0,1,2,3,4,5,6,7
23、,8,9,+/-,.</p><p> CalPanelL(){</p><p> setLayout(new GridLayout(4,3));</p><p> setFont(new Font("TimesRoman",Font.BOLD,16));</p><p> b0 = new CalButton(&
24、quot;0"); </p><p> b1 = new CalButton("1"); </p><p> b2 = new CalButton("2"); </p><p> b3 = new CalButton("3"); </p><p> b4 = new
25、 CalButton("4"); </p><p> b5 = new CalButton("5"); </p><p> b6 = new CalButton("6"); </p><p> b7 = new CalButton("7"); </p><p&g
26、t; b8 = new CalButton("8"); </p><p> b9 = new CalButton("9"); </p><p> bPN = new CalButton("+/-");</p><p> bPoint = new CalButton("."); &
27、lt;/p><p> add(b7); b7.addActionListener(new PressB7()); </p><p> add(b8); b8.addActionListener(new PressB8()); </p><p> add(b9); b9.addActionListener(new PressB9()); </p&g
28、t;<p> add(b4); b4.addActionListener(new PressB4()); </p><p> add(b5); b5.addActionListener(new PressB5()); </p><p> add(b6); b6.addActionListener(new PressB6()); </p><
29、;p> add(b1); b1.addActionListener(new PressB1()); </p><p> add(b2); b2.addActionListener(new PressB2()); </p><p> add(b3); b3.addActionListener(new PressB3()); </p><p>
30、 add(b0); b0.addActionListener(new PressB0()); </p><p> add(bPN); bPN.addActionListener(new PressBPN()); ;</p><p> add(bPoint); bPoint.addActionListener(new PressBPoint()); </p>&l
31、t;p><b> }</b></p><p> } class CalPanelR extends Panel {</p><p> CalButton bAdd, bSub, bMul, bDiv,</p><p> bSqrt, bSin, bCos, bYx,</p><p> bInt, bEq
32、ual, bCE, bBack;</p><p> CalPanelR(){</p><p> setLayout(new GridLayout(4,3));</p><p> setFont(new Font("TimesRoman",Font.BOLD,16)); </p><p> bAdd = ne
33、w CalButton("+"); </p><p> bSub = new CalButton("-"); </p><p> bMul = new CalButton("*"); </p><p> bDiv = new CalButton("/"); <
34、/p><p> bSqrt = new CalButton("sqrt"); </p><p> bSin = new CalButton("sin"); </p><p> bCos = new CalButton("cos"); </p><p> bYx = new
35、 CalButton("y^x"); </p><p> bInt = new CalButton("int");</p><p> bEqual = new CalButton("="); </p><p> bCE = new CalButton("CE");
36、 </p><p> bBack = new CalButton("1/x"); </p><p> add(bDiv); bDiv.addActionListener(new PressBDiv()); </p><p> add(bSqrt); bSqrt.addActionListener(new PressBSqrt());
37、 </p><p> add(bInt); bInt.addActionListener(new PressBInt()); </p><p> add(bMul); bMul.addActionListener(new PressBMul()); </p><p> add(bSin); bSin.addActionListener(new Press
38、BSin()); </p><p> add(bBack); bBack.addActionListener(new PressBBack()); </p><p> add(bSub); bSub.addActionListener(new PressBSub()); </p><p> add(bCos); bCos.addActionListene
39、r(new PressBCos()); </p><p> add(bCE); bCE.addActionListener(new PressBCE()); </p><p> add(bAdd); bAdd.addActionListener(new PressBAdd()); </p><p> add(bYx); bYx.addActionList
40、ener(new PressBYx()); </p><p> add(bEqual); bEqual.addActionListener(new PressBEqual()); </p><p><b> }</b></p><p> }//構(gòu)造函數(shù)定義結(jié)束</p><p> class PressBA
41、dd implements ActionListener { </p><p> public void actionPerformed(ActionEvent e) {</p><p> actionPerformed(ActionEvent e)方法代碼</p><p><b> try {</b></p><
42、;p> d1 = Double.parseDouble(tf.getText());</p><p><b> op = 0;</b></p><p> tf.setText("");</p><p> } catch(Exception ee) {}//檢測并處理異常</p><p>
43、<b> }</b></p><p><b> }</b></p><p> class PressBSub implements ActionListener { </p><p> public void actionPerformed(ActionEvent e) {</p><p
44、><b> try {</b></p><p> d1 = Double.parseDouble(tf.getText());</p><p><b> op = 1;</b></p><p> tf.setText("");</p><p> } catch(E
45、xception ee) {}</p><p><b> }</b></p><p><b> }</b></p><p> class PressBMul implements ActionListener { </p><p> public void actionPerform
46、ed(ActionEvent e) {</p><p><b> try {</b></p><p> d1 = Double.parseDouble(tf.getText());</p><p><b> op = 2;</b></p><p> tf.setText("&quo
47、t;);</p><p> } catch(Exception ee) {}</p><p><b> }</b></p><p><b> }</b></p><p> class PressBDiv implements ActionListener { </p>&
48、lt;p> public void actionPerformed(ActionEvent e) {</p><p><b> try {</b></p><p> d1 = Double.parseDouble(tf.getText());</p><p><b> op = 3;</b></p>
49、;<p> tf.setText("");</p><p> } catch(Exception ee) {}</p><p><b> }</b></p><p><b> }</b></p><p> class PressBYx implements
50、 ActionListener { </p><p> public void actionPerformed(ActionEvent e) {</p><p><b> try {</b></p><p> d1 = Double.parseDouble(tf.getText());</p><p>&l
51、t;b> op = 4;</b></p><p> tf.setText("");</p><p> } catch(Exception ee) {}</p><p><b> }</b></p><p><b> }</b></p>&
52、lt;p> class PressBEqual implements ActionListener { </p><p> public void actionPerformed(ActionEvent e) {</p><p><b> try {</b></p><p> double result = 0;</
53、p><p> d2 = Double.parseDouble(tf.getText());</p><p> switch(op) {</p><p><b> case 0:</b></p><p> result = d1 + d2; break;</p><p><b> c
54、ase 1:</b></p><p> result = d1 - d2; break;</p><p><b> case 2:</b></p><p> result = d1 * d2; break;</p><p><b> case 3:</b></p>
55、<p> result = d1 / d2; break;</p><p><b> case 4:</b></p><p> result = Math.pow(d1,d2); break;</p><p><b> default:</b></p><p><b>
56、 }</b></p><p> tf.setText(String.valueOf(result));</p><p> } catch(Exception ee) {}</p><p><b> }</b></p><p><b> }</b></p><p
57、> class PressBSqrt implements ActionListener { </p><p> public void actionPerformed(ActionEvent e) {</p><p> try { double x = Double.parseDouble(tf.getText());</p><p><
58、b> double y;</b></p><p> y = Math.sqrt(x);</p><p> tf.setText(y+"");</p><p> } catch(Exception ee) {}</p><p><b> }</b></p>&l
59、t;p><b> }</b></p><p> class PressBInt implements ActionListener { </p><p> public void actionPerformed(ActionEvent e) {</p><p> try { double x = Double.parseD
60、ouble(tf.getText());</p><p><b> double y;</b></p><p> y = Math.floor(x);</p><p> tf.setText(y+"");</p><p> } catch(Exception ee) {}</p>
61、<p><b> }</b></p><p><b> }</b></p><p> class PressBSin implements ActionListener {</p><p> public void actionPerformed(ActionEvent e) {</p>
62、<p> try { double x = Double.parseDouble(tf.getText());</p><p><b> double y;</b></p><p> y = Math.sin(x);</p><p> tf.setText(y+"");</p><p&
63、gt; } catch(Exception ee) {}</p><p><b> }</b></p><p><b> }</b></p><p> class PressBCos implements ActionListener {</p><p> public void act
64、ionPerformed(ActionEvent e) {</p><p> try { double x = Double.parseDouble(tf.getText());</p><p><b> double y;</b></p><p> y = Math.cos(x);</p><p> tf.se
65、tText(y+"");</p><p> } catch(Exception ee) {}</p><p><b> }</b></p><p><b> }</b></p><p> class PressBBack implements ActionListene
66、r {</p><p> public void actionPerformed(ActionEvent e) {</p><p> try { double c= Double.parseDouble(tf.getText());</p><p> tf.setText(""+1/c);</p><p> } c
67、atch(Exception ee) {}</p><p><b> }</b></p><p><b> }</b></p><p> class PressBCE implements ActionListener {</p><p> public void actionPerfor
68、med(ActionEvent e) {</p><p> tf.setText("");</p><p><b> }</b></p><p><b> }</b></p><p> class PressBPN implements ActionListener {
69、</p><p> public void actionPerformed(ActionEvent e) {</p><p> try { String text = tf.getText();</p><p> if (text != "") {</p><p> if(text.charAt(0) ==
70、9;-')</p><p> tf.setText(text.substring(1));</p><p> else if(text.charAt(0) >= '0' && text.charAt(0) <= '9')</p><p> tf.setText("-"+te
71、xt.substring(0));</p><p> else if(text.charAt(0) == '.')</p><p> tf.setText("-0"+text.substring(0));</p><p><b> }</b></p><p> } catch(
72、Exception ee) { }</p><p><b> }</b></p><p><b> }</b></p><p> class PressBPoint implements ActionListener {</p><p> public void actionPerfor
73、med(ActionEvent e) {</p><p> String text = tf.getText();</p><p> if(text.lastIndexOf(".") == -1)</p><p> tf.setText(text+".");</p><p><b>
74、}</b></p><p><b> } </b></p><p> class PressB0 implements ActionListener {</p><p> public void actionPerformed(ActionEvent e) {</p><p> String tex
75、t = tf.getText();</p><p> tf.setText(text+"0");</p><p><b> }</b></p><p><b> }</b></p><p> class PressB1 implements ActionListener
76、 {</p><p> public void actionPerformed(ActionEvent e) {</p><p> String text = tf.getText();</p><p> tf.setText(text+"1");</p><p><b> }</b><
77、/p><p><b> }</b></p><p> class PressB2 implements ActionListener {</p><p> public void actionPerformed(ActionEvent e) {</p><p> String text = tf.getText()
78、;</p><p> tf.setText(text+"2");</p><p><b> }</b></p><p><b> }</b></p><p> class PressB3 implements ActionListener {</p>&l
79、t;p> public void actionPerformed(ActionEvent e) {</p><p> String text = tf.getText();</p><p> tf.setText(text+"3");</p><p><b> }</b></p><p>
80、;<b> }</b></p><p> class PressB4 implements ActionListener {</p><p> public void actionPerformed(ActionEvent e) {</p><p> String text = tf.getText();</p><
81、;p> tf.setText(text+"4");</p><p><b> }</b></p><p><b> }</b></p><p> class PressB5 implements ActionListener {</p><p> public
82、void actionPerformed(ActionEvent e) {</p><p> String text = tf.getText();</p><p> tf.setText(text+"5");</p><p><b> }</b></p><p><b> }<
83、;/b></p><p> class PressB6 implements ActionListener {</p><p> public void actionPerformed(ActionEvent e) {</p><p> String text = tf.getText();</p><p> tf.setTe
84、xt(text+"6");</p><p><b> }</b></p><p><b> }</b></p><p> class PressB7 implements ActionListener {</p><p> public void actionPerfo
85、rmed(ActionEvent e) {</p><p> String text = tf.getText();</p><p> tf.setText(text+"7");</p><p><b> }</b></p><p><b> }</b></p>
86、;<p> class PressB8 implements ActionListener {</p><p> public void actionPerformed(ActionEvent e) {</p><p> String text = tf.getText();</p><p> tf.setText(text+"8&
87、quot;);</p><p><b> }</b></p><p><b> }</b></p><p> class PressB9 implements ActionListener {</p><p> public void actionPerformed(ActionEvent
88、 e) {</p><p> String text = tf.getText();</p><p> tf.setText(text+"9");</p><p><b> }</b></p><p><b> }</b></p><p> cl
89、ass Wclose extends WindowAdapter {</p><p> public void windowClosing(WindowEvent e) {</p><p> System.exit(0); </p><p><b> }</b></p><p><b> }</b
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 算術(shù)表達(dá)式的計(jì)算課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)(表達(dá)式計(jì)算)
- 課程設(shè)計(jì)--表達(dá)式翻譯
- 算術(shù)表達(dá)式求值課程設(shè)計(jì)
- c++課程設(shè)計(jì)---中綴表達(dá)式轉(zhuǎn)后綴表達(dá)式的實(shí)現(xiàn)
- 基于表達(dá)式計(jì)算器的編譯原理課程設(shè)計(jì)
- vc++課程設(shè)計(jì)《算術(shù)表達(dá)式》
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)帶括號的算術(shù)表達(dá)式求值
- 課程設(shè)計(jì)報(bào)告-表達(dá)式類型的實(shí)現(xiàn)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-表達(dá)式求值
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--表達(dá)式求值
- 利用棧求表達(dá)式課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---表達(dá)式求值
- 數(shù)據(jù)結(jié)構(gòu)(表達(dá)式求值)課程設(shè)計(jì)
- 算術(shù)表達(dá)式求值演示-課程設(shè)計(jì)報(bào)告
- 算數(shù)表達(dá)式的求解課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--算術(shù)表達(dá)式求值
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--表達(dá)式求值問題
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告-表達(dá)式求值
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告--表達(dá)式求值
評論
0/150
提交評論