MFC多功能計(jì)算器的設(shè)計(jì).._第1頁(yè)
MFC多功能計(jì)算器的設(shè)計(jì).._第2頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第1頁(yè)設(shè)計(jì)題目 MFC 多功能計(jì)算器一系統(tǒng)實(shí)現(xiàn)(開發(fā)工具)Visual C+6.0 是 Microsoft 公司在 1998 年推出的基于 Windows 9X 和Win dowsNT 的優(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/

2、98、XP 或 Windows NT 下的一個(gè)應(yīng)用程序,本身對(duì) 軟硬件沒有特殊要求。就是說它對(duì)環(huán)境的要求與Windows 95/98、Windows 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,在安裝包的提示

3、下進(jìn)行,對(duì)初學(xué)者可采用 “典型安裝”方式。在安裝好 VC 6.0 系統(tǒng)后,有時(shí)根據(jù)需要添加或刪除某些部件,可插入 CD 盤重新執(zhí)行 setup.exe 安裝程序,安裝程序會(huì)檢測(cè)當(dāng)前系統(tǒng)安裝 VC6 的足件,用 戶單擊“添加/刪除”按鈕后,在“安裝維護(hù)”對(duì)話框中選定要添加的部件或撤 消選定要?jiǎng)h除的部件。二.基本功能描述簡(jiǎn)單計(jì)算器包括雙目運(yùn)算和單目運(yùn)算功能。 雙目運(yùn)算符包含基本的四則運(yùn)算 及乘幕功能,單目運(yùn)算符包含正余弦,階乘,對(duì)數(shù),開方,進(jìn)制轉(zhuǎn)換等運(yùn)算。可 對(duì)輸入任意操作數(shù),包括 小數(shù)和整數(shù)及正數(shù)和負(fù)數(shù)進(jìn)行以上的所有運(yùn)算并能連續(xù)運(yùn)算。出現(xiàn)錯(cuò)誤會(huì)給出相應(yīng)提示,同時(shí)包含清除,退格,退出功能以及有與所

4、 有按第2頁(yè)鈕相對(duì)應(yīng)的菜單項(xiàng)。2.1 設(shè)計(jì)思路如圖是整個(gè)計(jì)算器的流程圖,打開計(jì)算器程序,輸入數(shù)據(jù),調(diào)用輸入數(shù)據(jù)子 程序。子程序開始時(shí) m_nun 為零。按下數(shù)字按鈕后,判斷 m_nunt勺正負(fù)號(hào),對(duì)其 進(jìn)行相關(guān)處理,然后在判斷是否有小數(shù)點(diǎn),處理后輸出結(jié)果?;氐娇偭鞒虉D中,輸完第一個(gè)操作數(shù)后,若按下雙目運(yùn)算符,則把m_num存入 num2 按下輸入第二個(gè)操作數(shù)并算出結(jié)果。若按下的是單目運(yùn)算符,則直 接對(duì)其處理得出結(jié)果。若按下清零,則m_num 等于 0.在運(yùn)算中還要判斷運(yùn)算是否合法,以及結(jié)果是否超出顯示范圍,以做出相關(guān)提示,按下清零。算出后把結(jié) 果保存至 num2 若需用算出的結(jié)果繼續(xù)運(yùn)算則回到

5、輸入完第一個(gè)操作數(shù)后,若 不需要?jiǎng)t判斷試否需要開始新一輪的運(yùn)算,不需要?jiǎng)t結(jié)束第3頁(yè)輸入數(shù)據(jù)子函數(shù)圖 1 輸入數(shù)據(jù)子函數(shù)流程圖第4頁(yè)H進(jìn)行運(yùn)算把結(jié)果保存到num2彈出對(duì)話框顯T示ERROR第5頁(yè)圖 2 簡(jiǎn)單計(jì)算器總流程圖2.2 軟件設(shè)計(jì)(1)設(shè)計(jì)步驟打開 Microsoft Visual C+ 6.0,在文件中點(diǎn)擊新建,在彈出框內(nèi)選擇MFCAppWizardexe工程,輸入工程名 zhoutong 及其所在位置,點(diǎn)擊確定,如圖 3 所示。圖 3 新建 MFC AppWizardexe工程將彈出 MFC AppWizard-step 1 對(duì)話框,選擇基本對(duì)話框,點(diǎn)擊完成,如圖4所示。第6頁(yè)瑩文檔関

6、廠多重文檔跖萬禾對(duì)話框皿您的資源使用的悟言杲: 沖艾審畐fjAPPWZCH工B LL1上一涉 下一播完咸瞬圖 4 基本對(duì)話框這樣,MFC AppWizard 就建立了一個(gè)基于對(duì)話窗口的程序框架, 如圖 5 所示 idfKHiWngl - HkroMril Vburi C* - - Lfhintmal.n:U_2H(XfTClKil_DM.0G! (Owkm;)口固宜嚕 HCZltiauloingl DigT|(Alh chass nimbe r|* CZiiouilufigi1 DigT 玄”凸!3文杵( 猶心蘭五毎ffiACU 141(E)垣屢聞布簡(jiǎn)閥工目口啊flWcC-_;J|)t|沐絹喪

7、.廠謹(jǐn)武廠至龍廂中宜扶I在我件舛宜fVH需帚麵IIIW躺口就緒勺 札n ifj aDx?NI圖 5 新建的對(duì)話框(2)界面設(shè)計(jì)1、創(chuàng)建控件在圖 5 所示的 Resoure View 選項(xiàng)卡中打開 Dialog 資源組,雙擊IDD_ZHOUTONG_DIALOG, 在右邊的窗口中顯示出待編輯的對(duì)話框。 開始擺 放控件,包括編輯框和按鈕的創(chuàng)建。按鈕的創(chuàng)建以“ 1”例進(jìn)行介紹,其他按鈕MFC應(yīng)用程序育號(hào)-歩*1您聶倉(cāng)Q建的應(yīng)用程序類型是;-_J zhdiutDngi ourccB-_J OlBlog23 IDD.ABOUTBOX2 IDD_ZHOUTOhlG1_OI/* J Icon+ Siring

8、 Table+ _ Verskn;Cl陰RUSIIQI“ 莖FildVi0-血EJB咨忌HA 第7頁(yè)的創(chuàng)建可參照此進(jìn)行操作。1)在圖 5 中 Controls 的編輯框”按鈕上單擊鼠標(biāo)左鍵,在對(duì)話框編輯窗口上合適的位置按下鼠標(biāo)左鍵并拖動(dòng)鼠標(biāo)畫出一個(gè)大小合適的編輯框。在編輯框上單擊鼠標(biāo)右鍵,在彈出的快捷萊單中選擇屬性選項(xiàng),此時(shí)彈出Edit 屬性對(duì)話框,如圖 6 所示,在該對(duì)話框中輸入 ID 屬性。圖 6 Edit 屬性對(duì)話框2)在圖 3 中 Controls 的“ Button 按鈕上單擊鼠標(biāo)左鍵,在對(duì)話框上的合適的位置上按下鼠標(biāo)左鍵并拖動(dòng)鼠標(biāo)畫出一個(gè)大小合適的下壓式按鈕。在按鈕上單擊鼠標(biāo)右鍵,

9、在彈出的快捷菜單中選擇屬性選項(xiàng),此時(shí)也彈出Push Button 屬性對(duì)話框,如圖 7 所示,在該對(duì)話框中輸入控件的 ID 值和標(biāo)題屬性。圖 7 Push Button 屬性按照上面的操作過程編輯其他按鈕和編輯框等對(duì)象的屬性。第8頁(yè)表 1 各按鈕和編輯框等對(duì)象的屬性對(duì)象ID標(biāo)題或說明編輯框IDC xia nshi結(jié)果顯示按鈕IDC BUTTONO0按鈕IDC BUTT0N11按鈕IDC BUTT0N212按鈕IDC BUTT0N33按鈕IDC BUTT0N44按鈕IDC BUTT0N55按鈕IDC BUTT0N66按鈕IDC BUTT0N77按鈕IDC BUTT0N88按鈕IDC BUTT0N

10、99按鈕IDC cha nge+/-按鈕IDC poi nt按鈕IDC add+按鈕IDC differe nee-按鈕IDC multiply*按鈕IDC devide/按鈕IDC sqrtsqrt按鈕IDCnln按鈕IDC sinsin按鈕IDC coscos按鈕IDC powxAy按鈕IDC 0 nequal=按鈕IDC backspace退格按鈕IDC 0nclear清零完成后界面如圖 8 所示第9頁(yè)(3)連接變量和代碼1)給編輯框連接變量。在編輯框上單擊鼠標(biāo)右鍵,在彈出菜單中選擇ClassWizard 菜單項(xiàng),彈出 MFC ClassWizard 對(duì)話框,選擇 Member Vari

11、ables 選項(xiàng)卡,如圖 9 所示。在 Control IDs 列表框中選擇 IDC_xianshi,單擊 Add Variables 按鈕,在彈出的對(duì)話框中連接變量 m_num。變量類型設(shè)定為 doubel 型。如圖 10 所示。左科學(xué)計(jì)算器2圖 8 計(jì)算器界面Open/Off第10頁(yè)Add Member VariaMeMember variable name:im numl一1Category:ValueVarjable type:二doubleDes匚liption:double with range validation圖 10 m_num 屬性設(shè)置2)給“ 1 按鈕連接代碼。在“ 1

12、 按鈕上單擊鼠標(biāo)右鍵,選擇 Classwizard 菜單項(xiàng),在彈出的對(duì)話框中選擇 Messages Maps 選項(xiàng)卡,然后在 Object IDs 列表框中 選擇 IDC_ADD_BUTTON,在 Messages 列表框中選擇 BN_CLICKED 項(xiàng),即選 擇單擊按鈕事件,如圖 11 所示。圖 11“ 1”按鈕鏈接代碼對(duì)話框(4) 菜單的設(shè)計(jì)選擇 插入/資源命令,將顯示插入資源對(duì)話框。如圖12 所示。選擇 Menu,OKCancel第11頁(yè)圖 12 插入資源對(duì)話框Resoure View 選項(xiàng)卡中打開 Menu 資源組,雙擊 IDR_MENU1,然后給菜單添加相應(yīng)的標(biāo)題,并把每個(gè)菜單對(duì)應(yīng)的

13、 ID 值與相應(yīng)的按鈕的一致。如圖 13 所示。圖 13 菜單屬性對(duì)話框在對(duì)話框的任何一個(gè)空白域單擊鼠標(biāo)右鍵,然后在彈出的快捷菜單中選擇Properties 命令,彈出 Dialog Properties 對(duì)話框,如圖 14。在對(duì)話框中的菜單組合 框中選擇 IDR MENU1o點(diǎn)擊新建即可資源類型山:AcceleratorBitmapCursorDialogHTMLIcon m BiMmBiiau ipMenuString TableToolbarVersion新建自定義0.取消12d- z hDulong re source5-Fj!Dialog習(xí)IDD_BOUTBOXH IDO ZHIOU

14、TONG+/jJcon-也也Meou倉(cāng)IDA MENU! J Siring Table+ _| VersionIALOC文件噪f簾飾中目運(yùn)算符t i皺目運(yùn)宜幷*+樂乎撐鈕卜dear第12頁(yè)對(duì)話麗性占豐常規(guī) 樣式|更多樣式|擴(kuò)展樣式|更多擴(kuò)展樣式|圖 14 對(duì)話屬性對(duì)話框 最終的得到的界面如圖 15。2.3 關(guān)鍵功能的實(shí)現(xiàn) 1)操作數(shù)的輸入編輯框所關(guān)聯(lián)的變量為 m_num,程序開始時(shí)為零。每按下一個(gè)數(shù)字鍵按鈕, 就把它累加到 m_num 里并刷新顯示。BOOL 型變量 ele 來判斷是否有小數(shù)點(diǎn)和 一個(gè)整型數(shù) dint 來表示小數(shù)點(diǎn)后的數(shù)據(jù)的位數(shù)。當(dāng) ele=TRUE 時(shí),表示有小數(shù)點(diǎn),否則則表

15、示無小數(shù)點(diǎn)。按下小數(shù)點(diǎn)按鈕后執(zhí)行 ele=TRUE。當(dāng)按下一個(gè)數(shù)字鍵時(shí),首先根據(jù) ele判斷是否按下小數(shù)點(diǎn),若有則把小數(shù)點(diǎn)后數(shù)的位數(shù)加1, di nt 則為此次鍵入的數(shù)所處的位數(shù),將鍵入的數(shù)除以di nt 個(gè) 10 然后累加到編輯框所關(guān)聯(lián)的變量 m_num 上,若沒有則把 m_num 乘以 10,然后累加到編輯框所關(guān)聯(lián)的變 量m_num 上。2) 單目運(yùn)算符功能的實(shí)現(xiàn)由于單目運(yùn)算符中必須有執(zhí)行運(yùn)算的函數(shù),因而頭文件中要加入math.h,如ID:I _字體名稱: 字體大小:字體CQ)IDD-ZHOUTONG DIALOG J標(biāo)題|):I簡(jiǎn)單計(jì)算器宋體菜單囲:位置豈0位置丫oIDR MENU1圖

16、15 計(jì)算器完整界面第13頁(yè)m_num=sqrt(m_num)按下按鈕即可實(shí)現(xiàn)其功能。為實(shí)現(xiàn)連續(xù)運(yùn)算,程序有所改動(dòng),參見(6)。3) 雙目運(yùn)算符功能的實(shí)現(xiàn)雙目運(yùn)算符需要兩個(gè)操作數(shù)才能運(yùn)算,所以在執(zhí)行雙目運(yùn)算符按鈕的函數(shù)代 碼中,要把 m_num 中的值保存到變量 num2 中,然后把 m_num 清零。這樣即可 保存第一個(gè)操作數(shù)。另外先定義了一個(gè)整形變量 addt,在不同的雙目運(yùn)算符中給 addt 賦不同的值,然后在等號(hào)中用 switch 語(yǔ)句來匹配 addt 值來判斷需要執(zhí)行何 種雙目運(yùn)算。為實(shí)現(xiàn)連續(xù)運(yùn)算,程序有所改動(dòng)。4) 退格鍵功能的實(shí)現(xiàn)當(dāng)按下一次退格按鈕時(shí),若 m_num 為整數(shù),只需

17、對(duì)其中數(shù)據(jù)除以 10 再取整 即可,若按下一次退格按鈕為小數(shù),則根據(jù)小數(shù)點(diǎn)后數(shù)據(jù)的位數(shù) dint 進(jìn)行操作, 先對(duì)m_num 執(zhí)行(dint-1)次乘以 10 運(yùn)算,然后取整,接著執(zhí)行(dint-1)次除 以 10 的運(yùn)算即可。完成后需要把 dint 將減小 1。5) 連續(xù)運(yùn)算功能的實(shí)現(xiàn)要連續(xù)運(yùn)算必須將每次運(yùn)算的結(jié)果保存下來。對(duì)于雙目運(yùn)算符:首先在等號(hào)按鈕的消息處理函數(shù)中在 m_num 清零之前將m_num 的值賦給 num2.不過這樣的話如果再按雙目運(yùn)算符則 num2 的值將會(huì)被覆 蓋,于是在雙目運(yùn)算符按鈕的消息處理函數(shù)中將“n um2=m_num;改為“ if(m_num!=O)num2=

18、m_num;這樣若已經(jīng)保存了結(jié)果則不進(jìn)行覆蓋。 然后在每個(gè)數(shù)字按鈕前加上“if(addt=0)num2=0;,這樣如果進(jìn)行完一次運(yùn)算之后按下任一 數(shù)字鍵表示不需要連續(xù)運(yùn)算,則將保存的結(jié)果刪除,若按下的是雙目運(yùn)算符按鈕 則可以繼續(xù)運(yùn)算。對(duì)于單目運(yùn)算符:每次運(yùn)算完之后都會(huì)對(duì) m_num 清零,因此其結(jié)果也要賦 給num2,下次運(yùn)算是則會(huì)用到 num2, 于是第一次運(yùn)算時(shí)直接將 m_num 的值賦 給 num2,對(duì)其進(jìn)行運(yùn)算。以開根號(hào)為例,在消息處理函數(shù)代碼中將“ m_num=sqrt(m_num)改為 “ num2=m_num;m_num=sqrt(num2);num2=m_num;” 但是第一次

19、運(yùn)算執(zhí)行完成之后 m_num 被清零,所以之后將 m_num的值不能賦 給 num2, 代碼改為 “if(m_num=0)m_num=sqrt(num2);num2=m_num” 其他單 目運(yùn)算符同理。第14頁(yè)為實(shí)現(xiàn)連續(xù)運(yùn)算是不需要按下等號(hào)即可實(shí)現(xiàn),又在所有的運(yùn)算符按鈕的消息 處理函數(shù)代碼前加上了 “if(addt!=0)Onequal();。既若之前有按下雙目運(yùn)算符和兩 個(gè)操作數(shù)則連續(xù)運(yùn)算再按下任一運(yùn)算符時(shí)會(huì)自動(dòng)調(diào)用等號(hào)的處理函數(shù)將上次的 運(yùn)算完成并保存結(jié)果方便下一次的運(yùn)算。第15頁(yè)三.結(jié)論與心得體會(huì)經(jīng)過多番測(cè)試,得出結(jié)論為設(shè)計(jì)的計(jì)算器能夠完成功能描述內(nèi)容中的全部功 能。經(jīng)過 2 個(gè)星期的 VC+課程設(shè)計(jì),我在老師和同學(xué)的共同幫助下,順利完成 該課程設(shè)計(jì),收獲很大。正所謂“紙上談兵終覺淺,覺知此事要躬行?!彼栽诒緦W(xué)期課程設(shè)計(jì)是很及時(shí)、很必要的。這樣不僅能加深我們對(duì)程序設(shè)計(jì)的掌握, 而且還及時(shí)、真正的做到了學(xué)以致用。主要是以下幾點(diǎn)?;竟σ^硬。不能馬虎經(jīng)常犯犯小錯(cuò)誤。提高自己找錯(cuò)糾錯(cuò)能力,通常錯(cuò) 誤總是那幾種,多練習(xí)就熟練了。要善于查找資料提高自己的資料查詢能力, 要善于利用網(wǎng)絡(luò)來獲得知識(shí),獲 得幫助。開始著手程序設(shè)計(jì)時(shí),有

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論