2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩36頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  C++課程設(shè)計(jì)報(bào)告</b></p><p>  ( 2013 — 2014 年度第 1 學(xué)期)</p><p><b>  計(jì)算器程序設(shè)計(jì)</b></p><p> 專 業(yè)計(jì)算機(jī)科學(xué)與技術(shù)</p><p> 學(xué)生姓名</p><p> 班

2、 級(jí)</p><p> 學(xué) 號(hào)</p><p> 指導(dǎo)教師</p><p> 完成日期2014年1月16日</p><p><b>  目 錄</b></p><p><b>  摘 要1</b></p><p><b>  

3、1、引 言1</b></p><p>  1.1 課題意義及目的1</p><p>  1.2 課程設(shè)計(jì)內(nèi)容及要求1</p><p>  2、開發(fā)工具的介紹2</p><p><b>  3、設(shè)計(jì)內(nèi)容3</b></p><p>  3.1 功能說明3</p>

4、<p>  3.2 流程圖:3</p><p><b>  4、系統(tǒng)的實(shí)現(xiàn)4</b></p><p>  4.1 文件創(chuàng)建4</p><p>  4.2 界面設(shè)計(jì)6</p><p>  4.3 數(shù)值計(jì)算功能的實(shí)現(xiàn)10</p><p>  5、程序結(jié)果的演示2</p>

5、;<p>  5.1 測試的研究與選擇2</p><p>  5.2 測試環(huán)境3</p><p>  5.3 實(shí)例測試結(jié)果3</p><p><b>  心得與體會(huì)5</b></p><p><b>  參考文獻(xiàn)6</b></p><p>  附錄1:

6、RUN函數(shù)程序7</p><p>  附錄2:計(jì)算器程序8</p><p><b>  摘 要</b></p><p>  隨著當(dāng)今社會(huì)的發(fā)展,越來越多的人開始使用電子商品,新的高考制度也允許使用計(jì)算器,而作為一名計(jì)算機(jī)專業(yè)的學(xué)生,在使用工具的同時(shí)也應(yīng)該學(xué)會(huì)制作這類工具。本課程設(shè)計(jì)是利用VC++編程,實(shí)現(xiàn)一個(gè)簡單計(jì)算器。此計(jì)算器類似于Wi

7、ndows附件中自帶的計(jì)算器,它利用不僅實(shí)現(xiàn)了簡單的四則運(yùn)算功能,還實(shí)現(xiàn)了少部分科學(xué)函數(shù)計(jì)算功能,例如sin,cos,tan等而且具有簡潔的外觀,好看的背景。用戶可以使用任何合法的四則運(yùn)算,并且顯示運(yùn)算結(jié)果。計(jì)算器的設(shè)計(jì)是基于MFC下進(jìn)行,通過各種控件的使用,實(shí)現(xiàn)要求中的功能。該報(bào)告介紹了該課題的意義,設(shè)計(jì)內(nèi)容及要求, vc++開發(fā)工具的簡單使用方式。且著重闡述了計(jì)算器的設(shè)計(jì)思路和功能,并對(duì)代碼進(jìn)行了詳細(xì)的解釋。</p>

8、<p>  關(guān)鍵詞 VC++ , 計(jì)算器 , MFC , 控件</p><p><b>  計(jì)算器程序設(shè)計(jì)</b></p><p><b>  1、引 言</b></p><p>  現(xiàn)代計(jì)算器一般是指“電子計(jì)算器”,所以,可以認(rèn)為是“電子計(jì)算器”的簡稱。能進(jìn)行數(shù)學(xué)運(yùn)算的手持機(jī)器,擁有集成電路芯片,但結(jié)構(gòu)簡單,

9、比現(xiàn)代的電腦結(jié)構(gòu)簡單的多,但是比較廉價(jià),可以說是現(xiàn)代辦公必備用品之一。本課程設(shè)計(jì)主要在運(yùn)算過程中,如果通過計(jì)算器來完成,就會(huì)減少計(jì)算量,該程序即可以在簡單計(jì)算器鍵面下進(jìn)行簡單運(yùn)算,也可以在科學(xué)計(jì)算器鍵面下進(jìn)行高級(jí)的科學(xué)計(jì)算。并且可以分別計(jì)算弧度、角度的三角函數(shù)的計(jì)算等較為復(fù)雜的運(yùn)算。</p><p>  1.1 課題意義及目的</p><p>  現(xiàn)實(shí)學(xué)習(xí)生活中,常會(huì)遇到一些數(shù)目較大數(shù)據(jù)繁

10、雜的數(shù)值運(yùn)算,徒手運(yùn)算起來很困難,這時(shí)候我們就必須用到計(jì)算器,所以便著手開發(fā)了這個(gè)計(jì)算器程序,以便用于自己的學(xué)習(xí)工作。人們對(duì)計(jì)算的要求不斷提高,普通的功能簡單的僅能進(jìn)行四則運(yùn)算的計(jì)算工具已經(jīng)不能滿足需要,需要一種能進(jìn)行多種計(jì)算。現(xiàn)在已經(jīng)有一些功能較為強(qiáng)大、涵蓋面較廣的計(jì)算軟件,而且各種平臺(tái)的小工具仍不斷出現(xiàn)。這些大大方便了我們的生活給我們更多的選擇和實(shí)現(xiàn)方式。</p><p>  這個(gè)程序可以直接輸入數(shù)學(xué)表達(dá)式,

11、不需要任何轉(zhuǎn)換,就可以直接輸出數(shù)學(xué)四則運(yùn)算的結(jié)果。并且操作簡單、界面清晰、靈活、實(shí)用、方便等要求出發(fā),它所能完成的主要計(jì)算功能有以下幾個(gè)方面:加法,減法,乘法,除法,求平方根,求Sin,求Cos,求Tan,求Log10。計(jì)算器的設(shè)計(jì)使我們所學(xué)到的c語言知識(shí)在現(xiàn)實(shí)中得到檢驗(yàn)!</p><p>  信息時(shí)代是科技和經(jīng)濟(jì)發(fā)展的產(chǎn)物,軟件產(chǎn)業(yè)是信息時(shí)代的產(chǎn)物,它在我們的生活工作中發(fā)揮著越來越大的作用,計(jì)算器的設(shè)計(jì)對(duì)我們知

12、識(shí)的掌握有很大的作用,更能方便他人,可行性很強(qiáng)!</p><p>  1.2 課程設(shè)計(jì)內(nèi)容及要求</p><p><b>  1.設(shè)計(jì)內(nèi)容</b></p><p>  設(shè)計(jì)一個(gè)簡單的計(jì)算器。要求能實(shí)現(xiàn)整數(shù)、小數(shù)算術(shù)運(yùn)算。程序帶清零按鈕。</p><p><b>  2.設(shè)計(jì)要求</b></p&

13、gt;<p>  用VC++進(jìn)行編寫MFC程序,工程名為自己的姓名首字母和學(xué)號(hào)連接而成。注重編碼質(zhì)量,代碼要有適當(dāng)?shù)淖⑨專?lt;/p><p>  提交設(shè)計(jì)報(bào)告一份(課程設(shè)計(jì)任務(wù)書、目錄、設(shè)計(jì)的基本思路、設(shè)計(jì)的步驟及主要代碼、心得體會(huì)、參考文獻(xiàn))。</p><p>  程序運(yùn)行如下圖1所示:</p><p>  圖1 計(jì)算器運(yùn)行界面</p>

14、<p><b>  2、開發(fā)工具的介紹</b></p><p>  本課程設(shè)計(jì)使用的是Visual C++6.0。Visual C++6.0 是Microsoft公司在1998年推出的基于Windows 9X和Windows NT的優(yōu)秀集成開發(fā)環(huán)境。該環(huán)境為用戶提供了良好的可視化編程環(huán)境,程序員可以里利用該開發(fā)環(huán)境輕松地訪問C++源代碼編輯器,資源編輯器和使用內(nèi)部調(diào)試器,并且可以創(chuàng)

15、建項(xiàng)目文件。Visual C++6.0不僅包括編譯器,而且它還包括許多有用組件,通過這些組件的協(xié)同工作,可以在Visual C++6.0集成環(huán)境中輕松地完成創(chuàng)建源文件,編輯資源,以及對(duì)程序的編譯,連接和調(diào)試等各項(xiàng)工作。</p><p>  VC++6.0是Windows 95/98、XP或Windows NT下的一個(gè)應(yīng)用程序,本身對(duì)軟硬件沒有特殊要求。就是說它對(duì)環(huán)境的要求與Windows 95/98、Window

16、s NT要求是一致的。</p><p>  硬件要求:一般在586以上的處理器、16MB以上內(nèi)存、100MB以上的硬盤。</p><p>  軟件要求:Windows 95/98或Windows NT3.51以上版本。</p><p>  VC++ 6.0系統(tǒng)可以在一張CD盤上,也可以在“Visual Studio( Visual C++、Visual Foxpro

17、)”等產(chǎn)品的第一張CD盤上。一般都有一個(gè)VC的自動(dòng)安裝程序,也可以執(zhí)行VC6目錄下的setup.exe,在安裝包的提示下進(jìn)行,對(duì)初學(xué)者可采用“典型安裝”方式。</p><p>  在安裝好VC 6.0系統(tǒng)后,有時(shí)根據(jù)需要添加或刪除某些部件,可插入CD盤重新執(zhí)行setup.exe安裝程序,安裝程序會(huì)檢測當(dāng)前系統(tǒng)安裝VC6的足件,用戶單擊“添加/刪除”按鈕后,在“安裝維護(hù)”對(duì)話框中選定要添加的部件或撤消選定要?jiǎng)h除的部

18、件。</p><p>  與一般的應(yīng)用軟件一樣,有以下兩種啟動(dòng)方式:</p><p>  (1)通過“開始”按鈕,選擇“程序”菜單,然后打開“Microsoft Visual studio 6.0中文版”子菜單中的“Microsoft Visual C++ 6.0 中文版”程序。</p><p>  (2)用戶也可以使用命令行啟動(dòng)VC。單擊“開始”按鈕后選擇“運(yùn)行”

19、命令,在“運(yùn)行”對(duì)話框中輸入c:\Program Files\Microsoft Visual Studio\VC98\VC6.exe(按默認(rèn)盤符和路徑安裝)即可。</p><p><b>  3、設(shè)計(jì)內(nèi)容</b></p><p><b>  3.1 功能說明</b></p><p>  它的設(shè)計(jì)按軟件工程的方法進(jìn)行,系統(tǒng)

20、具有良好的界面;必要的交互信息;簡約美觀的效果。使用人員能快捷簡單地進(jìn)行操作。即可單機(jī)按鈕進(jìn)行操作,也可直接通過鍵盤直接輸入。即時(shí)準(zhǔn)確地獲得需要的計(jì)算的結(jié)果,充分降低了數(shù)字計(jì)算的難度和節(jié)約了時(shí)間,對(duì)人們的生活有一定的幫助。</p><p><b>  功能:</b></p><p>  (1)包含的功能有:加、減、乘、除運(yùn)算,開方,平方等功能。</p>

21、<p>  (2)計(jì)算器上數(shù)字0—9為一個(gè)控件數(shù)組,加、減、乘、除等為一個(gè)控件組。</p><p>  (3)給對(duì)話框添加菜單。</p><p>  (4)制定高級(jí)按鈕控件,使按鈕改變默認(rèn)的顏色。</p><p>  (5)制定高級(jí)編輯控件,該編輯控件可以指定文本文字的字體和顏色。</p><p>  (6)輸入的原始數(shù)據(jù)、運(yùn)算中間

22、數(shù)據(jù)和結(jié)果都顯示在窗口頂部的同一個(gè)標(biāo)簽中。</p><p>  (7)計(jì)算功能基本上是用系統(tǒng)內(nèi)部函數(shù)。</p><p>  (8)程序可以能自動(dòng)判斷輸入數(shù)據(jù)的正確性,保證不出現(xiàn)多于一個(gè)小數(shù)點(diǎn)、以0開頭等不正?,F(xiàn)象。</p><p>  (10)“CE”按鈕可以清除所有已輸入的數(shù)據(jù)從頭計(jì)算</p><p><b>  功能模塊的實(shí)現(xiàn):

23、</b></p><p>  (1)首先,添加高級(jí)按鈕控件類,在這個(gè)類中實(shí)現(xiàn)高級(jí)的按鈕控件。在此類中對(duì)于所有的對(duì)于按鈕的繪制工作都是在DrawItem函數(shù)中完成的,實(shí)現(xiàn)按鈕對(duì)鼠標(biāo)不同的位置和動(dòng)作改變不同的顏色,并且按鈕的客戶區(qū)域變成一個(gè)橢圓。</p><p>  (2)其次,添加一個(gè)高級(jí)編輯控件類,在此類的基礎(chǔ)上實(shí)現(xiàn)高級(jí)編輯控件。在OnDisplay函數(shù)中設(shè)置編輯框的顯示文本,

24、再調(diào)用OnDraw函數(shù)將其顯示出來,并用指定的畫刷填充客戶區(qū),并且用指定的顏色繪制顯示文本。</p><p>  (3)最后,實(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。</p><

25、;p><b>  3.2 流程圖:</b></p><p><b>  4、系統(tǒng)的實(shí)現(xiàn)</b></p><p><b>  4.1 文件創(chuàng)建</b></p><p>  利用MFC AppWinzard生成計(jì)算器應(yīng)用程序框架具體步驟如下:</p><p>  (1)執(zhí)行V

26、C程序,選擇File|New命令,彈出New對(duì)話框.單擊Projects標(biāo)簽,轉(zhuǎn)到Projects選項(xiàng)卡,選擇MFC AppWizard(exe)選項(xiàng),然后在Project name文本框中輸入ZZ 。Lacation文本框是指項(xiàng)目的本地路徑。如圖所示。</p><p>  (2)單擊OK按鈕,彈出MFC AppWinzard_Step1對(duì)話框。選中基本對(duì)話框,如圖所示。</p><p>

27、  (3)單擊Next按鈕,彈出MFC AppWinzard_Step2 of4對(duì)話框,如圖所示。</p><p>  (4)單擊Next按鈕,彈出MFC AppWinzard_Step3 of4對(duì)話框,如圖所示。</p><p>  (5)單擊Next按鈕,彈出MFC AppWinzard_Step4 of4對(duì)話框,如圖所示。單擊Finish按鈕,創(chuàng)建框架。</p><

28、;p><b>  4.2 界面設(shè)計(jì)</b></p><p>  (1)編輯對(duì)話框及控件資源 </p><p>  利用Visual C++提供的資源編輯器對(duì)對(duì)話框資源進(jìn)行編輯。刪除對(duì)話框中默認(rèn)的OK和Cancel按鈕。添加一個(gè)Edit控件,其控件ID為IDC_EDIT1。</p><p>  接下來在對(duì)話框上的合適的位置上按下鼠標(biāo)左鍵并拖

29、動(dòng)鼠標(biāo)畫出一個(gè)大小合適的下壓式按鈕。在按鈕上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇屬性選項(xiàng),此時(shí)也彈出Push Button屬性對(duì)話框,如圖所示,</p><p>  在該對(duì)話框中輸入控件的ID值和標(biāo)題屬性。并通過復(fù)制添加若干按鈕控件,其ID如表4-1所示。</p><p>  表1按鈕控件資源清單:</p><p>  所有按鍵都添加好后的效果如圖2所示。</

30、p><p><b>  圖 2</b></p><p>  (2)連接按鈕與變量</p><p>  除了建立上面所示的控件外,還要對(duì)每個(gè)按鈕控件定義一個(gè)對(duì)象與之相關(guān)聯(lián),并為每個(gè)按鈕控件建立一個(gè)成員函數(shù)來響應(yīng)其BN_CLICKED消息。如圖3所示:</p><p>  圖3為按鈕控件添加消息響應(yīng)</p><

31、;p>  (3)關(guān)聯(lián)控件與對(duì)象</p><p>  在CAboutDlg類的聲明中,已經(jīng)為編輯框、靜態(tài)框及每一個(gè)按鈕聲明了相應(yīng)類型的對(duì)象與之對(duì)應(yīng)。但這些控件與對(duì)象的關(guān)聯(lián)工作是在DoDataExchange函數(shù)中完成的。</p><p><b>  圖4關(guān)聯(lián)控件與對(duì)象</b></p><p><b>  (4)添加背景圖</

32、b></p><p>  為對(duì)話框添加背景圖,以增加界面的美觀性。首先為工程添加一幅位圖資源,以作為對(duì)話框的背景。然后加入一個(gè)Static控件,將其Type屬性設(shè)為Bitmap,并為Image屬性選擇位圖資源,如圖5所示。</p><p><b>  圖5添加位圖</b></p><p>  參數(shù)設(shè)置后對(duì)話框的外觀如圖6所示。</p

33、><p><b>  圖6運(yùn)行結(jié)果圖</b></p><p>  4.3 數(shù)值計(jì)算功能的實(shí)現(xiàn)</p><p>  具體功能的實(shí)現(xiàn)首先添加成員變量。該計(jì)算器中大部分的運(yùn)算都是二元運(yùn)算,即需要兩個(gè)操作數(shù)和一個(gè)二元運(yùn)算操作符。所以必須聲明兩個(gè)浮點(diǎn)數(shù),分別用來表示初始操作數(shù)和結(jié)果操作數(shù),同時(shí),必須聲明兩個(gè)字符串類型的變量,分別用來顯示初始操作數(shù)。還需要一個(gè)

34、整形變量來記錄當(dāng)前運(yùn)算符,以及一個(gè)整形變量來記錄當(dāng)前小數(shù)點(diǎn)按鈕是否被單擊過。定義如下:</p><p><b>  public:</b></p><p>  CZZDlg(CWnd* pParent = NULL);// standard constructor</p><p>  double m_input; //保存輸入的數(shù)字<

35、;/p><p>  bool m_done,opt; //布爾類型成員變量,判斷一次計(jì)算結(jié)束,和操作符點(diǎn)擊的憑據(jù)</p><p>  void Numin(double put); //成員函數(shù),處理輸入的數(shù)據(jù)</p><p>  double num_1,num_2; //兩個(gè)操作數(shù)</p><p>  void operate();//輸入

36、運(yùn)算符后要調(diào)用的函數(shù)</p><p>  int yun;//運(yùn)算判斷</p><p>  bool dian;//判斷小數(shù)點(diǎn)是否被點(diǎn)擊</p><p>  int n;//顯示小數(shù)部分的輸入位數(shù)</p><p><b>  double m;</b></p><p>  void OnMnuCu

37、t();</p><p>  void OnMnuCopy();</p><p>  void OnMnuPaste();</p><p>  void OnContextMenu(CWnd* pWnd, CPoint point);</p><p>  當(dāng)小數(shù)點(diǎn)鍵被單擊時(shí),首先判斷小數(shù)點(diǎn)鍵是否已經(jīng)被單擊過,以及當(dāng)前初始操作數(shù)字符串是否為空。

38、如果小數(shù)點(diǎn)鍵沒有被單擊過,而且當(dāng)前初始操作數(shù)字符串不為空,則將小數(shù)點(diǎn)追加到初始操作數(shù)末尾,并且修改小數(shù)點(diǎn)標(biāo)識(shí)dian為TRUE。實(shí)現(xiàn)代碼如下:</p><p><b>  小數(shù)點(diǎn)的定義如下:</b></p><p>  void CZZDlg::OnBd() </p><p><b>  {</b></p>

39、<p><b>  // "."</b></p><p>  dian=true;</p><p><b>  n=1;</b></p><p><b>  }</b></p><p>  程序判斷代碼實(shí)現(xiàn)如下:</p><p&

40、gt;  void CZZDlg::Numin(double put)</p><p><b>  {</b></p><p>  if(m_done==true||opt==true) //如果一次計(jì)算結(jié)束或運(yùn)算符已經(jīng)選擇</p><p><b>  {</b></p><p>  if(dian

41、==false)//如果小數(shù)點(diǎn)還沒有被按下</p><p><b>  {</b></p><p>  m_Result=m_input=0.0;</p><p>  UpdateData(false);</p><p>  m_input=m_input*10+put;</p><p>  m_

42、Result=m_input;</p><p>  UpdateData(false);</p><p>  opt=false;m_done=false;</p><p><b>  }</b></p><p>  else if(dian==true)//如果小數(shù)點(diǎn)已經(jīng)被按下//////////</p>

43、<p><b>  {</b></p><p>  m_Result=m_input=0.0;</p><p>  UpdateData(false);</p><p><b>  int i;</b></p><p>  for(i=0;i<n;i++)</p>&

44、lt;p><b>  {</b></p><p>  put=put/10;</p><p><b>  }</b></p><p><b>  m=put;</b></p><p>  m_input=m_input+m;</p><p>  m

45、_Result=m_input;</p><p>  UpdateData(false);</p><p>  opt=false;m_done=false;</p><p><b>  }</b></p><p><b>  }</b></p><p><b> 

46、 else</b></p><p><b>  { </b></p><p>  if(dian==false)//如果小數(shù)點(diǎn)還沒有被按下</p><p><b>  {</b></p><p>  m_input=m_input*10+put;</p><p>

47、  m_Result=m_input;</p><p>  UpdateData(false);</p><p>  opt=false;m_done=false;</p><p><b>  }</b></p><p>  else if(dian==true)//如果小數(shù)點(diǎn)已經(jīng)被按下///////////////&l

48、t;/p><p><b>  {</b></p><p><b>  int i;</b></p><p>  for(i=0;i<n;i++)</p><p><b>  {</b></p><p>  put=put/10;</p>

49、<p><b>  }</b></p><p><b>  m=put;</b></p><p>  m_input=m_input+m;</p><p>  m_Result=m_input;</p><p>  UpdateData(false);</p><p&g

50、t;  opt=false;m_done=false;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  n++;</b></p><p><b>  }</b></p><

51、p>  當(dāng)數(shù)字鍵0—9被單擊時(shí),則將當(dāng)前所按鍵加到初始操作數(shù)末尾,并將初始操作數(shù)顯示出來。以數(shù)字鍵盤被單擊為例,實(shí)現(xiàn)代碼如下:</p><p>  void CZZDlg::OnB0() </p><p><b>  {// "0"</b></p><p>  Numin(0.0);</p><p

52、><b>  }</b></p><p>  void CZZDlg::OnB1() </p><p><b>  {// "1"</b></p><p>  Numin(1.0);</p><p><b>  }</b></p>&l

53、t;p>  void CZZDlg::OnB2() </p><p><b>  {// "2"</b></p><p>  Numin(2.0);</p><p><b>  }</b></p><p>  void CZZDlg::OnB3() </p>

54、<p><b>  {// "3"</b></p><p>  Numin(3.0);</p><p><b>  }</b></p><p>  void CZZDlg::OnB4() </p><p><b>  {// "4"&

55、lt;/b></p><p>  Numin(4.0);</p><p><b>  }</b></p><p>  void CZZDlg::OnB5() </p><p><b>  {// "5"</b></p><p>  Numin(5.

56、0);</p><p><b>  }</b></p><p>  void CZZDlg::OnB6() </p><p><b>  {// "6"</b></p><p>  Numin(6.0);</p><p><b>  }<

57、/b></p><p>  void CZZDlg::OnB7() </p><p><b>  {// "7"</b></p><p>  Numin(7.0);</p><p><b>  }</b></p><p>  void CZZDlg

58、::OnB8() </p><p><b>  {// "8"</b></p><p>  Numin(8.0);</p><p><b>  }</b></p><p>  void CZZDlg::OnB9() </p><p><b>  

59、{// "9"</b></p><p>  Numin(9.0);</p><p><b>  }</b></p><p>  void CZZDlg::operate()</p><p><b>  {</b></p><p>  num_

60、1=m_Result;</p><p><b>  opt=true;</b></p><p>  dian=false;</p><p><b>  n=0;</b></p><p><b>  }</b></p><p>  當(dāng)清除鍵CE被單擊時(shí),則

61、對(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)代碼如下:</p><p>  void CZZDlg::OnBce() </p><p><b>  {// "CE"</b></p><p>  m_input=0;<

62、;/p><p>  m_Result=float(m_input);</p><p>  UpdateData(false);</p><p>  m_done=false;</p><p>  dian=false;</p><p>  opt=false;</p><p><b>  

63、n=0;</b></p><p><b>  }</b></p><p>  當(dāng)任何一個(gè)運(yùn)算符鍵被單擊時(shí),首先根據(jù)當(dāng)前運(yùn)算符計(jì)算運(yùn)算結(jié)果,再修改記錄當(dāng)前運(yùn)算符的變量的值。以加號(hào)鍵被按下為例,實(shí)現(xiàn)代碼如下:</p><p><b>  加號(hào)函數(shù):</b></p><p>  void CZ

64、ZDlg::OnBadd() </p><p><b>  {// "+"</b></p><p>  operate();</p><p><b>  yun=1;</b></p><p><b>  }</b></p><p>

65、  void CZZDlg::operate()</p><p><b>  {</b></p><p>  num_1=m_Result;</p><p><b>  opt=true;</b></p><p>  dian=false;</p><p><b>

66、  n=0;</b></p><p><b>  }</b></p><p>  加號(hào)運(yùn)算的實(shí)現(xiàn)如下:</p><p>  if(yun==1)//判斷執(zhí)行何種運(yùn)算</p><p><b>  {</b></p><p>  m_Result=num_1+num_

67、2;</p><p>  UpdateData(false);</p><p><b>  }</b></p><p>  計(jì)算機(jī)還有簡單的函數(shù)功能,函數(shù)定義如下:</p><p>  void CZZDlg::Onlog() </p><p>  {operate();</p>

68、<p><b>  yun=5;</b></p><p><b>  }</b></p><p>  void CZZDlg::Onpf() </p><p>  {operate();</p><p><b>  yun=6;</b></p><

69、;p><b>  }</b></p><p>  void CZZDlg::Onsqrt() </p><p>  {operate();</p><p><b>  yun=7;</b></p><p><b>  }</b></p><p>

70、  void CZZDlg::Onsin() </p><p>  {operate();</p><p><b>  yun=8;</b></p><p><b>  }</b></p><p>  void CZZDlg::Ontan() </p><p>  {op

71、erate();</p><p><b>  yun=9;</b></p><p><b>  }</b></p><p>  void CZZDlg::Oncos() </p><p>  {operate();</p><p><b>  yun=10;<

72、;/b></p><p><b>  }</b></p><p><b>  函數(shù)運(yùn)算實(shí)現(xiàn)如下:</b></p><p>  else if(yun==6)//平方</p><p><b>  {</b></p><p>  m_Result=nu

73、m_1*num_1;</p><p>  UpdateData(false);</p><p><b>  }</b></p><p>  else if(yun==7)//根號(hào)</p><p><b>  {</b></p><p>  if(num_1<=0)<

74、;/p><p><b>  {</b></p><p>  m_Result=0;</p><p>  UpdateData(false);</p><p><b>  }</b></p><p>  m_Result=sqrt(num_1);</p><p&

75、gt;  UpdateData(false);</p><p><b>  }</b></p><p>  else if(yun==8)//sin</p><p><b>  {</b></p><p>  m_Result=sin(num_1*PI/180);</p><p&

76、gt;  UpdateData(false);</p><p><b>  }</b></p><p>  else if(yun==9)//tan</p><p><b>  {</b></p><p>  m_Result=tan(num_1*PI/180);</p><p&

77、gt;  UpdateData(false);</p><p><b>  }</b></p><p>  else if(yun==10)//cos</p><p><b>  {</b></p><p>  m_Result=cos(num_1*PI/180);</p><p

78、>  UpdateData(false);</p><p><b>  }</b></p><p>  計(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。</p&g

79、t;<p>  計(jì)算器的全部代碼實(shí)現(xiàn)見附錄2。</p><p><b>  5、程序結(jié)果的演示</b></p><p>  5.1 測試的研究與選擇</p><p>  測試過程中要判斷測試是否成功,首先要分析程序界面的變化是否正常、輸入數(shù)據(jù)顯示是否正常,然后是計(jì)算數(shù)據(jù)的結(jié)果是否正確,最后看各個(gè)功能鍵是否能正常使用。</p&

80、gt;<p><b>  5.2 測試環(huán)境</b></p><p><b>  測試環(huán)境如下: </b></p><p>  測試系統(tǒng): Windows win7 *64位</p><p>  測試工具: Visual Studio C++ 6.0 </p><p>  5.3 實(shí)例

81、測試結(jié)果</p><p>  首先,在運(yùn)行界面測試簡單運(yùn)算是否能正常運(yùn)算,輸入“34+87=”見結(jié)果圖5-1所示,觀察計(jì)算結(jié)果是否正確。</p><p>  圖5-1“34+78=”的運(yùn)行結(jié)果</p><p>  其次,輸入“2*4=”,見結(jié)果圖5-2所示</p><p>  圖5-2“2*4=”的運(yùn)行結(jié)果</p><p&

82、gt;  再輸入“9/3=”,見結(jié)果圖5-3所示</p><p>  圖5-3“9/3=”的運(yùn)行結(jié)果</p><p>  最后出入25開根,見結(jié)果圖5-4所示:</p><p>  圖5-3“25開根=”的運(yùn)行結(jié)果</p><p>  測試結(jié)構(gòu)顯示,“計(jì)算器”運(yùn)行基本正常,沒有發(fā)現(xiàn)明顯的錯(cuò)誤。</p><p><

83、b>  心得與體會(huì)</b></p><p>  經(jīng)過兩個(gè)星期的努力,課程設(shè)計(jì)基本完成了。在課程設(shè)計(jì)的實(shí)踐中,學(xué)到很多有用的知識(shí),也積累了不少寶貴的經(jīng)驗(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í)還需要用心地投入,

84、時(shí)間和情感花下去之后,的確感受到有所收獲,增加了對(duì)編程的興趣。通過這次課程設(shè)計(jì),掌握了對(duì)話框的相關(guān)操作,也體會(huì)到書寫代碼一定要仔細(xì),有時(shí)候一小點(diǎn)拼寫錯(cuò)誤會(huì)浪費(fèi)很多調(diào)試程序的時(shí)間,再有一點(diǎn)就是要好好學(xué)習(xí)英語,對(duì)編程有很大幫助。</p><p>  經(jīng)過設(shè)計(jì)的各個(gè)環(huán)節(jié),從中學(xué)到了很多,鍛煉了自己系統(tǒng)的設(shè)計(jì)的能力,從系統(tǒng)的需求到系統(tǒng)的功能,到系統(tǒng)的測試,到系統(tǒng)的發(fā)布,可以掌握到一個(gè)完全的過程,這樣對(duì)我們以后在工作中或?qū)W

85、習(xí)中得到很好的鍛煉,為用VC++編輯軟件奠定基礎(chǔ)。這次課程設(shè)計(jì)讓我學(xué)到了很多,不僅鞏固了MFC程序設(shè)計(jì)知識(shí),而且也培養(yǎng)了我的動(dòng)手能力,令我的創(chuàng)造性思維得到拓展。期待今后有更多類似的鍛煉機(jī)會(huì)。</p><p>  當(dāng)然,本課程設(shè)計(jì)所采取的解決問題的方法并不是非常完善的,在今后的學(xué)習(xí)、工作中,我將繼續(xù)認(rèn)真學(xué)習(xí),以求能做出更完善的程序。</p><p><b>  參考文獻(xiàn)</b

86、></p><p>  [1] 徐金梧.TURBO C實(shí)用大全.北京機(jī)械工業(yè)出版社.1996. 5</p><p>  [2] 江漢秀.C語言實(shí)用程序薈萃.西安西安電子科技大學(xué)出版社1993</p><p>  [3] 譚浩強(qiáng).C語言程序設(shè)計(jì).北京清華大學(xué)出版社1999.12</p><p>  [4] 楊開城.C語言教程實(shí)驗(yàn)與練習(xí).北

87、京人民郵電出版社2002.8</p><p>  [5] 揣錦華.面向?qū)ο蟪绦蛟O(shè)計(jì)與VC++實(shí)踐.西安電子科技大學(xué)出版社.2005</p><p>  [6] 張建宏、湯練兵、馬德駿.計(jì)算機(jī)程序設(shè)計(jì)基礎(chǔ)-C語言程序設(shè)計(jì).科學(xué)出版社.2006</p><p>  [7] 陳清華.Visual C++課程設(shè)計(jì)案例精選與編程指導(dǎo).東南大學(xué)出版社.2004</p>

88、;<p>  附錄1:RUN函數(shù)程序</p><p>  void CZZDlg::OnBrun() </p><p><b>  {</b></p><p>  // TODO: Add your control notification handler code here</p><p><b&g

89、t;  //"="</b></p><p>  num_2=m_Result;</p><p>  if(yun==1)//加</p><p><b>  {</b></p><p>  m_Result=num_1+num_2;</p><p>  UpdateD

90、ata(false);</p><p><b>  }</b></p><p>  else if(yun==2)//減</p><p><b>  {</b></p><p>  m_Result=num_1-num_2;</p><p>  UpdateData(fals

91、e);</p><p><b>  }</b></p><p>  else if(yun==3)//乘</p><p><b>  {</b></p><p>  m_Result=num_1*num_2;</p><p>  UpdateData(false);</

92、p><p><b>  }</b></p><p>  else if(yun==4)//除</p><p><b>  {</b></p><p>  m_Result=num_1/num_2;</p><p>  UpdateData(false);</p>&

93、lt;p><b>  }</b></p><p>  else if(yun==5)//log</p><p>  {if(num_1<=0)</p><p><b>  {</b></p><p>  m_Result=0;</p><p>  UpdateD

94、ata(false);</p><p><b>  }</b></p><p>  m_Result=log10(num_1);</p><p>  UpdateData(false);</p><p><b>  }</b></p><p>  else if(yun==6

95、)//平方</p><p><b>  {</b></p><p>  m_Result=num_1*num_1;</p><p>  UpdateData(false);</p><p><b>  }</b></p><p>  else if(yun==7)//根號(hào)&l

96、t;/p><p><b>  {</b></p><p>  if(num_1<=0)</p><p><b>  {</b></p><p>  m_Result=0;</p><p>  UpdateData(false);</p><p>&l

97、t;b>  }</b></p><p>  m_Result=sqrt(num_1);</p><p>  UpdateData(false);</p><p><b>  }</b></p><p>  else if(yun==8)//sin</p><p><b>

98、;  {</b></p><p>  m_Result=sin(num_1*PI/180);</p><p>  UpdateData(false);</p><p><b>  }</b></p><p>  else if(yun==9)//tan</p><p><b>

99、;  {</b></p><p>  m_Result=tan(num_1*PI/180);</p><p>  UpdateData(false);</p><p><b>  }</b></p><p>  else if(yun==10)//cos</p><p><b&g

100、t;  {</b></p><p>  m_Result=cos(num_1*PI/180);</p><p>  UpdateData(false);</p><p><b>  }</b></p><p>  opt=false;</p><p>  m_done=true;<

101、;/p><p>  dian=false;</p><p><b>  n=0;</b></p><p><b>  附錄2:計(jì)算器程序</b></p><p>  // ZZDlg.h : header file</p><p>  #if !defined(AFX_ZZDLG

102、_H__70D9D5A9_C97C_488F_8F36_08F210B07A01__INCLUDED_)</p><p>  #define AFX_ZZDLG_H__70D9D5A9_C97C_488F_8F36_08F210B07A01__INCLUDED_</p><p>  #if _MSC_VER > 1000</p><p>  #pragma o

103、nce</p><p>  #endif // _MSC_VER > 1000</p><p>  /////////////////////////////////////////////////////////////////////</p><p>  // CZZDlg dialog</p><p>  class CZZDlg

104、 : public CDialog</p><p><b>  {</b></p><p>  // Construction</p><p><b>  public:</b></p><p>  CZZDlg(CWnd* pParent = NULL);// standard construc

105、tor</p><p>  double m_input; //保存輸入的數(shù)字</p><p>  bool m_done,opt; //布爾類型成員變量,判斷一次計(jì)算結(jié)束,和操作符點(diǎn)擊的憑據(jù)</p><p>  void Numin(double put); //成員函數(shù),處理輸入的數(shù)據(jù)</p><p>  double num_1

106、,num_2; //兩個(gè)操作數(shù)</p><p>  void operate();//輸入運(yùn)算符后要調(diào)用的函數(shù)</p><p><b>  int yun;</b></p><p>  bool dian;//判斷小數(shù)點(diǎn)是否被點(diǎn)擊</p><p>  int n;//顯示小數(shù)部分的輸入位數(shù)</p>&

107、lt;p><b>  double m;</b></p><p>  void OnMnuCut();</p><p>  void OnMnuCopy();</p><p>  void OnMnuPaste();</p><p>  void OnContextMenu(CWnd* pWnd, CPoint p

108、oint);</p><p>  // Dialog Data</p><p>  //{{AFX_DATA(CZZDlg)</p><p>  enum { IDD = IDD_ZZ_DIALOG };</p><p>  doublem_Result;</p><p>  //}}AFX_DATA</p&g

109、t;<p>  // ClassWizard generated virtual function overrides</p><p>  //{{AFX_VIRTUAL(CZZDlg)</p><p>  protected:</p><p>  virtual void DoDataExchange(CDataExchange* pDX);//

110、DDX/DDV support</p><p>  //}}AFX_VIRTUAL</p><p>  // Implementation</p><p>  protected:</p><p>  HICON m_hIcon;</p><p>  // Generated message map functions

111、</p><p>  //{{AFX_MSG(CZZDlg)</p><p>  virtual BOOL OnInitDialog();</p><p>  afx_msg void OnSysCommand(UINT nID, LPARAM lParam);</p><p>  afx_msg void OnPaint();</p&

112、gt;<p>  afx_msg HCURSOR OnQueryDragIcon();</p><p>  afx_msg void OnB0();</p><p>  afx_msg void OnB1();</p><p>  afx_msg void OnB2();</p><p>  afx_msg void OnB3(

113、);</p><p>  afx_msg void OnB4();</p><p>  afx_msg void OnB5();</p><p>  afx_msg void OnB6();</p><p>  afx_msg void OnB7();</p><p>  afx_msg void OnB8();<

114、;/p><p>  afx_msg void OnB9();</p><p>  afx_msg void OnBadd();</p><p>  afx_msg void OnBce();</p><p>  afx_msg void OnBd();</p><p>  afx_msg void OnBdiv();<

115、;/p><p>  afx_msg void OnBmult();</p><p>  afx_msg void OnBrun();</p><p>  afx_msg void OnBsub();</p><p>  afx_msg void OnChangeEdit1();</p><p>  afx_msg void

116、 Onpf();</p><p>  afx_msg void Onsin();</p><p>  afx_msg void Onsqrt();</p><p>  afx_msg void Ontan();</p><p>  afx_msg void Oncos();</p><p>  afx_msg void

117、 Onlog();</p><p>  //}}AFX_MSG</p><p>  DECLARE_MESSAGE_MAP()</p><p><b>  };</b></p><p>  //{{AFX_INSERT_LOCATION}}</p><p>  // Microsoft Visua

118、l C++ will insert additional declarations immediately before the previous line.</p><p>  #endif // !defined(AFX_ZZDLG_H__70D9D5A9_C97C_488F_8F36_08F210B07A01__INCLUDED_)</p><p>  // ZZDlg.cpp :

119、implementation file</p><p><b>  //</b></p><p>  #include "stdafx.h"</p><p>  #include "ZZ.h"</p><p>  #include "ZZDlg.h"</p

120、><p>  #include "string.h"</p><p>  #include <math.h></p><p>  #include "malloc.h"</p><p>  #include <iostream.h></p><p>  #if

121、def _DEBUG</p><p>  #define new DEBUG_NEW</p><p>  #undef THIS_FILE</p><p>  #define PI 3.1415926535897932384626433</p><p>  static char THIS_FILE[] = __FILE__;</p&g

122、t;<p><b>  #endif</b></p><p>  /////////////////////////////////////////////////////////////////////////////</p><p>  // CAboutDlg dialog used for App About</p><p&g

123、t;  class CAboutDlg : public CDialog</p><p><b>  {</b></p><p><b>  public:</b></p><p>  CAboutDlg();</p><p>  // Dialog Data</p><p>

124、;  //{{AFX_DATA(CAboutDlg)</p><p>  enum { IDD = IDD_ABOUTBOX };</p><p>  //}}AFX_DATA</p><p>  // ClassWizard generated virtual function overrides</p><p>  //{{AFX_VIR

125、TUAL(CAboutDlg)</p><p>  protected:</p><p>  virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support</p><p>  //}}AFX_VIRTUAL</p><p>  // Implementation&

126、lt;/p><p>  protected:</p><p>  //{{AFX_MSG(CAboutDlg)</p><p>  //}}AFX_MSG</p><p>  DECLARE_MESSAGE_MAP()</p><p><b>  };</b></p><p>

127、  CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)</p><p><b>  {</b></p><p>  //{{AFX_DATA_INIT(CAboutDlg)</p><p>  //}}AFX_DATA_INIT</p><p><b>  }<

128、;/b></p><p>  void CAboutDlg::DoDataExchange(CDataExchange* pDX)</p><p><b>  {</b></p><p>  CDialog::DoDataExchange(pDX);</p><p>  //{{AFX_DATA_MAP(CAbou

129、tDlg)</p><p>  //}}AFX_DATA_MAP</p><p><b>  }</b></p><p>  BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)</p><p>  //{{AFX_MSG_MAP(CAboutDlg)</p><p>  /

130、/ No message handlers</p><p>  //}}AFX_MSG_MAP</p><p>  END_MESSAGE_MAP()</p><p>  /////////////////////////////////////////////////////////////////////////////</p><p>

131、  // CZZDlg dialog</p><p>  CZZDlg::CZZDlg(CWnd* pParent /*=NULL*/)</p><p>  : CDialog(CZZDlg::IDD, pParent)</p><p><b>  {</b></p><p>  //{{AFX_DATA_INIT(CZ

132、ZDlg)</p><p>  m_Result = 0.0;</p><p>  //}}AFX_DATA_INIT</p><p>  // Note that LoadIcon does not require a subsequent DestroyIcon in Win32</p><p>  m_hIcon = AfxGetApp

133、()->LoadIcon(IDR_MAINFRAME);</p><p><b>  }</b></p><p>  void CZZDlg::DoDataExchange(CDataExchange* pDX)</p><p><b>  {</b></p><p>  CDialog::D

134、oDataExchange(pDX);</p><p>  //{{AFX_DATA_MAP(CZZDlg)</p><p>  DDX_Text(pDX, IDC_EDIT1, m_Result);</p><p>  //}}AFX_DATA_MAP</p><p><b>  }</b></p>&l

溫馨提示

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

評(píng)論

0/150

提交評(píng)論