版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、JAVA課程設(shè)計說明書題目:模擬科學(xué)計算器 姓名: 學(xué)號: 班級: 網(wǎng)絡(luò)工程11-2 山東科技大學(xué)2013年11月7日目錄1 課設(shè)任務(wù)及要求11.1課設(shè)任務(wù)11.2設(shè)計要求12 需求分析22.1 設(shè)計背景22.2 需求獲取32.3 程序功能圖43 設(shè)計思路43.1 界面布局43.2 類的定義53.3變量的定義54 詳細(xì)設(shè)計64.1整體概述64.2 誤操作處理74.3流程圖和結(jié)構(gòu)圖85 系統(tǒng)調(diào)試115.1 程序界面115.2 運行界面116 心得與體會157 參考文獻(xiàn)168 附錄161 課設(shè)任務(wù)及要求1.1課設(shè)任務(wù):要求:界面模擬Windows中的計算器程序。實現(xiàn)基本數(shù)學(xué)運算、函數(shù)等功能:加、減
2、、乘、除、階乘、正弦、余弦和指數(shù)運算。實現(xiàn)要點:添加相關(guān)組件并進(jìn)行按鈕事件處理。要求提交Application和Applet兩個版本的程序。1.2設(shè)計要求設(shè)計的java計算器應(yīng)用程序可以完成加法、減法、乘法、除法和取余運算,和cos,sin,tan等三角函數(shù)功能以及階乘和指數(shù)等運算,且有小數(shù)點、正負(fù)號、求倒數(shù)、退格和清零功能。具體可參考windows附件下的計算器課程設(shè)計使用Eclipse4.2等作為程序編譯和運行測試的開發(fā)平臺,采用JDK-7u25作為java開發(fā)環(huán)境,使用Microsoft Office Visio 2007作為繪圖工具。認(rèn)真按時完成課程設(shè)計報告,制作演講PPT,積極報名上
3、講臺向大家演示和講解自己的程序。提交打印版的報告以及電子版的原稿和Application和Applet兩個版本的程序代碼。2 需求分析2.1 設(shè)計背景本程序是老師提供的幾個課程設(shè)計題目中比較中等的題目。要求實現(xiàn)模擬的科學(xué)計算器功能,主要包括加減乘除四則運算和階乘,三角函數(shù)以及指數(shù)的運算。具體的功能我參考了Windows7下的計算機小程序,并根據(jù)其界面設(shè)計了java小程序界面,根據(jù)其功能對自己設(shè)計的計算器小程序進(jìn)行了功能的適當(dāng)增加與修改。在實現(xiàn)了課程設(shè)計題目要求的基礎(chǔ)上,自己又增添了對數(shù)函數(shù),冪函數(shù),三角函數(shù),取余等我們常用到的功能比較簡單的函數(shù)。由于本函數(shù)涉及的函數(shù)以及按鍵數(shù)目較多,故沒有采用
4、面向?qū)ο蟮脑O(shè)計方法,沒有對每個功能封裝成函數(shù)調(diào)用,而是針對每個按鍵的動作事件直接采用了算法的編寫。最終實現(xiàn)了全部的功能,但是由于時間有限,許多功能沒有坐到很到位的優(yōu)化,或許還存在著許多了漏洞,歡迎老師和同學(xué)的批評指正,我一定會不斷完善。2.2 需求獲取本程序的設(shè)計過程,按照題目的要求,我認(rèn)真參考了Windows7下計算器小程序的運行界面與運行操作與結(jié)果,對我自己設(shè)計的程序的需求展開了進(jìn)一步的研究。主要得到以下幾點需求:1.必須實現(xiàn)題目要求的和Windows7下計算器下的基本功能,并能正確運行。2.必須使程序具有清空,清除,退格和正負(fù)數(shù),小數(shù)點的基本功能。3.必須要修程序可以進(jìn)行連續(xù)運算,即如“
5、1+2+3+4,1*2+4-4”等連續(xù)運算4.必須使用可視化界面,按鍵布局簡單明了,使人一看就懂,直接可以上手操作。界面要做到簡單明了,通俗易懂,和藹可親。5.必須有用戶錯誤操作,輸入不規(guī)范的警告與提示,提醒用戶正確操作。6.程序必須經(jīng)過嚴(yán)格的測試與運行,保證沒有明顯的BUG和程序崩潰狀況,要經(jīng)得起用戶的長時間使用。2.3 程序功能圖功能圖如下:3 設(shè)計思路3.1界面布局本應(yīng)用程序繼承自框架類(JFrame),采用BorderLayout邊緣布局和GridLayout網(wǎng)格布局相結(jié)合的布局管理方式,將單行文本框加入到“North”區(qū)域,包含各種按鈕的面板JPanel p按照網(wǎng)格布局的順序加入到其
6、他區(qū)域。將文本框放到界面上方,將指數(shù)函數(shù)放到界面下方,將三角函數(shù)放到界面左邊,將基本四則運算放到界面的右面,使得界面的整體布局合理整潔,易于上手。3.2類的定義本程序主要定義了一個主函數(shù)和三個類:public static void main(String args):程序的主函數(shù),Application程序的主要實現(xiàn)標(biāo)志,調(diào)用上文中定義的類class C1:程序主類,定義了整個界面的布局,和針對每個按鈕的動作監(jiān)聽,以及每個動作所對應(yīng)的具體的操作,計算的運行和輸出主函數(shù)。class jiecheng:定義了階乘運算(fff)的算法實現(xiàn)。class Mymath:定義了asinh、acosha、
7、tanh三個Math.中不包含的三角函數(shù)及其算法實現(xiàn)3.3變量的定義字符串變量String a,c,s用來儲存數(shù)字和符號以及運算結(jié)果。整形變量flagdenghao,flagyunsuan,lastyunsuanCount變量countxiaoshudian用來統(tǒng)計小數(shù)點出現(xiàn)的次數(shù)4 詳細(xì)設(shè)計4.1.整體概述首先,程序定義了三個類:一個主類,兩個主類里調(diào)用的輔助類。分別實現(xiàn),計算器主要功能的實現(xiàn),階乘算法的實現(xiàn),和反三角函數(shù)算法的實現(xiàn)。其次,對于C1主類,首先在框架JFrame下定義了每個觸擊式組件,即JButton命令式按鈕。并采用了BorderLayout邊緣布局和GridLayout網(wǎng)格
8、布局相結(jié)合的布局管理方式。將文本框,Str1(數(shù)字運算),Str2(三角函數(shù)),Str3(反三角函數(shù))和Str4(指數(shù)函數(shù))合理的排布在整個框架下。然后,定義了每個JButton命令式按鈕代表的數(shù)字,符號和函數(shù),并且通過public void actionPerformed(ActionEvent e)函數(shù)定義了每個按鈕對應(yīng)的動作監(jiān)聽,從而確定了鼠標(biāo)點擊每個按鈕時可以實現(xiàn)對應(yīng)的不同的算法。接下來,就是每個運算所對應(yīng)的算法實現(xiàn),這里以加法運算為例:1.首先用戶輸入一個數(shù)字,程序用String s暫時儲存,并通過JTexField()文本編輯框顯示出來。2.接著,用戶按下“+”按鈕,觸發(fā)按鈕事件,
9、先判斷是數(shù)字或者是符號,當(dāng)觸發(fā)事件之前輸入的是符號時“.”沒有輸入數(shù)字時,程序采用 Double.valueOf(),將輸入的“.”進(jìn)行強制類型轉(zhuǎn)換成“0.”。當(dāng)用戶輸入正常數(shù)字時,程序首先將s內(nèi)的數(shù)據(jù)儲存到a中,同時將a中的內(nèi)容清空,以便輸入加數(shù),并再次儲存到s中,并通過JTexField()文本編輯框顯示出來。3.當(dāng)用戶按下“=”按鈕時,程序首先進(jìn)行判斷是否flagyunsuan=0,當(dāng)flagyunsuan=0是說明是第一次按“=”按鈕,接下在判斷“=”之前是否是空值或符號,當(dāng)判斷flagdenghao = ture的時候可以進(jìn)行運算。將運算結(jié)果存入a中,并再次通過JTexField()
10、文本編輯框顯示出來。4.接下來還要對運行的結(jié)果通過Double.valueOf()進(jìn)行強制類型轉(zhuǎn)換。因為儲存數(shù)據(jù)的s和a都是String型變量,而要求的輸出結(jié)果卻是double類型的變量,所以要轉(zhuǎn)換以后輸出。5.輸出完畢以后,必須判斷是否使用本次運算結(jié)果進(jìn)行下一步的運算,如果是的話則通過switch (lastyunsuan)來判斷接下來需要進(jìn)行的運算,再重復(fù)上面的步驟。4.2.誤操作處理由于用戶操作的不確定性,有時可能不會嚴(yán)格按照程序說明書進(jìn)行對應(yīng)的操作,經(jīng)常會發(fā)生誤操作。這便對程序的操作性要求大大提高。這就要求程序做到以下幾點:1.程序不能因為操作失誤而崩潰。2.程序要可以給用戶發(fā)出錯誤警
11、報。3.程序要可以對錯誤進(jìn)行適當(dāng)?shù)男薷?。而本程序?jīng)過反復(fù)誤操作運行,已經(jīng)可以保證程序不會因為誤操作而發(fā)生崩潰。其次,本程序采用了Toolkit.getDefaultToolkit().beep()函數(shù),可以使程序發(fā)出“beep”聲音的警報。最后,本程序?qū)σ恍╋@而易見的錯誤,比如輸入小數(shù)時可以自動把用戶輸入的“.”強制轉(zhuǎn)化為“0.”等。從而保證了,當(dāng)遇到各種誤操作的時候程序可以正常運行。4.3.流程圖和結(jié)構(gòu)圖1.程序流程圖2.代碼結(jié)構(gòu)圖5 運行與調(diào)試5.1 程序界面計算器界面如下:5.2 運行界面注:由于本程序要實現(xiàn)的功能過多,這里只采用部分具有代表性的功能的截圖作為參考。1.加法操作程序可以正
12、確運行8+5=132.除操作程序可以正確運行9/3=33.sin函數(shù)運算可以正確運行sin()= 0(由于本函數(shù)采用弧度運算,這里取了的近似值3.14進(jìn)行的運算,所以運算結(jié)果只能約等于1)。4.指數(shù)運算本程序可以正確運行2的立方= 8。5.階乘運算本程序正確實現(xiàn)了9的階乘 = 3628806心得與體會本次課程設(shè)計在我的努力編寫下順利完成了。設(shè)計過程中我付出了勞動與汗水,遇到過很多的困難和挫折,而且我們最終都戰(zhàn)勝了他們,獲得的最大收貨,我認(rèn)為并不是我設(shè)計成功了一個多么了不起的程序,而是我在設(shè)計過程中遇到的困難和解決它的方法與經(jīng)驗才是最值得我認(rèn)真體會的地方。通過本次設(shè)計過程我發(fā)現(xiàn)了我們學(xué)習(xí)知識的嚴(yán)
13、重不足,許多設(shè)計過程中常用到的知識,我們掌握的并不好。還要時常去查課本,有的甚至一點印象都沒有,我認(rèn)為這一切的原因在于我們不去用他,俗話說孰能生巧。對于所學(xué)的知識我們要善于使用。我還發(fā)現(xiàn),一些問題不能只憑借自己的主觀去臆想判斷,實踐才是硬道理,實踐出真知。只有通過自身去調(diào)查去分析得出的結(jié)論,才最接近事實,軟件的開發(fā)切忌不能想當(dāng)然的去看問題,畢竟只有動手做了才知道對與不對。本次實驗過后,不僅鍛煉了我的設(shè)計分析能力,編程能力,最重要的是鍛煉了我面對問題的應(yīng)變與解決能力。只有把自己所學(xué)的知識,和自己的經(jīng)驗,老師的指導(dǎo)相互結(jié)合起來,才能在學(xué)習(xí)的道路上少走彎路,并實現(xiàn)自己想要的目標(biāo)。最后,再次感謝jav
14、a程序設(shè)計趙建立老師的指導(dǎo),感謝有關(guān)同學(xué)提供的幫助,最后祝愿java這門課越學(xué)越好。7參考資料Java程序設(shè)計教程(第2版) 雍俊海 清華大學(xué)出版社Java程序設(shè)計實驗指導(dǎo) 雍俊海 清華大學(xué)出版社Java語言使用教程 丁振凡 北京郵件大學(xué)出版社8附錄由于本程序涉及的代碼量過于龐大,這里只給出幾個有代表性的算法的代碼,完整的代碼請參考電子版的代碼附錄。部分程序源代碼如下: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)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年山西財貿(mào)職業(yè)技術(shù)學(xué)院單招職業(yè)技能考試題庫含答案詳解
- 2026年大理護(hù)理職業(yè)學(xué)院單招職業(yè)技能測試題庫附答案詳解
- 2026年運城師范高等??茖W(xué)校單招職業(yè)技能考試題庫含答案詳解
- 2026年撫順師范高等??茖W(xué)校單招職業(yè)技能考試題庫及參考答案詳解一套
- 2026年長沙電力職業(yè)技術(shù)學(xué)院單招綜合素質(zhì)考試題庫及參考答案詳解一套
- 2026年九州職業(yè)技術(shù)學(xué)院單招職業(yè)技能考試題庫及參考答案詳解
- 2026年河南女子職業(yè)學(xué)院單招職業(yè)適應(yīng)性考試題庫含答案詳解
- 2026年廊坊衛(wèi)生職業(yè)學(xué)院單招職業(yè)傾向性考試題庫及完整答案詳解1套
- 2026年新疆天山職業(yè)技術(shù)大學(xué)單招綜合素質(zhì)考試題庫及答案詳解1套
- 2026年上海立達(dá)學(xué)院單招職業(yè)傾向性測試題庫及參考答案詳解1套
- 2025年馬鞍山市住房公積金管理中心編外聘用人員招聘3名考試筆試模擬試題及答案解析
- (一診)德陽市高中2023級高三第一次診斷考試生物試卷(含答案)
- 術(shù)后疲勞綜合征的炎癥反應(yīng)抑制策略
- 慢性阻塞性肺疾病的營養(yǎng)改善方案
- 貴州國企招聘:2025貴陽市衛(wèi)生健康投資有限公司招聘(公共基礎(chǔ)知識)綜合能力測試題附答案
- 2026年跨境電商培訓(xùn)課件
- 2026年安徽水利水電職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫帶答案詳解
- 2025年廣西繼續(xù)教育公需科目考試試題和答案
- 醫(yī)院治安防范措施課件
- 俄烏之戰(zhàn)課件
- 2026年鐵嶺衛(wèi)生職業(yè)學(xué)院單招職業(yè)傾向性考試題庫及參考答案詳解一套
評論
0/150
提交評論