




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、JAVA課程設(shè)計(jì)說明書題目:模擬科學(xué)計(jì)算器 姓名: 學(xué)號(hào): 班級: 網(wǎng)絡(luò)工程11-2 山東科技大學(xué)2013年11月7日目錄1 課設(shè)任務(wù)及要求11.1課設(shè)任務(wù)11.2設(shè)計(jì)要求12 需求分析22.1 設(shè)計(jì)背景22.2 需求獲取32.3 程序功能圖43 設(shè)計(jì)思路43.1 界面布局43.2 類的定義53.3變量的定義54 詳細(xì)設(shè)計(jì)64.1整體概述64.2 誤操作處理74.3流程圖和結(jié)構(gòu)圖85 系統(tǒng)調(diào)試115.1 程序界面115.2 運(yùn)行界面116 心得與體會(huì)157 參考文獻(xiàn)168 附錄161 課設(shè)任務(wù)及要求1.1課設(shè)任務(wù):要求:界面模擬Windows中的計(jì)算器程序。實(shí)現(xiàn)基本數(shù)學(xué)運(yùn)算、函數(shù)等功能:加、減
2、、乘、除、階乘、正弦、余弦和指數(shù)運(yùn)算。實(shí)現(xiàn)要點(diǎn):添加相關(guān)組件并進(jìn)行按鈕事件處理。要求提交Application和Applet兩個(gè)版本的程序。1.2設(shè)計(jì)要求設(shè)計(jì)的java計(jì)算器應(yīng)用程序可以完成加法、減法、乘法、除法和取余運(yùn)算,和cos,sin,tan等三角函數(shù)功能以及階乘和指數(shù)等運(yùn)算,且有小數(shù)點(diǎn)、正負(fù)號(hào)、求倒數(shù)、退格和清零功能。具體可參考windows附件下的計(jì)算器課程設(shè)計(jì)使用Eclipse4.2等作為程序編譯和運(yùn)行測試的開發(fā)平臺(tái),采用JDK-7u25作為java開發(fā)環(huán)境,使用Microsoft Office Visio 2007作為繪圖工具。認(rèn)真按時(shí)完成課程設(shè)計(jì)報(bào)告,制作演講PPT,積極報(bào)名上
3、講臺(tái)向大家演示和講解自己的程序。提交打印版的報(bào)告以及電子版的原稿和Application和Applet兩個(gè)版本的程序代碼。2 需求分析2.1 設(shè)計(jì)背景本程序是老師提供的幾個(gè)課程設(shè)計(jì)題目中比較中等的題目。要求實(shí)現(xiàn)模擬的科學(xué)計(jì)算器功能,主要包括加減乘除四則運(yùn)算和階乘,三角函數(shù)以及指數(shù)的運(yùn)算。具體的功能我參考了Windows7下的計(jì)算機(jī)小程序,并根據(jù)其界面設(shè)計(jì)了java小程序界面,根據(jù)其功能對自己設(shè)計(jì)的計(jì)算器小程序進(jìn)行了功能的適當(dāng)增加與修改。在實(shí)現(xiàn)了課程設(shè)計(jì)題目要求的基礎(chǔ)上,自己又增添了對數(shù)函數(shù),冪函數(shù),三角函數(shù),取余等我們常用到的功能比較簡單的函數(shù)。由于本函數(shù)涉及的函數(shù)以及按鍵數(shù)目較多,故沒有采用
4、面向?qū)ο蟮脑O(shè)計(jì)方法,沒有對每個(gè)功能封裝成函數(shù)調(diào)用,而是針對每個(gè)按鍵的動(dòng)作事件直接采用了算法的編寫。最終實(shí)現(xiàn)了全部的功能,但是由于時(shí)間有限,許多功能沒有坐到很到位的優(yōu)化,或許還存在著許多了漏洞,歡迎老師和同學(xué)的批評指正,我一定會(huì)不斷完善。2.2 需求獲取本程序的設(shè)計(jì)過程,按照題目的要求,我認(rèn)真參考了Windows7下計(jì)算器小程序的運(yùn)行界面與運(yùn)行操作與結(jié)果,對我自己設(shè)計(jì)的程序的需求展開了進(jìn)一步的研究。主要得到以下幾點(diǎn)需求:1.必須實(shí)現(xiàn)題目要求的和Windows7下計(jì)算器下的基本功能,并能正確運(yùn)行。2.必須使程序具有清空,清除,退格和正負(fù)數(shù),小數(shù)點(diǎn)的基本功能。3.必須要修程序可以進(jìn)行連續(xù)運(yùn)算,即如“
5、1+2+3+4,1*2+4-4”等連續(xù)運(yùn)算4.必須使用可視化界面,按鍵布局簡單明了,使人一看就懂,直接可以上手操作。界面要做到簡單明了,通俗易懂,和藹可親。5.必須有用戶錯(cuò)誤操作,輸入不規(guī)范的警告與提示,提醒用戶正確操作。6.程序必須經(jīng)過嚴(yán)格的測試與運(yùn)行,保證沒有明顯的BUG和程序崩潰狀況,要經(jīng)得起用戶的長時(shí)間使用。2.3 程序功能圖功能圖如下:3 設(shè)計(jì)思路3.1界面布局本應(yīng)用程序繼承自框架類(JFrame),采用BorderLayout邊緣布局和GridLayout網(wǎng)格布局相結(jié)合的布局管理方式,將單行文本框加入到“North”區(qū)域,包含各種按鈕的面板JPanel p按照網(wǎng)格布局的順序加入到其
6、他區(qū)域。將文本框放到界面上方,將指數(shù)函數(shù)放到界面下方,將三角函數(shù)放到界面左邊,將基本四則運(yùn)算放到界面的右面,使得界面的整體布局合理整潔,易于上手。3.2類的定義本程序主要定義了一個(gè)主函數(shù)和三個(gè)類:public static void main(String args):程序的主函數(shù),Application程序的主要實(shí)現(xiàn)標(biāo)志,調(diào)用上文中定義的類class C1:程序主類,定義了整個(gè)界面的布局,和針對每個(gè)按鈕的動(dòng)作監(jiān)聽,以及每個(gè)動(dòng)作所對應(yīng)的具體的操作,計(jì)算的運(yùn)行和輸出主函數(shù)。class jiecheng:定義了階乘運(yùn)算(fff)的算法實(shí)現(xiàn)。class Mymath:定義了asinh、acosha、
7、tanh三個(gè)Math.中不包含的三角函數(shù)及其算法實(shí)現(xiàn)3.3變量的定義字符串變量String a,c,s用來儲(chǔ)存數(shù)字和符號(hào)以及運(yùn)算結(jié)果。整形變量flagdenghao,flagyunsuan,lastyunsuanCount變量countxiaoshudian用來統(tǒng)計(jì)小數(shù)點(diǎn)出現(xiàn)的次數(shù)4 詳細(xì)設(shè)計(jì)4.1.整體概述首先,程序定義了三個(gè)類:一個(gè)主類,兩個(gè)主類里調(diào)用的輔助類。分別實(shí)現(xiàn),計(jì)算器主要功能的實(shí)現(xiàn),階乘算法的實(shí)現(xiàn),和反三角函數(shù)算法的實(shí)現(xiàn)。其次,對于C1主類,首先在框架JFrame下定義了每個(gè)觸擊式組件,即JButton命令式按鈕。并采用了BorderLayout邊緣布局和GridLayout網(wǎng)格
8、布局相結(jié)合的布局管理方式。將文本框,Str1(數(shù)字運(yùn)算),Str2(三角函數(shù)),Str3(反三角函數(shù))和Str4(指數(shù)函數(shù))合理的排布在整個(gè)框架下。然后,定義了每個(gè)JButton命令式按鈕代表的數(shù)字,符號(hào)和函數(shù),并且通過public void actionPerformed(ActionEvent e)函數(shù)定義了每個(gè)按鈕對應(yīng)的動(dòng)作監(jiān)聽,從而確定了鼠標(biāo)點(diǎn)擊每個(gè)按鈕時(shí)可以實(shí)現(xiàn)對應(yīng)的不同的算法。接下來,就是每個(gè)運(yùn)算所對應(yīng)的算法實(shí)現(xiàn),這里以加法運(yùn)算為例:1.首先用戶輸入一個(gè)數(shù)字,程序用String s暫時(shí)儲(chǔ)存,并通過JTexField()文本編輯框顯示出來。2.接著,用戶按下“+”按鈕,觸發(fā)按鈕事件,
9、先判斷是數(shù)字或者是符號(hào),當(dāng)觸發(fā)事件之前輸入的是符號(hào)時(shí)“.”沒有輸入數(shù)字時(shí),程序采用 Double.valueOf(),將輸入的“.”進(jìn)行強(qiáng)制類型轉(zhuǎn)換成“0.”。當(dāng)用戶輸入正常數(shù)字時(shí),程序首先將s內(nèi)的數(shù)據(jù)儲(chǔ)存到a中,同時(shí)將a中的內(nèi)容清空,以便輸入加數(shù),并再次儲(chǔ)存到s中,并通過JTexField()文本編輯框顯示出來。3.當(dāng)用戶按下“=”按鈕時(shí),程序首先進(jìn)行判斷是否flagyunsuan=0,當(dāng)flagyunsuan=0是說明是第一次按“=”按鈕,接下在判斷“=”之前是否是空值或符號(hào),當(dāng)判斷flagdenghao = ture的時(shí)候可以進(jìn)行運(yùn)算。將運(yùn)算結(jié)果存入a中,并再次通過JTexField()
10、文本編輯框顯示出來。4.接下來還要對運(yùn)行的結(jié)果通過Double.valueOf()進(jìn)行強(qiáng)制類型轉(zhuǎn)換。因?yàn)閮?chǔ)存數(shù)據(jù)的s和a都是String型變量,而要求的輸出結(jié)果卻是double類型的變量,所以要轉(zhuǎn)換以后輸出。5.輸出完畢以后,必須判斷是否使用本次運(yùn)算結(jié)果進(jìn)行下一步的運(yùn)算,如果是的話則通過switch (lastyunsuan)來判斷接下來需要進(jìn)行的運(yùn)算,再重復(fù)上面的步驟。4.2.誤操作處理由于用戶操作的不確定性,有時(shí)可能不會(huì)嚴(yán)格按照程序說明書進(jìn)行對應(yīng)的操作,經(jīng)常會(huì)發(fā)生誤操作。這便對程序的操作性要求大大提高。這就要求程序做到以下幾點(diǎn):1.程序不能因?yàn)椴僮魇д`而崩潰。2.程序要可以給用戶發(fā)出錯(cuò)誤警
11、報(bào)。3.程序要可以對錯(cuò)誤進(jìn)行適當(dāng)?shù)男薷?。而本程序?jīng)過反復(fù)誤操作運(yùn)行,已經(jīng)可以保證程序不會(huì)因?yàn)檎`操作而發(fā)生崩潰。其次,本程序采用了Toolkit.getDefaultToolkit().beep()函數(shù),可以使程序發(fā)出“beep”聲音的警報(bào)。最后,本程序?qū)σ恍╋@而易見的錯(cuò)誤,比如輸入小數(shù)時(shí)可以自動(dòng)把用戶輸入的“.”強(qiáng)制轉(zhuǎn)化為“0.”等。從而保證了,當(dāng)遇到各種誤操作的時(shí)候程序可以正常運(yùn)行。4.3.流程圖和結(jié)構(gòu)圖1.程序流程圖2.代碼結(jié)構(gòu)圖5 運(yùn)行與調(diào)試5.1 程序界面計(jì)算器界面如下:5.2 運(yùn)行界面注:由于本程序要實(shí)現(xiàn)的功能過多,這里只采用部分具有代表性的功能的截圖作為參考。1.加法操作程序可以正
12、確運(yùn)行8+5=132.除操作程序可以正確運(yùn)行9/3=33.sin函數(shù)運(yùn)算可以正確運(yùn)行sin()= 0(由于本函數(shù)采用弧度運(yùn)算,這里取了的近似值3.14進(jìn)行的運(yùn)算,所以運(yùn)算結(jié)果只能約等于1)。4.指數(shù)運(yùn)算本程序可以正確運(yùn)行2的立方= 8。5.階乘運(yùn)算本程序正確實(shí)現(xiàn)了9的階乘 = 3628806心得與體會(huì)本次課程設(shè)計(jì)在我的努力編寫下順利完成了。設(shè)計(jì)過程中我付出了勞動(dòng)與汗水,遇到過很多的困難和挫折,而且我們最終都戰(zhàn)勝了他們,獲得的最大收貨,我認(rèn)為并不是我設(shè)計(jì)成功了一個(gè)多么了不起的程序,而是我在設(shè)計(jì)過程中遇到的困難和解決它的方法與經(jīng)驗(yàn)才是最值得我認(rèn)真體會(huì)的地方。通過本次設(shè)計(jì)過程我發(fā)現(xiàn)了我們學(xué)習(xí)知識(shí)的嚴(yán)
13、重不足,許多設(shè)計(jì)過程中常用到的知識(shí),我們掌握的并不好。還要時(shí)常去查課本,有的甚至一點(diǎn)印象都沒有,我認(rèn)為這一切的原因在于我們不去用他,俗話說孰能生巧。對于所學(xué)的知識(shí)我們要善于使用。我還發(fā)現(xiàn),一些問題不能只憑借自己的主觀去臆想判斷,實(shí)踐才是硬道理,實(shí)踐出真知。只有通過自身去調(diào)查去分析得出的結(jié)論,才最接近事實(shí),軟件的開發(fā)切忌不能想當(dāng)然的去看問題,畢竟只有動(dòng)手做了才知道對與不對。本次實(shí)驗(yàn)過后,不僅鍛煉了我的設(shè)計(jì)分析能力,編程能力,最重要的是鍛煉了我面對問題的應(yīng)變與解決能力。只有把自己所學(xué)的知識(shí),和自己的經(jīng)驗(yàn),老師的指導(dǎo)相互結(jié)合起來,才能在學(xué)習(xí)的道路上少走彎路,并實(shí)現(xiàn)自己想要的目標(biāo)。最后,再次感謝jav
14、a程序設(shè)計(jì)趙建立老師的指導(dǎo),感謝有關(guān)同學(xué)提供的幫助,最后祝愿java這門課越學(xué)越好。7參考資料Java程序設(shè)計(jì)教程(第2版) 雍俊海 清華大學(xué)出版社Java程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo) 雍俊海 清華大學(xué)出版社Java語言使用教程 丁振凡 北京郵件大學(xué)出版社8附錄由于本程序涉及的代碼量過于龐大,這里只給出幾個(gè)有代表性的算法的代碼,完整的代碼請參考電子版的代碼附錄。部分程序源代碼如下:class jiecheng public static double fff(double n)if(n=0)return 1;elsereturn n*fff(n-1);class Mymath public static
15、double asinh(double x)return Math.log(x+Math.sqrt(x*x+1);public static double acosh(double x)return Math.log(x+Math.sqrt(x*x-1);public static double atanh(double x)return 0.5*Math.log(1+x)/(1-x);public class C1 implements ActionListener/,KeyListener public C1() JFrame frame = new JFrame();Container
16、con = frame.getContentPane();con.setLayout(new BorderLayout(10,10);panel1 = new JPanel();panel2 = new JPanel();panel3 = new JPanel();panel4 = new JPanel();panel1.setLayout(new GridLayout(6,4,5,5);panel2.setLayout(new GridLayout(4,2,2,2);panel3.setLayout(new GridLayout(4,2,3,3);panel4.setLayout(new G
17、ridLayout(2,4,4,4);panel5 = new JPanel();panel5.setLayout(new CardLayout();String str1 = 7,8,9,/,4,5,6,*,1,2,3,-,0,.,+,=,back,CE,mod,C,+/-;for(int i=0;istr1.length;i+)bi = new JButton(str1i);bi.addActionListener(this);panel1.add(bi);String str2 = lnv,ln,sin,cos,tan,sinh,cosh,tanh;for(int i = 0;istr2
18、.length;i+)b2i = new JButton(str2i);b2i.addActionListener(this);panel2.add(b2i);String str3 = lnv,ex,asin,acos,atan,asinh,acosh,atanh;for(int i = 0;istr3.length;i+)b3i = new JButton(str3i);b3i.addActionListener(this);panel3.add(b3i);panel5.add(one,panel2);panel5.add(two,panel3);(CardLayout)panel5.ge
19、tLayout().show(panel5, one);String str4 = 1/x,sqrt,x2,x3,xy,3,yx,log,10x,n!;for(int i=0;i= 1)Toolkit.getDefaultToolkit().beep();elses+=.;System.out.println(s);System.out.println(s.length();if(s.equals(.)System.out.println(true);elseSystem.out.println(false);textfield.setText(s);textfield.requestFocus();countxiaoshudian+; /-else if(e.getSource()=b3)/if(flagyunsuan=0)if(s = )if(flagdenghao = false)a = 0;elseflagdenghao = false;elseif(s.equals(.)s = 0.;a = Double.valueOf(s);elseif(s !=) if(s.equals(.) s = 0.; c = Double.valueOf(s);switch (lastyunsuan)ca
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 教改課題申報(bào)書地方
- 教育小課題立項(xiàng)申報(bào)書
- 電商課題申報(bào)書
- 南非施工合同范本
- 創(chuàng)業(yè)合伙協(xié)議合同范本
- 同城配送員工餐飲合同范本
- 申報(bào)書課題類別
- 旅游教改課題申報(bào)書
- 化工自提合同范本
- 合同內(nèi)歸屬權(quán)合同范本
- 《采購管理策略》課件
- 《校園安全教育(第二版)》 課件 項(xiàng)目一 走進(jìn)安全教育;項(xiàng)目二 維護(hù)校園治安
- 高標(biāo)準(zhǔn)農(nóng)田建設(shè)項(xiàng)目驗(yàn)收技術(shù)方案
- 2024年甘肅天水麥積山石窟藝術(shù)研究所招聘工作人員考試真題
- 人效的指標(biāo)體系及其“落地雙引擎”
- 2025年山東省榮成市屬事業(yè)單位招聘崗位及歷年高頻重點(diǎn)模擬試卷提升(共500題附帶答案詳解)
- 醫(yī)學(xué)三基知識(shí)考試題庫及答案(護(hù)理+臨床)
- 2024年6月浙江省高考化學(xué)試題含答案解析
- 火星表面材料分析-深度研究
- 2025年南京信息職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測試近5年??及鎱⒖碱}庫含答案解析
- 《職業(yè)技能等級評價(jià)規(guī)范編制指南編制說明》
評論
0/150
提交評論