簡(jiǎn)單計(jì)算器課程設(shè)計(jì)(附源代碼)_第1頁(yè)
簡(jiǎn)單計(jì)算器課程設(shè)計(jì)(附源代碼)_第2頁(yè)
簡(jiǎn)單計(jì)算器課程設(shè)計(jì)(附源代碼)_第3頁(yè)
簡(jiǎn)單計(jì)算器課程設(shè)計(jì)(附源代碼)_第4頁(yè)
簡(jiǎn)單計(jì)算器課程設(shè)計(jì)(附源代碼)_第5頁(yè)
已閱讀5頁(yè),還剩34頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

目錄一、需求分析11系統(tǒng)的基本要求 12數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)及用法說(shuō)明13功能模塊14流程圖25數(shù)據(jù)結(jié)構(gòu)36系統(tǒng)開(kāi)發(fā)3二、基本功能描述41設(shè)計(jì)思路42軟件設(shè)計(jì)7三、測(cè)試過(guò)程與結(jié)果15四、結(jié)論與心得體會(huì)16五、參考文獻(xiàn)17六、附錄17管理信息系統(tǒng)課程設(shè)計(jì)PAGE38簡(jiǎn)單計(jì)算器一.需求分析1.系統(tǒng)的基本要求1.算術(shù)運(yùn)算功能。能夠?qū)崿F(xiàn)+、-、*、/、mod、int運(yùn)算。2.函數(shù)運(yùn)算功能。能夠?qū)崿F(xiàn)exp、ln、sin、x^y、log、cos、x^3、n!、tan、x^2、1/x等運(yùn)算。3.進(jìn)制之間的轉(zhuǎn)換功能。能夠?qū)崿F(xiàn)十六、十、二、八進(jìn)制數(shù)據(jù)之間的轉(zhuǎn)換。4.通過(guò)鍵盤(pán)控制字符和數(shù)字的輸入。2.數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)及用法說(shuō)明此程序調(diào)用的函數(shù)主要有<math.h>/*數(shù)學(xué)函數(shù)的定義*/<conio.h>/*屏幕操作函數(shù)*/<stdio.h>/*I/O函數(shù)*/<stdlib.h>/*庫(kù)函數(shù)*/<stdarg.h>//<ctype.h>/*字符操作函數(shù)*/?;臼褂?用→←↑↓控制鼠標(biāo)圖形移動(dòng),當(dāng)*變量長(zhǎng)度參數(shù)表*/<graphics.h>/*圖形函數(shù)*/<string.h>/*字符串函數(shù)*移動(dòng)到相應(yīng)得按鈕時(shí)按回車(chē)鍵輸入當(dāng)前數(shù)字或執(zhí)行對(duì)應(yīng)的函數(shù)。加法:輸入一個(gè)被加數(shù)數(shù),按“+”,輸入被加數(shù),按“=”,輸出結(jié)果。乘法:輸入一個(gè)數(shù),按“*”,輸入另個(gè)數(shù),按“=”,輸出結(jié)果。除法:輸入一個(gè)被除數(shù),按“+”,輸入另個(gè)除數(shù),按“=”,輸出結(jié)果。求余:輸入一個(gè)數(shù),按“mod”,按“=”,輸出結(jié)果。取整:輸入一個(gè)數(shù),按“int”,按“=”,輸出結(jié)果。八進(jìn)制轉(zhuǎn)十進(jìn)制:輸入一個(gè)八進(jìn)制數(shù),按“10->8”,按“=”,輸出十進(jìn)制結(jié)果。十六進(jìn)制轉(zhuǎn)十進(jìn)制:輸入一個(gè)十六進(jìn)制數(shù),按下“jz”+“16->10”按“=”,輸出十進(jìn)制結(jié)果3.功能模塊鍵盤(pán)控制模塊:通過(guò)intspecialkey(void)和鍵盤(pán)來(lái)實(shí)現(xiàn)輸入數(shù)據(jù),操作方式的控制。計(jì)算模塊:通過(guò)調(diào)用math.h中的數(shù)學(xué)函數(shù),如:+、-、*、/、sin、cos、mod等來(lái)實(shí)現(xiàn)對(duì)result的賦值。輸出模塊:在指定位置輸出計(jì)算模塊中result的值,在指定位置輸出鍵盤(pán)控制模塊中對(duì)參量所賦的值以及在指定位置輸出鍵盤(pán)控制模塊中得到的運(yùn)算符。4.流程圖流程圖流程圖開(kāi)始輸入第一個(gè)數(shù)x輸入第二個(gè)數(shù)y+、-、*、/、x^y、log、等顯示結(jié)果結(jié)束mod、x^3、ln、exp、tan、cos、x^2、1/x、n!、sin、以及進(jìn)制轉(zhuǎn)換按“Esc”退出按“CE”清零5.數(shù)據(jù)結(jié)構(gòu)用到了if判斷語(yǔ)句,for循環(huán)語(yǔ)句,while語(yǔ)句,且主要通過(guò)while語(yǔ)句實(shí)現(xiàn)對(duì)鍵盤(pán)、光標(biāo)的操作和數(shù)據(jù)、運(yùn)算符的輸入,還用到了switch語(yǔ)句,switch語(yǔ)句的主要作用是實(shí)現(xiàn)對(duì)所輸入的數(shù)據(jù)的運(yùn)算操作,然后將運(yùn)算結(jié)果賦值給result,最后輸出。系統(tǒng)實(shí)現(xiàn)(開(kāi)發(fā)工具)VisualC++VisualC++6.0是Microsoft公司在1998年推出的基于Windows9X和WindowsNT的優(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)目文件。VisualC++6.0不僅包括編譯器,而且它還包括許多有用組件,通過(guò)這些組件的協(xié)同工作,可以在VisualC++6.0集成環(huán)境中輕松地完成創(chuàng)建源文件,編輯資源,以及對(duì)程序的編譯,連接和調(diào)試等各項(xiàng)工作。VC++6.0是Windows95/98、XP或WindowsNT下的一個(gè)應(yīng)用程序,本身對(duì)軟硬件沒(méi)有特殊要求。就是說(shuō)它對(duì)環(huán)境的要求與Windows95/98、WindowsNT要求是一致的。硬件要求:一般在586以上的處理器、16MB以上內(nèi)存、100MB以上的硬盤(pán)。軟件要求:Windows95/98或WindowsNT3.51以上版本。VC++6.0系統(tǒng)可以在一張CD盤(pán)上,也可以在“VisualStudio(VisualC++、VisualFoxpro)”等產(chǎn)品的第一張CD盤(pán)上。一般都有一個(gè)VC的自動(dòng)安裝程序,也可以執(zhí)行VC6目錄下的setup.exe,在安裝包的提示下進(jìn)行,對(duì)初學(xué)者可采用“典型安裝”方式。在安裝好VC6.0系統(tǒng)后,有時(shí)根據(jù)需要添加或刪除某些部件,可插入CD盤(pán)重新執(zhí)行setup.exe安裝程序,安裝程序會(huì)檢測(cè)當(dāng)前系統(tǒng)安裝VC6的足件,用戶單擊“添加/刪除”按鈕后,在“安裝維護(hù)”對(duì)話框中選定要添加的部件或撤消選定要?jiǎng)h除的部件。與一般的應(yīng)用軟件一樣,有以下兩種啟動(dòng)方式:(1)通過(guò)“開(kāi)始”按鈕,選擇“程序”菜單,然后打開(kāi)“MicrosoftVisualstudio6.0中文版”子菜單中的“MicrosoftVisualC++6.0中文版”程序。(2)用戶也可以使用命令行啟動(dòng)VC。單擊“開(kāi)始”按鈕后選擇“運(yùn)行”命令,在“運(yùn)行”對(duì)話框中輸入c:\ProgramFiles\MicrosoftVisualStudio\VC98\VC6.exe(按默認(rèn)盤(pán)符和路徑安裝)即可。二.基本功能描述簡(jiǎn)單計(jì)算器包括雙目運(yùn)算和單目運(yùn)算功能。雙目運(yùn)算符包含基本的四則運(yùn)算及乘冪功能,單目運(yùn)算符包含正余弦,階乘,對(duì)數(shù),開(kāi)方,倒數(shù)等運(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)。1設(shè)計(jì)思路如圖是整個(gè)計(jì)算器的流程圖,打開(kāi)計(jì)算器程序,輸入數(shù)據(jù),調(diào)用輸入數(shù)據(jù)子程序。子程序開(kāi)始時(shí)m_num為零。按下數(shù)字按鈕后,判斷m_num的正負(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)算則回到輸入完第一個(gè)操作數(shù)后,若不需要?jiǎng)t判斷試否需要開(kāi)始新一輪的運(yùn)算,不需要?jiǎng)t結(jié)束。NNNY鍵入一個(gè)數(shù)是否為正數(shù)?m_num=10*m_num+im_num=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ù)流程圖YY開(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軟件設(shè)計(jì)2.1設(shè)計(jì)步驟打開(kāi)MicrosoftVisualC++6.0,在文件中點(diǎn)擊新建,在彈出框內(nèi)選擇MFCAppWizard[exe]工程,輸入工程名zhoutong及其所在位置,點(diǎn)擊確定,如圖3所示。圖3新建MFCAppWizard[exe]工程將彈出MFCAppWizard-step1對(duì)話框,選擇基本對(duì)話框,點(diǎn)擊完成,如圖4所示。圖4基本對(duì)話框這樣,MFCAppWizard就建立了一個(gè)基于對(duì)話窗口的程序框架,如圖5所示。圖5新建的對(duì)話框2.2界面設(shè)計(jì)1、創(chuàng)建控件在圖5所示的ResoureView選項(xiàng)卡中打開(kāi)Dialog資源組,雙擊IDD_ZHOUTONG_DIALOG,在右邊的窗口中顯示出待編輯的對(duì)話框。開(kāi)始擺放控件,包括編輯框和按鈕的創(chuàng)建。按鈕的創(chuàng)建以“1”為例進(jìn)行介紹,其他按鈕的創(chuàng)建可參照此進(jìn)行操作。1)在圖5中Controls的“編輯框”按鈕上單擊鼠標(biāo)左鍵,在對(duì)話框編輯窗口上合適的位置按下鼠標(biāo)左鍵并拖動(dòng)鼠標(biāo)畫(huà)出一個(gè)大小合適的編輯框。在編輯框上單擊鼠標(biāo)右鍵,在彈出的快捷萊單中選擇屬性選項(xiàng),此時(shí)彈出Edit屬性對(duì)話框,如圖6所示,在該對(duì)話框中輸入ID屬性。圖6Edit屬性對(duì)話框2)在圖3中Controls的“Button”按鈕上單擊鼠標(biāo)左鍵,在對(duì)話框上的合適的位置上按下鼠標(biāo)左鍵并拖動(dòng)鼠標(biāo)畫(huà)出一個(gè)大小合適的下壓式按鈕。在按鈕上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇屬性選項(xiàng),此時(shí)也彈出PushButton屬性對(duì)話框,如圖7所示,在該對(duì)話框中輸入控件的ID值和標(biāo)題屬性。圖7PushButton屬性按照上面的操作過(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*按鈕IDC_devide/按鈕IDC_sqrtsqrt按鈕IDC_daoshu1/x按鈕IDC_jiechengn!按鈕IDC_lnln按鈕IDC_sinsin按鈕IDC_coscos按鈕IDC_powx^y按鈕IDC_Onequal=按鈕IDC_backspaceBackspace按鈕IDC_OnclearClear完成后界面如圖8所示。圖8計(jì)算器界面2、連接變量和代碼1)給編輯框連接變量。在編輯框上單擊鼠標(biāo)右鍵,在彈出菜單中選擇ClassWizard菜單項(xiàng),彈出MFCClassWizard對(duì)話框,選擇MemberVariables選項(xiàng)卡,如圖9所示。圖9MFCClassWizard對(duì)話框中的MenberVariable選項(xiàng)卡在ControlIDs列表框中選擇IDC_xianshi,單擊AddVariables按鈕,在彈出的對(duì)話框中連接變量m_num。變量類(lèi)型設(shè)定為doubel型。如圖10所示。圖10m_num屬性設(shè)置2)給“1”按鈕連接代碼。在“1”按鈕上單擊鼠標(biāo)右鍵,選擇ClassWizard菜單項(xiàng),在彈出的對(duì)話框中選擇MessagesMaps選項(xiàng)卡,然后在ObjectIDs列表框中選擇IDC_ADD_BUTTON,在Messages列表框中選擇BN_CLICKED項(xiàng),即選擇單擊按鈕事件,如圖11所示。圖11“1”按鈕鏈接代碼對(duì)話框3、菜單的設(shè)計(jì)選擇插入/資源命令,將顯示插入資源對(duì)話框。如圖12所示。選擇Menu,點(diǎn)擊新建即可。圖12插入資源對(duì)話框ResoureView選項(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命令,彈出DialogProperties對(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ù)字鍵按鈕,就把它累加到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).按下按鈕即可實(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),參見(jiàn)(6)。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ì)m_num執(zhí)行(dint-1)次乘以10運(yùn)算,然后取整,接著執(zhí)行(dint-1)次除以10的運(yùn)算即可。完成后需要把dint將減小1。5)正負(fù)號(hào)功能的實(shí)現(xiàn)在頭文件中定義一個(gè)BOOL型變量ele2來(lái)判斷m_num的正負(fù)。ele2=TRUE時(shí)表示為正。在鍵入操作數(shù)時(shí)需要用到ele2。在正負(fù)號(hào)按鈕的消息響應(yīng)函數(shù)內(nèi)容為m_num=-m_num;ele2=!ele2。6)連續(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ù)字鍵表示不需要連續(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=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)算。三.測(cè)試過(guò)程及結(jié)果1.輸入“90.5”,“-”,“60.7”,“+”,“2.36”,“=”,并在菜單中同樣輸入這組操作,均得到結(jié)果如圖16。圖16結(jié)果圖1結(jié)果正確,證明可以實(shí)現(xiàn)雙目運(yùn)算符的連續(xù)運(yùn)算,菜單功能正常。2.輸入“901”,“+/-”,“backspace”,“+”,“120”,“sin”,結(jié)果如圖17.圖17結(jié)果圖2因?yàn)棣腥〉氖?.1415926,因此與0.5有小小偏差,認(rèn)為結(jié)果正確。證明可以實(shí)現(xiàn)單目運(yùn)算符的連續(xù)運(yùn)算與backspace回格功能。3.輸入“0”,“l(fā)n”,結(jié)果如圖18.結(jié)果圖18證明錯(cuò)誤提示功能實(shí)現(xiàn)正常。四.結(jié)論與心得體會(huì)經(jīng)過(guò)多番測(cè)試,得出結(jié)論為設(shè)計(jì)的計(jì)算器能夠完成功能描述內(nèi)容中的全部功能。經(jīng)過(guò)3個(gè)星期的VC++課程\o"plash笑話之霸王別雞篇@foho.cc"設(shè)計(jì),我在老師和同學(xué)的共同幫助下,順利完成該課程設(shè)計(jì),收獲很大。我們已經(jīng)學(xué)習(xí)了《C++課程設(shè)計(jì)》和《數(shù)據(jù)結(jié)構(gòu)》,對(duì)老師所講的知識(shí)也有了很大的認(rèn)識(shí)。正所謂“紙上談兵終覺(jué)淺,覺(jué)知此事要躬行?!彼栽诒緦W(xué)期課程設(shè)計(jì)是很及時(shí)、很必要的。這樣不僅能加深我們對(duì)程序設(shè)計(jì)的掌握,而且還及時(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)解決。只有這樣才能糾正程序的不足并使其更加人性化。這次課程設(shè)計(jì)讓我學(xué)到了很多,不僅是鞏固了先前學(xué)的程序設(shè)計(jì)知識(shí),而且也培養(yǎng)了我的動(dòng)手能力,更令我的創(chuàng)造性思維得到拓展。希望今后類(lèi)似這樣課程設(shè)計(jì)、類(lèi)似這樣的鍛煉機(jī)會(huì)能更多些!五.參考文獻(xiàn)[1]揣錦華.面向?qū)ο蟪绦蛟O(shè)計(jì)與VC++實(shí)踐.西安電子科技大學(xué)出版社,2005[2]張建宏,湯練兵,馬德駿.計(jì)算機(jī)程序設(shè)計(jì)基礎(chǔ)-C語(yǔ)言程序設(shè)計(jì).科學(xué)出版社,2006[3]陳清華.VisualC++課程設(shè)計(jì)案例精選與編程指導(dǎo).東南大學(xué)出版社,2004六.附錄源代碼#include"stdafx.h"#include<windows.h>#include<windowsx.h>#include"resource.h"#include"MainDlg.h"doublenum,numtmp;TCHARresult[256],numstr[256];intsel;BOOLWINAPIMain_Proc(HWNDhWnd,UINTuMsg,WPARAMwParam,LPARAMlParam){switch(uMsg){HANDLE_MSG(hWnd,WM_INITDIALOG,Main_OnInitDialog);HANDLE_MSG(hWnd,WM_COMMAND,Main_OnCommand); HANDLE_MSG(hWnd,WM_CLOSE,Main_OnClose);}returnFALSE;}BOOLMain_OnInitDialog(HWNDhwnd,HWNDhwndFocus,LPARAMlParam){ ZeroMemory(result,sizeof(result)/sizeof(TCHAR)); ZeroMemory(numstr,sizeof(numstr)/sizeof(TCHAR)); SetDlgItemText(hwnd,IDC_EDIT1,TEXT("0"));returnTRUE;}voidMain_OnCommand(HWNDhwnd,intid,HWNDhwndCtl,UINTcodeNotify){switch(id){ TCHARcontent[256]; ZeroMemory(content,sizeof(content)/sizeof(TCHAR)); caseID_MENUITEMCOPY: { strncpy(content,result,sizeof(result)); //GetDlgItemText(hwnd,IDC_EDIT1,content,sizeof(content)); }break; caseID_MENUITEMPOST: { SetDlgItemText(hwnd,IDC_EDIT1,content); } break;caseIDC_BIN0://輸入數(shù)字‘0’ { strcat(result,"0"); SetDlgItemText(hwnd,IDC_EDIT1,result); }break; caseIDC_BIN1://輸入數(shù)字‘1’ { strcat(result,"1"); SetDlgItemText(hwnd,IDC_EDIT1,result); }break; caseIDC_BIN2://輸入數(shù)字‘2’ { strcat(result,"2"); SetDlgItemText(hwnd,IDC_EDIT1,result); } break; caseIDC_BIN3://輸入數(shù)字‘3’ { strcat(result,"3"); SetDlgItemText(hwnd,IDC_EDIT1,result); } break; caseIDC_BIN4://輸入數(shù)字‘4’ { strcat(result,"4"); SetDlgItemText(hwnd,IDC_EDIT1,result); } break; caseIDC_BIN5://輸入數(shù)字‘5’ { strcat(result,"5"); SetDlgItemText(hwnd,IDC_EDIT1,result); } break; caseIDC_BIN6://輸入數(shù)字‘6’ { strcat(result,"6"); SetDlgItemText(hwnd,IDC_EDIT1,result); } break; caseIDC_BIN7://輸入數(shù)字‘7’ { strcat(result,"7"); SetDlgItemText(hwnd,IDC_EDIT1,result); }break; caseIDC_BIN8://輸入數(shù)字‘8’ { strcat(result,"8"); SetDlgItemText(hwnd,IDC_EDIT1,result); } break; caseIDC_BIN9://輸入數(shù)字‘9’ { strcat(result,"9"); SetDlgItemText(hwnd,IDC_EDIT1,result); } break; caseIDC_BINPORT://輸入. { if(strchr(result,'.')==NULL) { strcat(result,"."); SetDlgItemText(hwnd,IDC_EDIT1,result); } } break; caseIDC_BINB://退格 { TCHARresulttmp[256]; strcpy(resulttmp,result); ZeroMemory(result,sizeof(result)/sizeof(TCHAR)); if(strlen(resulttmp)-1==0) { SetDlgItemText(hwnd,IDC_EDIT1,TEXT("0")); break; } strncpy(result,resulttmp,strlen(resulttmp)-1); ZeroMemory(resulttmp,sizeof(resulttmp)/sizeof(TCHAR)); SetDlgItemText(hwnd,IDC_EDIT1,result); } break;caseIDC_BINC://清零 { SetDlgItemText(hwnd,IDC_EDIT1,TEXT("0")); ZeroMemory(result,sizeof(result)/sizeof(TCHAR)); ZeroMemory(numstr,sizeof(numstr)/sizeof(TCHAR)); sel=0; } break; caseIDC_BINEQU://=運(yùn)算 { Main_Count(hwnd); sel=0; }break;caseIDC_BINF://+/-號(hào)運(yùn)算 { sel=1; Main_Count(hwnd); }break; caseIDC_BINADD://+運(yùn)算 { Main_Count(hwnd); sel=2; }break; caseIDC_BINSUB://-運(yùn)算 { Main_Count(hwnd); sel=3; }break; caseIDC_BINMUL://*運(yùn)算 { Main_Count(hwnd); sel=4; }break; caseIDC_BINDIV:///運(yùn)算 { Main_Count(hwnd); sel=5; }break; caseIDC_BINSQU://平方運(yùn)算 { sel=6; Main_Count(hwnd); }break; caseIDC_BINSQRT://平方根運(yùn)算 { sel=7; Main_Count(hwnd); }break; caseIDC_BINSIN://sin運(yùn)算 { sel=8; Main_Count(hwnd); }break; caseIDC_BINASIN://acsin運(yùn)算 { sel=9; Main_Count(hwnd); }break; caseIDC_BINCOS://cos運(yùn)算 { sel=10; Main_Count(hwnd); }break; caseIDC_BINACOS://accos運(yùn)算 { sel=11; Main_Count(hwnd); }break; caseIDC_BINLN://ln運(yùn)算 { sel=12; Main_Count(hwnd); }break; caseIDC_BINEXP://e指數(shù)運(yùn)算 { sel=13; Main_Count(hwnd); }break; caseIDC_BIND://=運(yùn)算 { sel=14; Main_Count(hwnd); }break; default: break;}}voidMain_Count(HWNDhwnd){ num=atof(result); ZeroMemory(result,sizeof(result)/sizeof(TCHAR)); switch(sel) { case1: { numtmp=-num; gcvt(numtmp,10,numstr); ZeroMemory(result,sizeof(result)/sizeof(TCHAR)); SetDlgItemText(hwnd,IDC_EDIT1,numstr); } break; case2: { numtmp+=num; gcvt(numtmp,10,numstr); ZeroMemory(result,sizeof(result)/sizeof(TCHAR)); SetDlgItemText(hwnd,IDC_EDIT1,numstr); } break; case3: { numtmp-=num; gcvt(numtmp,10,numstr); ZeroMemory(result,sizeof(result)/sizeof(TCHAR)); SetDlgItemText(hwnd,IDC_EDIT1,numstr); } break; case4: { numtmp*=num; gcvt(numtmp,10,numstr); ZeroMemory(result,sizeof(result)/sizeof(TCHAR)); SetDlgItemText(hwnd,IDC_EDIT1,numstr); } break; case5: { if(num!=0) { numtmp/=num; gcvt(numtmp,10,numstr); ZeroMemory(result,sizeof(result)/sizeof(TCHAR)); SetDlgItemText(hwnd,IDC_EDIT1,numstr); } else { SetDlgItemText(hwnd,IDC_EDIT1,TEXT("除數(shù)不能為0!")); } } break; case6: { numtmp=pow(num,2); gcvt(numtmp,10,numstr); ZeroMemory(result,sizeof(result)/sizeof(TCHAR)); SetDlgItemText(hwnd,IDC_EDIT1,numstr); } break; case7: { numtmp=sqrt(num); gcvt(numtmp,10,numstr); ZeroMemory(result,sizeof(result)/sizeof(TCHAR));

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論