C項目實訓指導書_第1頁
C項目實訓指導書_第2頁
C項目實訓指導書_第3頁
C項目實訓指導書_第4頁
C項目實訓指導書_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

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

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

3、些信息。項目需要用到類與類之間的一種關(guān)系:has-a 擁有關(guān)系,has-a關(guān)系是指一個對象包含另一個對象,即一個對象是另一個對象的成員。三、項目設計1類的設計根據(jù)上述的設計思想,設計了“MoneyCounter類”、“GoodsInfo 類”和“DrinkMachine類”3個類。(1) MoneyCounter類的設計圖1-2 MoneyCounter類圖數(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();            清空,準備下一輪投幣void return_money(float); 返回找的零錢(2)GoodsInfo 類的設計圖1-3 GoodsInfo類圖

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

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

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

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

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

10、屬性。商品管理類實現(xiàn)了設置、獲取商品信息,復制商品信息等功能。購物籃管理就是一個小型的貨架管理,可以用貨架類來實現(xiàn)。收銀實現(xiàn)商品的結(jié)賬、找零等任務。需要建立一個收銀臺類,通過調(diào)用相應的函數(shù)來實現(xiàn)。其中,需要注意以下一些問題:從貨架拿貨時,應該把商品拿一部分出去,通過把商品“復制”一份出去來實現(xiàn)?!柏浖堋鄙嫌行涡紊纳唐?,因此,這個類需要向量這個容器來容納這些商品。向量中僅存儲商品對象是不夠的,因為商品沒有量的概念,到底容器中包含多少件此類商品還需要用另外一個變量來表示,通過把商品對象和商品數(shù)量集成到一個結(jié)構(gòu)體中來實現(xiàn)。如何構(gòu)建購物籃對象?仔細想一下,“購物籃”就是一個小型的貨架,因此可以用“

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

溫馨提示

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

評論

0/150

提交評論