




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、設(shè)計(jì)題目:MFC多功能計(jì)算器一系統(tǒng)實(shí)現(xiàn)(開(kāi)發(fā)工具) Visual C+6.0 是Microsoft公司在1998年推出的基于Windows 9X和Windows NT的優(yōu)秀集成開(kāi)發(fā)環(huán)境。該環(huán)境為用戶提供了良好的可視化編程環(huán)境,程序員可以里利用該開(kāi)發(fā)環(huán)境輕松地訪問(wèn)C+源代碼編輯器,資源編輯器和使用內(nèi)部調(diào)試器,并且可以創(chuàng)建項(xiàng)目文件。Visual C+6.0不僅包括編譯器,而且它還包括許多有用組件,通過(guò)這些組件的協(xié)同工作,可以在Visual C+6.0集成環(huán)境中輕松地完成創(chuàng)建源文件,編輯資源,以及對(duì)程序的編譯,連接和調(diào)試等各項(xiàng)工作。VC+6.0是Windows 95/98、XP或Windows NT
2、下的一個(gè)應(yīng)用程序,本身對(duì)軟硬件沒(méi)有特殊要求。就是說(shuō)它對(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,在安裝包的提示下進(jìn)行,對(duì)初學(xué)者可采用“典型安裝”方式。在安裝好VC 6.0系統(tǒng)后,有時(shí)根據(jù)需
3、要添加或刪除某些部件,可插入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ù),開(kāi)方,進(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í)包含清除,退格,退出功能以及有與所有按鈕相對(duì)應(yīng)的菜單項(xiàng)。2.1 設(shè)計(jì)思路如圖是整個(gè)計(jì)算器的流程圖,打開(kāi)計(jì)算器程序,輸入數(shù)據(jù),調(diào)用輸入數(shù)據(jù)子程序。
4、子程序開(kāi)始時(shí)m_num為零。按下數(shù)字按鈕后,判斷m_num的正負(fù)號(hào),對(duì)其進(jìn)行相關(guān)處理,然后在判斷是否有小數(shù)點(diǎn),處理后輸出結(jié)果。回到總流程圖中,輸完第一個(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)算則回到輸入完第一個(gè)操作數(shù)后,若不需要?jiǎng)t判斷試否需要開(kāi)始新一輪的運(yùn)算,不需要?jiǎng)t結(jié)束NNY鍵入一個(gè)數(shù)是否為正數(shù)?m_num =10*m_num+im_n
5、um =10*m_num-i是否為小數(shù)?用UpdateData(FALSE)刷新顯示還原m_num根據(jù)小數(shù)點(diǎn)后位數(shù)將鍵入的數(shù)除以n次10累加到m_numYN繼續(xù)鍵入數(shù)字?Y輸入數(shù)據(jù)子函數(shù)編輯框關(guān)聯(lián)變量m_num=0圖1 輸入數(shù)據(jù)子函數(shù)流程圖Y開(kāi)始輸入數(shù)據(jù)子函數(shù)編輯框關(guān)聯(lián)的變量保存至num2輸入數(shù)據(jù)子函數(shù)進(jìn)行運(yùn)算運(yùn)算是否合法把結(jié)果保存到num2m_num清零彈出對(duì)話框顯示ERRORNY是否用保存的結(jié)果繼續(xù)進(jìn)行運(yùn)算N結(jié)束jie雙目運(yùn)算符單目運(yùn)算符是否開(kāi)始新一輪的計(jì)算YN圖2 簡(jiǎn)單計(jì)算器總流程圖2.2 軟件設(shè)計(jì)(1)設(shè)計(jì)步驟打開(kāi)Microsoft Visual C+ 6.0,在文件中點(diǎn)擊新建,在彈出
6、框內(nèi)選擇MFC AppWizardexe工程,輸入工程名zhoutong及其所在位置,點(diǎn)擊確定,如圖3所示。 圖3 新建MFC AppWizardexe工程將彈出MFC AppWizard-step 1對(duì)話框,選擇基本對(duì)話框,點(diǎn)擊完成,如圖4所示。圖4 基本對(duì)話框這樣,MFC AppWizard就建立了一個(gè)基于對(duì)話窗口的程序框架,如圖5所示。圖5 新建的對(duì)話框(2)界面設(shè)計(jì)1、創(chuàng)建控件在圖5所示的Resoure View選項(xiàng)卡中打開(kāi)Dialog資源組,雙擊IDD_ZHOUTONG_DIALOG,在右邊的窗口中顯示出待編輯的對(duì)話框。開(kāi)始擺放控件,包括編輯框和按鈕的創(chuàng)建。按鈕的創(chuàng)建以“1”為例進(jìn)行
7、介紹,其他按鈕的創(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)右鍵,在彈出的快捷菜單中選擇屬性選項(xiàng),此時(shí)也彈出Push Button屬性對(duì)話框,如圖7所示,在該對(duì)話框中輸入控件的ID
8、值和標(biāo)題屬性。圖7 Push Button屬性按照上面的操作過(guò)程編輯其他按鈕和編輯框等對(duì)象的屬性。表1 各按鈕和編輯框等對(duì)象的屬性對(duì)象ID標(biāo)題或說(shuō)明編輯框IDC_xianshi結(jié)果顯示按鈕IDC_BUTTON00按鈕IDC_BUTTON11按鈕IDC_BUTTON22按鈕IDC_BUTTON33按鈕IDC_BUTTON44按鈕IDC_BUTTON55按鈕IDC_BUTTON66按鈕IDC_BUTTON77按鈕IDC_BUTTON88按鈕IDC_BUTTON99按鈕IDC_change+/-按鈕IDC_point.按鈕IDC_add+按鈕IDC_difference-按鈕IDC_multiply
9、*按鈕IDC_devide/按鈕IDC_sqrtsqrt按鈕IDC_lnln按鈕IDC_sinsin按鈕IDC_coscos按鈕IDC_powxy按鈕IDC_Onequal=按鈕IDC_backspace退格按鈕IDC_Onclear清零完成后界面如圖8所示。圖8 計(jì)算器界面(3)連接變量和代碼1) 給編輯框連接變量。在編輯框上單擊鼠標(biāo)右鍵,在彈出菜單中選擇ClassWizard菜單項(xiàng),彈出MFC ClassWizard對(duì)話框,選擇Member Variables選項(xiàng)卡,如圖9所示。 圖9 MFC ClassWizard對(duì)話框中的Menber Variable選項(xiàng)卡在Control IDs列表
10、框中選擇IDC_xianshi,單擊Add Variables按鈕,在彈出的對(duì)話框中連接變量m_num。變量類型設(shè)定為doubel型。如圖10所示。圖10 m_num屬性設(shè)置2) 給“1”按鈕連接代碼。在“1”按鈕上單擊鼠標(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,點(diǎn)擊
11、新建即可。圖12 插入資源對(duì)話框Resoure View選項(xiàng)卡中打開(kāi)Menu資源組,雙擊IDR_MENU1, 然后給菜單添加相應(yīng)的標(biāo)題,并把每個(gè)菜單對(duì)應(yīng)的ID值與相應(yīng)的按鈕的一致。如圖13所示。圖13 菜單屬性對(duì)話框在對(duì)話框的任何一個(gè)空白域單擊鼠標(biāo)右鍵,然后在彈出的快捷菜單中選擇Properties命令,彈出Dialog Properties對(duì)話框,如圖14。在對(duì)話框中的菜單組合框中選擇IDR_MENU1。圖14 對(duì)話屬性對(duì)話框最終的得到的界面如圖15。圖15 計(jì)算器完整界面2.3 關(guān)鍵功能的實(shí)現(xiàn)1)操作數(shù)的輸入編輯框所關(guān)聯(lián)的變量為m_num,程序開(kāi)始時(shí)為零。每按下一個(gè)數(shù)字鍵按鈕,就把它累加到
12、m_num里并刷新顯示。BOOL型變量ele來(lái)判斷是否有小數(shù)點(diǎn)和一個(gè)整型數(shù)dint來(lái)表示小數(shù)點(diǎn)后的數(shù)據(jù)的位數(shù)。當(dāng)ele=TRUE時(shí),表示有小數(shù)點(diǎn),否則則表示無(wú)小數(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,dint則為此次鍵入的數(shù)所處的位數(shù),將鍵入的數(shù)除以dint個(gè)10然后累加到編輯框所關(guān)聯(lián)的變量m_num上,若沒(méi)有則把m_num乘以10,然后累加到編輯框所關(guān)聯(lián)的變量m_num上。2)單目運(yùn)算符功能的實(shí)現(xiàn)由于單目運(yùn)算符中必須有執(zhí)行運(yùn)算的函數(shù),因而頭文件中要加入math.h,如m_num=sqrt(m_num).按
13、下按鈕即可實(shí)現(xiàn)其功能。為實(shí)現(xiàn)連續(xù)運(yùn)算,程序有所改動(dòng),參見(jiàn)(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ǔ)句來(lái)匹配addt值來(lái)判斷需要執(zhí)行何種雙目運(yùn)算。為實(shí)現(xiàn)連續(xù)運(yùn)算,程序有所改動(dòng)。 4)退格鍵功能的實(shí)現(xiàn)當(dāng)按下一次退格按鈕時(shí),若m_num為整數(shù),只需對(duì)其中數(shù)據(jù)除以10再取整即可,若按下一次退格按鈕為小數(shù),則根據(jù)小數(shù)點(diǎn)后數(shù)據(jù)的位數(shù)dint進(jìn)行操作,先對(duì)
14、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é)果保存下來(lái)。對(duì)于雙目運(yùn)算符:首先在等號(hào)按鈕的消息處理函數(shù)中在m_num清零之前將m_num的值賦給num2.不過(guò)這樣的話如果再按雙目運(yùn)算符則num2的值將會(huì)被覆蓋,于是在雙目運(yùn)算符按鈕的消息處理函數(shù)中將“num2=m_num;”改為“if(m_num!=0)num2=m_num;”.這樣若已經(jīng)保存了結(jié)果則不進(jìn)行覆蓋。然后在每個(gè)數(shù)字按鈕前加上“if(addt=0)num2=0;”,這樣如果進(jìn)行完一次運(yùn)算之后按下任一數(shù)
15、字鍵表示不需要連續(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)算。以開(kāi)根號(hào)為例,在消息處理函數(shù)代碼中將“m_num=sqrt(m_num);”改為“num2=m_num;m_num=sqrt(num2); num2=m_num;”。但是第一次運(yùn)算執(zhí)行完成之后m_num被清零,所以之后將m_num 的值不能賦給num2,代碼改為 “if(m_num>=0)m_num=sqrt(num2); num2=
16、m_num;”。其他單目運(yùn)算符同理。為實(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)算。三. 結(jié)論與心得體會(huì)經(jīng)過(guò)多番測(cè)試,得出結(jié)論為設(shè)計(jì)的計(jì)算器能夠完成功能描述內(nèi)容中的全部功能。經(jīng)過(guò)2個(gè)星期的VC+課程設(shè)計(jì),我在老師和同學(xué)的共同幫助下,順利完成該課程設(shè)計(jì),收獲很大。正所謂“紙上談兵終覺(jué)淺,覺(jué)知此事要躬行。”所以在本學(xué)期課程設(shè)計(jì)是很及時(shí)、很必要的。這樣不僅能加深我們對(duì)程序設(shè)計(jì)的掌握,而
17、且還及時(shí)、真正的做到了學(xué)以致用。主要是以下幾點(diǎn)?;竟σ^(guò)硬。不能馬虎經(jīng)常犯犯小錯(cuò)誤。提高自己找錯(cuò)糾錯(cuò)能力,通常錯(cuò)誤總是那幾種,多練習(xí)就熟練了。要善于查找資料提高自己的資料查詢能力,要善于利用網(wǎng)絡(luò)來(lái)獲得知識(shí),獲得幫助。開(kāi)始著手程序設(shè)計(jì)時(shí),有些功能感覺(jué)無(wú)從下手,都不知道要干什么。這些問(wèn)題只要找到相關(guān)的資料就會(huì)得到提示從而理解所要解決問(wèn)題的大致方向。有了明確的目的,就可以發(fā)揮自己的頭腦來(lái)完成它了。要善于思考。程序中有些實(shí)現(xiàn)難點(diǎn)和最初完成程序時(shí)免不了的許多不足就需要自己根據(jù)代碼認(rèn)真思考來(lái)解決。只有這樣才能糾正程序的不足并使其更加人性化。 通過(guò)本次課程設(shè)計(jì),培養(yǎng)了我獨(dú)立思考,綜合運(yùn)用所學(xué)有關(guān)知識(shí)的能力,使我更好地鞏固c語(yǔ)言程序設(shè)計(jì)這門課程,學(xué)會(huì)熟練運(yùn)用Visual c+ 6.0,同時(shí)強(qiáng)化了我的動(dòng)手編程能力,掌握了基本的程序設(shè)計(jì)過(guò)程及技巧。更重要的是我掌握了基于MFC設(shè)計(jì)界面的方法。 參考文獻(xiàn)1 黃明等.21世紀(jì)進(jìn)階輔導(dǎo) C語(yǔ)言程序設(shè)計(jì).大連理工大學(xué)出版社,20052 馬靖善等.C語(yǔ)言程序設(shè)計(jì).清華大學(xué)出版社,20053 譚浩強(qiáng).C語(yǔ)言程序設(shè)計(jì)(第二版).北京:高等教育出版社,20024 張毅坤等.
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 第三章 物態(tài)變化第4節(jié) 升華和凝華(教學(xué)設(shè)計(jì))-2024-2025學(xué)年人教版物理八年級(jí)上冊(cè)
- 第14課 明至清中葉的經(jīng)濟(jì)與文化 教學(xué)設(shè)計(jì) -2024-2025學(xué)年高一統(tǒng)編版2019必修中外歷史綱要上冊(cè)
- 《紅樓夢(mèng)》語(yǔ)言品讀鑒賞 教學(xué)設(shè)計(jì) 2023-2024學(xué)年統(tǒng)編版高中語(yǔ)文必修下冊(cè)
- 2025至2030年中國(guó)柜員機(jī)燈箱數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 第八章走進(jìn)國(guó)家第三節(jié)俄羅斯(第2課時(shí))教學(xué)設(shè)計(jì)-2023-2024學(xué)年下學(xué)期七年級(jí)下冊(cè)同步課堂系列(湘教版)
- 2025至2030年中國(guó)無(wú)釘釘書機(jī)數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 萬(wàn)兆網(wǎng)絡(luò)的市場(chǎng)規(guī)模預(yù)測(cè)
- 《10000 以內(nèi)數(shù)的認(rèn)識(shí)》教學(xué)設(shè)計(jì)-2023-2024學(xué)年二年級(jí)下冊(cè)數(shù)學(xué)人教版
- 輸電線路遷改項(xiàng)目區(qū)域環(huán)境分析
- 14 天文學(xué)上的曠世之爭(zhēng)(教學(xué)設(shè)計(jì))-2024-2025學(xué)年高二語(yǔ)文選擇性必修下冊(cè)同步備課系列(教學(xué)設(shè)計(jì)+教學(xué)設(shè)計(jì))(統(tǒng)編版2019)
- 《護(hù)患溝通》課件
- 2024-2025學(xué)年新教材高中化學(xué) 第三章 鐵 金屬材料 2.1 合金說(shuō)課稿 新人教版必修1
- 《籃球防守腳步移動(dòng)技術(shù) 滑步》教案
- 完整版項(xiàng)目部組織機(jī)構(gòu)圖
- 浙江省杭州市2023-2024學(xué)年七年級(jí)上學(xué)期期末考試數(shù)學(xué)試題(含答案)
- 人工智能客服機(jī)器人使用手冊(cè)
- 品牌全球化體育營(yíng)銷趨勢(shì)洞察報(bào)告 2024
- (新版)拖拉機(jī)駕駛證科目一知識(shí)考試題庫(kù)500題(含答案)
- (人衛(wèi)版第九版?zhèn)魅静W(xué)總論(一))課件
- 工業(yè)機(jī)器人仿真與離線編程項(xiàng)目-8-KUKA-Sim-Pro-軟件的介紹及基本操作
- 第2課++生涯規(guī)劃+筑夢(mèng)未來(lái)(課時(shí)2)【中職專用】中職思想政治《心理健康與職業(yè)生涯》高效課堂 (高教版基礎(chǔ)模塊)
評(píng)論
0/150
提交評(píng)論