




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、JAVA課程設(shè)計(jì)說(shuō)明書(shū)題目:模擬科學(xué)計(jì)算器 姓名: 學(xué)號(hào): 班級(jí): 網(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 類(lèi)的定義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)行測(cè)試的開(kāi)發(fā)平臺(tái),采用JDK-7u25作為java開(kāi)發(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ù)其功能對(duì)自己設(shè)計(jì)的計(jì)算器小程序進(jìn)行了功能的適當(dāng)增加與修改。在實(shí)現(xiàn)了課程設(shè)計(jì)題目要求的基礎(chǔ)上,自己又增添了對(duì)數(shù)函數(shù),冪函數(shù),三角函數(shù),取余等我們常用到的功能比較簡(jiǎn)單的函數(shù)。由于本函數(shù)涉及的函數(shù)以及按鍵數(shù)目較多,故沒(méi)有采用
4、面向?qū)ο蟮脑O(shè)計(jì)方法,沒(méi)有對(duì)每個(gè)功能封裝成函數(shù)調(diào)用,而是針對(duì)每個(gè)按鍵的動(dòng)作事件直接采用了算法的編寫(xiě)。最終實(shí)現(xiàn)了全部的功能,但是由于時(shí)間有限,許多功能沒(méi)有坐到很到位的優(yōu)化,或許還存在著許多了漏洞,歡迎老師和同學(xué)的批評(píng)指正,我一定會(huì)不斷完善。2.2 需求獲取本程序的設(shè)計(jì)過(guò)程,按照題目的要求,我認(rèn)真參考了Windows7下計(jì)算器小程序的運(yùn)行界面與運(yùn)行操作與結(jié)果,對(duì)我自己設(shè)計(jì)的程序的需求展開(kāi)了進(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.必須使用可視化界面,按鍵布局簡(jiǎn)單明了,使人一看就懂,直接可以上手操作。界面要做到簡(jiǎn)單明了,通俗易懂,和藹可親。5.必須有用戶(hù)錯(cuò)誤操作,輸入不規(guī)范的警告與提示,提醒用戶(hù)正確操作。6.程序必須經(jīng)過(guò)嚴(yán)格的測(cè)試與運(yùn)行,保證沒(méi)有明顯的BUG和程序崩潰狀況,要經(jīng)得起用戶(hù)的長(zhǎng)時(shí)間使用。2.3 程序功能圖功能圖如下:3 設(shè)計(jì)思路3.1界面布局本應(yīng)用程序繼承自框架類(lèi)(JFrame),采用BorderLayout邊緣布局和GridLayout網(wǎng)格布局相結(jié)合的布局管理方式,將單行文本框加入到“North”區(qū)域,包含各種按鈕的面板JPanel p按照網(wǎng)格布局的順序加入到其
6、他區(qū)域。將文本框放到界面上方,將指數(shù)函數(shù)放到界面下方,將三角函數(shù)放到界面左邊,將基本四則運(yùn)算放到界面的右面,使得界面的整體布局合理整潔,易于上手。3.2類(lèi)的定義本程序主要定義了一個(gè)主函數(shù)和三個(gè)類(lèi):public static void main(String args):程序的主函數(shù),Application程序的主要實(shí)現(xiàn)標(biāo)志,調(diào)用上文中定義的類(lèi)class C1:程序主類(lèi),定義了整個(gè)界面的布局,和針對(duì)每個(gè)按鈕的動(dòng)作監(jiān)聽(tīng),以及每個(gè)動(dòng)作所對(duì)應(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用來(lái)儲(chǔ)存數(shù)字和符號(hào)以及運(yùn)算結(jié)果。整形變量flagdenghao,flagyunsuan,lastyunsuanCount變量countxiaoshudian用來(lái)統(tǒng)計(jì)小數(shù)點(diǎn)出現(xiàn)的次數(shù)4 詳細(xì)設(shè)計(jì)4.1.整體概述首先,程序定義了三個(gè)類(lèi):一個(gè)主類(lèi),兩個(gè)主類(lèi)里調(diào)用的輔助類(lèi)。分別實(shí)現(xiàn),計(jì)算器主要功能的實(shí)現(xiàn),階乘算法的實(shí)現(xiàn),和反三角函數(shù)算法的實(shí)現(xiàn)。其次,對(duì)于C1主類(lèi),首先在框架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ù),并且通過(guò)public void actionPerformed(ActionEvent e)函數(shù)定義了每個(gè)按鈕對(duì)應(yīng)的動(dòng)作監(jiān)聽(tīng),從而確定了鼠標(biāo)點(diǎn)擊每個(gè)按鈕時(shí)可以實(shí)現(xiàn)對(duì)應(yīng)的不同的算法。接下來(lái),就是每個(gè)運(yùn)算所對(duì)應(yīng)的算法實(shí)現(xiàn),這里以加法運(yùn)算為例:1.首先用戶(hù)輸入一個(gè)數(shù)字,程序用String s暫時(shí)儲(chǔ)存,并通過(guò)JTexField()文本編輯框顯示出來(lái)。2.接著,用戶(hù)按下“+”按鈕,觸發(fā)按鈕事件,
9、先判斷是數(shù)字或者是符號(hào),當(dāng)觸發(fā)事件之前輸入的是符號(hào)時(shí)“.”沒(méi)有輸入數(shù)字時(shí),程序采用 Double.valueOf(),將輸入的“.”進(jìn)行強(qiáng)制類(lèi)型轉(zhuǎn)換成“0.”。當(dāng)用戶(hù)輸入正常數(shù)字時(shí),程序首先將s內(nèi)的數(shù)據(jù)儲(chǔ)存到a中,同時(shí)將a中的內(nèi)容清空,以便輸入加數(shù),并再次儲(chǔ)存到s中,并通過(guò)JTexField()文本編輯框顯示出來(lái)。3.當(dāng)用戶(hù)按下“=”按鈕時(shí),程序首先進(jìn)行判斷是否flagyunsuan=0,當(dāng)flagyunsuan=0是說(shuō)明是第一次按“=”按鈕,接下在判斷“=”之前是否是空值或符號(hào),當(dāng)判斷flagdenghao = ture的時(shí)候可以進(jìn)行運(yùn)算。將運(yùn)算結(jié)果存入a中,并再次通過(guò)JTexField()
10、文本編輯框顯示出來(lái)。4.接下來(lái)還要對(duì)運(yùn)行的結(jié)果通過(guò)Double.valueOf()進(jìn)行強(qiáng)制類(lèi)型轉(zhuǎn)換。因?yàn)閮?chǔ)存數(shù)據(jù)的s和a都是String型變量,而要求的輸出結(jié)果卻是double類(lèi)型的變量,所以要轉(zhuǎn)換以后輸出。5.輸出完畢以后,必須判斷是否使用本次運(yùn)算結(jié)果進(jìn)行下一步的運(yùn)算,如果是的話則通過(guò)switch (lastyunsuan)來(lái)判斷接下來(lái)需要進(jìn)行的運(yùn)算,再重復(fù)上面的步驟。4.2.誤操作處理由于用戶(hù)操作的不確定性,有時(shí)可能不會(huì)嚴(yán)格按照程序說(shuō)明書(shū)進(jìn)行對(duì)應(yīng)的操作,經(jīng)常會(huì)發(fā)生誤操作。這便對(duì)程序的操作性要求大大提高。這就要求程序做到以下幾點(diǎn):1.程序不能因?yàn)椴僮魇д`而崩潰。2.程序要可以給用戶(hù)發(fā)出錯(cuò)誤警
11、報(bào)。3.程序要可以對(duì)錯(cuò)誤進(jìn)行適當(dāng)?shù)男薷?。而本程序?jīng)過(guò)反復(fù)誤操作運(yùn)行,已經(jīng)可以保證程序不會(huì)因?yàn)檎`操作而發(fā)生崩潰。其次,本程序采用了Toolkit.getDefaultToolkit().beep()函數(shù),可以使程序發(fā)出“beep”聲音的警報(bào)。最后,本程序?qū)σ恍╋@而易見(jiàn)的錯(cuò)誤,比如輸入小數(shù)時(shí)可以自動(dòng)把用戶(hù)輸入的“.”強(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)的功能過(guò)多,這里只采用部分具有代表性的功能的截圖作為參考。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ì)在我的努力編寫(xiě)下順利完成了。設(shè)計(jì)過(guò)程中我付出了勞動(dòng)與汗水,遇到過(guò)很多的困難和挫折,而且我們最終都戰(zhàn)勝了他們,獲得的最大收貨,我認(rèn)為并不是我設(shè)計(jì)成功了一個(gè)多么了不起的程序,而是我在設(shè)計(jì)過(guò)程中遇到的困難和解決它的方法與經(jīng)驗(yàn)才是最值得我認(rèn)真體會(huì)的地方。通過(guò)本次設(shè)計(jì)過(guò)程我發(fā)現(xiàn)了我們學(xué)習(xí)知識(shí)的嚴(yán)
13、重不足,許多設(shè)計(jì)過(guò)程中常用到的知識(shí),我們掌握的并不好。還要時(shí)常去查課本,有的甚至一點(diǎn)印象都沒(méi)有,我認(rèn)為這一切的原因在于我們不去用他,俗話說(shuō)孰能生巧。對(duì)于所學(xué)的知識(shí)我們要善于使用。我還發(fā)現(xiàn),一些問(wèn)題不能只憑借自己的主觀去臆想判斷,實(shí)踐才是硬道理,實(shí)踐出真知。只有通過(guò)自身去調(diào)查去分析得出的結(jié)論,才最接近事實(shí),軟件的開(kāi)發(fā)切忌不能想當(dāng)然的去看問(wèn)題,畢竟只有動(dòng)手做了才知道對(duì)與不對(duì)。本次實(shí)驗(yàn)過(guò)后,不僅鍛煉了我的設(shè)計(jì)分析能力,編程能力,最重要的是鍛煉了我面對(duì)問(wèn)題的應(yīng)變與解決能力。只有把自己所學(xué)的知識(shí),和自己的經(jīng)驗(yàn),老師的指導(dǎo)相互結(jié)合起來(lái),才能在學(xué)習(xí)的道路上少走彎路,并實(shí)現(xiàn)自己想要的目標(biāo)。最后,再次感謝jav
14、a程序設(shè)計(jì)趙建立老師的指導(dǎo),感謝有關(guān)同學(xué)提供的幫助,最后祝愿java這門(mén)課越學(xué)越好。7參考資料Java程序設(shè)計(jì)教程(第2版) 雍俊海 清華大學(xué)出版社Java程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo) 雍俊海 清華大學(xué)出版社Java語(yǔ)言使用教程 丁振凡 北京郵件大學(xué)出版社8附錄由于本程序涉及的代碼量過(guò)于龐大,這里只給出幾個(gè)有代表性的算法的代碼,完整的代碼請(qǐng)參考電子版的代碼附錄。部分程序源代碼如下: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. 本站所有資源如無(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 班級(jí)安全自查記錄表
- 生產(chǎn)安全事故應(yīng)急救援體系是保證生產(chǎn)安全
- 新版重大事故隱患判定標(biāo)準(zhǔn)
- 對(duì)主動(dòng)采取補(bǔ)救措施減少生產(chǎn)安全事故損失
- 安全工作管理計(jì)劃
- 高壓滅菌鍋專(zhuān)項(xiàng)應(yīng)急預(yù)案
- 2025年河南省長(zhǎng)葛市一中高二物理第二學(xué)期期末綜合測(cè)試模擬試題含解析
- 有限空間安全管理管理制度
- 安全生產(chǎn)許可證 許可范圍
- 安全生產(chǎn)法所指的危險(xiǎn)物品是
- 2024年廣州市南沙區(qū)社區(qū)專(zhuān)職招聘考試真題
- 山東醫(yī)藥技師學(xué)院招聘筆試真題2024
- (高清版)DB13(J)∕T 8556-2023 建設(shè)工程消耗量標(biāo)準(zhǔn)及計(jì)算規(guī)則(園林綠化工程)
- 2023年醫(yī)技類(lèi)-康復(fù)醫(yī)學(xué)(副高)考試上岸題庫(kù)(歷年真題)答案
- 工程公司簡(jiǎn)介(50個(gè)范本)
- GC/T 1401-2022國(guó)家物資儲(chǔ)備標(biāo)志及使用規(guī)范
- QC小組活動(dòng)記錄【范本模板】
- JJF 1334-2012混凝土裂縫寬度及深度測(cè)量?jī)x校準(zhǔn)規(guī)范
- GB/T 3003-2017耐火纖維及制品
- GB/T 1094.1-2013電力變壓器第1部分:總則
- 經(jīng)濟(jì)責(zé)任審計(jì)報(bào)告
評(píng)論
0/150
提交評(píng)論