計算器程序設計報告_第1頁
計算器程序設計報告_第2頁
計算器程序設計報告_第3頁
計算器程序設計報告_第4頁
計算器程序設計報告_第5頁
已閱讀5頁,還剩13頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、計算器程序設計報告一、設計分析編寫一個計算器程序,要求:1、界面類似于windows系統中提供的計算器界面;2、能實現加、減、乘、除、乘方、開方等功能。界面類似于windows系統中提供的計算器界面,則數字的輸入和功能的執行都通過按鍵來實現,并且能夠在顯示區域里及時的顯示出數據,所用本程序使用VC+提供的高度可視化的應用程序開發工具MFC來實現。要實現加、減、乘、除、乘方、開方等功能,則在程序中包含math.h庫函數文件,通過引用相應的函數來實現乘方、開方等功能。在輸入第一個計算參數以后,點擊需要執行的計算方式,然后輸入第二個計算參數,點擊“=”按鈕,則會在顯示區顯示出正確的結果。本程序從設計

2、上來講,主要分為兩個重點部分,一個是數字的輸入,即逐個點擊單個數字(包括小數點)之后,這些數據能夠在顯示區正確的顯示。第二個是數據的計算,先輸入第一個計算參數,然后選擇計算方式,再輸入第二個計算參數,最后點擊“=”按鈕,計算結果。二、程序結構按照程序的設計,可以分為數據顯示模塊、數據輸入模塊、計算方式選擇模塊、結果計算模塊、菜單模塊等五個主要模塊,其中,數字輸入模塊和計算模塊是重點和難度,這兩個模塊的流程圖如下所示:1、數字輸入的流程圖:點擊一個數字鍵以后,流程開始:2、數據計算的流程:點擊計算方式按鈕,操作方式記入計算方式標識變量中。三、各模塊的功能及程序說明按照程序的設計,可以分為數據顯示

3、模塊、數據輸入模塊、計算方式選擇模塊、結果計算模塊、菜單模塊等五個主要模塊,以下逐個說明各模塊的功能及程序說明。1、數據顯示模塊。數據顯示模塊顯示用戶輸入的數字和計算器計算的結果,主要由一個數字顯示框組成。數字顯示框是一個編輯框控件,屬性設置為只讀模式,不能由用戶編輯。在MFC的類向導中,給數字顯示框添加一個變量m_num,用來記錄數字的變化,當每次操作以后,都會把數字更新到界面上,顯示給用戶。2、數據輸入模塊。數據輸入模塊用來輸入1、2、3、4、5、6、7、8、9、0等十個數字和一個“.”小數點,并且可以進行數據正負的轉換。此模塊由十個數字按鍵、一個小數點按鍵、一個正負轉換按鍵組成。有一個b

4、ool型的變量來標識小數點是否已經輸入,如果標識為假,則操作的數據為整數,如果標識為真,則操作的數據為小數。在同一個數據的/TODO:Addyourcontrolnotificationhandlercodehere/TODO:Addyourcontrolnotificationhandlercodehere輸入中,小數點標識只在第一次點擊時有效。每一個按鍵的操作都由一個函數單獨完成,避免相互影響。每一次數據輸入,都會更新數據框的顯示,達到實時性。3、計算方式選擇模塊。計算方式選擇用來選擇加、減、乘、除、乘方、開方等六個操作,每個計算方式都有一個單獨的按鈕,每個按鈕都有一個單獨的函數來執行。用

5、一個int類型的變量m_fuhao來標識計算方式的選擇。執行計算方式選擇以后,把原先數據框中顯示的數據賦值給第一個計算參數m_canshul,并且對于系統標識變量進行相應的處理。因為對于六個函數來說,這些系統標識變量的相應處理都是相同的,所以把這些系統標識變量整理為一個函數voidCJisuanqiDlg:TagFuc(),以利于代碼的重復利用。4、結果計算模塊。結果計算模塊是點擊了“=”按鍵以后,執行相應的計算,并且輸出結果。在其他的模塊已經以此執行輸入了第一個操作數據、計算方式、第二個操作數據,然后在這里根據這些數據進行計算。如果前面沒有完整的執行輸入第一個操作數據、計算方式、第二個操作數

6、據,則此模塊不做任何處理。在這個模塊中,使用switch語句,分別根據計算方式的不同執行相應的操作,其中乘方和開方的操作需要調用math.h庫函數文件中的pow(m_canshul,m_canshu2)和sqrt(m_canshu1)函數來實現。執行完計算以后,將結果顯示在顯示框中,并且對系統標識變量進行一些相應的處理。5、菜單模塊。因為數據顯示框中的數據對于用戶是只讀的,所以當用戶在進行使用的時候,不能對數據框中的數據進行復制和粘貼等操作。這樣在一定程度上限制了程序使用的方便性。為了解決這個問題,添加了菜單操作模塊。菜單由兩部分構成,第一個清零、關閉功能,當用戶在輸入數據的時候,如果不小心輸

7、入錯誤,可以執行清零操作,重新輸入。如果用完計算器,可以執行關閉操作,關閉程序的運行。第二部分是編輯功能,包括數據的復制和粘貼功能,這樣用戶在使用中可以對重要的數據進行復制,先保存起來,然后再需要的時候進行粘貼,方便了用戶的操作。四、源程序根據程序模塊的劃分,除顯示模塊只有變量不進行任何操作,不需要說明源程序外,下面根據模塊依次來對其他模塊的源程序進行說明。1、數據輸入模塊:voidCJisuanqiDlg:OnButton1()/Button1是字符1的按鍵if(m_tag=false)/顯示框中原來的數據是否繼續使用。剛點擊過加減乘除乘方開方或者等于按鍵,則原來的數據不繼續使用m_num=

8、0;m_tag=true;if(m_dian=false)/是否已經輸入小數點m_num=m_num*10+1;/整數,則把新數據加在原來數據之后elsefloatjishu=1;for(inti=0;im_dianshu;i+)jishu=jishu/10;m_num=m_num+jishu;m_dianshu=m_dianshu+l;/小數點后的位數再加1UpdateData(false);voidCJisuanqiDlg:OnButton12()/Button12是小數點的按鍵/TODO:Addyourcontrolnotificationhandlercodehereif(m_dian

9、=false)m_dian=true;voidCJisuanqiDlg:OnButton19()/Button19是清零的按鍵m_num=0;m_dian=false;m_dianshu=1;m_tag=true;UpdateData(false);voidCJisuanqiDlg:OnButtonll()/Buttonll是正負轉換的按鍵/TODO:Addyourcontrolnotificationhandlercodeherem_num=0-m_num;UpdateData(false);2、計算方式選擇模塊:voidCJisuanqiDlg:OnButtonl3()/Buttonl3是

10、加法的按鍵/TODO:Addyourcontrolnotificationhandlercodeherem_fuhao=1;m_canshu1=m_num;TagFuc();m_tag=false;voidCJisuanqiDlg:OnButtonl4()/Buttonl4是減法的按鍵/TODO:Addyourcontrolnotificationhandlercodeherem_fuhao=2;m_canshu1=m_num;TagFuc();m_tag=false;voidCJisuanqiDlg:OnButtonl5()/Buttonl5是乘法的按鍵/TODO:Addyourcontro

11、lnotificationhandlercodeherem_fuhao=3;m_canshu1=m_num;TagFuc();m_tag=false;voidCJisuanqiDlg:OnButtonl6()/Buttonl6是除法的按鍵/TODO:Addyourcontrolnotificationhandlercodeherem_fuhao=4;m_canshu1=m_num;TagFuc();m_tag=false;voidCJisuanqiDlg:OnButtonl7()/Buttonl7是乘方的按鍵/TODO:Addyourcontrolnotificationhandlercode

12、herem_fuhao=5;m_canshu1=m_num;TagFuc();m_tag=false;voidCJisuanqiDlg:OnButtonl8()/Buttonl8是開方的按鍵/TODO:Addyourcontrolnotificationhandlercodeherem_fuhao=6;m_canshu1=m_num;TagFuc();m_tag=false;voidCJisuanqiDlg:TagFuc()/m_num=0;m_dian=false;m_dianshu=1;m_tag=true;UpdateData(false);3、結果計算模塊voidCJisuanqiDl

13、g:OnButton20()/TODO:Addyourcontrolnotificationhandlercodehereif(m_tag=true)/這個判斷是為了處理用戶點擊完“=”,沒有點擊其他按鍵再點擊“=”,這種情況下,不更新第二個計算參數。m_canshu2=m_num;/if(m_tag=true)m_canshu1=m_num;/CStringsTemp;/sTemp.Format(m_canshu1=%f;m_canshu2=%fn,m_canshu1,m_canshu2);/MessageBox(sTemp);switch(m_fuhao)case1:m_num=m_can

14、shu1+m_canshu2;UpdateData(false);break;case2:m_num=m_canshu1-m_canshu2;UpdateData(false);break;case3:m_num=m_canshu1*m_canshu2;UpdateData(false);break;case4:m_num=m_canshu1/m_canshu2;UpdateData(false);break;case5:m_num=pow(m_canshu1,m_canshu2);UpdateData(false);break;case6:m_num=sqrt(m_canshu1);/m_c

15、anshu1UpdateData(false);break;default:break;/m_num=0;m_canshu1=m_num;m_tag=false;4、菜單模塊:voidCJisuanqiDlg:OnMenuitem32773()/復制/TODO:Addyourcommandhandlercodeherem_baocun=m_num;voidCJisuanqiDlg:OnMenuitem32774()/粘貝占/TODO:Addyourcommandhandlercodehereif(m_baocun!=0)m_num=m_baocun;UpdateData(false);void

16、CJisuanqiDlg:OnMenuitem32771()/清零/TODO:AddyourcommandhandlercodehereOnButton19();voidCJisuanqiDlg:OnMenuitem32772()/關閉/TODO:AddyourcommandhandlercodehereCDialog:OnCancel();五、操作方法輸入第一個計算參數,比如:2642、246.78、-578、-2.6;點擊選擇計算方式,比如:加、減、乘、除、乘方、開方;輸入第二個計算參數(注:開方計算只需要一個計算參數,不需要輸入第二個計算參數。;點擊“=”按鍵,輸入計算結果;由于程序做過處理,可以實現連等操作,多次點擊“=”按鍵計算;在操作過程中,可以對操作框進行復制、粘貼等操作。六、實驗結果1、輸入7865.78,結果如下圖顯示:2、執行34+98,結果如下圖顯示:4、執行26*9,結果如下圖顯示:4、執行26*9,結果如下圖顯示:4、執行26*9,結果如下圖顯示:4、執行26*9,結果如下圖顯示:座計算賽3、執行65-87,結果如下圖顯示:6、執行4的3次方,結果如下圖顯示:6、執行4的3次方,結果如下圖顯示:6、執行4的3次方,結果如下圖顯示:6、執行4的3次方,結果

溫馨提示

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

評論

0/150

提交評論