編寫一個計算器程序課程設(shè)計報告范例精編版_第1頁
編寫一個計算器程序課程設(shè)計報告范例精編版_第2頁
編寫一個計算器程序課程設(shè)計報告范例精編版_第3頁
編寫一個計算器程序課程設(shè)計報告范例精編版_第4頁
編寫一個計算器程序課程設(shè)計報告范例精編版_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、編寫一個計算器程序課程設(shè)計報告范例公司內(nèi)部編號:(GOOD-TMMT-MMUT-UUPTY-UUYY-DTTI-學號中國地質(zhì)2016-2017學年 第二學期金融IT入門.程序設(shè)計課程設(shè)計報告大學長城學院XX系用Python編寫簡易計算器程序2017 年目錄總體設(shè)計程序程序概述:指導教師:目標:流程圖:代碼:則評分細評分項優(yōu)秀良好中等差上課出勤上課表現(xiàn)上機情況平時作業(yè)完成情況期末大作業(yè):(1)書寫認真程度(2)內(nèi)容詳實程度(3)文字表達能力(4)是否體現(xiàn)觀點評語簡短教師簽名:年月日體會:設(shè)計五評分等級備注評分等級有五種:優(yōu)秀、良好、中等、及格、不及格一、設(shè)計內(nèi)容L課程設(shè)計目的:1)掌握Java語

2、言的程序設(shè)計方法;2)理論聯(lián)系實際,進一步提高學生的軟件開發(fā)技術(shù);3)培養(yǎng)學生分析、解決問題的能力;4)提高學生實踐論文撰寫能力。2 .課程設(shè)計任務(wù):D設(shè)計的計算器應(yīng)用程序可以完成加法、減法、乘法、除法以及取余 運算(可以進行浮點數(shù)和負數(shù)的運算);2)有求倒數(shù)、退格和清零功能。3 .創(chuàng)新要求:能進行正切、余弦,以及求平方根、指數(shù)(包括對e)、自然對數(shù)運 算。圖形界面采用繼承windowadapter類,采取調(diào)用類方法來注冊監(jiān) 聽!4 .設(shè)計要求:1)設(shè)計的計算器應(yīng)用程序可以完成加法、減法、乘法、除法和取余運 算。且有小數(shù)點、正負號、求倒數(shù)、退格和清零功能。2)課程設(shè)計可選用Eclipse、JB

3、uilder NetBeans等作為開發(fā)平臺以 提高開發(fā)效率,通過資料查閱和學習盡可能熟練掌握其中一種集成開發(fā) 環(huán)境。3)認真按時完成課程設(shè)計報告,課程設(shè)計報告內(nèi)容包括:設(shè)計任務(wù) 與要求、需求分析、設(shè)計思路、詳細設(shè)計、運行調(diào)試與分析討論和設(shè)計 體會與小結(jié)六個部分。二、原理與分析1 .開發(fā)的技術(shù)及功能本課程設(shè)計是要做一個圖形界面的計算器,其界面主要是由swing組 件中的控件構(gòu)成。程序?qū)崿F(xiàn)了計算器的基本功能有:力口、減、乘、除基 本算術(shù)運算(可以進行浮點和負數(shù)運算)和sin、cos、tan等三角函數(shù) 求值運算,同時能進行指數(shù)運算和自然對數(shù)運算,還有求倒數(shù)、退格和 清零功能。2 .設(shè)計思路設(shè)計這個

4、計算器主要是參考Windows操作系統(tǒng)中自帶的計算器,由 于編者水平和時間的限制,不能將計算器設(shè)計到科學型及其他更復(fù)雜的 類型,在設(shè)計過程中還參考了一些其他的優(yōu)秀設(shè)計。但本計算器除了常 用的加減乘除(可以進行浮點和負數(shù)運算)這些基本運算外,還有求 余、求倒、退格、清零,甚至還能進行一些復(fù)雜科學的運算,比如余弦 (cos)、正切(tan)、指數(shù)運算(pow) 自然對數(shù)運算(log)、求 平方根(sqrt)以及對e的指數(shù)運算(exp),并且還能進行連續(xù)運算。 總體上說來,本計算器設(shè)計簡單,代碼很少,程序很小,但功能卻很強 大,這是同類計算器所不具備的。3 .設(shè)計效果圖設(shè)計時先在設(shè)計界面中添加按鈕等

5、控件,后在按鈕的 actionPerformed事件中添加代碼完成其功能其中調(diào)用了 Java類中的 Math函數(shù)庫以及各種字符串操作。設(shè)計的界面如下:圖一計算器運行界面三、設(shè)計過程1.程序思路:1)本應(yīng)用程序繼承自框架類(JFrame),容器Container c采用BorderLayout邊緣布局,將單行文本框加入到“North”區(qū)域,包含各種 按鈕的面板JPanel p加入到 Center”區(qū)域。包含各種按鈕的面板 JPanel p采用3行6列的網(wǎng)格布局,然后將數(shù)字按鈕和運算符按鈕以及 控制按鈕用一個for循環(huán)添加到面板中同時注冊按鈕事件監(jiān)聽器。如: Button b=new Button

6、();b. addActionListener (事件監(jiān)聽落);2)事件監(jiān)聽器中的事件處理方法void actionPerformed(ActionEvent evt)完成主要的按鈕事件的處理。事件處理分以下兒種情況:數(shù)字按鈕 事件(“ 0“,”1”,” 2“ 8,“ 9)、運算符按鈕事件(“ +, _” /,“獷)、正負號按鈕事件(” +/-“)、小數(shù)點按鈕事件(”.”)、等號按鈕事件(”=)、求倒按鈕 事件(“求倒”)、退格按鈕事件(“退格”)、清除按鈕事件(“C” )、正切(tan)、余弦(cos),以及求平方根(sqrt)、指數(shù) (pow)、對e的指數(shù)(exp)、對數(shù)運算(log)。3

7、)在事件處理,觸發(fā)按鈕事件時,先判斷是或是數(shù)字是或是是 或是,是的話就將負號“-、數(shù)字、小數(shù)點”分別寫入文本 框并存放在sum中,然后判斷是或是“退格”、“求倒”等,是的話進 行相應(yīng)的處理,都不是的話則跳到doOperation。執(zhí)行運算同時將運算符 存放在preOperater中。觸發(fā)按鈕事件時,要進一步分析,是重新開始 計竟時觸發(fā)的按鈕事件還是計算中間觸發(fā)的按鈕事件。4)計算器完成的是一個數(shù)學表達式,如:3 + 2,所以可以采用一個數(shù)組 來存儲數(shù)字或字符,如3, +, 2分別存儲在數(shù)組中,最后運算時,可以取出來進行運算。5)利用按鈕設(shè)計計算器的各個運算符和操作符,通過按鈕的事件處理實現(xiàn)按鈕

8、計算功能。6)利用文本框顯示操作數(shù)和運算結(jié)果。2.功能實現(xiàn):1)加減乘除求余以及指數(shù)運算void doOperation()double m=Double. parseDouble (x. getText ();if (preOperater. equals ()sum=m; 無前一操作,結(jié)果為剛輸入數(shù)將結(jié)果與文本框中的數(shù)據(jù)按照前一個運算符運算sum=sum+m; 加法運算sum=sum-in; / /減法運算sum二sum*m; /乘法運算if(preOperater. equals(+)if(preOperater. equals (一)if(preOperater. equals (*)

9、if(preOperater. equals(/)sum=sum/m;除法運算求余if(preOperater. equals(為) if(preOperater. equals(pow) sum=Math. pow(sum, m); /求嘉,指數(shù)運算 )2)其他運算I、求平方根Void sqrt () double m=Double。 parseDouble(x. getText();if (m0)x. setText (負數(shù)不能開根號); elsex.setText(+Math. sqrt(m);)n、對數(shù)運算Void log () double m=Double. parseDouble

10、(x. getText(); if (m0)x. setText(負數(shù)不能進行自然對數(shù)運算); elsex. setText (”+Math. log (m);)HI、余弦運算Void cos () double m=Double. parseDouble (x. getText ();x. setText(+Math. cos(m);IV、正切運算Void tan () double m=Double. parseDouble (x. getText ();.setText(+Math. tan(m);)V、e的指數(shù)運算Void exp () double m二Double。 parseDo

11、uble (x. getText ();x.setText(+Math exp(m);)VI、倒數(shù)運算Void daoshu ( ) if (Double. parseDouble(x. getText()=0)X. setText (除數(shù)不能為零);else (x. setText (Double. parseDouble (x. getText ();preOperater=;3)主要方法說明public cos (double x) 求 x 的余弦函數(shù)public tan (double x)public sqrt(double x)public log (double x)求x的正切函

12、數(shù)求X的平方根求X的自然對數(shù)運算public exp (double x) 求 e 的 x 次曷public pow (double a, double b) 求 a 的 b 次累public daoshu (double x) 求 x 的倒數(shù)4)程序流程圖3 .算法思路:這是一個簡單的計算器,里面所涉及到的功能就是加、減、乘、 除、開方運算、等基本功能。僅須定義兩個變量來保存雙運算操作的前 一個數(shù)和當前在計算器上顯示的數(shù)字即可,而對于單運算的操作要求更 加簡單,只需要一個變量就可以了。當然對數(shù)據(jù)進行判斷是必不可少 的。在輸入數(shù)據(jù)之后 Character. isDigit (Command.

13、charAt (0)判斷輸入 的數(shù)據(jù)是否符合要求。不符合要求給出提示,符合要求以后將判斷點擊 的運算符,執(zhí)行相應(yīng)的操作。對于單運算操作要進一步判斷是否符合要求,如果是就進入下步計 算,如果不是就彈出相應(yīng)的提示:“負數(shù)不能開根號;除數(shù)不能為 零”;用 try*, catch捕獲異常,如果有異常則中止活動。在進行開方(sqrt)運算時,如 果輸入數(shù)為負數(shù),則彈出負數(shù)不能開根號,中止運算。在進行自然對 數(shù)運算時(log)如果輸入數(shù)為負數(shù),則彈出負數(shù)不能進行自然對數(shù)運 算”。在進行三角函數(shù)運算時(cos、tan)不必考慮輸入的數(shù)字是否符 合規(guī)范,對于任意輸入的數(shù)函數(shù)本身有一個判斷的過程,都能把輸入的

14、數(shù)轉(zhuǎn)化為合適的范圍,進而得到正確的結(jié)果。對于加減乘除等雙運算操 作,每個功能都由每一個模塊來實現(xiàn),當按下加按鈕時,進行相應(yīng)的加 法操作,這一塊對相應(yīng)的操作數(shù)沒有要求;當點擊減號時,則進行減法 操作,由jTextField.getText。得到數(shù)字按鈕的值顯示在相應(yīng)的文本框 中;乘法操作在點擊一個操作數(shù)然后點擊乘號再點擊另一個時得出相應(yīng) 的結(jié)果顯示在文本框中;在作除法運算時,當被除數(shù)點擊為零時,調(diào)用 catch進行異常處理,彈出Infinity”。4 .數(shù)據(jù)分析:在事件處理,觸發(fā)按鈕事件時,先判斷是或是數(shù)字是或是是 或是,是的話就將負號“-、數(shù)字、小數(shù)點”分別寫入文本 框并存放在sum中,然后判

15、斷是或是“退格”、“求倒”等,是的話進 行相應(yīng)的處理,都不是的話則跳到doOperation。執(zhí)行運算同時將運算符 存放在preOperater中。觸發(fā)按鈕事件時,要進一步分析,是重新開始 計竟時觸發(fā)的按鈕事件還是計算中間觸發(fā)的按鈕事件。四、設(shè)計結(jié)果與分析L運行調(diào)試1)進行加減乘除求余以及指數(shù)運算帶負數(shù)的浮點加法運算(例:-1. 2+4=2. 8) 依次按“+/-”(也可以最后按),“L2” , “ + ” , “4”鍵按下“十”鍵按下“4”鍵按下“二”鍵分析:輸出的結(jié)果如圖所示,計算器可以直接輸入,計算比較簡 便,帶負號的浮點數(shù)加法做起來沒有問題。2)求倒先輸入1.25,再按下“求倒”鍵分析

16、:輸出的結(jié)果如圖所示,倒數(shù)功能實現(xiàn),計算時,不僅是結(jié)果,輸 入的數(shù)據(jù)同樣可以先實現(xiàn)倒數(shù)功能后再進行相應(yīng)的計算,沒有影響! 3)退格輸入數(shù)字1265按下“退格”鍵分析:輸出的結(jié)果如圖所示,本計算器退格鍵有一個特點是,就算是是 計算后得出的結(jié)果也能實現(xiàn)退格,缺點是不能很好的處理小數(shù)點的問 題,因為小數(shù)點也是字符串的一部分。4)清零按下黑”鍵分析:輸出的結(jié)果如圖所示,按清零鍵后數(shù)據(jù)全部消除。5)求余弦、求正切、對e求塞、求平方根、求自然對數(shù)、求倒運算(例:cos30) 先按下“30”鍵再按下“cos”鍵6)連續(xù)運算(例:2*3*4=24. 0)依次按下 “3”、“4、“/”、“6、“二”鍵7)異常處

17、理(例:求倒時輸入數(shù)為0)先按“0”鍵再按“求倒”鍵五、設(shè)計體會與小結(jié)作為一名計算機科學與技術(shù)專業(yè)的學生,我覺得能做類似的課程設(shè)計 是十分有意義,而且是十分必要的。經(jīng)過一段時間的努力,計算器課程 設(shè)計終于結(jié)束了,雖然很忙碌、很疲勞,但是收獲很大。這些天我?guī)缀?每天的專注和辛勞,喚回了我對Java這門語言的重新的認識,對Java 這門編程語言也有了深刻的理解o當然在本次課程設(shè)計的過程中,我碰到了很多問題,比如求倒時,最 先我是把按鈕新建成“1/x”,但是出現(xiàn)問題,怎么找都沒找出問題來, 其后重新整理思緒才發(fā)現(xiàn)不能設(shè)成“1/x”,因為“1/x”中第一個字符 是數(shù)字,而 Character. isD

18、i git (Command, char At (0)會將1/x” 當做數(shù) 字鍵寫入文本框。還有就是實現(xiàn)退格功能時不知道怎樣處理,最后上網(wǎng) 百度了一下才找到了方法,這也讓我深刻體會到了網(wǎng)絡(luò)的作用。當然還 遇到了其他的困難,這些花費了我很多時間,使我失敗了很多次,但是 通過我們不解的努力還是一一克服了這些問題,最終還是成功了。當然 在這次試驗中也暴露自己一些問題,發(fā)現(xiàn)了自己的很多不足,自己知識 的很多漏洞,基礎(chǔ)知識的不牢固,看到了自己的實踐經(jīng)驗還是比較缺 乏,理論聯(lián)系實際的能力還急需提高。這次課程設(shè)計,除了全面系統(tǒng)的理解了 JAVA面向?qū)ο缶幊淘淼囊?般原理和基本實現(xiàn)方法,還把死板的課本知識變

19、得生動有趣,激發(fā)了學 習的積極性。把學過的編程原理的知識強化,把課堂上學的知識通過自 己設(shè)計的程序表示出來,這加深了對理論知識的理解。課程設(shè)計中程序 比較復(fù)雜,在調(diào)試時應(yīng)該仔細,在程序調(diào)試時,注意盡力尋找程序中存 在的不足之處,進而使功能更加完善。當然在做課程設(shè)計要有很大的耐心,做的過程就是不斷的調(diào)試一修改一調(diào)試過程,只有靜下心來才能把問題解決。六、參考文獻1於東軍等Java程序設(shè)計與應(yīng)用開發(fā)(第二版)清華大學出版社2009. 52 Bruce Eckel Java編程思想機械工業(yè)出版社2007. 63楊樹林等Java語言最新實用案例教程(第2版)清華大學出版社 2010.7七、源程序impo

20、rt java. util. *;import javax. swing. *;import java. awt. *;public class Calculater extends JFrame implementsActionListenerJTextField x; /文本框String preOperater=,/; 上一次的運克符double sum=0; 運算結(jié)果public Calculater (String title) super(title);Container c=getContentPane (); 容器c. setLayout (new BorderLayout (

21、); 容潛米用邊緣布局x=new JTextField(50);c. add (North”, x);String buttoned口二0,1,2,3,+/,.,C,退格,求倒,4,5,6,7,+,- 2 / Q/ o一 4 1 4 lsqrt , pow , log , cos , tan , exp j;JPanel p=new JPanel (); 面板p. setLayout (new GridLayout (3, 9, 10, 10); 面板采用行列數(shù) 3, 6的網(wǎng)格布局for (int k=0 ;k0). setText (s. substring (0, s. length ()

22、 -1); 刪除最后一個字符)void dengyu() 等號,顯示計算結(jié)果doOperation ();x. setText(+sum);preOperater=,/,;void sqrt () 求該數(shù)的平方根double m=Double. parseDouble(x. getText ();if (m0)x. setText (負數(shù)不能開根號);elsex.setText (+Math sqrt(m);void log() 求該數(shù)的自然對數(shù)double m=Double. parseDouble(x. getText();if (m0)x. setText(負數(shù)不能進行自然對數(shù)運算); elsex. setText (/,Z,+Math. log (m);void cos() 求該數(shù)的余弦double m=Double。 parseDouble(x. getText();x. setText(+Math cos(m);void tan() 求該數(shù)的正切double m=Double. parseDouble(x. getText ();x. setText (Z,+Math. tan (m);void exp () 求 e 的幕double m=Doub

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論