C項(xiàng)目實(shí)訓(xùn)指導(dǎo)書(shū)_第1頁(yè)
C項(xiàng)目實(shí)訓(xùn)指導(dǎo)書(shū)_第2頁(yè)
C項(xiàng)目實(shí)訓(xùn)指導(dǎo)書(shū)_第3頁(yè)
C項(xiàng)目實(shí)訓(xùn)指導(dǎo)書(shū)_第4頁(yè)
C項(xiàng)目實(shí)訓(xùn)指導(dǎo)書(shū)_第5頁(yè)
已閱讀5頁(yè),還剩11頁(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)介

1、中小企業(yè)桌面應(yīng)用系統(tǒng)開(kāi)發(fā)實(shí)訓(xùn)指導(dǎo)書(shū)項(xiàng)目一 飲料自動(dòng)販賣(mài)機(jī)模擬程序一、項(xiàng)目需求1項(xiàng)目描述本項(xiàng)目模擬飲料自動(dòng)售賣(mài)機(jī)的銷(xiāo)售過(guò)程。顧客首先進(jìn)行投幣,機(jī)器顯示投幣金額。接下來(lái)顧客選擇要購(gòu)買(mǎi)的飲料,如果投幣金額足夠并且所購(gòu)飲料存在,則提示用戶在出口處取走飲料,同時(shí)找零。如果投幣金額不足,顯示提示信息。如果所購(gòu)飲料已經(jīng)售完,顯示售完信息。2效果圖圖1-1 飲料自動(dòng)販賣(mài)機(jī)項(xiàng)目效果圖3功能說(shuō)明(1)只接受10元、5元、2元、1元和0.5元的紙幣和硬幣。(2)顧客一次只能投入上述一種金額的紙幣或硬幣,當(dāng)用戶重復(fù)投入時(shí)貨幣金額累加。(3)銷(xiāo)售的飲料包括5種:可口可樂(lè)(2元)、百事可樂(lè)(2元)、橙汁(3元)、咖啡(5

2、元)、純凈水(1.5元)。(4)系統(tǒng)通過(guò)必要的提示信息,提示用戶完成相應(yīng)的操作。(5)若顧客所購(gòu)買(mǎi)的飲料已經(jīng)售完,則進(jìn)行提示并詢問(wèn)用戶是否購(gòu)買(mǎi)其它的飲料。(6)完成一次售賣(mài)后,系統(tǒng)自動(dòng)進(jìn)行結(jié)算找零。  二、項(xiàng)目分析根據(jù)系統(tǒng)功能要求,首先設(shè)計(jì)處理錢(qián)幣的類(lèi)和商品信息類(lèi)。處理錢(qián)幣的類(lèi)主要完成與錢(qián)幣相關(guān)的工作,如給顧客找零等過(guò)程。商品信息類(lèi)主要用來(lái)處理與商品相關(guān)的工作,如獲得商品信息等操作。還需要設(shè)計(jì)一個(gè)自動(dòng)販賣(mài)機(jī)類(lèi)來(lái)實(shí)現(xiàn)飲料的售賣(mài)過(guò)程。在這個(gè)類(lèi)里面,將錢(qián)幣類(lèi)和商品信息類(lèi)作為其數(shù)據(jù)成員。同時(shí)定義了包含5個(gè)GoodsInfo對(duì)象的數(shù)組,負(fù)責(zé)保存飲料的三個(gè)信息:名稱(chēng)、價(jià)格和庫(kù)存量,并且可以反饋這

3、些信息。項(xiàng)目需要用到類(lèi)與類(lèi)之間的一種關(guān)系:has-a 擁有關(guān)系,has-a關(guān)系是指一個(gè)對(duì)象包含另一個(gè)對(duì)象,即一個(gè)對(duì)象是另一個(gè)對(duì)象的成員。三、項(xiàng)目設(shè)計(jì)1類(lèi)的設(shè)計(jì)根據(jù)上述的設(shè)計(jì)思想,設(shè)計(jì)了“MoneyCounter類(lèi)”、“GoodsInfo 類(lèi)”和“DrinkMachine類(lèi)”3個(gè)類(lèi)。(1) MoneyCounter類(lèi)的設(shè)計(jì)圖1-2 MoneyCounter類(lèi)圖數(shù)據(jù)成員float input_money; 用于記錄顧客投幣金額函數(shù)成員MoneyCounter(); 構(gòu)造函數(shù),初始化顧客投幣金額為0.00MoneyCounter()      

4、60;  析構(gòu)函數(shù)void getmoney();          提示顧客投幣float money_from_buyer();        返回投幣金額void clear();            清空,準(zhǔn)備下一輪投幣void return_money(float); 返回找的零錢(qián)(2)GoodsInfo 類(lèi)的設(shè)計(jì)圖1-3 GoodsInfo類(lèi)圖

5、數(shù)據(jù)成員string name ; 用于記錄飲料名稱(chēng)float price; 用于記錄飲料的單價(jià)int  total; 用于記錄飲料的總庫(kù)存數(shù)函數(shù)成員 GoodsInfo(); 構(gòu)造函數(shù),初始化飲料信息 GoodsInfo()        析構(gòu)函數(shù)void set_goods(string, float, int);            設(shè)置每種飲料的屬性:名稱(chēng),價(jià)格,數(shù)量string goods_name();

6、       返回飲料的名稱(chēng)float goods_price();        返回飲料的價(jià)格int goods_number(); 返回飲料的數(shù)量(3)DrinkMachine類(lèi)的設(shè)計(jì)圖1-4 DrinkMachine類(lèi)圖數(shù)據(jù)成員MoneyCounter moneyctr;        定義MoneyCounter的對(duì)象,實(shí)現(xiàn)投幣、找零等功能  GoodsInfo v_

7、goods5; 定義GoodsInfo的對(duì)象,實(shí)現(xiàn)商品信息的維護(hù),此處設(shè)計(jì)了5種飲料,詳見(jiàn)該類(lèi)的實(shí)現(xiàn)函數(shù)成員DrinkMachine();        構(gòu)造函數(shù),初始化自動(dòng)售貨機(jī)中的商品信息DrinkMachine()        析構(gòu)函數(shù)void showchoices();  顯示飲料選擇信息void inputmoney();  獲取顧客投入錢(qián)幣bool goodsitem(int); 檢查飲料狀況void return_al

8、lmoney();    返回錢(qián)數(shù)2主程序設(shè)計(jì)在主函數(shù)中,首先定義了一個(gè)DrinkMachine類(lèi)(自動(dòng)售貨機(jī)類(lèi))的對(duì)象dri,并未顯式地定義MoneyCounter類(lèi)和GoodsInfo類(lèi)的對(duì)象。但是在DrinkMachine類(lèi)中含有MoneyCounter類(lèi)和GoodsInfo類(lèi)的數(shù)據(jù)成員。其次設(shè)計(jì)一個(gè)兩重循環(huán),外循環(huán)的持續(xù)條件是顧客繼續(xù)購(gòu)買(mǎi),內(nèi)循環(huán)的持續(xù)條件是顧客繼續(xù)重復(fù)投幣,即顧客可以反復(fù)投幣直至投夠?yàn)橹?。?dāng)顧客購(gòu)買(mǎi)成功或不再繼續(xù)購(gòu)買(mǎi)時(shí)流程中止。程序流程圖如圖1-5所示。圖1-5 程序流程圖  項(xiàng)目二 超市收銀系統(tǒng)模擬一、項(xiàng)目需求1項(xiàng)目描述模擬“

9、美特好”超市購(gòu)物過(guò)程,根據(jù)貨物清單,選定所購(gòu)貨物種類(lèi)和數(shù)量,實(shí)現(xiàn)收銀結(jié)賬。2效果圖效果圖如圖2-1所示。   圖2-1 超市收銀系統(tǒng)效果圖3功能說(shuō)明(1)顯示超市庫(kù)存商品信息。(2)顯示購(gòu)物流程提示信息。(3)實(shí)現(xiàn)購(gòu)物過(guò)程,反復(fù)輸入所購(gòu)各種商品的索引和購(gòu)買(mǎi)數(shù)量,直到商品索引號(hào)輸入”-1”結(jié)束購(gòu)物流程。(4)實(shí)現(xiàn)收銀,根據(jù)顧客所交現(xiàn)金,自動(dòng)找零。二、項(xiàng)目分析在本項(xiàng)目中,超市收銀系統(tǒng)應(yīng)具備四大基本功能:商品管理、貨架管理、購(gòu)物籃管理和收銀管理。貨架管理實(shí)現(xiàn)庫(kù)中某種商品的入庫(kù)、出庫(kù)、查詢及顯示等功能。需要建立一個(gè)貨架類(lèi),通過(guò)調(diào)用相應(yīng)的函數(shù)來(lái)實(shí)現(xiàn)。每種商品有單價(jià)、條形碼、商品名稱(chēng)等

10、屬性。商品管理類(lèi)實(shí)現(xiàn)了設(shè)置、獲取商品信息,復(fù)制商品信息等功能。購(gòu)物籃管理就是一個(gè)小型的貨架管理,可以用貨架類(lèi)來(lái)實(shí)現(xiàn)。收銀實(shí)現(xiàn)商品的結(jié)賬、找零等任務(wù)。需要建立一個(gè)收銀臺(tái)類(lèi),通過(guò)調(diào)用相應(yīng)的函數(shù)來(lái)實(shí)現(xiàn)。其中,需要注意以下一些問(wèn)題:從貨架拿貨時(shí),應(yīng)該把商品拿一部分出去,通過(guò)把商品“復(fù)制”一份出去來(lái)實(shí)現(xiàn)。“貨架”上有形形色色的商品,因此,這個(gè)類(lèi)需要向量這個(gè)容器來(lái)容納這些商品。向量中僅存儲(chǔ)商品對(duì)象是不夠的,因?yàn)樯唐窙](méi)有量的概念,到底容器中包含多少件此類(lèi)商品還需要用另外一個(gè)變量來(lái)表示,通過(guò)把商品對(duì)象和商品數(shù)量集成到一個(gè)結(jié)構(gòu)體中來(lái)實(shí)現(xiàn)。如何構(gòu)建購(gòu)物籃對(duì)象?仔細(xì)想一下,“購(gòu)物籃”就是一個(gè)小型的貨架,因此可以用“

11、貨架”類(lèi)模擬一個(gè)購(gòu)物籃。三、項(xiàng)目設(shè)計(jì)1類(lèi)的設(shè)計(jì)根據(jù)上述的設(shè)計(jì)思想,設(shè)計(jì)了“商品類(lèi)”、“貨架類(lèi)”和“收銀臺(tái)類(lèi)”3個(gè)類(lèi),這3個(gè)類(lèi)的聲明部分在“counter.h”中實(shí)現(xiàn),3個(gè)類(lèi)的成員函數(shù)的實(shí)現(xiàn)部分在文件“counter.cpp”中完成。其中商品類(lèi)(CGoods類(lèi))負(fù)責(zé)完成商品信息的存儲(chǔ)、獲取、復(fù)制等,貨架類(lèi)(CStore類(lèi))負(fù)責(zé)完成庫(kù)中商品的入庫(kù)、出庫(kù)、查詢及顯示等。收銀臺(tái)類(lèi)(CCounter類(lèi))負(fù)責(zé)完成商品的結(jié)賬、找零等任務(wù)。另外在counter.h文件中還定義了一個(gè)表示貨架商品對(duì)象的結(jié)構(gòu)SStoreElement,它有兩個(gè)成員,一個(gè)是商品對(duì)象的指針,一個(gè)是此類(lèi)商品的數(shù)目。貨架中的每個(gè)商品都是這

12、個(gè)結(jié)構(gòu)類(lèi)型的。(1)CGoods類(lèi)(商品類(lèi))的設(shè)計(jì)圖2-2 CGoods類(lèi)的結(jié)構(gòu)數(shù)據(jù)成員int  m_iIndex         用于記錄商品索引,作用類(lèi)似于條形碼。string  m_strName     用于記錄商品名稱(chēng)。double  m_dUnitPrice 用于記錄商品單價(jià)。函數(shù)成員CGoods( int iIndex, string strName, double dUnitPrice )   構(gòu)造函數(shù),用來(lái)建立一個(gè)新商

13、品,建立商品時(shí)給出商品索引、商品名及單價(jià)。virtual CGoods(void)          析構(gòu)函數(shù),用來(lái)進(jìn)行清理工作。string  GetName(void) const        獲取商品名稱(chēng)。int  GetIndex(void) const         獲取商品索引。double  GetUnitPrice(void)

14、const        獲取商品單價(jià)。 void  SetUnitPrice(double dUnitPrice)        設(shè)置商品單價(jià)。CGoods *Clone()        復(fù)制本類(lèi)商品,但初始商品數(shù)目為0。(2)結(jié)構(gòu)體tagStoreElement         &#

15、160;    /貨架元素?cái)?shù)據(jù)類(lèi)型typedef  struct  tagStoreElement   CGoods *pGoods;             /商品指針   int     iNum;            &#

16、160;      /記錄商品數(shù)量StoreElement, *pStoreElement;圖2-3 結(jié)構(gòu)體tagStoreElement(3)CStore類(lèi)(貨架類(lèi))的設(shè)計(jì)圖2-4 CStore類(lèi)的結(jié)構(gòu)數(shù)據(jù)成員vector<pStoreElement> m_vStore        用于存儲(chǔ)顧客所選商品的向量。函數(shù)成員CStore()        構(gòu)造函數(shù),用來(lái)進(jìn)行初始化工作。virtua

17、l CStore()        析構(gòu)函數(shù),在此調(diào)用成員函數(shù)DeleteAllGoods()刪除貨架中所有的商品。bool AddGoods(CGoods *pGoods, int iNum)    該成員函數(shù)用來(lái)向貨架增加商品,假如貨架中已經(jīng)有了同類(lèi)商品,那么只增加此類(lèi)商品的數(shù)目。其中,pGoods欲增加的商品對(duì)象,iNum增加的數(shù)量。返回值:true成功, false失敗。int  QueryGoods(const string &strName)  

18、  該成員函數(shù)是重載函數(shù),用來(lái)查詢商品。其中,strName要查詢的商品的名字。返回值:商品數(shù)量。int  QueryGoods(int iIndex)    該成員函數(shù)是重載函數(shù),用來(lái)查詢商品。其中,iIndex要查詢的商品的索引號(hào)。返回值:商品數(shù)量。int  DeleteGoods(const string &strName, int iNum)    該成員函數(shù)是重載函數(shù),用來(lái)刪除商品。其中,strName商品名字,iNum刪除數(shù)目,-1為全部刪除。返回值:剩余商品數(shù)量。int 

19、DeleteGoods(int iIndex, int iNum) 該成員函數(shù)是重載函數(shù),用來(lái)刪除商品。其中,iIndex商品索引號(hào),iNum刪除數(shù)目,-1為全部刪除。返回值:剩余商品數(shù)量。void DeleteAllGoods(void)    該成員函數(shù)用來(lái)刪除購(gòu)物籃中的所有商品。vector<pStoreElement>* GetAllGoods(void)    該成員函數(shù)用來(lái)獲取貨架的所有商品。返回值:所有商品信息組成的向量。pStoreElement GetGoods(int iIndex) 

20、0;  該成員函數(shù)是重載函數(shù),用來(lái)獲取某種商品。其中,iIndex商品索引號(hào)。返回值:如果貨架存在此類(lèi)商品,則返回此類(lèi)商品的存儲(chǔ)元素指針,否則返回NULL。pStoreElement GetGoods(const string &strName)    該成員函數(shù)是重載函數(shù),用來(lái)獲取某種商品。其中,strName商品名稱(chēng)。 返回值:如果貨架存在此類(lèi)商品,則返回此類(lèi)商品的存儲(chǔ)元素指針,否則返回NULL。void Print()    該成員函數(shù)用來(lái)打印貨架全部貨物清單,包括商品索引號(hào)、商品名、數(shù)量及單價(jià)。(4)CCou

21、nter類(lèi)(收銀臺(tái)類(lèi))的設(shè)計(jì)圖2-5 CCounter類(lèi)的結(jié)構(gòu)數(shù)據(jù)成員CStore *m_pBasket        定義購(gòu)物籃指針m_pBasket。double  m_dCash           記錄共收取現(xiàn)金數(shù)額。函數(shù)成員CCounter(CStore *pBasket)    構(gòu)造函數(shù),用來(lái)進(jìn)行初始化工作,設(shè)置購(gòu)物籃指針和購(gòu)物籃商品金額,初始金額為0.0。virtual CCount

22、er(void)        析構(gòu)函數(shù),用來(lái)進(jìn)行清理工作。double Bill(void)        該成員函數(shù)用來(lái)計(jì)算購(gòu)物籃中商品金額。返回值:購(gòu)物籃中商品金額。double Count(double dCash)    該成員函數(shù)用來(lái)收錢(qián)找零。其中,dCash顧客所交現(xiàn)金。 返回值:給顧客的找零。double GetCash() 該成員函數(shù)用來(lái)返回共收取顧客的現(xiàn)金金額。返回值:收取顧客的現(xiàn)金金額。2主程序設(shè)計(jì)(1)

23、函數(shù)設(shè)計(jì)CStore* PrepareStore()該函數(shù)用于最初“進(jìn)貨”,即往貨架存入一批商品,包括這些商品的商品索引、商品名稱(chēng)、數(shù)量及單價(jià),即創(chuàng)建一個(gè)商店。返回值:    CStore *pStore為Cstore類(lèi)的指針,代表一個(gè)貨架。void usage()該函數(shù)用為用戶顯示操作提示,即告訴“客人”超市購(gòu)物的購(gòu)物流程。返回值:    無(wú)(2)主函數(shù)設(shè)計(jì)在main()函數(shù)中,首先分別對(duì)三個(gè)類(lèi)定義一個(gè)超市、一個(gè)購(gòu)物籃和一個(gè)收銀臺(tái)對(duì)象,然后定義了一個(gè)顧客交錢(qián)的變量,并初始化為0。利用上訴類(lèi)的其它成員函數(shù)來(lái)實(shí)現(xiàn)購(gòu)物過(guò)程。具體流程如圖3

24、-6。圖2-6 主程序調(diào)用流程圖項(xiàng)目三 工資個(gè)人所得稅計(jì)算器一、項(xiàng)目需求1項(xiàng)目描述從2006年1月1日起,工資個(gè)人所得稅標(biāo)準(zhǔn)從1600元起征。對(duì)每月收入超過(guò)3000元以上的部分征稅,適用5%至45%的9級(jí)超額累進(jìn)稅率。即:計(jì)稅金額=每月工資3000元,個(gè)人所得稅計(jì)稅金額×稅率速算扣除數(shù)。稅率表如表3-1所示。試開(kāi)發(fā)個(gè)人所得稅計(jì)算器。表3-1 稅率表 本月應(yīng)納稅所得額 稅率 速算扣除數(shù)(元) 不超過(guò)1500元3%0 超過(guò)1500元至4500元10%105 超過(guò)4500元至9000元20%555 超過(guò)9000元至35000元25%1005 超過(guò)35000元至55000元30%2

25、755 超過(guò)55000元至80000元35%5505 超過(guò)80000元45%135052效果圖       圖3-1效果圖                 3功能說(shuō)明定義一個(gè)對(duì)話框?qū)斎氲膫€(gè)人工資,計(jì)算所得稅。二、項(xiàng)目分析根據(jù)項(xiàng)目需求,需要利用MFC環(huán)境定義一個(gè)菜單;一個(gè)輸入對(duì)話框類(lèi),提供個(gè)人月收入的輸入界面;另外定義一個(gè)PayTax類(lèi),在PayTax類(lèi)中定義了數(shù)據(jù)成員:個(gè)人月

26、收入和個(gè)人所得稅,定義了成員函數(shù):稅率計(jì)算函數(shù)。最后在對(duì)話框上輸出了相應(yīng)的繳納稅額。三、項(xiàng)目設(shè)計(jì)1類(lèi)的設(shè)計(jì)基于上述分析,本項(xiàng)目需要設(shè)計(jì)一個(gè)類(lèi)PayTax。 圖3-2 PayTax類(lèi)圖數(shù)據(jù)成員double income;           工資月收入。double output;           個(gè)人所得稅。函數(shù)成員PayTax(double money); 帶參構(gòu)造函數(shù)。double calculate();

27、       計(jì)算個(gè)人所得稅。在類(lèi)視圖Class View上選中Example2 classes點(diǎn)擊右鍵選擇New Class,彈出New Class對(duì)話框,在Class type中選擇普通類(lèi)Generic Class,在Class Information的Name單選框中輸入類(lèi)名PayTax,點(diǎn)擊OK按鈕,如圖4-3所示。圖3-3 創(chuàng)建PayTax類(lèi)                &#

28、160; 完成后在類(lèi)視圖Class View中出現(xiàn)新類(lèi)PayTax。在文件視圖的Header Files下找到PayTax.h文件雙擊打開(kāi),其中已經(jīng)出現(xiàn)該類(lèi)的聲明,添加成員函數(shù)calculate(),修改構(gòu)造函數(shù)PayTax的聲明,添加變量成員income,output的聲明。在文件視圖的Source Files下找到PayTax.cpp文件雙擊打開(kāi),可以看到構(gòu)造函數(shù)和析構(gòu)函數(shù)的定義已經(jīng)存在,在其下添加成員函數(shù)calculate()的定義和修改構(gòu)造函數(shù)PayTax()的定義。2對(duì)話框設(shè)計(jì)在資源視圖Resource View上選擇Dialog,點(diǎn)擊右鍵,選擇Insert Dialog,

29、在對(duì)話框內(nèi)添加靜態(tài)文本Static Text和編輯框Edit Box控件并修改屬性,上面的Edit控件的ID為IDC_EDIT1,下面的Edit控件的ID為IDC_EDIT2,而且因?yàn)镮DC_EDIT2控件用于個(gè)人所得稅的輸出,所以設(shè)計(jì)其屬性中的Border為False,Read-only為T(mén)rue,如圖3-4所示。對(duì)話框的設(shè)計(jì)結(jié)果如圖3-5所示。圖3-4 對(duì)話框IDC_EDIT2屬性的修改                 &

30、#160;   圖3-5對(duì)話框設(shè)計(jì)結(jié)果雙擊對(duì)話框彈出Add Class對(duì)話框,保持默認(rèn)值添加一個(gè)新類(lèi)Creat a new class,點(diǎn)擊OK按鈕。在圖3-6所示對(duì)話框中填寫(xiě)對(duì)話框類(lèi)名inputdlg,點(diǎn)擊確定。圖3-6 創(chuàng)建對(duì)話框類(lèi)在View菜單下選擇MFCClass Wizard 菜單項(xiàng),切換到Member Variable標(biāo)簽頁(yè)。修改成員變量的名稱(chēng)和類(lèi)型。其中IDC_EDIT1的成員變量名為m_income,類(lèi)型為double,代表個(gè)人收入;IDC_EDIT2的成員變量名為m_output,類(lèi)型為double,代表個(gè)人所得稅,點(diǎn)擊OK退出。設(shè)計(jì)結(jié)果如圖4-7所示。圖

31、3-7 對(duì)話框類(lèi)成員變量的設(shè)計(jì)結(jié)果從菜單View中打開(kāi)類(lèi)向?qū)lass wizard,如圖3-8所示。在Object IDs中選擇IDOK,在Class name中選擇Inputdlg,在Message中選擇COMMAND后,點(diǎn)擊Add function按鈕,彈出對(duì)話框,默認(rèn)菜單成員函數(shù)的名字為OnOK(),點(diǎn)擊OK按鈕,則在Member function中添加了成員函數(shù),該函數(shù)是Inputdlg類(lèi)的成員函數(shù),點(diǎn)擊Edit Code按鈕可以對(duì)函數(shù)進(jìn)行編輯。圖3-8 設(shè)計(jì)對(duì)話框成員函數(shù)3菜單設(shè)計(jì)在資源視圖Resource View上點(diǎn)擊Menu,雙擊打開(kāi)IDR_MAINFRAME,修改菜單項(xiàng),設(shè)

32、置菜單Tax的ID為ID_MENUTax,如圖3-9所示。圖3-9 設(shè)計(jì)菜單從菜單View中打開(kāi)類(lèi)向?qū)lass wizard,如圖3-10所示。在Object IDs中選擇ID_MENUTax,在Class name中選擇CExample1 View,在Message中選擇COMMAND后,點(diǎn)擊Add function按鈕,彈出對(duì)話框,默認(rèn)菜單成員函數(shù)的名字為OnMENUTax(),點(diǎn)擊OK按鈕,則在Member function中添加了成員函數(shù),該函數(shù)是CExample2 View類(lèi)的成員函數(shù),單擊Edit Code按鈕可以對(duì)函數(shù)進(jìn)行編輯。圖3-10 MFC類(lèi)向?qū)Р藛握{(diào)用流程圖見(jiàn)圖3-11

33、。圖3-11 菜單調(diào)用流程圖項(xiàng)目四 復(fù)數(shù)的四則運(yùn)算一、項(xiàng)目需求1項(xiàng)目描述復(fù)數(shù)a=x1+y1i和a=x2+y2i的四則運(yùn)算公式如下:, ,試編寫(xiě)程序?qū)斎氲膬蓚€(gè)復(fù)數(shù)進(jìn)行加減乘除四則運(yùn)算,并在屏幕上輸出計(jì)算結(jié)果。2效果圖   圖4-1 項(xiàng)目效果圖3功能說(shuō)明(1)進(jìn)行加“”,減“”,乘“*”,除“/”運(yùn)算符重載,對(duì)輸入的兩個(gè)復(fù)數(shù)對(duì)象輸出其運(yùn)算結(jié)果。(2)當(dāng)?shù)诙€(gè)復(fù)數(shù)b的實(shí)部和虛部同時(shí)為0時(shí),除法不能運(yùn)算,需要提示。(3)設(shè)計(jì)輸出函數(shù),對(duì)于計(jì)算結(jié)果的虛部為負(fù)數(shù)的情況能進(jìn)行處理。如2-2i不要輸出為2+-2i。二、項(xiàng)目分析根據(jù)項(xiàng)目需求,需要利用MFC環(huán)境定義了一個(gè)菜單;一個(gè)輸入對(duì)話框

34、類(lèi),提供個(gè)兩個(gè)復(fù)數(shù)的輸入界面;另外定義一個(gè)complex類(lèi),在complex類(lèi)中定義了數(shù)據(jù)成員:實(shí)部值和虛部值,定義了成員函數(shù):聲明了友元加號(hào)運(yùn)算符重載函數(shù)、友元減號(hào)運(yùn)算符重載函數(shù)、友元乘號(hào)運(yùn)算符重載函數(shù)、友元除號(hào)運(yùn)算符重載函數(shù)、實(shí)部值獲取函數(shù)和虛部值獲取函數(shù)。最后在視圖區(qū)輸出了兩個(gè)復(fù)數(shù)的運(yùn)算結(jié)果。本項(xiàng)目的重點(diǎn)是如何使用運(yùn)算符重載函數(shù)來(lái)進(jìn)行復(fù)數(shù)對(duì)象的四則運(yùn)算,因?yàn)樵贛FC環(huán)境中不能重載輸入和輸出運(yùn)算符,需要獨(dú)立設(shè)計(jì)復(fù)數(shù)輸出函數(shù)。本項(xiàng)目的難點(diǎn)在于復(fù)數(shù)的虛部計(jì)算結(jié)果為負(fù)數(shù)時(shí)的輸出函數(shù)設(shè)計(jì)。三、項(xiàng)目設(shè)計(jì)1類(lèi)的設(shè)計(jì)本項(xiàng)目需要設(shè)計(jì)一個(gè)類(lèi)complex。圖4-2 complex類(lèi)圖數(shù)據(jù)成員double r

35、eal;           復(fù)數(shù)實(shí)部。double imag;           復(fù)數(shù)虛部。 函數(shù)成員complex();默認(rèn)構(gòu)造函數(shù)。complex(double,double);帶參構(gòu)造函數(shù)。friend complex operator + (complex &c1,complex&c2); 友元運(yùn)算符重載函數(shù)。friend complex operator - (complex &c1,complex&c2);友元運(yùn)算符重載函數(shù)。friend complex operator * (complex &c1,complex&c2)

溫馨提示

  • 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)論