C++課程設(shè)計-計算器_第1頁
C++課程設(shè)計-計算器_第2頁
C++課程設(shè)計-計算器_第3頁
C++課程設(shè)計-計算器_第4頁
C++課程設(shè)計-計算器_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、啟京航空航尺丈哮QNanjingUniversityofAeronauticsandAstronautics面向?qū)ο蟪绦蛟O(shè)計語言-課程設(shè)計題目計算器設(shè)計院系一航空宇航學(xué)院專業(yè)飛行器設(shè)計與工程學(xué)生姓名學(xué)號指導(dǎo)教師二零一二年六月九日:譽南京統(tǒng)空就氏犬學(xué)寸NanjinxVnhxrrityofAcromratic*andAstrormutk*課程設(shè)計報告:滲南京統(tǒng)空銃氏衣學(xué)NanjinxVnhvrrityofAeronautic*andAstronautic*課程設(shè)計報告計算器設(shè)計、目的與要求:1、目的:通過開發(fā)計算器程序,進一步熟悉C+中類和對象的定義與使用,掌握程序控制的方法,掌握C+程序設(shè)計的基

2、本知識。2、基本要求:設(shè)計計算器程序,可對實數(shù)操作;可對多個基數(shù)操作的四則運算;增加函數(shù)如:正弦、余弦、正切、對數(shù)、平方和平方根、完成四則混合運算,注意考慮優(yōu)先級,對應(yīng)增加主菜單選項;根據(jù)程序的提示,可以進行正弦運算進行余弦運算、正切運算、對數(shù)運算、求平方運算、混合運算、華氏溫度轉(zhuǎn)化為攝氏溫度的運算、攝氏溫度轉(zhuǎn)化為華氏溫度的運算、求平方根運算。使四則運算能夠具有測試功能,即計算機能夠自動出題,并要求用戶計算,同時計算機判斷用戶的對錯并打分,要求十題為一個單元,加減運算時最高為兩位數(shù)的運算,乘法為兩位數(shù)乘以一位數(shù),除法是兩位數(shù)或者三位數(shù)除以一位數(shù),要求沒有余數(shù)。、設(shè)計方法和基本原理:1、問題描述

3、(功能要求):實數(shù)間的計算很復(fù)雜,它包括:相加、相減、相乘、相除、求三角函數(shù)、求對數(shù)、四則混合運算等。試設(shè)計計算器,使之能提供以下功能:.可以連續(xù)輸入運算,對于輸入的表達式能夠按算符優(yōu)先級進行處理。如:輸入4+5*3時,應(yīng)該輸出60,而不是27。.可以處理包含括號的表達式。如:輸入茁(3+2)時,應(yīng)該輸出10,而不是8。.可以計算三角函數(shù)、對數(shù)函數(shù)、平方根以及平方。.能夠?qū)崿F(xiàn)華氏溫度與攝氏溫度之間的轉(zhuǎn)換。.四則運算能夠具有測試功能,即計算機能夠自動出題,并要求用戶計算,同時計算機判斷用戶的對錯并打分。6).系統(tǒng)以菜單方式工作。(所謂菜單指用戶可以自由選擇所要執(zhí)行的功能)7).當使用者輸入錯誤時

4、要有錯誤提示。2、問題的解決方案:根據(jù)系統(tǒng)功能要求,可以將問題解決分為以下步驟:(1)應(yīng)用系統(tǒng)分析,建立該系統(tǒng)的功能模塊框圖以及界面的組織和設(shè)計;(2)分析系統(tǒng)中的各個實體及它們之間的關(guān)系包括屬性和行為;(3)根據(jù)問題描述,設(shè)計系統(tǒng)的類層次;(4)完成類層次中各個類的描述(包括屬性和方法);(5)完成類中各個成員函數(shù)的定義;(6)完成系統(tǒng)的應(yīng)用模塊;(7)功能調(diào)試;(8)完成系統(tǒng)總結(jié)報告。南京統(tǒng)空航氏衣學(xué)Nf|jinxUnhTrritjrofAeronautic*andAstrormutic*課程設(shè)計報告TOC o 1-5 h z系統(tǒng)需求分析1總體設(shè)計1詳細設(shè)計25.結(jié)果分析系統(tǒng)調(diào)試錯誤!未定

5、義書簽。6.總結(jié)附錄:源程序清單::南京就空航氏衣學(xué)vV*NanjinxUnhTrritjrofAeronautic*andAstronautics課程設(shè)計報告系統(tǒng)需求分析實數(shù)間的計算很復(fù)雜,它包括:相加、相減、相乘、相除、求三角函數(shù)、求對數(shù)、四則混合運算等。試設(shè)計計算器,使之能提供以下功能:.可以連續(xù)輸入運算,對于輸入的表達式能夠按算符優(yōu)先級進行處理。如:輸入4+5*3時,應(yīng)該輸出60,而不是27。.可以處理包含括號的表達式。如:輸入茁(3+2)時,應(yīng)該輸出10,而不是8。.可以計算三角函數(shù)、對數(shù)函數(shù)、平方根以及平方。.能夠?qū)崿F(xiàn)華氏溫度與攝氏溫度之間的轉(zhuǎn)換。.四則運算能夠具有測試功能,即計算

6、機能夠自動出題,并要求用戶計算,同時計算機判斷用戶的對錯并打分。.系統(tǒng)以菜單方式工作。(所謂菜單指用戶可以自由選擇所要執(zhí)行的功能).當使用者輸入錯誤時要有錯誤提示。學(xué)生可以通過以上功能計算實數(shù)間的加、減、乘、除、求三角函數(shù)、求平方、求平方根、求對數(shù)以及實現(xiàn)華氏溫度和攝氏溫度間的轉(zhuǎn)換,除了要實現(xiàn)上述的基本功能之外,本系統(tǒng)還應(yīng)該在細節(jié)上下工夫,使用戶使用方便,在使用的過程中保持一個愉快的心情。計算器系統(tǒng)有廣大的用戶群,這其中有老師、學(xué)生、有公司辦公人員,也可以供給一般用戶使用。總之,該系統(tǒng)可以滿足用戶需求,實現(xiàn)對實數(shù)的計算??傮w設(shè)計計算器系統(tǒng)包含六個大的功能,分別是:四則混合運算、三角函數(shù)運算、對

7、數(shù)運算、平方和平方根運算、攝氏溫度和華氏溫度的轉(zhuǎn)換、測試功能。在上述六大功能中最難的是四則混合運算的實現(xiàn),特別是優(yōu)先級的判斷,不但有加減乘除之間的優(yōu)先級判斷,而且還有括號夾雜其中,使得實現(xiàn)起來非常困難。于是,我考慮用棧和二叉樹來實現(xiàn)。系統(tǒng)彈出主菜單來提示用戶輸入其想要實現(xiàn)的運算類型,然后根據(jù)用戶所選的類型來調(diào)用相關(guān)的函數(shù)計算并返回結(jié)果。當系統(tǒng)完成運算后,會再次跳出主菜單讓用戶選擇,用戶可以選擇推出或者繼續(xù)。當用戶輸入出錯時,系統(tǒng)會提示用戶。總之,用戶可以方便的在系統(tǒng)提示下進行使用。本系統(tǒng)還具有測試功能,系統(tǒng)出題,用戶輸入答案,系統(tǒng)會判斷對錯并給出用戶的得分。計算器系統(tǒng)中功能模塊圖:詳細設(shè)計系統(tǒng)

8、通過主菜單提示用戶選擇相應(yīng)的功能。該計算器的功能主要為下列6個:(1).四則混合運算模塊用戶選擇功能,輸入要進行的多項式(不能輸入空格符),實現(xiàn)實數(shù)的四則混合運算?;旌线\算流程圖:開始輸入多項式處理函數(shù)MixedQ:參南京統(tǒng)空航氏衣學(xué)NarjinxUnhvrrityofAeronautic*andAstroruiutic*課程設(shè)計報告.三角函數(shù)模塊用戶選擇功能,輸入實數(shù),實現(xiàn)求三角函數(shù)的功能。三角函數(shù)運算流程圖.對數(shù)模塊用戶選擇功能,輸入實數(shù),實現(xiàn)對數(shù)的求解。對數(shù)函數(shù)流程圖南京航空就氏犬學(xué)NanjinxUnhierrityofAeronauticsandAstroruiutic*課程設(shè)計報告(

9、4)平方和平方根模塊用戶選擇功能,輸入實數(shù),實現(xiàn)平方和平方根運算。:會南京航空毓氏衣學(xué)vT*NanjinxVnhrrityofAeronauticsandAstronautk*課程設(shè)計報告(6)測試模塊系統(tǒng)出題,用戶輸入答案,系統(tǒng)會判斷對錯并給出用戶的得分。::南京航空航氏犬學(xué)辻“NanjinxVnhicrrityofAeronautic*andAstroruiutic*課程設(shè)計報告系統(tǒng)調(diào)試程序編寫完成后,我進行了程序調(diào)試。調(diào)試過程中,出現(xiàn)了以下問題:.當我第一次運行程序時,出現(xiàn)了很多錯誤,大部分是定義的函數(shù)需與引用時不同,這是由于粗心引起的。還好,這個程序也就300多行代碼,找起來不是很困難

10、,但是如果是上萬行的代碼,那就要花很多時間。以后在編程時,我要細心些,不能把時間浪費在這種低級錯誤上。.在調(diào)試除法運算時,我發(fā)現(xiàn)自己沒有考慮除數(shù)為零的情況,一旦輸入的除數(shù)為零,系統(tǒng)就無法運行了。我回到除法運算的函數(shù)中,加入判斷除數(shù)是否為零以及為零時的處理的代碼,問題就解決了。在對數(shù)運算、求平方根運算中都有類似情況。.當我選擇運算的種類并輸入要計算的實數(shù)后,系統(tǒng)輸出答案,但馬上屏幕乂恢復(fù)到主菜單選項,根本來不及看清答案。我到程序中去尋找錯誤,發(fā)現(xiàn)每一次用戶輸入后我都有寫一個cm.ignore(),于是我想會不會是這個出的問題。我刪了一個進行調(diào)試,發(fā)現(xiàn)沒有錯誤,可以運行。但是,運行起來和以前還是一

11、樣。于是,我回到代碼南京航空航氏衣學(xué)NafjinxUnKvrrityofAeronauticsandAstronautk*課程設(shè)計報告中繼續(xù)尋找,發(fā)現(xiàn)在mem】函數(shù)中我用了一個清屏的代碼,把它刪掉后繼續(xù)調(diào)試,這次,運行起來后不再出現(xiàn)問題了,我進行的所有操作都保留下來了,沒有被刪除。原來,每次調(diào)用menu函數(shù)時,都會執(zhí)行一次清屏,用戶上次的運算結(jié)果會被刪除并顯示新的菜單。(4).在選擇菜單項時,會出現(xiàn)問題,例如:輸入1,選擇正弦函數(shù)操作,但是輸入12,卻變成了選擇正弦函數(shù)操作并且對2進行正弦計算,經(jīng)過考慮并且嘗試我發(fā)現(xiàn)只要將選擇輸入由字符型改成整形就可以了。結(jié)果分析這次的課設(shè),雖然老師早早的就把

12、題目給我了,但我因為書本還沒看完,就遲遲沒有動手去做。從開始準備做這個題到完成也就是兒天的事,所以很多地方寫的不好,其至有些地方還不是很懂。在多次調(diào)試后,有些錯誤依然存在,而且我想不出辦法解決,實在是慚愧?,F(xiàn)在,在這里也只能說說它的不足之處了。首先是類的問題,整個程序中,我只用了一個類,兒乎所有的函數(shù)都是這個類的成員,讓人感覺很臃腫,我也試圖去優(yōu)化它,但最終也沒能想出辦法來。容易在基礎(chǔ)的東西上出錯,經(jīng)常忘記寫“;”,或者同一個函數(shù)不同地方調(diào)用時會打錯名字,這些都是不應(yīng)該的,必須改掉。函數(shù)參數(shù)設(shè)定不夠完美,整個程序中對指針的運用比較少。對于指針的巧妙運用把握得不夠。一開始挺順利,但在如何實現(xiàn)四則

13、混合運算時,我茫然了。我苦想一整天都沒能想出如何去做。于是,我去百度了一下,還好,讓我找到了??墒?,問題又來了,在實現(xiàn)四則混合運算時運用了棧和二叉樹的知識,這讓我很頭疼,這兩樣?xùn)|西我壓根不懂。跑到圖書館借了相關(guān)的書看,還是不能完全理解,只能湊合著用了。在錯誤提示方面我還是很不足,經(jīng)常忘記,都是調(diào)試出現(xiàn)問題了才會想到。6總結(jié)通過課程設(shè)計,我感覺到平時學(xué)的時候?qū)系某绦蚴强炊?,可是真正運用這些知識的時候還是有點力不從心,不能很好的了解并運用到自己的程序之中。通過這次的課程設(shè)計我明白了學(xué)習(xí)程序設(shè)計語言必須要勤做實驗,通過實驗總結(jié)經(jīng)驗。平時遇到的一些小問題一定要重視,越是基礎(chǔ)的知識越要理解透徹。比

14、如指針與數(shù)組方面的知識,一旦沒有弄清楚,在設(shè)計程序時就會吃虧。南京統(tǒng)空硫氏衣學(xué)NanjinxUnhvrrityofAeronautic*andAstronautics課程設(shè)計報告這次的課程設(shè)計中,我遇到了很多的問題,有的通過思考或查看書本解決了,有的還留在腦子里,只有通過孜孜不倦的求索我們才會有進步,不懂得思考就不能真正的掌握一門知識。像我做這個程序的時候,就感覺自己對棧的知識還很欠缺,有的地方不是很明白,多虧了上網(wǎng)查找的這方面知識和一些源程序才幫助我完成了這個程序的設(shè)計??墒且恢钡浆F(xiàn)在,對于混合運算中用到的棧和二義樹我只是有些理解,真正運用還不行。之前我學(xué)的書上沒有這些內(nèi)容,雖然我去圖書館看

15、了有關(guān)這些內(nèi)容的書,但畢竟能力有限,短時間內(nèi)無法理解的那么好,運用起來就更加捉襟見肘了。今后,我還是會去看這方面的書的,把沒弄懂的東西弄懂。最后,還有一點不得不說,這個程序中,我只定義了一個類,所有的函數(shù)都包含在里面,感覺很臃腫,想要優(yōu)化,可最終也沒能想出辦法,真是一大遺憾。;參南京航空銃氏丈學(xué)V*NanjinxVnhxrrityofAeronautic*andAstronautic*課程設(shè)計報告附錄:源程序清單#include#include/用以產(chǎn)生隨機數(shù)#mclude定義雜項函數(shù)及內(nèi)存分配函數(shù)include/包含數(shù)學(xué)函數(shù)#mcludeusingnamespacestd;#defineMA

16、X100#defineMIN10doublenumberhnumber2,answer;iiitmput;classcountpublic:doublecadd(doublenumber1,doublenumber2);/定義加法運算doublecsub(doublenumbeiLdoublenumber2);/定義減法運算doublecdiv(doublenumberLdoublenumber2);/定義除法運算doublecmult(doublenumber1,doublenumber2);/定義乘法運算voidcsqureO;/定義平方函數(shù)voidsqureroot();/定義求平方根運

17、算voidccos();定義余弦函數(shù)voidctan();定義正切函數(shù)voidcsin();定義正弦函數(shù)voidclogQ;/定義對數(shù)函數(shù)voidfatoce();/定義華氏溫度轉(zhuǎn)化為攝氏溫度voidcetofa();定義攝氏溫度轉(zhuǎn)化為華氏溫度定義混合運算函數(shù)voidmixed();voidcalcu();doublecalculate(char*f);voidcexit()/定義退出函數(shù)voidmenuQ;/定義主菜單函數(shù)voidbadmput();/定義出錯提示函數(shù)voidtestQ;/定義測試函數(shù);doublecount:cadd(doublenumberLdoublenumber2)/

18、力Fl法運算aiiswei-numbef1+number2;retmn(aiiswer);doublecount:csub(doublenumbei1.doublenumber2)減法運算answer=number1-number2;retmn(aiiswer);南京航空航氏衣學(xué)NarjinxVnhicrrityofAeronautic*andAstroruiutic*課程設(shè)計報告doublecount:cdiv(doublenumberdoublenumbed)/除去運算if(number2=0)/排除除數(shù)為零的情況coutM除數(shù)不可為0!iT;exit(0);elseanswer=numb

19、er1/number2;return(answei);doublecount:cmult(doublenumberl,doublemimb2)乘去運算answer=number1*number2;letuin(aiiswer);voidcount:csquie()/平方的函數(shù)coutM求平方S”;cout請輸入一個數(shù):;cmnumberl;aiiswer=(number1*numberl);coutnumbei1H的平方是Hansweiendl;cm.ignore();menu();voidcount:squrerootQ/R平方根的函數(shù)cout”求平方根iT;cout”請輸入一個非負數(shù):“;

20、ciiinumber1;if(numberl0)排除負數(shù)開平方根cout”輸入錯誤!不可為負數(shù)!n“;cin.ignore();menu();elseanswer=sqit(numberl);coutnumberl”的平方根是”answerendl;cin.ignore();menu();:參南京統(tǒng)空就氏衣學(xué)寸NanjifuiVnhvrrityofAerommiticsandAstronautic*課程設(shè)計報告:參南京統(tǒng)空硫氏丈學(xué)vNanjinxUnhcrrityofAeronauticsandAstronautic*課程設(shè)計報告voidcount:csiiiQ/正弦函數(shù)coutM求正弦1T;

21、cout請輸入一個數(shù):;cmnumberl;aiiswer=sm(number1);coutnumbei1H的正弦是Manswerendl;ciii.ignore();menu();voidcount:ccosQ余弦函數(shù)coutM求余弦1T;cout請輸入一個數(shù):;cmnumberl;aiiswer=cos(numberl);coutnumbei1H的余弦是Manswerendl;ciii.ignore();menu();voidcount:ctanQ/正切函數(shù)coutM求正切1T;cout請輸入一個數(shù):;cmnumberl;aiiswer=tan(number1);coutnumbei1H的

22、正切是Manswerendl;ciii.ignore();menu();voidcount:clogQ/X4數(shù)函數(shù)coutM求對數(shù)n”;cout請輸入一個正數(shù):;cmnumberl;if(numberl=,0,)&(*p=9);操作數(shù)進棧sl+tl=x;執(zhí)行先遇到的加、減、乘、除運算while(t2)calcu();返回結(jié)果returnsltl;voidcount:niixedQ/混合運算函數(shù)cout混合運算函數(shù),請輸入要計算的表達式:n”;chai-b100;ciiib;coutcalculate(b)endl;coutflushyz刷新緩沖區(qū)ciii.ignore();menuQ;void

23、count:cexit()/退出函數(shù)exit(0);_voidcount:badmput()/出錯提示函數(shù)coutn輸入錯誤!1T;ciii.ignore();menuQ;voidcount:test()測試函數(shù)coutM進行測試11”;iiits.sum=0:滲南京航空航氏衣學(xué)NanjinxUnhvrrityofAeronauticsandAstronautk課程設(shè)計報告南京就空就氏犬學(xué)Nanjin*UnhxrrityofAeronauticsandAstronautic*課程設(shè)計報告floatx;fbr(inti=l;i=10;i+)fis=rand()%4+l;/隨機給出題目的+或-或*

24、或/sraiid(time(NULL);switch(s)case1:number1=rand()%MAX:number2=rand()%MAX:coutnumberl,+tnumber2=,;answer=cadd(number14iumber2);break:case2:number1=rand()%MAX:number2=rand()%MAX:coutnumberl-rnuniber2,=,;answer=csub(number14iumber2);break:case3:number1=rand()%MAX:number2=rand()%MIN1;coutnumberl7rnumber2=,;answer=cdiv(number1,number2);break:case4:number1=rand()%MAX:number2=rand()%MIN;coutnumberl,*,number2=,;answer=cmu

溫馨提示

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

最新文檔

評論

0/150

提交評論