最新C++项目实训指导书.doc
《最新C++项目实训指导书.doc》由会员分享,可在线阅读,更多相关《最新C++项目实训指导书.doc(64页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateC+项目实训指导书深圳信息职业技术学院中小企业桌面应用系统开发实训指导书项目一 饮料自动贩卖机模拟程序一、项目需求1项目描述本项目模拟饮料自动售卖机的销售过程。顾客首先进行投币,机器显示投币金额。接下来顾客选择要购买的饮料,如果投币金额足够并且所购饮料存在,则提示用户在出口处取走饮料,同时找零。如果投币金额不足,显示提示信息。如果所购饮料已经售完,显示售完信息。2效果
2、图图1-1 饮料自动贩卖机项目效果图3功能说明(1)只接受10元、5元、2元、1元和0.5元的纸币和硬币。(2)顾客一次只能投入上述一种金额的纸币或硬币,当用户重复投入时货币金额累加。(3)销售的饮料包括5种:可口可乐(2元)、百事可乐(2元)、橙汁(3元)、咖啡(5元)、纯净水(1.5元)。(4)系统通过必要的提示信息,提示用户完成相应的操作。(5)若顾客所购买的饮料已经售完,则进行提示并询问用户是否购买其它的饮料。(6)完成一次售卖后,系统自动进行结算找零。 二、项目分析根据系统功能要求,首先设计处理钱币的类和商品信息类。处理钱币的类主要完成与钱币相关的工作,如给顾客找零等过程。商品信息类
3、主要用来处理与商品相关的工作,如获得商品信息等操作。还需要设计一个自动贩卖机类来实现饮料的售卖过程。在这个类里面,将钱币类和商品信息类作为其数据成员。同时定义了包含5个GoodsInfo对象的数组,负责保存饮料的三个信息:名称、价格和库存量,并且可以反馈这些信息。项目需要用到类与类之间的一种关系:has-a 拥有关系,has-a关系是指一个对象包含另一个对象,即一个对象是另一个对象的成员。三、项目设计1类的设计根据上述的设计思想,设计了“MoneyCounter类”、“GoodsInfo 类”和“DrinkMachine类”3个类。(1) MoneyCounter类的设计图1-2 MoneyC
4、ounter类图数据成员float input_money; 用于记录顾客投币金额函数成员MoneyCounter(); 构造函数,初始化顾客投币金额为0.00MoneyCounter() 析构函数void getmoney(); 提示顾客投币float money_from_buyer(); 返回投币金额void clear(); 清空,准备下一轮投币void return_money(float); 返回找的零钱(2)GoodsInfo 类的设计图1-3 GoodsInfo类图数据成员string name ; 用于记录饮料名称float price; 用于记录饮料的单价int total
5、; 用于记录饮料的总库存数函数成员 GoodsInfo(); 构造函数,初始化饮料信息GoodsInfo() 析构函数void set_goods(string, float, int); 设置每种饮料的属性:名称,价格,数量string goods_name();返回饮料的名称float goods_price(); 返回饮料的价格int goods_number(); 返回饮料的数量(3)DrinkMachine类的设计图1-4 DrinkMachine类图数据成员MoneyCounter moneyctr; 定义MoneyCounter的对象,实现投币、找零等功能 GoodsInfo v
6、_goods5; 定义GoodsInfo的对象,实现商品信息的维护,此处设计了5种饮料,详见该类的实现函数成员DrinkMachine(); 构造函数,初始化自动售货机中的商品信息DrinkMachine() 析构函数void showchoices(); 显示饮料选择信息void inputmoney(); 获取顾客投入钱币bool goodsitem(int); 检查饮料状况void return_allmoney(); 返回钱数2主程序设计在主函数中,首先定义了一个DrinkMachine类(自动售货机类)的对象dri,并未显式地定义MoneyCounter类和GoodsInfo类的对象
7、。但是在DrinkMachine类中含有MoneyCounter类和GoodsInfo类的数据成员。其次设计一个两重循环,外循环的持续条件是顾客继续购买,内循环的持续条件是顾客继续重复投币,即顾客可以反复投币直至投够为止。当顾客购买成功或不再继续购买时流程中止。程序流程图如图1-5所示。图1-5 程序流程图 项目二 超市收银系统模拟一、项目需求1项目描述模拟“美特好”超市购物过程,根据货物清单,选定所购货物种类和数量,实现收银结账。2效果图效果图如图2-1所示。 图2-1 超市收银系统效果图3功能说明(1)显示超市库存商品信息。(2)显示购物流程提示信息。(3)实现购物过程,反复输入所购各种商
8、品的索引和购买数量,直到商品索引号输入”-1”结束购物流程。(4)实现收银,根据顾客所交现金,自动找零。二、项目分析在本项目中,超市收银系统应具备四大基本功能:商品管理、货架管理、购物篮管理和收银管理。货架管理实现库中某种商品的入库、出库、查询及显示等功能。需要建立一个货架类,通过调用相应的函数来实现。每种商品有单价、条形码、商品名称等属性。商品管理类实现了设置、获取商品信息,复制商品信息等功能。购物篮管理就是一个小型的货架管理,可以用货架类来实现。收银实现商品的结账、找零等任务。需要建立一个收银台类,通过调用相应的函数来实现。其中,需要注意以下一些问题:从货架拿货时,应该把商品拿一部分出去,
9、通过把商品“复制”一份出去来实现。“货架”上有形形色色的商品,因此,这个类需要向量这个容器来容纳这些商品。向量中仅存储商品对象是不够的,因为商品没有量的概念,到底容器中包含多少件此类商品还需要用另外一个变量来表示,通过把商品对象和商品数量集成到一个结构体中来实现。如何构建购物篮对象?仔细想一下,“购物篮”就是一个小型的货架,因此可以用“货架”类模拟一个购物篮。三、项目设计1类的设计根据上述的设计思想,设计了“商品类”、“货架类”和“收银台类”3个类,这3个类的声明部分在“counter.h”中实现,3个类的成员函数的实现部分在文件“counter.cpp”中完成。其中商品类(CGoods类)负
10、责完成商品信息的存储、获取、复制等,货架类(CStore类)负责完成库中商品的入库、出库、查询及显示等。收银台类(CCounter类)负责完成商品的结账、找零等任务。另外在counter.h文件中还定义了一个表示货架商品对象的结构SStoreElement,它有两个成员,一个是商品对象的指针,一个是此类商品的数目。货架中的每个商品都是这个结构类型的。(1)CGoods类(商品类)的设计图2-2 CGoods类的结构数据成员int m_iIndex 用于记录商品索引,作用类似于条形码。string m_strName 用于记录商品名称。double m_dUnitPrice 用于记录商品单价。函
11、数成员CGoods( int iIndex, string strName, double dUnitPrice ) 构造函数,用来建立一个新商品,建立商品时给出商品索引、商品名及单价。virtual CGoods(void) 析构函数,用来进行清理工作。string GetName(void) const 获取商品名称。int GetIndex(void) const 获取商品索引。double GetUnitPrice(void) const 获取商品单价。 void SetUnitPrice(double dUnitPrice) 设置商品单价。CGoods *Clone() 复制本类商品
12、,但初始商品数目为0。(2)结构体tagStoreElement /货架元素数据类型typedef struct tagStoreElement CGoods *pGoods; /商品指针 int iNum; /记录商品数量StoreElement, *pStoreElement;图2-3 结构体tagStoreElement(3)CStore类(货架类)的设计图2-4 CStore类的结构数据成员vector m_vStore 用于存储顾客所选商品的向量。函数成员CStore() 构造函数,用来进行初始化工作。virtual CStore() 析构函数,在此调用成员函数DeleteAllGo
13、ods()删除货架中所有的商品。bool AddGoods(CGoods *pGoods, int iNum) 该成员函数用来向货架增加商品,假如货架中已经有了同类商品,那么只增加此类商品的数目。其中,pGoods欲增加的商品对象,iNum增加的数量。返回值:true成功, false失败。int QueryGoods(const string &strName) 该成员函数是重载函数,用来查询商品。其中,strName要查询的商品的名字。返回值:商品数量。int QueryGoods(int iIndex) 该成员函数是重载函数,用来查询商品。其中,iIndex要查询的商品的索引号。返回值:
14、商品数量。int DeleteGoods(const string &strName, int iNum) 该成员函数是重载函数,用来删除商品。其中,strName商品名字,iNum删除数目,-1为全部删除。返回值:剩余商品数量。int DeleteGoods(int iIndex, int iNum) 该成员函数是重载函数,用来删除商品。其中,iIndex商品索引号,iNum删除数目,-1为全部删除。返回值:剩余商品数量。void DeleteAllGoods(void) 该成员函数用来删除购物篮中的所有商品。vector* GetAllGoods(void) 该成员函数用来获取货架的所有商
15、品。返回值:所有商品信息组成的向量。pStoreElement GetGoods(int iIndex) 该成员函数是重载函数,用来获取某种商品。其中,iIndex商品索引号。返回值:如果货架存在此类商品,则返回此类商品的存储元素指针,否则返回NULL。pStoreElement GetGoods(const string &strName) 该成员函数是重载函数,用来获取某种商品。其中,strName商品名称。 返回值:如果货架存在此类商品,则返回此类商品的存储元素指针,否则返回NULL。void Print() 该成员函数用来打印货架全部货物清单,包括商品索引号、商品名、数量及单价。(4)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 C+ 项目 指导书
限制150内