




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、JAVA課程設計說明書題目:模擬科學計算器 姓名:學號:班級: 網絡工程11-2 山東科技大學2013年11月7日目錄1 課設任務及要求11.1課設任務11.2設計要求12 需求分析22.1 設計背景22.2 需求獲取32.3程序功能圖43 設計思路43.1界面布局43.2類的定義53.3變量的定義54 詳細設計64.1整體概述64.2誤操作處理74.3流程圖和結構圖85 系統調試115.1 程序界面115.2運行界面116 心得與體會157 參考文獻168 附錄161 課設任務及要求1.1課設任務:要求:界面模擬Windows中的計算器程序。實現基本數學運算、函數等功能:加、減、乘、除、階乘
2、、正弦、余弦和指數運算。實現要點:添加相關組件并進行按鈕事件處理。要求提交Application和Applet兩個版本的程序。1.2設計要求設計的java計算器應用程序可以完成加法、減法、乘法、除法和取余運算,和cos,sin,tan等三角函數功能以及階乘和指數等運算,且有小數點、正負號、求倒數、退格和清零功能。具體可參考windows附件下的計算器課程設計使用Eclipse4.2等作為程序編譯和運行測試的開發平臺,采用JDK-7u25作為java開發環境,使用Microsoft Office Visio 2007作為繪圖工具。認真按時完成課程設計報告,制作演講PPT,積極報名上講臺向大家演示
3、和講解自己的程序。提交打印版的報告以及電子版的原稿和Application和Applet兩個版本的程序代碼。2 需求分析2.1 設計背景本程序是老師提供的幾個課程設計題目中比較中等的題目。要求實現模擬的科學計算器功能,主要包括加減乘除四則運算和階乘,三角函數以及指數的運算。具體的功能我參考了Windows7下的計算機小程序,并根據其界面設計了java小程序界面,根據其功能對自己設計的計算器小程序進行了功能的適當增加與修改。在實現了課程設計題目要求的基礎上,自己又增添了對數函數,冪函數,三角函數,取余等我們常用到的功能比較簡單的函數。由于本函數涉及的函數以及按鍵數目較多,故沒有采用面向對象的設計
4、方法,沒有對每個功能封裝成函數調用,而是針對每個按鍵的動作事件直接采用了算法的編寫。最終實現了全部的功能,但是由于時間有限,許多功能沒有坐到很到位的優化,或許還存在著許多了漏洞,歡迎老師和同學的批評指正,我一定會不斷完善。2.2 需求獲取本程序的設計過程,按照題目的要求,我認真參考了Windows7下計算器小程序的運行界面與運行操作與結果,對我自己設計的程序的需求展開了進一步的研究。主要得到以下幾點需求:1.必須實現題目要求的和Windows7下計算器下的基本功能,并能正確運行。2.必須使程序具有清空,清除,退格和正負數,小數點的基本功能。3.必須要修程序可以進行連續運算,即如“1+2+3+4
5、,1*2+4-4”等連續運算4.必須使用可視化界面,按鍵布局簡單明了,使人一看就懂,直接可以上手操作。界面要做到簡單明了,通俗易懂,和藹可親。5.必須有用戶錯誤操作,輸入不規范的警告與提示,提醒用戶正確操作。6.程序必須經過嚴格的測試與運行,保證沒有明顯的BUG和程序崩潰狀況,要經得起用戶的長時間使用。2.3程序功能圖功能圖如下:3設計思路3.1界面布局本應用程序繼承自框架類(JFrame),采用BorderLayout邊緣布局和GridLayout網格布局相結合的布局管理方式,將單行文本框加入到“North”區域,包含各種按鈕的面板JPanel p按照網格布局的順序加入到其他區域。將文本框放
6、到界面上方,將指數函數放到界面下方,將三角函數放到界面左邊,將基本四則運算放到界面的右面,使得界面的整體布局合理整潔,易于上手。3.2類的定義本程序主要定義了一個主函數和三個類:public static void main(String args):程序的主函數,Application程序的主要實現標志,調用上文中定義的類class C1:程序主類,定義了整個界面的布局,和針對每個按鈕的動作監聽,以及每個動作所對應的具體的操作,計算的運行和輸出主函數。class jiecheng:定義了階乘運算(fff)的算法實現。class Mymath:定義了asinh、acosha、tanh三個Mat
7、h.中不包含的三角函數及其算法實現3.3變量的定義字符串變量String a,c,s用來儲存數字和符號以及運算結果。整形變量flagdenghao,flagyunsuan,lastyunsuanCount變量countxiaoshudian用來統計小數點出現的次數4 詳細設計4.1.整體概述首先,程序定義了三個類:一個主類,兩個主類里調用的輔助類。分別實現,計算器主要功能的實現,階乘算法的實現,和反三角函數算法的實現。其次,對于C1主類,首先在框架JFrame下定義了每個觸擊式組件,即JButton命令式按鈕。并采用了BorderLayout邊緣布局和GridLayout網格布局相結合的布局管
8、理方式。將文本框,Str1(數字運算),Str2(三角函數),Str3(反三角函數)和Str4(指數函數)合理的排布在整個框架下。然后,定義了每個JButton命令式按鈕代表的數字,符號和函數,并且通過public void actionPerformed(ActionEvent e)函數定義了每個按鈕對應的動作監聽,從而確定了鼠標點擊每個按鈕時可以實現對應的不同的算法。接下來,就是每個運算所對應的算法實現,這里以加法運算為例:1.首先用戶輸入一個數字,程序用String s暫時儲存,并通過JTexField()文本編輯框顯示出來。2.接著,用戶按下“+”按鈕,觸發按鈕事件,先判斷是數字或者是
9、符號,當觸發事件之前輸入的是符號時“.”沒有輸入數字時,程序采用 Double.valueOf(),將輸入的“.”進行強制類型轉換成“0.”。當用戶輸入正常數字時,程序首先將s內的數據儲存到a中,同時將a中的內容清空,以便輸入加數,并再次儲存到s中,并通過JTexField()文本編輯框顯示出來。3.當用戶按下“=”按鈕時,程序首先進行判斷是否flagyunsuan=0,當flagyunsuan=0是說明是第一次按“=”按鈕,接下在判斷“=”之前是否是空值或符號,當判斷flagdenghao = ture的時候可以進行運算。將運算結果存入a中,并再次通過JTexField()文本編輯框顯示出來
10、。4.接下來還要對運行的結果通過Double.valueOf()進行強制類型轉換。因為儲存數據的s和a都是String型變量,而要求的輸出結果卻是double類型的變量,所以要轉換以后輸出。5.輸出完畢以后,必須判斷是否使用本次運算結果進行下一步的運算,如果是的話則通過switch (lastyunsuan)來判斷接下來需要進行的運算,再重復上面的步驟。4.2.誤操作處理由于用戶操作的不確定性,有時可能不會嚴格按照程序說明書進行對應的操作,經常會發生誤操作。這便對程序的操作性要求大大提高。這就要求程序做到以下幾點:1.程序不能因為操作失誤而崩潰。2.程序要可以給用戶發出錯誤警報。3.程序要可以
11、對錯誤進行適當的修改。而本程序經過反復誤操作運行,已經可以保證程序不會因為誤操作而發生崩潰。其次,本程序采用了Toolkit.getDefaultToolkit().beep()函數,可以使程序發出“beep”聲音的警報。最后,本程序對一些顯而易見的錯誤,比如輸入小數時可以自動把用戶輸入的“.”強制轉化為“0.”等。從而保證了,當遇到各種誤操作的時候程序可以正常運行。4.3.流程圖和結構圖1.程序流程圖2.代碼結構圖5 運行與調試5.1 程序界面計算器界面如下:5.2運行界面注:由于本程序要實現的功能過多,這里只采用部分具有代表性的功能的截圖作為參考。1.加法操作程序可以正確運行8+5=132
12、.除操作程序可以正確運行9/3=33.sin函數運算可以正確運行sin()= 0(由于本函數采用弧度運算,這里取了的近似值3.14進行的運算,所以運算結果只能約等于1)。4.指數運算本程序可以正確運行2的立方= 8。5.階乘運算本程序正確實現了9的階乘 = 3628806心得與體會本次課程設計在我的努力編寫下順利完成了。設計過程中我付出了勞動與汗水,遇到過很多的困難和挫折,而且我們最終都戰勝了他們,獲得的最大收貨,我認為并不是我設計成功了一個多么了不起的程序,而是我在設計過程中遇到的困難和解決它的方法與經驗才是最值得我認真體會的地方。通過本次設計過程我發現了我們學習知識的嚴重不足,許多設計過程
13、中常用到的知識,我們掌握的并不好。還要時常去查課本,有的甚至一點印象都沒有,我認為這一切的原因在于我們不去用他,俗話說孰能生巧。對于所學的知識我們要善于使用。我還發現,一些問題不能只憑借自己的主觀去臆想判斷,實踐才是硬道理,實踐出真知。只有通過自身去調查去分析得出的結論,才最接近事實,軟件的開發切忌不能想當然的去看問題,畢竟只有動手做了才知道對與不對。本次實驗過后,不僅鍛煉了我的設計分析能力,編程能力,最重要的是鍛煉了我面對問題的應變與解決能力。只有把自己所學的知識,和自己的經驗,老師的指導相互結合起來,才能在學習的道路上少走彎路,并實現自己想要的目標。最后,再次感謝java程序設計趙建立老師
14、的指導,感謝有關同學提供的幫助,最后祝愿java這門課越學越好。7參考資料Java程序設計教程(第2版) 雍俊海 清華大學出版社Java程序設計實驗指導 雍俊海 清華大學出版社Java語言使用教程丁振凡北京郵件大學出版社8附錄由于本程序涉及的代碼量過于龐大,這里只給出幾個有代表性的算法的代碼,完整的代碼請參考電子版的代碼附錄。部分程序源代碼如下:class jiecheng public static double fff(double n)if(n=0)return 1;elsereturn n*fff(n-1);class Mymath public static double asinh
15、(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 con = frame.
16、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 GridLayout(2,
17、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.length;i+)b
18、2i = 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.getLayout().sh
19、ow(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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 山西省忻州市岢嵐縣2025年五下數學期末學業水平測試模擬試題含答案
- 四川省廣安第二中學2025年高三下學期第四次質量考評歷史試題含解析
- 江西省蘆溪縣2025年數學三下期末質量檢測模擬試題含解析
- 住房公積金借款合同
- 南寧市江南區2024-2025學年數學五下期末質量檢測試題含答案
- 新疆昌吉州奇臺縣2025年初三化學試題第二次統測試卷含解析
- 四川文理學院《大數據采集與清洗》2023-2024學年第二學期期末試卷
- 江蘇省鎮江市重點中學2025年三月份月考數學試題含解析
- 藥店全職員工勞動合同范本合同
- 臺州職業技術學院《射頻電路基礎》2023-2024學年第二學期期末試卷
- GA/T 652-2006公安交通管理外場設備基礎施工通用要求
- 《課程與教學論》形考二答案
- 公積金提取單身聲明
- 磷酸鐵鋰生產配方及工藝
- 高處作業吊籃進場驗收表
- 電工電子技術及應用全套課件
- DB33T 1233-2021 基坑工程地下連續墻技術規程
- 8.生發項目ppt課件(66頁PPT)
- 《新農技推廣法解讀》ppt課件
- 車載式輪椅升降裝置的結構設計-畢業設計說明書
- 社區家庭病床護理記錄文本匯總
評論
0/150
提交評論