資源描述:
《課程設(shè)計(jì):用c++編寫(xiě)計(jì)算器程序》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫(kù)。
1、王井泉《計(jì)算器程序設(shè)計(jì)》第36頁(yè)共36頁(yè)用C++編寫(xiě)計(jì)算器程序搞要本課程設(shè)計(jì)是在基于對(duì)話框的應(yīng)用程序中模擬一個(gè)計(jì)算器,本計(jì)算器可以進(jìn)行十進(jìn)制下的四則運(yùn)算(加、減、乘、除)和四則混合運(yùn)算,可以把十進(jìn)制轉(zhuǎn)化為二進(jìn)制或十六進(jìn)制,可以進(jìn)行一些常用的函數(shù)運(yùn)算(比如sin、cos、tan、cot、sqrt、ln等),還可以支持帶“(”,“)”符號(hào)的表達(dá)式的計(jì)算。系統(tǒng)開(kāi)發(fā)平臺(tái)為WindowsXP,程序設(shè)計(jì)設(shè)計(jì)語(yǔ)言采用VisualC++6.0,程序運(yùn)行平臺(tái)為Windows98/2000/XP。程序通過(guò)調(diào)試運(yùn)行,初步實(shí)現(xiàn)了設(shè)計(jì)目標(biāo)。關(guān)鍵詞程序設(shè)計(jì);計(jì)算器;C++;1引言在現(xiàn)代社
2、會(huì)中,計(jì)算器已經(jīng)進(jìn)入了每一個(gè)家庭,人們?cè)谏詈蛯W(xué)習(xí)中經(jīng)常需要使用到計(jì)算器,它的出現(xiàn)大大減少了人們?cè)谟?jì)算方面的工作量,可以說(shuō)它在人們生活和學(xué)習(xí)中是不可缺少的。1.1C++介紹C++語(yǔ)言的主要特點(diǎn)表現(xiàn)在兩個(gè)方面,一是全面兼容C語(yǔ)言,二是支持面向?qū)ο蟮某绦蛟O(shè)計(jì)方法[1]。(1)C++是一個(gè)更好的C,它保持了C語(yǔ)言的優(yōu)點(diǎn),大多數(shù)的C程序代碼略作修改或不作修改就可在C++的集成環(huán)境下調(diào)試和運(yùn)行。這對(duì)于繼承和開(kāi)發(fā)當(dāng)前已在廣泛的軟件是非常重要的,可以節(jié)省大量的人力和物力。(2)C++是一種面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言它使得程序的各個(gè)模塊的獨(dú)立性更強(qiáng),程序的可讀性和可移植性更強(qiáng),程
3、序代碼的結(jié)構(gòu)更加合理,程序的擴(kuò)充性更強(qiáng)。這對(duì)于設(shè)計(jì)、編制和調(diào)試一些大型的軟件尤為重要。(3)王井泉《計(jì)算器程序設(shè)計(jì)》第36頁(yè)共36頁(yè)C++集成環(huán)境不僅支持C++程序的編譯和調(diào)試,而且也支持C程序的編譯和調(diào)試。通常,C++程序環(huán)境約定:當(dāng)源程序文件的擴(kuò)展名為c.時(shí),則為C程序;而當(dāng)源程序文件的擴(kuò)展名為cpp.時(shí),則為C++程序。(4)C++語(yǔ)句非常簡(jiǎn)練,對(duì)語(yǔ)法限制比較寬松,因此C++語(yǔ)法非常靈活。其優(yōu)點(diǎn)是給用戶編程帶來(lái)書(shū)寫(xiě)上的方便。其缺點(diǎn)是由于編譯時(shí)對(duì)語(yǔ)法限制比較寬松,許多邏輯上的錯(cuò)誤不容易發(fā)現(xiàn),給用戶編程增加了難度。1.2計(jì)算器的介紹(1)在運(yùn)行程序后,系統(tǒng)會(huì)
4、彈出一個(gè)基于對(duì)話框的計(jì)算器界面,如下圖所示:圖1.1計(jì)算器界面(2)在計(jì)算器程序中,主要通過(guò)一個(gè)編輯框來(lái)獲取表達(dá)式和顯示計(jì)算結(jié)果,表達(dá)式可以通過(guò)鍵盤(pán)和單擊按鈕2種方式輸入,輸入后的結(jié)果如下圖所示:王井泉《計(jì)算器程序設(shè)計(jì)》第36頁(yè)共36頁(yè)圖1.2輸入表達(dá)式后的界面(3)在輸入完表達(dá)式后,單擊“=”后,開(kāi)始對(duì)表達(dá)式進(jìn)行計(jì)算,計(jì)算完成后,在編輯框中顯示計(jì)算的結(jié)果。圖1.3計(jì)算后的結(jié)果王井泉《計(jì)算器程序設(shè)計(jì)》第36頁(yè)共36頁(yè)(4)計(jì)算器可以實(shí)現(xiàn)十進(jìn)制轉(zhuǎn)化為十六進(jìn)制或二進(jìn)制,其實(shí)現(xiàn)的操作為先輸入一個(gè)十進(jìn)制整數(shù),再單擊按鈕“轉(zhuǎn)化為二進(jìn)制”或“轉(zhuǎn)化為十六進(jìn)制。圖1.4輸入一
5、個(gè)十進(jìn)制數(shù)100圖1.5100轉(zhuǎn)化為二進(jìn)制后的結(jié)果王井泉《計(jì)算器程序設(shè)計(jì)》第36頁(yè)共36頁(yè)圖1.6100轉(zhuǎn)化為十六進(jìn)制后的結(jié)果(4)另外,計(jì)算器還可以實(shí)現(xiàn)一些簡(jiǎn)單的函數(shù)運(yùn)算,實(shí)現(xiàn)的操作和十六進(jìn)制/二進(jìn)制轉(zhuǎn)化類(lèi)似,是先輸入一個(gè)數(shù)字,在單擊想要進(jìn)行的函數(shù)的按鈕,單擊后就會(huì)在編輯框中顯示運(yùn)算的結(jié)果。1算法的實(shí)現(xiàn)2.1把字符串轉(zhuǎn)化為數(shù)字和運(yùn)算符的算法(1)如果字符串中只有數(shù)字。這個(gè)情況用來(lái)實(shí)現(xiàn)一些簡(jiǎn)單函數(shù)的運(yùn)算。在進(jìn)行簡(jiǎn)單函數(shù)的運(yùn)算時(shí),都是先輸入一個(gè)數(shù)字,再單擊要進(jìn)行運(yùn)算的按鈕,然后編輯框顯示運(yùn)算的結(jié)果。程序用了一個(gè)函數(shù)doubleGetaStr(CStringstr
6、)來(lái)實(shí)現(xiàn)這個(gè)功能,該函數(shù)以編輯框變量m_strResult為實(shí)參,再得到m_strResult的值后,調(diào)用GetAt函數(shù),一個(gè)字符一個(gè)字符的讀取,如果碰到整數(shù),執(zhí)行“itemp=itemp*rate+(str.GetAt(i)-'0');”王井泉《計(jì)算器程序設(shè)計(jì)》第36頁(yè)共36頁(yè),其中變量itemp初始值為0,變量rate初始值為10,如果碰到了小數(shù)點(diǎn),改變r(jià)ate的值,使其等于0.1,再向后繼續(xù)讀取,再碰到整數(shù)時(shí)執(zhí)行“itemp=itemp+rate*(str.GetAt(i)-'0');rate=rate/10;”,函數(shù)的最后確定返回值為itemp。以下是
7、這個(gè)函數(shù)的代碼[2]:doubleCMyDlg::GetaStr(CStringstr){inti=0;doublerate=10.0,itemp=0.0;for(;i8、0;//每次讓rate小10倍}}el