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

下載本文檔

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

文檔簡介

1、<p><b>  目錄</b></p><p>  一、需求分析....................................................................................................................................1</p><p>  1 系

2、統(tǒng)的基本要求...........................................................................................................1</p><p>  2 數(shù)據(jù)結(jié)構(gòu)設(shè)計及用法說明.....................................................................

3、.....................................1</p><p>  3 功能模塊......................................................................................................................................1</p><p&

4、gt;  4 流程圖..........................................................................................................................................2</p><p>  5 數(shù)據(jù)結(jié)構(gòu)..........................................

5、............................................................................................3</p><p>  6 系統(tǒng)開發(fā)..................................................................................................

6、....................................3</p><p>  二、基本功能描述............................................................................................................................4</p><p>  1 設(shè)計

7、思路......................................................................................................................................4</p><p>  2 軟件設(shè)計......................................................

8、................................................................................7</p><p>  三、測試過程與結(jié)果...........................................................................................................

9、............15</p><p>  四、結(jié)論與心得體會.......................................................................................................................16</p><p>  五、參考文獻........................

10、...........................................................................................................17</p><p>  六、附錄....................................................................................

11、.......................................................17</p><p><b>  簡單計算器</b></p><p><b>  一.需求分析</b></p><p><b>  1.系統(tǒng)的基本要求</b></p><p

12、>  1. 算術(shù)運算功能。能夠?qū)崿F(xiàn)+、-、*、/、mod、int運算。</p><p>  2. 函數(shù)運算功能。能夠?qū)崿F(xiàn)exp、ln、sin、x^y、log、cos、x^3、n!、tan、x^2、1/x等運算。</p><p>  3. 進制之間的轉(zhuǎn)換功能。能夠?qū)崿F(xiàn)十六、十、二、八進制數(shù)據(jù)之間的轉(zhuǎn)換。</p><p>  4.通過鍵盤控制字符和數(shù)字的輸入。&l

13、t;/p><p>  2.數(shù)據(jù)結(jié)構(gòu)設(shè)計及用法說明</p><p>  此程序調(diào)用的函數(shù)主要有<math.h> /*數(shù)學(xué)函數(shù)的定義*/<conio.h> /*屏幕操作函數(shù)*/<stdio.h> /*I/O函數(shù)*/<stdlib.h> /*庫函數(shù)*/<stdarg.h> //<ctype.h> /*字符操作函數(shù)*

14、/?;臼褂?用→←↑↓控制鼠標(biāo)圖形移動,當(dāng)*變量長度參數(shù)表*/<graphics.h> /*圖形函數(shù)*/<string.h> /*字符串函數(shù)*移動到相應(yīng)得按鈕時按回車鍵輸入當(dāng)前數(shù)字或執(zhí)行對應(yīng)的函數(shù)。</p><p>  加法:輸入一個被加數(shù)數(shù),按“+”,輸入被加數(shù),按“=”,輸出結(jié)果。</p><p>  乘法: 輸入一個數(shù),按“*”,輸入另個數(shù),按“=”,輸

15、出結(jié)果。</p><p>  除法: 輸入一個被除數(shù),按“+”,輸入另個除數(shù),按“=”,輸出結(jié)果。</p><p>  求余:輸入一個數(shù),按“mod”,按“=”,輸出結(jié)果。</p><p>  取整:輸入一個數(shù),按“int”,按“=”,輸出結(jié)果。</p><p>  八進制轉(zhuǎn)十進制:輸入一個八進制數(shù),按“10->8”,按“=”,輸出十進

16、制結(jié)果。</p><p>  十六進制轉(zhuǎn)十進制:輸入一個十六進制數(shù),按下“jz”+“16- >10” 按“=”,輸出十進制結(jié)果</p><p><b>  3.功能模塊</b></p><p>  鍵盤控制模塊:通過int specialkey(void)和鍵盤來實現(xiàn)輸入數(shù)據(jù),操作方式的控制。</p><p>  

17、計算模塊:通過調(diào)用math.h中的數(shù)學(xué)函數(shù),如:+、-、*、/、sin、cos、mod等來實現(xiàn)對result的賦值。</p><p>  輸出模塊:在指定位置輸出計算模塊中result的值,在指定位置輸出鍵盤控制模塊中對參量所賦的值以及在指定位置輸出鍵盤控制模塊中得到的運算符。</p><p><b>  4.流程圖</b></p><p>&

18、lt;b>  5.數(shù)據(jù)結(jié)構(gòu)</b></p><p>  用到了if判斷語句,for循環(huán)語句,while語句,且主要通過while語句實現(xiàn)對鍵盤、光標(biāo)的操作和數(shù)據(jù)、運算符的輸入,還用到了switch語句,switch語句的主要作用是實現(xiàn)對所輸入的數(shù)據(jù)的運算操作,然后將運算結(jié)果賦值給result,最后輸出。</p><p>  系統(tǒng)實現(xiàn)(開發(fā)工具)</p>&l

19、t;p>  Visual C++</p><p>  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)建項目文件。Visual C++6.0不僅包括編譯器,而且它還包括許多有用組件,通過這

20、些組件的協(xié)同工作,可以在Visual C++6.0集成環(huán)境中輕松地完成創(chuàng)建源文件,編輯資源,以及對程序的編譯,連接和調(diào)試等各項工作。</p><p>  VC++6.0是Windows 95/98、XP或Windows NT下的一個應(yīng)用程序,本身對軟硬件沒有特殊要求。就是說它對環(huán)境的要求與Windows 95/98、Windows NT要求是一致的。</p><p>  硬件要求:一般在5

21、86以上的處理器、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)”等產(chǎn)品的第一張CD盤上。一般都有一個VC的自動安裝程序,也可以執(zhí)行VC6目錄下的s

22、etup.exe,在安裝包的提示下進行,對初學(xué)者可采用“典型安裝”方式。</p><p>  在安裝好VC 6.0系統(tǒng)后,有時根據(jù)需要添加或刪除某些部件,可插入CD盤重新執(zhí)行setup.exe安裝程序,安裝程序會檢測當(dāng)前系統(tǒng)安裝VC6的足件,用戶單擊“添加/刪除”按鈕后,在“安裝維護”對話框中選定要添加的部件或撤消選定要刪除的部件。</p><p>  與一般的應(yīng)用軟件一樣,有以下兩種啟動

23、方式:</p><p>  (1)通過“開始”按鈕,選擇“程序”菜單,然后打開“Microsoft Visual studio 6.0中文版”子菜單中的“Microsoft Visual C++ 6.0 中文版”程序。</p><p>  (2)用戶也可以使用命令行啟動VC。單擊“開始”按鈕后選擇“運行”命令,在“運行”對話框中輸入c:\Program Files\Microsoft Vi

24、sual Studio\VC98\VC6.exe(按默認(rèn)盤符和路徑安裝)即可。</p><p><b>  二.基本功能描述</b></p><p>  簡單計算器包括雙目運算和單目運算功能。雙目運算符包含基本的四則運算及乘冪功能,單目運算符包含正余弦,階乘,對數(shù),開方,倒數(shù)等運算??蓪斎肴我獠僮鲾?shù),包括 小數(shù)和整數(shù)及正數(shù)和負數(shù)進行以上的所有運算并能連續(xù)運算。出現(xiàn)錯

25、誤會給出相應(yīng)提示,同時包含清除,退格,退出功能以及有與所有按鈕相對應(yīng)的菜單項。</p><p><b>  1 設(shè)計思路</b></p><p>  如圖是整個計算器的流程圖,打開計算器程序,輸入數(shù)據(jù),調(diào)用輸入數(shù)據(jù)子程序。子程序開始時m_num為零。按下數(shù)字按鈕后,判斷m_num的正負號,對其進行相關(guān)處理,然后在判斷是否有小數(shù)點,處理后輸出結(jié)果。</p>

26、<p>  回到總流程圖中,輸完第一個操作數(shù)后,若按下雙目運算符,則把m_num存入num2,按下輸入第二個操作數(shù)并算出結(jié)果。若按下的是單目運算符,則直接對其處理得出結(jié)果。若按下清零,則m_num等于0.在運算中還要判斷運算是否合法,以及結(jié)果是否超出顯示范圍,以做出相關(guān)提示,按下清零。算出后把結(jié)果保存至num2。若需用算出的結(jié)果繼續(xù)運算則回到輸入完第一個操作數(shù)后,若不需要則判斷試否需要開始新一輪的運算,不需要則結(jié)束。<

27、/p><p>  圖1 輸入數(shù)據(jù)子函數(shù)流程圖</p><p>  圖2 簡單計算器總流程圖</p><p><b>  2 軟件設(shè)計</b></p><p><b>  2.1 設(shè)計步驟</b></p><p>  打開Microsoft Visual C++ 6.0,在文件中點

28、擊新建,在彈出框內(nèi)選擇MFC AppWizard[exe]工程,輸入工程名zhoutong及其所在位置,點擊確定,如圖3所示。 </p><p>  圖3 新建MFC AppWizard[exe]工程</p><p>  將彈出MFC AppWizard-step 1對話框,選擇基本對話框,點擊完成,如圖4所示。</p><p><b>  圖4

29、基本對話框</b></p><p>  這樣,MFC AppWizard就建立了一個基于對話窗口的程序框架,如圖5所示。</p><p><b>  圖5 新建的對話框</b></p><p><b>  2.2 界面設(shè)計</b></p><p><b>  1、創(chuàng)建控件<

30、;/b></p><p>  在圖5所示的Resoure View選項卡中打開Dialog資源組,雙擊IDD_ZHOUTONG_DIALOG,在右邊的窗口中顯示出待編輯的對話框。開始擺放控件,包括編輯框和按鈕的創(chuàng)建。按鈕的創(chuàng)建以“1”為例進行介紹,其他按鈕的創(chuàng)建可參照此進行操作。</p><p>  1)在圖5中Controls的“編輯框”按鈕上單擊鼠標(biāo)左鍵,在對話框編輯窗口上合適的

31、位置按下鼠標(biāo)左鍵并拖動鼠標(biāo)畫出一個大小合適的編輯框。在編輯框上單擊鼠標(biāo)右鍵,在彈出的快捷萊單中選擇屬性選項,此時彈出Edit屬性對話框,如圖6所示,在該對話框中輸入ID屬性。 </p><p>  圖6 Edit屬性對話框</p><p>  2)在圖3中Controls的“Button”按鈕上單擊鼠標(biāo)左鍵,在對話框上的合適的位置上按下鼠標(biāo)左鍵并拖動鼠標(biāo)畫出一個大小合適的下壓式按鈕。在按鈕

32、上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇屬性選項,此時也彈出Push Button屬性對話框,如圖7所示,在該對話框中輸入控件的ID值和標(biāo)題屬性。</p><p>  圖7 Push Button屬性</p><p>  按照上面的操作過程編輯其他按鈕和編輯框等對象的屬性。</p><p>  表1 各按鈕和編輯框等對象的屬性</p><p>

33、  完成后界面如圖8所示。</p><p><b>  圖8 計算器界面</b></p><p><b>  2、連接變量和代碼</b></p><p>  1) 給編輯框連接變量。在編輯框上單擊鼠標(biāo)右鍵,在彈出菜單中選擇ClassWizard菜單項,彈出MFC ClassWizard對話框,選擇Member Variab

34、les選項卡,如圖9所示。 </p><p>  圖9 MFC ClassWizard對話框中的Menber Variable選項卡</p><p>  在Control IDs列表框中選擇IDC_xianshi,單擊Add Variables按鈕,在彈出的對話框中連接變量m_num。變量類型設(shè)定為doubel型。如圖10所示。</p><p>  圖10 m_nu

35、m屬性設(shè)置</p><p>  2) 給“1”按鈕連接代碼。在“1”按鈕上單擊鼠標(biāo)右鍵,選擇ClassWizard菜單項,在彈出的對話框中選擇Messages Maps選項卡,然后在Object IDs列表框中選擇IDC_ADD_BUTTON,在Messages列表框中選擇BN_CLICKED項,即選擇單擊按鈕事件,如圖11所示。 </p><p>  圖11 “1”按鈕鏈接代碼對話框&l

36、t;/p><p><b>  3、菜單的設(shè)計</b></p><p>  選擇 插入/資源命令,將顯示插入資源對話框。如圖12所示。選擇Menu,點擊新建即可。</p><p>  圖12 插入資源對話框</p><p>  Resoure View選項卡中打開Menu資源組,雙擊IDR_MENU1, 然后給菜單添加相應(yīng)的標(biāo)

37、題,并把每個菜單對應(yīng)的ID值與相應(yīng)的按鈕的一致。如圖13所示。</p><p>  圖13 菜單屬性對話框</p><p>  在對話框的任何一個空白域單擊鼠標(biāo)右鍵,然后在彈出的快捷菜單中選擇Properties命令,彈出Dialog Properties對話框,如圖14。在對話框中的菜單組合框中選擇IDR_MENU1。</p><p>  圖14 對話屬性對話框&

38、lt;/p><p>  最終的得到的界面如圖15。</p><p>  圖15 計算器完整界面</p><p>  2.3 關(guān)鍵功能的實現(xiàn)</p><p><b>  1)操作數(shù)的輸入</b></p><p>  編輯框所關(guān)聯(lián)的變量為m_num,程序開始時為零。每按下一個數(shù)字鍵按鈕,就把它累加到m_n

39、um里并刷新顯示。BOOL型變量ele來判斷是否有小數(shù)點和一個整型數(shù)dint來表示小數(shù)點后的數(shù)據(jù)的位數(shù)。當(dāng)ele=TRUE時,表示有小數(shù)點,否則則表示無小數(shù)點。按下小數(shù)點按鈕后執(zhí)行ele=TRUE。當(dāng)按下一個數(shù)字鍵時,首先根據(jù)ele判斷是否按下小數(shù)點,若有則把小數(shù)點后數(shù)的位數(shù)加1,dint則為此次鍵入的數(shù)所處的位數(shù),將鍵入的數(shù)除以dint個10然后累加到編輯框所關(guān)聯(lián)的變量m_num上,若沒有則把m_num乘以10,然后累加到編輯框所關(guān)聯(lián)

40、的變量m_num上。</p><p>  2)單目運算符功能的實現(xiàn)</p><p>  由于單目運算符中必須有執(zhí)行運算的函數(shù),因而頭文件中要加入math.h,如m_num=sqrt(m_num).按下按鈕即可實現(xiàn)其功能。為實現(xiàn)連續(xù)運算,程序有所改動,參見(6)。</p><p>  3)雙目運算符功能的實現(xiàn)</p><p>  雙目運算符需要

41、兩個操作數(shù)才能運算,所以在執(zhí)行雙目運算符按鈕的函數(shù)代碼中,要把m_num中的值保存到變量num2中,然后把m_num清零。這樣即可保存第一個操作數(shù)。另外先定義了一個整形變量addt,在不同的雙目運算符中給addt賦不同的值,然后在等號中用switch語句來匹配addt值來判斷需要執(zhí)行何種雙目運算。為實現(xiàn)連續(xù)運算,程序有所改動,參見(6)。</p><p>  4)退格鍵功能的實現(xiàn)</p><p

42、>  當(dāng)按下一次退格按鈕時,若m_num為整數(shù),只需對其中數(shù)據(jù)除以10再取整即可,若按下一次退格按鈕為小數(shù),則根據(jù)小數(shù)點后數(shù)據(jù)的位數(shù)dint進行操作,先對m_num執(zhí)行(dint-1)次乘以10運算,然后取整,接著執(zhí)行(dint-1)次除以10的運算即可。完成后需要把dint將減小1。</p><p>  5) 正負號功能的實現(xiàn)</p><p>  在頭文件中定義一個BOOL型變量e

43、le2來判斷m_num的正負。ele2=TRUE時表示為正。在鍵入操作數(shù)時需要用到ele2。在正負號按鈕的消息響應(yīng)函數(shù)內(nèi)容為m_num=-m_num;ele2=!ele2。</p><p>  6)連續(xù)運算功能的實現(xiàn)</p><p>  要連續(xù)運算必須將每次運算的結(jié)果保存下來。</p><p>  對于雙目運算符:首先在等號按鈕的消息處理函數(shù)中在m_num清零之前將

44、m_num的值賦給num2.不過這樣的話如果再按雙目運算符則num2的值將會被覆蓋,于是在雙目運算符按鈕的消息處理函數(shù)中將“num2=m_num;”改為“if(m_num!=0)num2=m_num;”.這樣若已經(jīng)保存了結(jié)果則不進行覆蓋。然后在每個數(shù)字按鈕前加上“if(addt==0)num2=0;”,這樣如果進行完一次運算之后按下任一數(shù)字鍵表示不需要連續(xù)運算,則將保存的結(jié)果刪除,若按下的是雙目運算符按鈕則可以繼續(xù)運算。</p&g

45、t;<p>  對于單目運算符:每次運算完之后都會對m_num清零,因此其結(jié)果也要賦給num2,下次運算是則會用到num2,于是第一次運算時直接將m_num 的值賦給num2,對其進行運算。以開根號為例,在消息處理函數(shù)代碼中將“m_num=sqrt(m_num);”改為“num2=m_num;m_num=sqrt(num2); num2=m_num;”。但是第一次運算執(zhí)行完成之后m_num被清零,所以之后將m_num 的值

46、不能賦給num2,代碼改為 “if(m_num>=0)m_num=sqrt(num2); num2=m_num;”。其他單目運算符同理。</p><p>  為實現(xiàn)連續(xù)運算是不需要按下等號即可實現(xiàn),又在所有的運算符按鈕的消息處理函數(shù)代碼前加上了“if(addt!=0)Onequal();”。既若之前有按下雙目運算符和兩個操作數(shù)則連續(xù)運算再按下任一運算符時會自動調(diào)用等號的處理函數(shù)將上次的運算完成并保存結(jié)果方便

47、下一次的運算。</p><p>  三. 測試過程及結(jié)果</p><p>  1.輸入“90.5”,“-”,“60.7”,“+”,“2.36”,“ =”,并在菜單中同樣輸入這組操作,均得到結(jié)果如圖16。</p><p><b>  圖16 結(jié)果圖1</b></p><p>  結(jié)果正確,證明可以實現(xiàn)雙目運算符的連續(xù)運算,

48、菜單功能正常。</p><p>  2.輸入“901”,“+/-”,“backspace”,“+”,“120”,“sin”,結(jié)果如圖17.</p><p><b>  圖17 結(jié)果圖2</b></p><p>  因為π取的是3.1415926,因此與0.5有小小偏差,認(rèn)為結(jié)果正確。證明可以實現(xiàn)單目運算符的連續(xù)運算與backspace回格功能。

49、</p><p>  3.輸入“0”,“l(fā)n”,結(jié)果如圖18.</p><p><b>  結(jié)果圖18</b></p><p>  證明錯誤提示功能實現(xiàn)正常。</p><p>  四. 結(jié)論與心得體會</p><p>  經(jīng)過多番測試,得出結(jié)論為設(shè)計的計算器能夠完成功能描述內(nèi)容中的全部功能。<

50、;/p><p>  經(jīng)過3個星期的VC++課程設(shè)計,我在老師和同學(xué)的共同幫助下,順利完成該課程設(shè)計,收獲很大。我們已經(jīng)學(xué)習(xí)了《C++課程設(shè)計》和《數(shù)據(jù)結(jié)構(gòu)》,對老師所講的知識也有了很大的認(rèn)識。正所謂“紙上談兵終覺淺,覺知此事要躬行?!彼栽诒緦W(xué)期課程設(shè)計是很及時、很必要的。這樣不僅能加深我們對程序設(shè)計的掌握,而且還及時、真正的做到了學(xué)以致用。主要是以下幾點。</p><p>  基本功要過硬。

51、不能馬虎經(jīng)常犯犯小錯誤。提高自己找錯糾錯能力,通常錯誤總是那幾種,多練習(xí)就熟練了。</p><p>  要善于查找資料提高自己的資料查詢能力,要善于利用網(wǎng)絡(luò)來獲得知識,獲得幫助。開始著手程序設(shè)計時,有些功能感覺無從下手,都不知道要干什么。這些問題只要找到相關(guān)的資料就會得到提示從而理解所要解決問題的大致方向。有了明確的目的,就可以發(fā)揮自己的頭腦來完成它了。</p><p>  要善于思考。程

52、序中有些實現(xiàn)難點和最初完成程序時免不了的許多不足就需要自己根據(jù)代碼認(rèn)真思考來解決。只有這樣才能糾正程序的不足并使其更加人性化。</p><p>  這次課程設(shè)計讓我學(xué)到了很多,不僅是鞏固了先前學(xué)的程序設(shè)計知識,而且也培養(yǎng)了我的動手能力,更令我的創(chuàng)造性思維得到拓展。希望今后類似這樣課程設(shè)計、類似這樣的鍛煉機會能更多些!</p><p><b>  五. 參考文獻</b>

53、</p><p>  [1] 揣錦華.面向?qū)ο蟪绦蛟O(shè)計與VC++實踐.西安電子科技大學(xué)出版社,2005</p><p>  [2] 張建宏,湯練兵,馬德駿.計算機程序設(shè)計基礎(chǔ)-C語言程序設(shè)計.科學(xué)出版社,2006</p><p>  [3] 陳清華.Visual C++課程設(shè)計案例精選與編程指導(dǎo).東南大學(xué)出版社,2004</p><p>&l

54、t;b>  六. 附錄</b></p><p><b>  源代碼</b></p><p>  #include "stdafx.h"</p><p>  #include <windows.h></p><p>  #include <windowsx.h>

55、</p><p>  #include "resource.h"</p><p>  #include "MainDlg.h"</p><p>  double num,numtmp;</p><p>  TCHAR result[256],numstr[256];</p><p&g

56、t;<b>  int sel;</b></p><p>  BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)</p><p><b>  {</b></p><p>  switch(uMsg)</p><

57、;p><b>  {</b></p><p>  HANDLE_MSG(hWnd, WM_INITDIALOG, Main_OnInitDialog);</p><p>  HANDLE_MSG(hWnd, WM_COMMAND, Main_OnCommand);</p><p>  HANDLE_MSG(hWnd,WM_CLOSE, M

58、ain_OnClose);</p><p><b>  }</b></p><p>  return FALSE;</p><p><b>  }</b></p><p>  BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lPara

59、m)</p><p><b>  {</b></p><p>  ZeroMemory(result,sizeof(result)/sizeof(TCHAR));</p><p>  ZeroMemory(numstr,sizeof(numstr)/sizeof(TCHAR));</p><p>  SetDlgIte

60、mText(hwnd,IDC_EDIT1,TEXT("0"));</p><p>  return TRUE;</p><p><b>  }</b></p><p>  void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)</p&g

61、t;<p><b>  {</b></p><p>  switch(id)</p><p><b>  { </b></p><p>  TCHAR content[256];</p><p>  ZeroMemory(content,sizeof(content)/sizeof

62、(TCHAR));</p><p>  case ID_MENUITEMCOPY:</p><p><b>  {</b></p><p>  strncpy(content,result,sizeof(result));</p><p>  //GetDlgItemText(hwnd,IDC_EDIT1,conten

63、t,sizeof(content));</p><p><b>  }</b></p><p><b>  break;</b></p><p>  case ID_MENUITEMPOST:</p><p><b>  {</b></p><p>  

64、SetDlgItemText(hwnd,IDC_EDIT1,content);</p><p><b>  }</b></p><p><b>  break;</b></p><p>  case IDC_BIN0://輸入數(shù)字‘0’</p><p><b>  {</b>&

65、lt;/p><p>  strcat(result,"0");</p><p>  SetDlgItemText(hwnd,IDC_EDIT1,result);</p><p><b>  }</b></p><p><b>  break;</b></p><

66、p>  case IDC_BIN1://輸入數(shù)字‘1’</p><p><b>  {</b></p><p>  strcat(result,"1");</p><p>  SetDlgItemText(hwnd,IDC_EDIT1,result);</p><p><b>  }

67、</b></p><p><b>  break;</b></p><p>  case IDC_BIN2://輸入數(shù)字‘2’</p><p><b>  {</b></p><p>  strcat(result,"2");</p><p>

68、;  SetDlgItemText(hwnd,IDC_EDIT1,result);</p><p><b>  }</b></p><p><b>  break;</b></p><p>  case IDC_BIN3://輸入數(shù)字‘3’</p><p><b>  {</b>

69、;</p><p>  strcat(result,"3");</p><p>  SetDlgItemText(hwnd,IDC_EDIT1,result);</p><p><b>  }</b></p><p><b>  break;</b></p>&l

70、t;p>  case IDC_BIN4://輸入數(shù)字‘4’</p><p><b>  {</b></p><p>  strcat(result,"4");</p><p>  SetDlgItemText(hwnd,IDC_EDIT1,result);</p><p><b> 

71、 }</b></p><p><b>  break;</b></p><p>  case IDC_BIN5://輸入數(shù)字‘5’</p><p><b>  {</b></p><p>  strcat(result,"5");</p><p&

72、gt;  SetDlgItemText(hwnd,IDC_EDIT1,result);</p><p><b>  }</b></p><p><b>  break;</b></p><p>  case IDC_BIN6://輸入數(shù)字‘6’</p><p><b>  {</b&

73、gt;</p><p>  strcat(result,"6");</p><p>  SetDlgItemText(hwnd,IDC_EDIT1,result);</p><p><b>  }</b></p><p><b>  break;</b></p>

74、<p>  case IDC_BIN7://輸入數(shù)字‘7’</p><p><b>  {</b></p><p>  strcat(result,"7");</p><p>  SetDlgItemText(hwnd,IDC_EDIT1,result);</p><p><b>

75、;  }</b></p><p><b>  break;</b></p><p>  case IDC_BIN8://輸入數(shù)字‘8’</p><p><b>  {</b></p><p>  strcat(result,"8");</p><

76、p>  SetDlgItemText(hwnd,IDC_EDIT1,result);</p><p><b>  }</b></p><p><b>  break;</b></p><p>  case IDC_BIN9://輸入數(shù)字‘9’</p><p><b>  {</

77、b></p><p>  strcat(result,"9");</p><p>  SetDlgItemText(hwnd,IDC_EDIT1,result);</p><p><b>  }</b></p><p><b>  break;</b></p>

78、<p>  case IDC_BINPORT://輸入.</p><p><b>  {</b></p><p>  if(strchr(result,'.')==NULL)</p><p><b>  {</b></p><p>  strcat(result,&qu

79、ot;.");</p><p>  SetDlgItemText(hwnd,IDC_EDIT1,result);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  break;</b></p>

80、<p>  case IDC_BINB://退格</p><p><b>  {</b></p><p>  TCHAR resulttmp[256];</p><p>  strcpy(resulttmp,result);</p><p>  ZeroMemory(result,sizeof(result)/

81、sizeof(TCHAR));</p><p>  if(strlen(resulttmp)-1==0)</p><p><b>  {</b></p><p>  SetDlgItemText(hwnd,IDC_EDIT1,TEXT("0"));</p><p><b>  break;&

82、lt;/b></p><p><b>  }</b></p><p>  strncpy(result,resulttmp,strlen(resulttmp)-1);</p><p>  ZeroMemory(resulttmp,sizeof(resulttmp)/sizeof(TCHAR));</p><p> 

83、 SetDlgItemText(hwnd,IDC_EDIT1,result);</p><p><b>  }</b></p><p><b>  break;</b></p><p>  case IDC_BINC://清零</p><p><b>  {</b></p

84、><p>  SetDlgItemText(hwnd,IDC_EDIT1,TEXT("0"));</p><p>  ZeroMemory(result,sizeof(result)/sizeof(TCHAR));</p><p>  ZeroMemory(numstr,sizeof(numstr)/sizeof(TCHAR));</p>

85、<p><b>  sel=0;</b></p><p><b>  }</b></p><p><b>  break;</b></p><p>  case IDC_BINEQU://=運算</p><p><b>  {</b><

86、/p><p>  Main_Count(hwnd);</p><p><b>  sel=0;</b></p><p><b>  }</b></p><p><b>  break;</b></p><p>  case IDC_BINF://+/-號運算

87、</p><p><b>  {</b></p><p><b>  sel=1;</b></p><p>  Main_Count(hwnd);</p><p><b>  }</b></p><p><b>  break;</b&g

88、t;</p><p>  case IDC_BINADD://+運算</p><p><b>  {</b></p><p>  Main_Count(hwnd);</p><p><b>  sel=2;</b></p><p><b>  }</b>

89、</p><p><b>  break;</b></p><p>  case IDC_BINSUB://-運算</p><p><b>  {</b></p><p>  Main_Count(hwnd);</p><p><b>  sel=3;</b&

90、gt;</p><p><b>  }</b></p><p><b>  break;</b></p><p>  case IDC_BINMUL://*運算</p><p><b>  {</b></p><p>  Main_Count(hwnd)

91、;</p><p><b>  sel=4;</b></p><p><b>  }</b></p><p><b>  break;</b></p><p>  case IDC_BINDIV:///運算</p><p><b>  {<

92、;/b></p><p>  Main_Count(hwnd);</p><p><b>  sel=5;</b></p><p><b>  }</b></p><p><b>  break;</b></p><p>  case IDC_BI

93、NSQU://平方運算</p><p><b>  {</b></p><p><b>  sel=6;</b></p><p>  Main_Count(hwnd);</p><p><b>  }</b></p><p><b>  bre

94、ak;</b></p><p>  case IDC_BINSQRT://平方根運算</p><p><b>  {</b></p><p><b>  sel=7;</b></p><p>  Main_Count(hwnd);</p><p><b&g

95、t;  }</b></p><p><b>  break;</b></p><p>  case IDC_BINSIN://sin運算</p><p><b>  {</b></p><p><b>  sel=8;</b></p><p>

96、;  Main_Count(hwnd);</p><p><b>  }</b></p><p><b>  break;</b></p><p>  case IDC_BINASIN://acsin運算</p><p><b>  {</b></p><p

97、><b>  sel=9;</b></p><p>  Main_Count(hwnd);</p><p><b>  }</b></p><p><b>  break;</b></p><p>  case IDC_BINCOS://cos運算</p>

98、<p><b>  {</b></p><p><b>  sel=10;</b></p><p>  Main_Count(hwnd);</p><p><b>  }</b></p><p><b>  break;</b></p>

99、;<p>  case IDC_BINACOS://accos運算</p><p><b>  {</b></p><p><b>  sel=11;</b></p><p>  Main_Count(hwnd);</p><p><b>  }</b></

100、p><p><b>  break;</b></p><p>  case IDC_BINLN://ln運算</p><p><b>  {</b></p><p><b>  sel=12;</b></p><p>  Main_Count(hwnd);&

101、lt;/p><p><b>  }</b></p><p><b>  break;</b></p><p>  case IDC_BINEXP://e指數(shù)運算</p><p><b>  {</b></p><p><b>  sel=13;&l

102、t;/b></p><p>  Main_Count(hwnd);</p><p><b>  }</b></p><p><b>  break;</b></p><p>  case IDC_BIND://=運算</p><p><b>  {</b

103、></p><p><b>  sel=14;</b></p><p>  Main_Count(hwnd);</p><p><b>  }</b></p><p><b>  break;</b></p><p><b>  defa

104、ult:</b></p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void Main_Count(HWND hwnd)</p><p>&l

105、t;b>  {</b></p><p>  num=atof(result);</p><p>  ZeroMemory(result,sizeof(result)/sizeof(TCHAR));</p><p>  switch(sel)</p><p><b>  {</b></p>

106、<p><b>  case 1:</b></p><p><b>  {</b></p><p>  numtmp=-num;</p><p>  gcvt(numtmp,10,numstr);</p><p>  ZeroMemory(result,sizeof(result)/siz

107、eof(TCHAR));</p><p>  SetDlgItemText(hwnd,IDC_EDIT1,numstr);</p><p><b>  }</b></p><p><b>  break;</b></p><p><b>  case 2:</b></p&

108、gt;<p><b>  {</b></p><p>  numtmp+=num;</p><p>  gcvt(numtmp,10,numstr);</p><p>  ZeroMemory(result,sizeof(result)/sizeof(TCHAR));</p><p>  SetDlgIte

109、mText(hwnd,IDC_EDIT1,numstr);</p><p><b>  }</b></p><p><b>  break;</b></p><p><b>  case 3:</b></p><p><b>  {</b></p&g

110、t;<p>  numtmp-=num;</p><p>  gcvt(numtmp,10,numstr);</p><p>  ZeroMemory(result,sizeof(result)/sizeof(TCHAR));</p><p>  SetDlgItemText(hwnd,IDC_EDIT1,numstr);</p><

111、;p><b>  }</b></p><p><b>  break;</b></p><p><b>  case 4:</b></p><p><b>  {</b></p><p>  numtmp*=num;</p><p

112、>  gcvt(numtmp,10,numstr);</p><p>  ZeroMemory(result,sizeof(result)/sizeof(TCHAR));</p><p>  SetDlgItemText(hwnd,IDC_EDIT1,numstr);</p><p><b>  }</b></p><

113、p><b>  break;</b></p><p><b>  case 5:</b></p><p><b>  { </b></p><p>  if(num!=0)</p><p><b>  {</b></p><p&g

114、t;  numtmp/=num;</p><p>  gcvt(numtmp,10,numstr);</p><p>  ZeroMemory(result,sizeof(result)/sizeof(TCHAR));</p><p>  SetDlgItemText(hwnd,IDC_EDIT1,numstr);</p><p><b

115、>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  SetDlgItemText(hwnd,IDC_EDIT1,TEXT("除數(shù)不能為0!"));</p><p><b>  }&

116、lt;/b></p><p><b>  }</b></p><p><b>  break;</b></p><p><b>  case 6:</b></p><p><b>  {</b></p><p>  numtm

117、p=pow(num,2);</p><p>  gcvt(numtmp,10,numstr);</p><p>  ZeroMemory(result,sizeof(result)/sizeof(TCHAR));</p><p>  SetDlgItemText(hwnd,IDC_EDIT1,numstr);</p><p><b>

118、;  }</b></p><p><b>  break;</b></p><p><b>  case 7:</b></p><p><b>  {</b></p><p>  numtmp=sqrt(num);</p><p>  gcv

119、t(numtmp,10,numstr);</p><p>  ZeroMemory(result,sizeof(result)/sizeof(TCHAR));</p><p>  SetDlgItemText(hwnd,IDC_EDIT1,numstr);</p><p><b>  }</b></p><p><

120、b>  break;</b></p><p><b>  case 8:</b></p><p><b>  {</b></p><p>  numtmp=sin(num*3.1415926535898/180);</p><p>  gcvt(numtmp,10,numstr);

121、</p><p>  ZeroMemory(result,sizeof(result)/sizeof(TCHAR));</p><p>  SetDlgItemText(hwnd,IDC_EDIT1,numstr);</p><p><b>  }</b></p><p><b>  break;</b&

122、gt;</p><p><b>  case 9:</b></p><p><b>  {</b></p><p>  numtmp=asin(num*180/3.1415926535898);</p><p>  gcvt(numtmp,10,numstr);</p><p&g

123、t;  ZeroMemory(result,sizeof(result)/sizeof(TCHAR));</p><p>  SetDlgItemText(hwnd,IDC_EDIT1,numstr);</p><p><b>  }</b></p><p><b>  break;</b></p><

124、p><b>  case 10:</b></p><p><b>  {</b></p><p>  numtmp=cos(num*3.1415926535898/180);</p><p>  gcvt(numtmp,10,numstr);</p><p>  ZeroMemory(resu

125、lt,sizeof(result)/sizeof(TCHAR));</p><p>  SetDlgItemText(hwnd,IDC_EDIT1,numstr);</p><p><b>  }</b></p><p><b>  break;</b></p><p><b>  cas

126、e 11:</b></p><p><b>  {</b></p><p>  numtmp=acos(num*180/3.1415926535898);</p><p>  gcvt(numtmp,10,numstr);</p><p>  ZeroMemory(result,sizeof(result)/

127、sizeof(TCHAR));</p><p>  SetDlgItemText(hwnd,IDC_EDIT1,numstr);</p><p><b>  }</b></p><p><b>  break;</b></p><p><b>  case 12:</b><

128、;/p><p><b>  {</b></p><p>  numtmp=log(num);</p><p>  gcvt(numtmp,10,numstr);</p><p>  ZeroMemory(result,sizeof(result)/sizeof(TCHAR));</p><p>  S

129、etDlgItemText(hwnd,IDC_EDIT1,numstr);</p><p><b>  }</b></p><p><b>  break;</b></p><p><b>  case 13:</b></p><p><b>  {</b>

130、;</p><p>  numtmp=exp(num);</p><p>  gcvt(numtmp,10,numstr);</p><p>  ZeroMemory(result,sizeof(result)/sizeof(TCHAR));</p><p>  SetDlgItemText(hwnd,IDC_EDIT1,numstr);&l

131、t;/p><p><b>  }</b></p><p><b>  break;</b></p><p><b>  case 14:</b></p><p><b>  {</b></p><p>  if(num!=0)</

132、p><p><b>  {</b></p><p>  numtmp=1/num;</p><p>  gcvt(numtmp,10,numstr);</p><p>  ZeroMemory(result,sizeof(result)/sizeof(TCHAR));</p><p>  SetDlg

溫馨提示

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

評論

0/150

提交評論