c++計算器課程設計--計算器程序設計_第1頁
已閱讀1頁,還剩36頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

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

2、 級</p><p> 學 號</p><p> 指導教師</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 課程設計內(nèi)容及要求1</p><p>  2、開發(fā)工具的介紹2</p><p><b>  3、設計內(nèi)容3</b></p><p>  3.1 功能說明3</p>

4、<p>  3.2 流程圖:3</p><p><b>  4、系統(tǒng)的實現(xiàn)4</b></p><p>  4.1 文件創(chuàng)建4</p><p>  4.2 界面設計6</p><p>  4.3 數(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 實例測試結(jié)果3</p><p><b>  心得與體會5</b></p><p><b>  參考文獻6</b></p><p>  附錄1:

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

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

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

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

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

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

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

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

14、<p><b>  2、開發(fā)工具的介紹</b></p><p>  本課程設計使用的是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、建項目文件。Visual C++6.0不僅包括編譯器,而且它還包括許多有用組件,通過這些組件的協(xié)同工作,可以在Visual C++6.0集成環(huán)境中輕松地完成創(chuàng)建源文件,編輯資源,以及對程序的編譯,連接和調(diào)試等各項工作。</p><p>  VC++6.0是Windows 95/98、XP或Windows NT下的一個應用程序,本身對軟硬件沒有特殊要求。就是說它對環(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盤上。一般都有一個VC的自動安裝程序,也可以執(zhí)行VC6目錄下的setup.exe,在安裝包的提示下進行,對初學者可采用“典型安裝”方式。</p><p>  在安裝好VC 6.0系統(tǒng)后,有時根據(jù)需要添加或刪除某些部件,可插入CD盤重新執(zhí)行setup.exe安裝程序,安裝程序會檢測當前系統(tǒng)安裝VC6的足件,用戶單擊“添加/刪除”按鈕后,在“安裝維護”對話框中選定要添加的部件或撤消選定要刪除的部

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

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

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

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

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

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

24、再調(diào)用OnDraw函數(shù)將其顯示出來,并用指定的畫刷填充客戶區(qū),并且用指定的顏色繪制顯示文本。</p><p>  (3)最后,實現(xiàn)主對話框界面功能,主要是加載菜單資源和對話框擴展功能的實現(xiàn)。在CCalculatorDlg::OnCreate函數(shù)中設定對話框的初始大小與位置,可以在這個對話框中進行窗口風格修改,位置設置等操作,然后添加菜單項ID_EXTEND的響應函數(shù)OnExtend。</p><

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

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

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

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

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

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

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

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

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

34、整形變量來記錄當前運算符,以及一個整形變量來記錄當前小數(shù)點按鈕是否被單擊過。定義如下:</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; //布爾類型成員變量,判斷一次計算結(jié)束,和操作符點擊的憑據(jù)</p><p>  void Numin(double put); //成員函數(shù),處理輸入的數(shù)據(jù)</p><p>  double num_1,num_2; //兩個操作數(shù)</p><p>  void operate();//輸入

36、運算符后要調(diào)用的函數(shù)</p><p>  int yun;//運算判斷</p><p>  bool dian;//判斷小數(shù)點是否被點擊</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>  當小數(shù)點鍵被單擊時,首先判斷小數(shù)點鍵是否已經(jīng)被單擊過,以及當前初始操作數(shù)字符串是否為空。

38、如果小數(shù)點鍵沒有被單擊過,而且當前初始操作數(shù)字符串不為空,則將小數(shù)點追加到初始操作數(shù)末尾,并且修改小數(shù)點標識dian為TRUE。實現(xiàn)代碼如下:</p><p><b>  小數(shù)點的定義如下:</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>  程序判斷代碼實現(xiàn)如下:</p><p&

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

41、==false)//如果小數(shù)點還沒有被按下</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ù)點已經(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ù)點還沒有被按下</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ù)點已經(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>  當數(shù)字鍵0—9被單擊時,則將當前所按鍵加到初始操作數(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>  當清除鍵CE被單擊時,則

61、對所有的成員變量進行初始化。清除小數(shù)點標識,將保存初始操作數(shù)和結(jié)果操作數(shù)的字符串清空,將保存初始操作數(shù)和結(jié)果操作數(shù)的浮點數(shù)清0,將當前操作符清0。實現(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>  當任何一個運算符鍵被單擊時,首先根據(jù)當前運算符計算運算結(jié)果,再修改記錄當前運算符的變量的值。以加號鍵被按下為例,實現(xiàn)代碼如下:</p><p><b>  加號函數(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>  加號運算的實現(xiàn)如下:</p><p>  if(yun==1)//判斷執(zhí)行何種運算</p><p><b>  {</b></p><p>  m_Result=num_1+num_

67、2;</p><p>  UpdateData(false);</p><p><b>  }</b></p><p>  計算機還有簡單的函數(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ù)運算實現(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)//根號</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>  計算器的核心運算函數(shù)——Run。在Run中,首先將記錄當前操作數(shù)的字符串中保存的字符串轉(zhuǎn)化為浮點數(shù);其次根據(jù)當前操作符的類型,選擇適當?shù)倪\算操作;再將記錄結(jié)果操作數(shù)的浮點變量中的值轉(zhuǎn)化為字符串,并顯示在結(jié)果編輯框中。Run函數(shù)實現(xiàn)代碼見附錄1。</p&g

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

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

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

83、b>  心得與體會</b></p><p>  經(jīng)過兩個星期的努力,課程設計基本完成了。在課程設計的實踐中,學到很多有用的知識,也積累了不少寶貴的經(jīng)驗。本次設計是以一個計算器的實現(xiàn)為基礎,掌握一個基于對話框的應用程序的編程方法以及對話框常用控件的高級編程。在課程設計中我了解到對話框應用程序的編程模式、對話框添加背景圖片。課程設計是需要大量時間去動手練習才能體驗到它的內(nèi)涵的,同時還需要用心地投入,

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

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

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

87、京人民郵電出版社2002.8</p><p>  [5] 揣錦華.面向?qū)ο蟪绦蛟O計與VC++實踐.西安電子科技大學出版社.2005</p><p>  [6] 張建宏、湯練兵、馬德駿.計算機程序設計基礎-C語言程序設計.科學出版社.2006</p><p>  [7] 陳清華.Visual C++課程設計案例精選與編程指導.東南大學出版社.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)//根號&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:計算器程序</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; //布爾類型成員變量,判斷一次計算結(jié)束,和操作符點擊的憑據(jù)</p><p>  void Numin(double put); //成員函數(shù),處理輸入的數(shù)據(jù)</p><p>  double num_1

106、,num_2; //兩個操作數(shù)</p><p>  void operate();//輸入運算符后要調(diào)用的函數(shù)</p><p><b>  int yun;</b></p><p>  bool dian;//判斷小數(shù)點是否被點擊</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)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論