計(jì)算器課程設(shè)計(jì)計(jì)算器程序設(shè)計(jì)_第1頁
計(jì)算器課程設(shè)計(jì)計(jì)算器程序設(shè)計(jì)_第2頁
計(jì)算器課程設(shè)計(jì)計(jì)算器程序設(shè)計(jì)_第3頁
計(jì)算器課程設(shè)計(jì)計(jì)算器程序設(shè)計(jì)_第4頁
計(jì)算器課程設(shè)計(jì)計(jì)算器程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、C+課程設(shè)計(jì)報(bào)告( 2013 2014 年度第 1 學(xué)期)計(jì)算器程序設(shè)計(jì)專業(yè)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)生姓名班級(jí)學(xué)號(hào)指導(dǎo)教師完成日期2014年1月16日目錄摘要11、引言11.1 課題意義及目的11.2 課程設(shè)計(jì)內(nèi)容及要求12、開發(fā)工具的介紹23、設(shè)計(jì)內(nèi)容33.1 功能說明33.2 流程圖:34、系統(tǒng)的實(shí)現(xiàn)44.1 文件創(chuàng)建44.2 界面設(shè)計(jì)64.3 數(shù)值計(jì)算功能的實(shí)現(xiàn)105、程序結(jié)果的演示25.1 測(cè)試的研究與選擇25.2 測(cè)試環(huán)境35.3 實(shí)例測(cè)試結(jié)果3心得與體會(huì)5參考文獻(xiàn)6附錄1:RUN函數(shù)程序7附錄2:計(jì)算器程序8摘 要隨著當(dāng)今社會(huì)的發(fā)展,越來越多的人開始使用電子商品,新的高考制度也允許使用計(jì)

2、算器,而作為一名計(jì)算機(jī)專業(yè)的學(xué)生,在使用工具的同時(shí)也應(yīng)該學(xué)會(huì)制作這類工具。本課程設(shè)計(jì)是利用VC+編程,實(shí)現(xiàn)一個(gè)簡(jiǎn)單計(jì)算器。此計(jì)算器類似于Windows附件中自帶的計(jì)算器,它利用不僅實(shí)現(xiàn)了簡(jiǎn)單的四則運(yùn)算功能,還實(shí)現(xiàn)了少部分科學(xué)函數(shù)計(jì)算功能,例如sin,cos,tan等而且具有簡(jiǎn)潔的外觀,好看的背景。用戶可以使用任何合法的四則運(yùn)算,并且顯示運(yùn)算結(jié)果。計(jì)算器的設(shè)計(jì)是基于MFC下進(jìn)行,通過各種控件的使用,實(shí)現(xiàn)要求中的功能。該報(bào)告介紹了該課題的意義,設(shè)計(jì)內(nèi)容及要求, vc+開發(fā)工具的簡(jiǎn)單使用方式。且著重闡述了計(jì)算器的設(shè)計(jì)思路和功能,并對(duì)代碼進(jìn)行了詳細(xì)的解釋。關(guān)鍵詞 VC+ , 計(jì)算器 , MFC , 控

3、件計(jì)算器程序設(shè)計(jì)1、引言現(xiàn)代計(jì)算器一般是指“電子計(jì)算器”,所以,可以認(rèn)為是“電子計(jì)算器”的簡(jiǎn)稱。能進(jìn)行數(shù)學(xué)運(yùn)算的手持機(jī)器,擁有集成電路芯片,但結(jié)構(gòu)簡(jiǎn)單,比現(xiàn)代的電腦結(jié)構(gòu)簡(jiǎn)單的多,但是比較廉價(jià),可以說是現(xiàn)代辦公必備用品之一。本課程設(shè)計(jì)主要在運(yùn)算過程中,如果通過計(jì)算器來完成,就會(huì)減少計(jì)算量,該程序即可以在簡(jiǎn)單計(jì)算器鍵面下進(jìn)行簡(jiǎn)單運(yùn)算,也可以在科學(xué)計(jì)算器鍵面下進(jìn)行高級(jí)的科學(xué)計(jì)算。并且可以分別計(jì)算弧度、角度的三角函數(shù)的計(jì)算等較為復(fù)雜的運(yùn)算。1.1 課題意義及目的現(xiàn)實(shí)學(xué)習(xí)生活中,常會(huì)遇到一些數(shù)目較大數(shù)據(jù)繁雜的數(shù)值運(yùn)算,徒手運(yùn)算起來很困難,這時(shí)候我們就必須用到計(jì)算器,所以便著手開發(fā)了這個(gè)計(jì)算器程序,以便用

4、于自己的學(xué)習(xí)工作。人們對(duì)計(jì)算的要求不斷提高,普通的功能簡(jiǎn)單的僅能進(jìn)行四則運(yùn)算的計(jì)算工具已經(jīng)不能滿足需要,需要一種能進(jìn)行多種計(jì)算?,F(xiàn)在已經(jīng)有一些功能較為強(qiáng)大、涵蓋面較廣的計(jì)算軟件,而且各種平臺(tái)的小工具仍不斷出現(xiàn)。這些大大方便了我們的生活給我們更多的選擇和實(shí)現(xiàn)方式。這個(gè)程序可以直接輸入數(shù)學(xué)表達(dá)式,不需要任何轉(zhuǎn)換,就可以直接輸出數(shù)學(xué)四則運(yùn)算的結(jié)果。并且操作簡(jiǎn)單、界面清晰、靈活、實(shí)用、方便等要求出發(fā),它所能完成的主要計(jì)算功能有以下幾個(gè)方面:加法,減法,乘法,除法,求平方根,求Sin,求Cos,求Tan,求Log10。計(jì)算器的設(shè)計(jì)使我們所學(xué)到的c語言知識(shí)在現(xiàn)實(shí)中得到檢驗(yàn)!信息時(shí)代是科技和經(jīng)濟(jì)發(fā)展的產(chǎn)物,

5、軟件產(chǎn)業(yè)是信息時(shí)代的產(chǎn)物,它在我們的生活工作中發(fā)揮著越來越大的作用,計(jì)算器的設(shè)計(jì)對(duì)我們知識(shí)的掌握有很大的作用,更能方便他人,可行性很強(qiáng)!1.2 課程設(shè)計(jì)內(nèi)容及要求1設(shè)計(jì)內(nèi)容設(shè)計(jì)一個(gè)簡(jiǎn)單的計(jì)算器。要求能實(shí)現(xiàn)整數(shù)、小數(shù)算術(shù)運(yùn)算。程序帶清零按鈕。2設(shè)計(jì)要求用VC進(jìn)行編寫MFC程序,工程名為自己的姓名首字母和學(xué)號(hào)連接而成。注重編碼質(zhì)量,代碼要有適當(dāng)?shù)淖⑨?;提交設(shè)計(jì)報(bào)告一份(課程設(shè)計(jì)任務(wù)書、目錄、設(shè)計(jì)的基本思路、設(shè)計(jì)的步驟及主要代碼、心得體會(huì)、參考文獻(xiàn))。程序運(yùn)行如下圖1所示:圖1 計(jì)算器運(yùn)行界面2、開發(fā)工具的介紹本課程設(shè)計(jì)使用的是Visual C+6.0。Visual C+6.0 是Microsoft

6、公司在1998年推出的基于Windows 9X和Windows NT的優(yōu)秀集成開發(fā)環(huán)境。該環(huán)境為用戶提供了良好的可視化編程環(huán)境,程序員可以里利用該開發(fā)環(huán)境輕松地訪問C+源代碼編輯器,資源編輯器和使用內(nèi)部調(diào)試器,并且可以創(chuàng)建項(xiàng)目文件。Visual C+6.0不僅包括編譯器,而且它還包括許多有用組件,通過這些組件的協(xié)同工作,可以在Visual C+6.0集成環(huán)境中輕松地完成創(chuàng)建源文件,編輯資源,以及對(duì)程序的編譯,連接和調(diào)試等各項(xiàng)工作。VC+6.0是Windows 95/98、XP或Windows NT下的一個(gè)應(yīng)用程序,本身對(duì)軟硬件沒有特殊要求。就是說它對(duì)環(huán)境的要求與Windows 95/98、Wi

7、ndows NT要求是一致的。硬件要求:一般在586以上的處理器、16MB以上內(nèi)存、100MB以上的硬盤。軟件要求:Windows 95/98或Windows NT3.51以上版本。VC+ 6.0系統(tǒng)可以在一張CD盤上,也可以在“Visual Studio( Visual C+、Visual Foxpro)”等產(chǎn)品的第一張CD盤上。一般都有一個(gè)VC的自動(dòng)安裝程序,也可以執(zhí)行VC6目錄下的setup.exe,在安裝包的提示下進(jìn)行,對(duì)初學(xué)者可采用“典型安裝”方式。在安裝好VC 6.0系統(tǒng)后,有時(shí)根據(jù)需要添加或刪除某些部件,可插入CD盤重新執(zhí)行setup.exe安裝程序,安裝程序會(huì)檢測(cè)當(dāng)前系統(tǒng)安裝V

8、C6的足件,用戶單擊“添加刪除”按鈕后,在“安裝維護(hù)”對(duì)話框中選定要添加的部件或撤消選定要?jiǎng)h除的部件。與一般的應(yīng)用軟件一樣,有以下兩種啟動(dòng)方式:(1)通過“開始”按鈕,選擇“程序”菜單,然后打開“Microsoft Visual studio 6.0中文版”子菜單中的“Microsoft Visual C+ 6.0 中文版”程序。(2)用戶也可以使用命令行啟動(dòng)VC。單擊“開始”按鈕后選擇“運(yùn)行”命令,在“運(yùn)行”對(duì)話框中輸入c:Program FilesMicrosoft Visual StudioVC98VC6.exe(按默認(rèn)盤符和路徑安裝)即可。3、設(shè)計(jì)內(nèi)容3.1功能說明它的設(shè)計(jì)按軟件工程的

9、方法進(jìn)行,系統(tǒng)具有良好的界面;必要的交互信息;簡(jiǎn)約美觀的效果。使用人員能快捷簡(jiǎn)單地進(jìn)行操作。即可單機(jī)按鈕進(jìn)行操作,也可直接通過鍵盤直接輸入。即時(shí)準(zhǔn)確地獲得需要的計(jì)算的結(jié)果,充分降低了數(shù)字計(jì)算的難度和節(jié)約了時(shí)間,對(duì)人們的生活有一定的幫助。功能:(1)包含的功能有:加、減、乘、除運(yùn)算,開方,平方等功能。(2)計(jì)算器上數(shù)字09為一個(gè)控件數(shù)組,加、減、乘、除等為一個(gè)控件組。(3)給對(duì)話框添加菜單。(4)制定高級(jí)按鈕控件,使按鈕改變默認(rèn)的顏色。(5)制定高級(jí)編輯控件,該編輯控件可以指定文本文字的字體和顏色。(6)輸入的原始數(shù)據(jù)、運(yùn)算中間數(shù)據(jù)和結(jié)果都顯示在窗口頂部的同一個(gè)標(biāo)簽中。(7)計(jì)算功能基本上是用系

10、統(tǒng)內(nèi)部函數(shù)。(8)程序可以能自動(dòng)判斷輸入數(shù)據(jù)的正確性,保證不出現(xiàn)多于一個(gè)小數(shù)點(diǎn)、以0開頭等不正?,F(xiàn)象。(10)“CE”按鈕可以清除所有已輸入的數(shù)據(jù)從頭計(jì)算功能模塊的實(shí)現(xiàn):(1)首先,添加高級(jí)按鈕控件類,在這個(gè)類中實(shí)現(xiàn)高級(jí)的按鈕控件。在此類中對(duì)于所有的對(duì)于按鈕的繪制工作都是在DrawItem函數(shù)中完成的,實(shí)現(xiàn)按鈕對(duì)鼠標(biāo)不同的位置和動(dòng)作改變不同的顏色,并且按鈕的客戶區(qū)域變成一個(gè)橢圓。(2)其次,添加一個(gè)高級(jí)編輯控件類,在此類的基礎(chǔ)上實(shí)現(xiàn)高級(jí)編輯控件。在OnDisplay函數(shù)中設(shè)置編輯框的顯示文本,再調(diào)用OnDraw函數(shù)將其顯示出來,并用指定的畫刷填充客戶區(qū),并且用指定的顏色繪制顯示文本。(3)最后

11、,實(shí)現(xiàn)主對(duì)話框界面功能,主要是加載菜單資源和對(duì)話框擴(kuò)展功能的實(shí)現(xiàn)。在CCalculatorDlg:OnCreate函數(shù)中設(shè)定對(duì)話框的初始大小與位置,可以在這個(gè)對(duì)話框中進(jìn)行窗口風(fēng)格修改,位置設(shè)置等操作,然后添加菜單項(xiàng)ID_EXTEND的響應(yīng)函數(shù)OnExtend。3.2流程圖:開始輸入第一個(gè)數(shù)輸入第二個(gè)數(shù)+、-、*、/等x2、log、tan、cos、sin、等顯示結(jié)果按“CE”清零結(jié)束4、系統(tǒng)的實(shí)現(xiàn)4.1文件創(chuàng)建利用MFC AppWinzard生成計(jì)算器應(yīng)用程序框架具體步驟如下:(1)執(zhí)行VC程序,選擇File|New命令,彈出New對(duì)話框.單擊Projects標(biāo)簽,轉(zhuǎn)到Projects選項(xiàng)卡,選

12、擇MFC AppWizard(exe)選項(xiàng),然后在Project name文本框中輸入ZZ 。Lacation文本框是指項(xiàng)目的本地路徑。如圖所示。(2)單擊OK按鈕,彈出MFC AppWinzard_Step1對(duì)話框。選中基本對(duì)話框,如圖所示。(3)單擊Next按鈕,彈出MFC AppWinzard_Step2 of4對(duì)話框,如圖所示。(4)單擊Next按鈕,彈出MFC AppWinzard_Step3 of4對(duì)話框,如圖所示。(5)單擊Next按鈕,彈出MFC AppWinzard_Step4 of4對(duì)話框,如圖所示。單擊Finish按鈕,創(chuàng)建框架。4.2界面設(shè)計(jì)(1)編輯對(duì)話框及控件資源利

13、用Visual C+提供的資源編輯器對(duì)對(duì)話框資源進(jìn)行編輯。刪除對(duì)話框中默認(rèn)的OK和Cancel按鈕。添加一個(gè)Edit控件,其控件ID為IDC_EDIT1。接下來在對(duì)話框上的合適的位置上按下鼠標(biāo)左鍵并拖動(dòng)鼠標(biāo)畫出一個(gè)大小合適的下壓式按鈕。在按鈕上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇屬性選項(xiàng),此時(shí)也彈出Push Button屬性對(duì)話框,如圖所示,在該對(duì)話框中輸入控件的ID值和標(biāo)題屬性。并通過復(fù)制添加若干按鈕控件,其ID如表4-1所示。表1按鈕控件資源清單:按鈕名稱按鈕ID用途0B0按鍵01B1按鍵12B2按鍵23B3按鍵34B4按鍵45B5按鍵56B6按鍵67B7按鍵78B8按鍵89B9按鍵9.B

14、d小數(shù)點(diǎn)=Brun求值+Badd加號(hào)-Bsub減號(hào)*Bmult乘號(hào)/Bdiv除號(hào)CEce清屏Sqrtsqrt開方sinsin正弦coscos余弦tantan正切x2pf平方loglog對(duì)數(shù)所有按鍵都添加好后的效果如圖2所示。圖2(2)連接按鈕與變量除了建立上面所示的控件外,還要對(duì)每個(gè)按鈕控件定義一個(gè)對(duì)象與之相關(guān)聯(lián),并為每個(gè)按鈕控件建立一個(gè)成員函數(shù)來響應(yīng)其BN_CLICKED消息。如圖3所示:圖3為按鈕控件添加消息響應(yīng)(3)關(guān)聯(lián)控件與對(duì)象在CAboutDlg類的聲明中,已經(jīng)為編輯框、靜態(tài)框及每一個(gè)按鈕聲明了相應(yīng)類型的對(duì)象與之對(duì)應(yīng)。但這些控件與對(duì)象的關(guān)聯(lián)工作是在DoDataExchange函數(shù)中完

15、成的。圖4關(guān)聯(lián)控件與對(duì)象(4)添加背景圖為對(duì)話框添加背景圖,以增加界面的美觀性。首先為工程添加一幅位圖資源,以作為對(duì)話框的背景。然后加入一個(gè)Static控件,將其Type屬性設(shè)為Bitmap,并為Image屬性選擇位圖資源,如圖5所示。圖5添加位圖參數(shù)設(shè)置后對(duì)話框的外觀如圖6所示。圖6運(yùn)行結(jié)果圖4.3數(shù)值計(jì)算功能的實(shí)現(xiàn)具體功能的實(shí)現(xiàn)首先添加成員變量。該計(jì)算器中大部分的運(yùn)算都是二元運(yùn)算,即需要兩個(gè)操作數(shù)和一個(gè)二元運(yùn)算操作符。所以必須聲明兩個(gè)浮點(diǎn)數(shù),分別用來表示初始操作數(shù)和結(jié)果操作數(shù),同時(shí),必須聲明兩個(gè)字符串類型的變量,分別用來顯示初始操作數(shù)。還需要一個(gè)整形變量來記錄當(dāng)前運(yùn)算符,以及一個(gè)整形變量來

16、記錄當(dāng)前小數(shù)點(diǎn)按鈕是否被單擊過。定義如下:public:CZZDlg(CWnd* pParent = NULL);/ standard constructordouble m_input; /保存輸入的數(shù)字bool m_done,opt; /布爾類型成員變量,判斷一次計(jì)算結(jié)束,和操作符點(diǎn)擊的憑據(jù)void Numin(double put); /成員函數(shù),處理輸入的數(shù)據(jù)double num_1,num_2; /兩個(gè)操作數(shù)void operate();/輸入運(yùn)算符后要調(diào)用的函數(shù)int yun;/運(yùn)算判斷bool dian;/判斷小數(shù)點(diǎn)是否被點(diǎn)擊int n;/顯示小數(shù)部分的輸入位數(shù)double m;

17、void OnMnuCut();void OnMnuCopy();void OnMnuPaste();void OnContextMenu(CWnd* pWnd, CPoint point);當(dāng)小數(shù)點(diǎn)鍵被單擊時(shí),首先判斷小數(shù)點(diǎn)鍵是否已經(jīng)被單擊過,以及當(dāng)前初始操作數(shù)字符串是否為空。如果小數(shù)點(diǎn)鍵沒有被單擊過,而且當(dāng)前初始操作數(shù)字符串不為空,則將小數(shù)點(diǎn)追加到初始操作數(shù)末尾,并且修改小數(shù)點(diǎn)標(biāo)識(shí)dian為TRUE。實(shí)現(xiàn)代碼如下:小數(shù)點(diǎn)的定義如下:void CZZDlg:OnBd() / .dian=true;n=1;程序判斷代碼實(shí)現(xiàn)如下:void CZZDlg:Numin(double put) if(

18、m_done=true|opt=true) /如果一次計(jì)算結(jié)束或運(yùn)算符已經(jīng)選擇 if(dian=false)/如果小數(shù)點(diǎn)還沒有被按下 m_Result=m_input=0.0; UpdateData(false);m_input=m_input*10+put;m_Result=m_input;UpdateData(false);opt=false;m_done=false; else if(dian=true)/如果小數(shù)點(diǎn)已經(jīng)被按下/ m_Result=m_input=0.0; UpdateData(false);int i; for(i=0;in;i+) put=put/10; m=put;

19、m_input=m_input+m;m_Result=m_input;UpdateData(false);opt=false;m_done=false; else if(dian=false)/如果小數(shù)點(diǎn)還沒有被按下 m_input=m_input*10+put;m_Result=m_input;UpdateData(false);opt=false;m_done=false; else if(dian=true)/如果小數(shù)點(diǎn)已經(jīng)被按下/ int i; for(i=0;in;i+) put=put/10; m=put;m_input=m_input+m;m_Result=m_input;Upd

20、ateData(false);opt=false;m_done=false; n+;當(dāng)數(shù)字鍵09被單擊時(shí),則將當(dāng)前所按鍵加到初始操作數(shù)末尾,并將初始操作數(shù)顯示出來。以數(shù)字鍵盤被單擊為例,實(shí)現(xiàn)代碼如下:void CZZDlg:OnB0() / 0Numin(0.0);void CZZDlg:OnB1() / 1Numin(1.0);void CZZDlg:OnB2() / 2Numin(2.0);void CZZDlg:OnB3() / 3Numin(3.0);void CZZDlg:OnB4() / 4Numin(4.0);void CZZDlg:OnB5() / 5Numin(5.0);vo

21、id CZZDlg:OnB6() / 6Numin(6.0);void CZZDlg:OnB7() / 7Numin(7.0);void CZZDlg:OnB8() / 8Numin(8.0);void CZZDlg:OnB9() / 9Numin(9.0);void CZZDlg:operate()num_1=m_Result;opt=true; dian=false;n=0;當(dāng)清除鍵CE被單擊時(shí),則對(duì)所有的成員變量進(jìn)行初始化。清除小數(shù)點(diǎn)標(biāo)識(shí),將保存初始操作數(shù)和結(jié)果操作數(shù)的字符串清空,將保存初始操作數(shù)和結(jié)果操作數(shù)的浮點(diǎn)數(shù)清0,將當(dāng)前操作符清0。實(shí)現(xiàn)代碼如下:void CZZDlg:OnBce

22、() / CEm_input=0; m_Result=float(m_input);UpdateData(false);m_done=false;dian=false;opt=false;n=0;當(dāng)任何一個(gè)運(yùn)算符鍵被單擊時(shí),首先根據(jù)當(dāng)前運(yùn)算符計(jì)算運(yùn)算結(jié)果,再修改記錄當(dāng)前運(yùn)算符的變量的值。以加號(hào)鍵被按下為例,實(shí)現(xiàn)代碼如下:加號(hào)函數(shù):void CZZDlg:OnBadd() / + operate(); yun=1;void CZZDlg:operate()num_1=m_Result;opt=true; dian=false;n=0;加號(hào)運(yùn)算的實(shí)現(xiàn)如下:if(yun=1)/判斷執(zhí)行何種運(yùn)算 m_

23、Result=num_1+num_2; UpdateData(false);計(jì)算機(jī)還有簡(jiǎn)單的函數(shù)功能,函數(shù)定義如下:void CZZDlg:Onlog() operate();yun=5;void CZZDlg:Onpf() operate();yun=6;void CZZDlg:Onsqrt() operate();yun=7;void CZZDlg:Onsin() operate();yun=8;void CZZDlg:Ontan() operate();yun=9;void CZZDlg:Oncos() operate();yun=10;函數(shù)運(yùn)算實(shí)現(xiàn)如下:else if(yun=6)/平

24、方 m_Result=num_1*num_1; UpdateData(false);else if(yun=7)/根號(hào)if(num_1=0)m_Result=0;UpdateData(false); m_Result=sqrt(num_1); UpdateData(false);else if(yun=8)/sin m_Result=sin(num_1*PI/180); UpdateData(false);else if(yun=9)/tan m_Result=tan(num_1*PI/180); UpdateData(false);else if(yun=10)/cos m_Result=c

25、os(num_1*PI/180); UpdateData(false);計(jì)算器的核心運(yùn)算函數(shù)Run。在Run中,首先將記錄當(dāng)前操作數(shù)的字符串中保存的字符串轉(zhuǎn)化為浮點(diǎn)數(shù);其次根據(jù)當(dāng)前操作符的類型,選擇適當(dāng)?shù)倪\(yùn)算操作;再將記錄結(jié)果操作數(shù)的浮點(diǎn)變量中的值轉(zhuǎn)化為字符串,并顯示在結(jié)果編輯框中。Run函數(shù)實(shí)現(xiàn)代碼見附錄1。計(jì)算器的全部代碼實(shí)現(xiàn)見附錄2。5、程序結(jié)果的演示5.1測(cè)試的研究與選擇測(cè)試過程中要判斷測(cè)試是否成功,首先要分析程序界面的變化是否正常、輸入數(shù)據(jù)顯示是否正常,然后是計(jì)算數(shù)據(jù)的結(jié)果是否正確,最后看各個(gè)功能鍵是否能正常使用。5.2 測(cè)試環(huán)境測(cè)試環(huán)境如下: 測(cè)試系統(tǒng): Windows win7

26、*64位測(cè)試工具: Visual Studio C+ 6.0 5.3 實(shí)例測(cè)試結(jié)果首先,在運(yùn)行界面測(cè)試簡(jiǎn)單運(yùn)算是否能正常運(yùn)算,輸入“34+87=”見結(jié)果圖5-1所示,觀察計(jì)算結(jié)果是否正確。圖5-1“34+78=”的運(yùn)行結(jié)果其次,輸入“2*4=”,見結(jié)果圖5-2所示圖5-2“2*4=”的運(yùn)行結(jié)果再輸入“9/3=”,見結(jié)果圖5-3所示圖5-3“9/3=”的運(yùn)行結(jié)果最后出入25開根,見結(jié)果圖5-4所示:圖5-3“25開根=”的運(yùn)行結(jié)果測(cè)試結(jié)構(gòu)顯示,“計(jì)算器”運(yùn)行基本正常,沒有發(fā)現(xiàn)明顯的錯(cuò)誤。心得與體會(huì)經(jīng)過兩個(gè)星期的努力,課程設(shè)計(jì)基本完成了。在課程設(shè)計(jì)的實(shí)踐中,學(xué)到很多有用的知識(shí),也積累了不少寶貴的經(jīng)

27、驗(yàn)。本次設(shè)計(jì)是以一個(gè)計(jì)算器的實(shí)現(xiàn)為基礎(chǔ),掌握一個(gè)基于對(duì)話框的應(yīng)用程序的編程方法以及對(duì)話框常用控件的高級(jí)編程。在課程設(shè)計(jì)中我了解到到對(duì)話框應(yīng)用程序的編程模式、對(duì)話框添加背景圖片。課程設(shè)計(jì)是需要大量時(shí)間去動(dòng)手練習(xí)才能體驗(yàn)到它的內(nèi)涵的,同時(shí)還需要用心地投入,時(shí)間和情感花下去之后,的確感受到有所收獲,增加了對(duì)編程的興趣。通過這次課程設(shè)計(jì),掌握了對(duì)話框的相關(guān)操作,也體會(huì)到書寫代碼一定要仔細(xì),有時(shí)候一小點(diǎn)拼寫錯(cuò)誤會(huì)浪費(fèi)很多調(diào)試程序的時(shí)間,再有一點(diǎn)就是要好好學(xué)習(xí)英語,對(duì)編程有很大幫助。經(jīng)過設(shè)計(jì)的各個(gè)環(huán)節(jié),從中學(xué)到了很多,鍛煉了自己系統(tǒng)的設(shè)計(jì)的能力,從系統(tǒng)的需求到系統(tǒng)的功能,到系統(tǒng)的測(cè)試,到系統(tǒng)的發(fā)布,可以掌

28、握到一個(gè)完全的過程,這樣對(duì)我們以后在工作中或?qū)W習(xí)中得到很好的鍛煉,為用VC+編輯軟件奠定基礎(chǔ)。這次課程設(shè)計(jì)讓我學(xué)到了很多,不僅鞏固了MFC程序設(shè)計(jì)知識(shí),而且也培養(yǎng)了我的動(dòng)手能力,令我的創(chuàng)造性思維得到拓展。期待今后有更多類似的鍛煉機(jī)會(huì)。當(dāng)然,本課程設(shè)計(jì)所采取的解決問題的方法并不是非常完善的,在今后的學(xué)習(xí)、工作中,我將繼續(xù)認(rèn)真學(xué)習(xí),以求能做出更完善的程序。參考文獻(xiàn)1 徐金梧TURBO C實(shí)用大全北京機(jī)械工業(yè)出版社1996. 52 江漢秀C語言實(shí)用程序薈萃西安西安電子科技大學(xué)出版社19933 譚浩強(qiáng)C語言程序設(shè)計(jì)北京清華大學(xué)出版社1999.124 楊開城C語言教程實(shí)驗(yàn)與練習(xí)北京人民郵電出版社2002

29、.85 揣錦華.面向?qū)ο蟪绦蛟O(shè)計(jì)與VC+實(shí)踐西安電子科技大學(xué)出版社.20056 張建宏、湯練兵、馬德駿計(jì)算機(jī)程序設(shè)計(jì)基礎(chǔ)-C語言程序設(shè)計(jì)科學(xué)出版社20067陳清華Visual C+課程設(shè)計(jì)案例精選與編程指導(dǎo)東南大學(xué)出版社2004附錄1:RUN函數(shù)程序void CZZDlg:OnBrun() / TODO: Add your control notification handler code here/=num_2=m_Result;if(yun=1)/加 m_Result=num_1+num_2; UpdateData(false);else if(yun=2)/減 m_Result=num_

30、1-num_2; UpdateData(false);else if(yun=3)/乘 m_Result=num_1*num_2; UpdateData(false);else if(yun=4)/除 m_Result=num_1/num_2; UpdateData(false);else if(yun=5)/logif(num_1=0)m_Result=0;UpdateData(false); m_Result=log10(num_1); UpdateData(false);else if(yun=6)/平方 m_Result=num_1*num_1; UpdateData(false);e

31、lse if(yun=7)/根號(hào)if(num_1 1000#pragma once#endif / _MSC_VER 1000/ CZZDlg dialogclass CZZDlg : public CDialog/ Constructionpublic:CZZDlg(CWnd* pParent = NULL);/ standard constructordouble m_input; /保存輸入的數(shù)字bool m_done,opt; /布爾類型成員變量,判斷一次計(jì)算結(jié)束,和操作符點(diǎn)擊的憑據(jù)void Numin(double put); /成員函數(shù),處理輸入的數(shù)據(jù)double num_1,nu

32、m_2; /兩個(gè)操作數(shù) void operate();/輸入運(yùn)算符后要調(diào)用的函數(shù)int yun;bool dian;/判斷小數(shù)點(diǎn)是否被點(diǎn)擊int n;/顯示小數(shù)部分的輸入位數(shù)double m;void OnMnuCut(); void OnMnuCopy(); void OnMnuPaste();void OnContextMenu(CWnd* pWnd, CPoint point);/ Dialog Data/AFX_DATA(CZZDlg)enum IDD = IDD_ZZ_DIALOG ;doublem_Result;/AFX_DATA/ ClassWizard generated vi

33、rtual function overrides/AFX_VIRTUAL(CZZDlg)protected:virtual void DoDataExchange(CDataExchange* pDX);/ DDX/DDV support/AFX_VIRTUAL/ Implementationprotected:HICON m_hIcon;/ Generated message map functions/AFX_MSG(CZZDlg)virtual BOOL OnInitDialog();afx_msg void OnSysCommand(UINT nID, LPARAM lParam);a

34、fx_msg void OnPaint();afx_msg HCURSOR OnQueryDragIcon();afx_msg void OnB0();afx_msg void OnB1();afx_msg void OnB2();afx_msg void OnB3();afx_msg void OnB4();afx_msg void OnB5();afx_msg void OnB6();afx_msg void OnB7();afx_msg void OnB8();afx_msg void OnB9();afx_msg void OnBadd();afx_msg void OnBce();a

35、fx_msg void OnBd();afx_msg void OnBdiv();afx_msg void OnBmult();afx_msg void OnBrun();afx_msg void OnBsub();afx_msg void OnChangeEdit1();afx_msg void Onpf();afx_msg void Onsin();afx_msg void Onsqrt();afx_msg void Ontan();afx_msg void Oncos();afx_msg void Onlog();/AFX_MSGDECLARE_MESSAGE_MAP();/AFX_IN

36、SERT_LOCATION/ Microsoft Visual C+ will insert additional declarations immediately before the previous line.#endif / !defined(AFX_ZZDLG_H_70D9D5A9_C97C_488F_8F36_08F210B07A01_INCLUDED_)/ ZZDlg.cpp : implementation file/#include stdafx.h#include ZZ.h#include ZZDlg.h#include string.h#include #include

37、malloc.h#include #ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CAboutDlg dialog used for App Aboutclass CAboutDlg : public CDialogpublic:CAboutDlg();/ Dialog Data/AFX_DATA(CAboutDlg)enum IDD = IDD_ABOUTBOX ;/AFX_DATA/ ClassWizard generated virtual function

38、overrides/AFX_VIRTUAL(CAboutDlg)protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV support/AFX_VIRTUAL/ Implementationprotected:/AFX_MSG(CAboutDlg)/AFX_MSGDECLARE_MESSAGE_MAP();CAboutDlg:CAboutDlg() : CDialog(CAboutDlg:IDD)/AFX_DATA_INIT(CAboutDlg)/AFX_DATA_INITvoid CAboutDlg:DoDat

39、aExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CAboutDlg)/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CAboutDlg, CDialog)/AFX_MSG_MAP(CAboutDlg)/ No message handlers/AFX_MSG_MAPEND_MESSAGE_MAP()/ CZZDlg dialogCZZDlg:CZZDlg(CWnd* pParent /*=NULL*/): CDialog(CZZDlg:IDD, pParent)/AFX_DATA_INI

40、T(CZZDlg)m_Result = 0.0;/AFX_DATA_INIT/ Note that LoadIcon does not require a subsequent DestroyIcon in Win32m_hIcon = AfxGetApp()-LoadIcon(IDR_MAINFRAME);void CZZDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CZZDlg)DDX_Text(pDX, IDC_EDIT1, m_Result);/AFX_DATA_MAPBE

41、GIN_MESSAGE_MAP(CZZDlg, CDialog)/AFX_MSG_MAP(CZZDlg)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_B0, OnB0)ON_BN_CLICKED(IDC_B1, OnB1)ON_BN_CLICKED(IDC_B2, OnB2)ON_BN_CLICKED(IDC_B3, OnB3)ON_BN_CLICKED(IDC_B4, OnB4)ON_BN_CLICKED(IDC_B5, OnB5)ON_BN_CLICKED(IDC_B6, OnB6)ON_BN_C

42、LICKED(IDC_B7, OnB7)ON_BN_CLICKED(IDC_B8, OnB8)ON_BN_CLICKED(IDC_B9, OnB9)ON_BN_CLICKED(IDC_Badd, OnBadd)ON_BN_CLICKED(IDC_Bce, OnBce)ON_BN_CLICKED(IDC_Bd, OnBd)ON_BN_CLICKED(IDC_Bdiv, OnBdiv)ON_BN_CLICKED(IDC_Bmult, OnBmult)ON_BN_CLICKED(IDC_Brun, OnBrun)ON_BN_CLICKED(IDC_Bsub, OnBsub)ON_EN_CHANGE(

43、IDC_EDIT1, OnChangeEdit1)ON_BN_CLICKED(IDC_pf, Onpf)ON_BN_CLICKED(IDC_sin, Onsin)ON_BN_CLICKED(IDC_sqrt, Onsqrt)ON_BN_CLICKED(IDC_tan, Ontan)ON_BN_CLICKED(IDC_cos, Oncos)ON_WM_RBUTTONDOWN()ON_BN_CLICKED(IDC_log, Onlog)/AFX_MSG_MAPEND_MESSAGE_MAP()/ CZZDlg message handlersBOOL CZZDlg:OnInitDialog()CD

44、ialog:OnInitDialog();m_input=0.0;opt=false,m_done=false;dian=false;/ Add About. menu item to system menu./ IDM_ABOUTBOX must be in the system command range.ASSERT(IDM_ABOUTBOX & 0xFFF0) = IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX AppendMenu(MF_SEPARATOR);pSysMenu-AppendMenu(MF_STRING, IDM_ABOUTBOX, strAbout

45、Menu);/ Set the icon for this dialog. The framework does this automatically/ when the applications main window is not a dialogSetIcon(m_hIcon, TRUE);/ Set big iconSetIcon(m_hIcon, FALSE);/ Set small icon/ TODO: Add extra initialization herereturn TRUE; / return TRUE unless you set the focus to a con

46、trolvoid CZZDlg:OnSysCommand(UINT nID, LPARAM lParam)if (nID & 0xFFF0) = IDM_ABOUTBOX)CAboutDlg dlgAbout;dlgAbout.DoModal();elseCDialog:OnSysCommand(nID, lParam);/ If you add a minimize button to your dialog, you will need the code below/ to draw the icon. For MFC applications using the document/vie

47、w model,/ this is automatically done for you by the framework.void CZZDlg:OnPaint() if (IsIconic()CPaintDC dc(this); / device context for paintingSendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);/ Center icon in client rectangleint cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;/ Draw the icondc.DrawIcon(x, y, m_hIcon);elseCDialog:OnPaint();/ The system calls this to obtain the cursor to display while the user drags/ the mini

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論