版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、-. z.程序設(shè)計(jì)實(shí)訓(xùn)報(bào)告題目:計(jì)算數(shù)學(xué)表達(dá)式程序1、課程設(shè)計(jì)目的(1)復(fù)習(xí)穩(wěn)固java語(yǔ)言的根底知識(shí),進(jìn)一步加深對(duì)java語(yǔ)言的理解和掌控 2課程設(shè)計(jì)為大家提供了一個(gè)既動(dòng)手又動(dòng)腦,獨(dú)立實(shí)踐的時(shí)機(jī),將課本上的理論知識(shí)和實(shí)際有機(jī)結(jié)合起來,鍛煉我們的分析解決實(shí)際問題的能力。提高我們適應(yīng)實(shí)際,實(shí)踐編程的能力。 3培養(yǎng)我們?cè)诠こ涕_發(fā)中創(chuàng)新意識(shí)及能力,通過親身實(shí)踐,利用所學(xué)編寫簡(jiǎn)單的面向?qū)ο蟪绦颍岣邔?duì)面向?qū)ο蠹癑AVA語(yǔ)言的理解。2、設(shè)計(jì)題目分析21 題目要求:1由用戶輸入一個(gè)簡(jiǎn)單的四則運(yùn)算表達(dá)式,求出其計(jì)算結(jié)果后顯示。2 允許在表達(dá)式中出現(xiàn)常用的數(shù)學(xué)函數(shù),如取整、三角函數(shù)、倒數(shù)、平方根、平方、立方等
2、。2.2 界面要求:1 盡量使用圖形界面實(shí)現(xiàn),要符合日常軟件使用規(guī)*來設(shè)計(jì)菜單和界面。2 如果無法實(shí)現(xiàn)圖形界面,則在命令行方式下也需要提供菜單,方便用戶操作。23 設(shè)計(jì)要求及需求分析 設(shè)計(jì)要求:由于現(xiàn)代用戶更傾向于由鼠標(biāo)方便操作的圖形用戶界面,所以我們采用GUI來實(shí)現(xiàn)計(jì)算器,并采用Swing組件,AWT事件處理等實(shí)現(xiàn)具體功能。 需求分析:在我們?nèi)粘I钪?,?jì)算開支、收入時(shí),大額數(shù)字或是多倍小數(shù)的計(jì)算都需要計(jì)算器的幫助,而在學(xué)習(xí)一些科目時(shí),也常常要處理數(shù)字。雖然現(xiàn)在的計(jì)算器價(jià)格比擬低廉,但是功能過于簡(jiǎn)單的不能滿足個(gè)人需求,功能多的價(jià)格較貴,不僅操作不便,很多功能也根本用不到。所以我們想用自己所學(xué)
3、設(shè)計(jì)開發(fā)一個(gè)屬于自己的簡(jiǎn)單計(jì)算器來完成日常學(xué)習(xí)生活的需求。3、課程設(shè)計(jì)內(nèi)容31 總體設(shè)計(jì): 系統(tǒng)總體設(shè)計(jì)框架CalPanelL p1: 數(shù)字鍵按鈕等CalPanelL p2:操作按鈕簡(jiǎn)單計(jì)算器加減乘除系統(tǒng)功能模塊圖:簡(jiǎn)單科學(xué)計(jì)算器開平方運(yùn)算絕對(duì)值平方、立方取整三角函數(shù)倒數(shù)32 詳細(xì)設(shè)計(jì):以下是局部類功能的說明:CalFrame /構(gòu)造新窗體CalPanelL /定義面板容器CalButton/定義按鈕33 調(diào)試與測(cè)試:包括程序調(diào)試過程、數(shù)據(jù)測(cè)試結(jié)果分析,測(cè)試過程中遇到的主要問題及采取的解決措施;列出主要問題的出錯(cuò)現(xiàn)象、出錯(cuò)原因、解決方法及效果等。 主要問題: 1.標(biāo)點(diǎn)符號(hào)問題,經(jīng)常出現(xiàn)漏打分號(hào)
4、,忽略中英文標(biāo)點(diǎn)轉(zhuǎn)換等問題,所以一定要慎重仔細(xì). 2.進(jìn)制轉(zhuǎn)換的實(shí)現(xiàn)及正/余弦計(jì)算經(jīng)常出現(xiàn)問題,結(jié)果不正確,經(jīng)過查閱資料及反復(fù)調(diào)試,我們終于克制了這一難題. 3.界面設(shè)計(jì),開場(chǎng)我們的設(shè)計(jì)不太合理,各類功能鍵排序不合理,看起來雜亂無章,既不美觀也不實(shí)用。經(jīng)過屢次調(diào)整程序終于能使界面美觀實(shí)用。 4.要注意類、成員變量、成員方法的命名,其中,class后的類名由一個(gè)或多個(gè)英文單詞構(gòu)成,每個(gè)單詞的第一個(gè)字符必須是大寫;而成員變量和成員方法名的第一個(gè)單詞的第一個(gè)字母必須小寫,其他單詞第一個(gè)字母大寫。以下是其中一些主要功能演示過程:運(yùn)行界面: 4、設(shè)計(jì)心得與總結(jié):通過此次的課程設(shè)計(jì)實(shí)踐,我們不但進(jìn)一步理解
5、掌握了課上教師教授的知識(shí),而且通過查找資料學(xué)會(huì)了課上沒有的東西,進(jìn)一步理解了面向?qū)ο蟮暮x,發(fā)現(xiàn)了很多它比面向過程突出的地方,第一次接觸了圖形界面,初步了解了GUI方面的知識(shí)。在實(shí)踐中我們遇到了很多問題,但我們都努力克制,并最終成功的完成了這次課程設(shè)計(jì)。 通過編寫這個(gè)相對(duì)復(fù)雜的程序,我們認(rèn)識(shí)解決實(shí)際問題前應(yīng)先建立模型,再通過建立的模型使問題簡(jiǎn)單化,從而解決問題。并且這次編寫的程序大局部是通過調(diào)用各包中的方法來實(shí)現(xiàn)的,這也讓我們充分理解了包和類的調(diào)用關(guān)系。由于這次編寫的程序比擬復(fù)雜,所以不能一次性編寫、調(diào)試,也由此讓我們學(xué)會(huì)把程序分塊,逐個(gè)編寫、調(diào)試。-. z.附錄源代碼import java.
6、awt.*; import java.awt.event.*;/加載包使用圖形界面處理的,都必須加載此包public class Cal public static void main(String args) CalFrame f = new CalFrame();/創(chuàng)立并初始化被訪問類的對(duì)象,形成圖形界面主程序界面 /定義含有main方法的主類Calclass CalFrame e*tends Frame /定義窗口類 double d1, d2 ,c;/兩個(gè)數(shù)對(duì)象d1,d2 int op = 0;/ 為下面實(shí)現(xiàn)接口處理異常做準(zhǔn)備 Te*tField tf;/定義文本域 CalPanelL
7、 p1;/左容器對(duì)象 CalPanelR p2;/右容器對(duì)象 CalFrame()/構(gòu)造函數(shù) super(計(jì)算數(shù)學(xué)表達(dá)式的程序);/設(shè)置圖形界面Frame標(biāo)題 setLayout(new FlowLayout(FlowLayout.CENTER,8,10); setBackground(new Color(140,120,110); setForeground(Color.white); setResizable(false); setSize(250,200);setLocation(400,260);/設(shè)置Frame相應(yīng)屬性 tf = new Te*tField(22); tf.setEd
8、itable(false); tf.setBackground(Color.white); tf.setForeground(Color.black); tf.setFont(new Font(Arial,Font.BOLD,16);/定義文本框?qū)傩?add(tf);/添加文本框到圖形界面 p1 = new CalPanelL(); p2 = new CalPanelR();/初始化容器 add(p1); add(p2);/添加容器到圖形界面 setVisible(true); addWindowListener(new Wclose();/添加關(guān)閉窗口事件監(jiān)聽者 /構(gòu)造函數(shù)定義完畢 clas
9、s CalButton e*tends Button /CAlButton類的域定義內(nèi)部類 CalButton(String s) super(s); setBackground(Color.gray);/定義按鈕顏色為灰色 class CalPanelL e*tends Panel CalButton b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, bPN, bPoint;/分別代表0,1,2,3,4,5,6,7,8,9,+/-,. CalPanelL() /構(gòu)造函數(shù) setLayout(new GridLayout(4,3); setFont(new Fon
10、t(TimesRoman,Font.BOLD,16); b0 = new CalButton(0); b1 = new CalButton(1); b2 = new CalButton(2); b3 = new CalButton(3); b4 = new CalButton(4); b5 = new CalButton(5); b6 = new CalButton(6); b7 = new CalButton(7); b8 = new CalButton(8); b9 = new CalButton(9); bPN = new CalButton(+/-); bPoint = new Cal
11、Button(.); / 參加按鈕 add(b7); b7.addActionListener(new PressB7(); add(b8); b8.addActionListener(new PressB8(); add(b9); b9.addActionListener(new PressB9(); add(b4); b4.addActionListener(new PressB4(); add(b5); b5.addActionListener(new PressB5(); add(b6); b6.addActionListener(new PressB6(); add(b1); b1.
12、addActionListener(new PressB1(); add(b2); b2.addActionListener(new PressB2(); add(b3); b3.addActionListener(new PressB3(); add(b0); b0.addActionListener(new PressB0(); add(bPN); bPN.addActionListener(new PressBPN(); ; add(bPoint); bPoint.addActionListener(new PressBPoint();/注冊(cè)給PressBPoint對(duì)象 /構(gòu)造函數(shù)定義完
13、畢 class CalPanelR e*tends Panel CalButton bAdd, bSub, bMul, bDiv, bSqrt, bSin, bCos, bY*, bInt, bEqual, bCE, bBack;/分別代表加、減、乘、除,開平方,三角函數(shù)正弦、余弦,平方、立方,取整,等于,去除,后退 CalPanelR()/構(gòu)造函數(shù) setLayout(new GridLayout(4,3); setFont(new Font(TimesRoman,Font.BOLD,16);/指定Font對(duì)象的字體、字形、字號(hào) bAdd = new CalButton(+); bSub =
14、 new CalButton(-); bMul = new CalButton(*); bDiv = new CalButton(/); bSqrt = new CalButton(sqrt); bSin = new CalButton(sin); bCos = new CalButton(cos); bY* = new CalButton(y*); bInt = new CalButton(int); bEqual = new CalButton(=); bCE = new CalButton(CE); bBack = new CalButton(1/*); /將按鈕加到容器中 add(bD
15、iv); bDiv.addActionListener(new PressBDiv(); add(bSqrt); bSqrt.addActionListener(new PressBSqrt(); add(bInt); bInt.addActionListener(new PressBInt(); add(bMul); bMul.addActionListener(new PressBMul(); add(bSin); bSin.addActionListener(new PressBSin(); add(bBack); bBack.addActionListener(new PressBBa
16、ck(); add(bSub); bSub.addActionListener(new PressBSub(); add(bCos); bCos.addActionListener(new PressBCos(); add(bCE); bCE.addActionListener(new PressBCE(); add(bAdd); bAdd.addActionListener(new PressBAdd(); add(bY*); bY*.addActionListener(new PressBY*(); add(bEqual); bEqual.addActionListener(new Pre
17、ssBEqual(); /注冊(cè)給PressBEqual對(duì)象 /構(gòu)造函數(shù)定義完畢 class PressBAdd implements ActionListener /定義該類實(shí)現(xiàn)ActionListener接口,是ActionEvent事件的監(jiān)聽者 public void actionPerformed(ActionEvent e) /為實(shí)現(xiàn)這個(gè)接口的類編寫重載actionPerformed(ActionEvent e方法代碼 try d1 = Double.parseDouble(tf.getTe*t(); op = 0; tf.setTe*t(); catch(E*ception ee)
18、/檢測(cè)并處理異常 class PressBSub implements ActionListener /定義該類實(shí)現(xiàn)ActionListener接口,是ActionEvent事件的監(jiān)聽者 public void actionPerformed(ActionEvent e) try d1 = Double.parseDouble(tf.getTe*t(); op = 1; tf.setTe*t(); catch(E*ception ee) class PressBMul implements ActionListener /定義該類實(shí)現(xiàn)ActionListener接口,是ActionEvent事
19、件的監(jiān)聽者 public void actionPerformed(ActionEvent e) try d1 = Double.parseDouble(tf.getTe*t(); op = 2; tf.setTe*t(); catch(E*ception ee) class PressBDiv implements ActionListener /定義該類實(shí)現(xiàn)ActionListener接口,是ActionEvent事件的監(jiān)聽者 public void actionPerformed(ActionEvent e) try d1 = Double.parseDouble(tf.getTe*t(
20、); op = 3; tf.setTe*t(); catch(E*ception ee) class PressBY* implements ActionListener /定義該類實(shí)現(xiàn)ActionListener接口,是ActionEvent事件的監(jiān)聽者 public void actionPerformed(ActionEvent e) try d1 = Double.parseDouble(tf.getTe*t(); op = 4; tf.setTe*t(); catch(E*ception ee) class PressBEqual implements ActionListener
21、/定義該類實(shí)現(xiàn)ActionListener接口,是ActionEvent事件的監(jiān)聽者 public void actionPerformed(ActionEvent e) try double result = 0; d2 = Double.parseDouble(tf.getTe*t(); switch(op) case 0: result = d1 + d2; break; case 1: result = d1 - d2; break; case 2: result = d1 * d2; break; case 3: result = d1 / d2; break; case 4: re
22、sult = Math.pow(d1,d2); break; default: tf.setTe*t(String.valueOf(result); catch(E*ception ee) class PressBSqrt implements ActionListener /定義該類實(shí)現(xiàn)ActionListener接口,是ActionEvent事件的監(jiān)聽者 public void actionPerformed(ActionEvent e) try double * = Double.parseDouble(tf.getTe*t(); double y; y = Math.sqrt(*);
23、tf.setTe*t(y+); catch(E*ception ee) class PressBInt implements ActionListener /定義該類實(shí)現(xiàn)ActionListener接口,是ActionEvent事件的監(jiān)聽者 public void actionPerformed(ActionEvent e) try double * = Double.parseDouble(tf.getTe*t(); double y; y = Math.floor(*); tf.setTe*t(y+); catch(E*ception ee) class PressBSin impleme
24、nts ActionListener /定義該類實(shí)現(xiàn)ActionListener接口,是ActionEvent事件的監(jiān)聽者 public void actionPerformed(ActionEvent e) try double * = Double.parseDouble(tf.getTe*t(); double y; y = Math.sin(*); tf.setTe*t(y+); catch(E*ception ee) class PressBCos implements ActionListener /定義該類實(shí)現(xiàn)ActionListener接口,是ActionEvent事件的監(jiān)聽者
25、 public void actionPerformed(ActionEvent e) try double * = Double.parseDouble(tf.getTe*t(); double y; y = Math.cos(*); tf.setTe*t(y+); catch(E*ception ee) class PressBBack implements ActionListener /定義該類實(shí)現(xiàn)ActionListener接口,是ActionEvent事件的監(jiān)聽者 public void actionPerformed(ActionEvent e) try double c= Do
26、uble.parseDouble(tf.getTe*t(); tf.setTe*t(+1/c); catch(E*ception ee) class PressBCE implements ActionListener public void actionPerformed(ActionEvent e) tf.setTe*t(); class PressBPN implements ActionListener public void actionPerformed(ActionEvent e) try String te*t = tf.getTe*t(); if (te*t != ) if(
27、te*t.charAt(0) = -) tf.setTe*t(te*t.substring(1); else if(te*t.charAt(0) = 0 & te*t.charAt(0) = 9) tf.setTe*t(-+te*t.substring(0); else if(te*t.charAt(0) = .) tf.setTe*t(-0+te*t.substring(0); catch(E*ception ee) class PressBPoint implements ActionListener public void actionPerformed(ActionEvent e) S
28、tring te*t = tf.getTe*t(); if(te*t.lastInde*Of(.) = -1) tf.setTe*t(te*t+.); class PressB0 implements ActionListener public void actionPerformed(ActionEvent e) String te*t = tf.getTe*t(); tf.setTe*t(te*t+0); class PressB1 implements ActionListener public void actionPerformed(ActionEvent e) String te*t = tf.getTe*t(); tf.setTe*t(te*t+1); class PressB2 implements ActionListener public void actionPerformed(ActionEvent e) String te*t = tf.getTe*t(); tf.setTe*t(te*t+2); class PressB3 implements ActionListener public void actionPerformed(ActionEvent e) String te
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度個(gè)人教育培訓(xùn)機(jī)構(gòu)課程購(gòu)銷擔(dān)保合同2篇
- 2025版新能源汽車停車位租賃與生態(tài)補(bǔ)償協(xié)議2篇
- 二零二五年度誠(chéng)意金支付及退回協(xié)議合同4篇
- 看大數(shù)據(jù)時(shí)代下健康醫(yī)療傳播的發(fā)展與創(chuàng)新路徑
- 跨行業(yè)合作在展覽活動(dòng)中的應(yīng)用
- 項(xiàng)目制學(xué)習(xí)在學(xué)科教學(xué)中的實(shí)踐與評(píng)價(jià)
- 2025版國(guó)際貿(mào)易項(xiàng)目轉(zhuǎn)讓居間協(xié)議書3篇
- 2025版土地承包經(jīng)營(yíng)合同樣本4篇
- 湖南2025年湖南省生態(tài)環(huán)境廳直屬事業(yè)單位招聘44人筆試歷年參考題庫(kù)附帶答案詳解
- 溫州浙江溫州市龍灣區(qū)政務(wù)服務(wù)中心招聘編外工作人員筆試歷年參考題庫(kù)附帶答案詳解
- 小學(xué)六年級(jí)數(shù)學(xué)奧數(shù)題100題附答案(完整版)
- 湖南高速鐵路職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試參考試題庫(kù)(含答案)
- 英漢互譯單詞練習(xí)打印紙
- 2023湖北武漢華中科技大學(xué)招聘實(shí)驗(yàn)技術(shù)人員24人筆試參考題庫(kù)(共500題)答案詳解版
- 一氯二氟甲烷安全技術(shù)說明書MSDS
- 母嬰護(hù)理員題庫(kù)
- 老年人預(yù)防及控制養(yǎng)老機(jī)構(gòu)院內(nèi)感染院內(nèi)感染基本知識(shí)
- SWITCH暗黑破壞神3超級(jí)金手指修改 版本號(hào):2.7.6.90885
- 2023高考語(yǔ)文全國(guó)甲卷詩(shī)歌閱讀題晁補(bǔ)之《臨江仙 身外閑愁空滿眼》講評(píng)課件
- 物流簽收回執(zhí)單
- 鋼結(jié)構(gòu)廠房造價(jià)指標(biāo)
評(píng)論
0/150
提交評(píng)論