版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(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é)合起來(lái),鍛煉我們的分析解決實(shí)際問(wèn)題的能力。提高我們適應(yīng)實(shí)際,實(shí)踐編程的能力。 3培養(yǎng)我們?cè)诠こ涕_(kāi)發(fā)中創(chuàng)新意識(shí)及能力,通過(guò)親身實(shí)踐,利用所學(xué)編寫(xiě)簡(jiǎn)單的面向?qū)ο蟪绦?,提高?duì)面向?qū)ο蠹癑AVA語(yǔ)言的理解。2、設(shè)計(jì)題目分析21 題目要求:1由用戶(hù)輸入一個(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ī)*來(lái)設(shè)計(jì)菜單和界面。2 如果無(wú)法實(shí)現(xiàn)圖形界面,則在命令行方式下也需要提供菜單,方便用戶(hù)操作。23 設(shè)計(jì)要求及需求分析 設(shè)計(jì)要求:由于現(xiàn)代用戶(hù)更傾向于由鼠標(biāo)方便操作的圖形用戶(hù)界面,所以我們采用GUI來(lái)實(shí)現(xiàn)計(jì)算器,并采用Swing組件,AWT事件處理等實(shí)現(xiàn)具體功能。 需求分析:在我們?nèi)粘I钪?,?jì)算開(kāi)支、收入時(shí),大額數(shù)字或是多倍小數(shù)的計(jì)算都需要計(jì)算器的幫助,而在學(xué)習(xí)一些科目時(shí),也常常要處理數(shù)字。雖然現(xiàn)在的計(jì)算器價(jià)格比擬低廉,但是功能過(guò)于簡(jiǎn)單的不能滿足個(gè)人需求,功能多的價(jià)格較貴,不僅操作不便,很多功能也根本用不到。所以我們想用自己所學(xué)
3、設(shè)計(jì)開(kāi)發(fā)一個(gè)屬于自己的簡(jiǎn)單計(jì)算器來(lái)完成日常學(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ì)算器開(kāi)平方運(yùn)算絕對(duì)值平方、立方取整三角函數(shù)倒數(shù)32 詳細(xì)設(shè)計(jì):以下是局部類(lèi)功能的說(shuō)明:CalFrame /構(gòu)造新窗體CalPanelL /定義面板容器CalButton/定義按鈕33 調(diào)試與測(cè)試:包括程序調(diào)試過(guò)程、數(shù)據(jù)測(cè)試結(jié)果分析,測(cè)試過(guò)程中遇到的主要問(wèn)題及采取的解決措施;列出主要問(wèn)題的出錯(cuò)現(xiàn)象、出錯(cuò)原因、解決方法及效果等。 主要問(wèn)題: 1.標(biāo)點(diǎn)符號(hào)問(wèn)題,經(jīng)常出現(xiàn)漏打分號(hào)
4、,忽略中英文標(biāo)點(diǎn)轉(zhuǎn)換等問(wèn)題,所以一定要慎重仔細(xì). 2.進(jìn)制轉(zhuǎn)換的實(shí)現(xiàn)及正/余弦計(jì)算經(jīng)常出現(xiàn)問(wèn)題,結(jié)果不正確,經(jīng)過(guò)查閱資料及反復(fù)調(diào)試,我們終于克制了這一難題. 3.界面設(shè)計(jì),開(kāi)場(chǎng)我們的設(shè)計(jì)不太合理,各類(lèi)功能鍵排序不合理,看起來(lái)雜亂無(wú)章,既不美觀也不實(shí)用。經(jīng)過(guò)屢次調(diào)整程序終于能使界面美觀實(shí)用。 4.要注意類(lèi)、成員變量、成員方法的命名,其中,class后的類(lèi)名由一個(gè)或多個(gè)英文單詞構(gòu)成,每個(gè)單詞的第一個(gè)字符必須是大寫(xiě);而成員變量和成員方法名的第一個(gè)單詞的第一個(gè)字母必須小寫(xiě),其他單詞第一個(gè)字母大寫(xiě)。以下是其中一些主要功能演示過(guò)程:運(yùn)行界面: 4、設(shè)計(jì)心得與總結(jié):通過(guò)此次的課程設(shè)計(jì)實(shí)踐,我們不但進(jìn)一步理解
5、掌握了課上教師教授的知識(shí),而且通過(guò)查找資料學(xué)會(huì)了課上沒(méi)有的東西,進(jìn)一步理解了面向?qū)ο蟮暮x,發(fā)現(xiàn)了很多它比面向過(guò)程突出的地方,第一次接觸了圖形界面,初步了解了GUI方面的知識(shí)。在實(shí)踐中我們遇到了很多問(wèn)題,但我們都努力克制,并最終成功的完成了這次課程設(shè)計(jì)。 通過(guò)編寫(xiě)這個(gè)相對(duì)復(fù)雜的程序,我們認(rèn)識(shí)解決實(shí)際問(wèn)題前應(yīng)先建立模型,再通過(guò)建立的模型使問(wèn)題簡(jiǎn)單化,從而解決問(wèn)題。并且這次編寫(xiě)的程序大局部是通過(guò)調(diào)用各包中的方法來(lái)實(shí)現(xiàn)的,這也讓我們充分理解了包和類(lèi)的調(diào)用關(guān)系。由于這次編寫(xiě)的程序比擬復(fù)雜,所以不能一次性編寫(xiě)、調(diào)試,也由此讓我們學(xué)會(huì)把程序分塊,逐個(gè)編寫(xiě)、調(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)立并初始化被訪問(wèn)類(lèi)的對(duì)象,形成圖形界面主程序界面 /定義含有main方法的主類(lèi)Calclass CalFrame e*tends Frame /定義窗口類(lèi) 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)聽(tīng)者 /構(gòu)造函數(shù)定義完畢 clas
9、s CalButton e*tends Button /CAlButton類(lèi)的域定義內(nèi)部類(lè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;/分別代表加、減、乘、除,開(kāi)平方,三角函數(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 /定義該類(lèi)實(shí)現(xiàn)ActionListener接口,是ActionEvent事件的監(jiān)聽(tīng)者 public void actionPerformed(ActionEvent e) /為實(shí)現(xiàn)這個(gè)接口的類(lèi)編寫(xiě)重載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 /定義該類(lèi)實(shí)現(xiàn)ActionListener接口,是ActionEvent事件的監(jiān)聽(tīng)者 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 /定義該類(lèi)實(shí)現(xiàn)ActionListener接口,是ActionEvent事
19、件的監(jiān)聽(tīng)者 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 /定義該類(lèi)實(shí)現(xiàn)ActionListener接口,是ActionEvent事件的監(jiān)聽(tīng)者 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 /定義該類(lèi)實(shí)現(xiàn)ActionListener接口,是ActionEvent事件的監(jiān)聽(tīng)者 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、/定義該類(lèi)實(shí)現(xiàn)ActionListener接口,是ActionEvent事件的監(jiān)聽(tīng)者 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 /定義該類(lèi)實(shí)現(xiàn)ActionListener接口,是ActionEvent事件的監(jiān)聽(tīng)者 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 /定義該類(lèi)實(shí)現(xiàn)ActionListener接口,是ActionEvent事件的監(jiān)聽(tīng)者 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 /定義該類(lèi)實(shí)現(xiàn)ActionListener接口,是ActionEvent事件的監(jiān)聽(tīng)者 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 /定義該類(lèi)實(shí)現(xiàn)ActionListener接口,是ActionEvent事件的監(jiān)聽(tīng)者
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 /定義該類(lèi)實(shí)現(xiàn)ActionListener接口,是ActionEvent事件的監(jiān)聽(tīng)者 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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024商業(yè)銷(xiāo)售代理合同
- 慢阻肺病人的護(hù)理要點(diǎn)
- 蘇州科技大學(xué)天平學(xué)院《環(huán)境工程原理》2021-2022學(xué)年第一學(xué)期期末試卷
- 2024民間借款抵押合同范本2
- 蘇州科技大學(xué)天平學(xué)院《風(fēng)景園林建筑設(shè)計(jì)》2022-2023學(xué)年第一學(xué)期期末試卷
- 農(nóng)藥生產(chǎn)中的新型工藝與技術(shù)考核試卷
- 摩托車(chē)的減震器類(lèi)型與材料考核試卷
- 危險(xiǎn)源評(píng)估在城市社區(qū)醫(yī)院建設(shè)中的應(yīng)用考核試卷
- 木材加工中的產(chǎn)品研發(fā)與創(chuàng)新設(shè)計(jì)考核試卷
- 農(nóng)藥制造中的工人安全與健康保護(hù)考核試卷
- 車(chē)用動(dòng)力電池回收利用 管理規(guī)范 第2部分:回收服務(wù)網(wǎng)點(diǎn)征求意見(jiàn)稿編制說(shuō)明
- 新劍橋少兒英語(yǔ)第六冊(cè)全冊(cè)配套文本
- 科學(xué)預(yù)測(cè)方案
- 職業(yè)生涯規(guī)劃網(wǎng)絡(luò)與新媒體專(zhuān)業(yè)
- T-WAPIA 052.2-2023 無(wú)線局域網(wǎng)設(shè)備技術(shù)規(guī)范 第2部分:終端
- 市政管道開(kāi)槽施工-市政排水管道的施工
- 初中八年級(jí)英語(yǔ)課件Reading Giant pandas-“江南聯(lián)賽”一等獎(jiǎng)2
- 人工智能在教育行業(yè)中的應(yīng)用與管理
- 心衰合并胸腔積液的護(hù)理Ppt
- 廉潔風(fēng)險(xiǎn)防控手冊(cè)(醫(yī)院)
- 酒精戒斷綜合征護(hù)理查房課件
評(píng)論
0/150
提交評(píng)論