版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 面向对象程序设计课外实践报告项 目 名 称: 所 在 班 级: 小 组 成 员: 指 导 教 师: 起 止 时 间: 目 录项目基本信息 2一、问题描述及分析: 3二、功能模块及结构描述: 3功能模块: 3结构描述: 3三、主要流程描述: 4流程图: 4四、使用说明: 5五、问题及解决方法 8问题1: 8解决方法: 8问题2: 8解决方法: 8六、课外实践总结: 9七、源代码: 9参 考 文 献 20项目基本信息项目名称设计一个排课程序项目简介1问题描述设计饮料自动售货机系统模拟自动售货机的销售过程。首先由顾客投币。接下来顾客选择要购买的饮料,如果投币金额足够并且所购饮料存在,则提示用户在出
2、口处取出饮料,同时找零钱。如果投币金额不足,则显示信息“金额不足”,如果所购饮料已经售完,显示售完信息“对不起,饮料已经卖完”。2基本要求只接受10元、5元、2元、1元和0.5元的硬币;(2顾客一次只能投入一种上述的纸币或者是硬币,当用户重复的进行投币时金额累加。(3销售的饮料包括5种:可口可乐(2元,百事可乐(2元、橙汁(3元、咖啡(5元、纯净水(1.5元;(4系统通过必要的提示信息,提示用户完成相应的操作。(5如果顾客所购买饮料已经售完,则提示用户是否要购买其他的饮料。(6完成第一次售货后,系统自动进行结算找零。(7 实现一次购买多种商品的功能。3测试数据小组成员任务分工xxx:钱币类的实
3、现,程序的调试,程序的代码框架,部分其它类中函数实现的协助xxx:商品信息类的实现,图片的制作,部分其它类中函数实现的协助xxx:自动售货机类的实现,资料的查找,部分其它类中函数实现的协助一、问题描述及分析:首先提示用户投币,然后用户选择要购买的饮料,先检查钱数是否足够,如果不够就提示用户“余额不足”,并且提示用户是否继续投币然后购买,如果是就继续执行购买操作,否则退出程序,且提示用户取回自己的钱;如果钱数足够,再判断所购饮料是否存在,如果存在就结算钱数,然后询问用户是否还要购买其它饮料,如果所购饮料不存在就给出售完信息“对不起,该饮料已经售完”,询问顾客是否选择其它饮料,如果是就继续执行购买
4、操作,否则退出程序。二、功能模块及结构描述:功能模块:1. 实现钱的各种处理2. 实现商品的各种处理3. 实现自动售货机的各种处理4. 判断输入的是否为钱,是否为购买饮料的操作,是否为再次购买,是否为一次购买多种商品结构描述:1. class Money(钱币类)(1) 钱的找零(2) 钱的累加(3) 钱的重置(4) 获取钱数2. class Product(商品信息类(1) 获取产品的名称(2) 获取产品的数量(3) 更改产品的数量(4) 判断产品是否还有剩余3. class Machine(自动售货机类 (1) 继承钱币类和商品信息类(2) 重新定义商品信息类和钱币类的虚函数(3) 给出必
5、要的机器提示信息三、主要流程描述:流程图:如果钱数够而且所购饮料还有就提示用户取回饮料,并且询问否继续购买。如果钱数不够就提示用户“金额不足”,并且询问是否继续投币然后购买图1 系统的操作流程图<5?YY Y Y YN N N N NYNYN图2 主要算法“结算找零”的操作流程图<5?四、使用说明: 程序运行后,进入界面:图3 系统进入界面图4 没有投币就选择购买时提示“金额不足”图5 完成多次购买,并退出图6 第一次操作完成,进行第二次操作图7 所购饮料已经卖完,提示用户购买其它饮料在如上所示的界面下,根据提示进行基本的操作。五、问题及解决方法问题1:不知道怎样实现一次购买多种商
6、品?解决方法:首先询问顾客是否想要购买其它商品,通过其输入的是OK或EXIT置bool型的全局变量IsMore是真或假,在主函数中判断IsMore如果是真就执行刚开始购买商品的函数同时置IsMore为假,如果是假就退出程序问题2:不知道当金额不足时,怎样实现不是退出程序而是实现用户的继续购买?解决方法:设置一个全局的bool型变量IsAgain,记录顾客在金额不足时是否选择了继续操作。如果是就提示顾客继续输钱,然后在主函数中像刚开始第一次投币后购买东西一样执行下面的操作,同时置IsAgain为假,下次如果顾客没有选择继续操作就不会执行。六、课外实践总结:通过本次的饮料自动售货机系统的制作,发现
7、需要学习的地方还有很多,然后一边看资料书一边写程序,增强了学习能力,同时锻炼了解决问题过程的思考能力。通过团队合作,增强了合作能力,为以后大型程序的团队开发做了准备。当程序完成之后,看着亲自动手完成的成果,心里有一种极大的满足感。同时认识到学习面向对象程序设计的重要性。七、源代码:/类的定义及函数的声明#ifndef MARKET_H_H#define MARKET_H_H#include <string>#include <iostream>using namespace std;extern bool isAgain;extern bool isMore;class
8、 Machine;class Moneypublic:Money(Money(double p;virtual void Change(int m,Machine *info;void PutMoney(double n;double GetMoney(;void WarnPrompt(;void CurrentMoney(;void Reset(;private:double money;class Productpublic:Product(Product(string pn,double p,int a;virtual void GetProductName(;virtual int G
9、etProductAmount(;virtual void ChangeAmount(;virtual bool Surplus(;private:string ProductName;Money Price;int Amount;class Machine:public Product,public Moneypublic:Machine(;Machine(string pn,double p,int a;virtual void GetProductName(;virtual int GetProductAmount(;virtual void ChangeAmount(;virtual
10、void Change(int m,Machine *info;virtual bool Surplus(;void OperatePrompt(;private:Product Info;bool IsMoney(double n;bool IsOperate(double n;void SolemnPremise(;void InsertCoins(;bool IsOk(string chr;void BuyAgain(;void BuyMore(;#endif;/函数的实现#include "market.h"bool isAgain=false;bool isMor
11、e=false;bool IsMoney(double nif(n=0.5|n=1|n=2|n=5|n=10return true;return false;bool IsOperate(double nif(n=11|n=12|n=13|n=14|n=15return true;return false;bool IsOk(string chrif(chr="OK"return true;return false;void BuyAgain(string chr;cin>>chr;isAgain=IsOk(chr;void BuyMore(string chr
12、;cin>>chr;isMore=IsOk(chr;void SolemnPremise(cout<<" *"<<endl;cout<<" <<温馨提示>> "<<endl;cout<<" 我们只接受5角、1元、2元、5元、10元面值的钱 "<<endl;cout<<" 5角请按0.5、1元请按1、2元请按2、5元请按5、10元请按10 "<<endl;cout<<&quo
13、t; 纯净水 11 可口可乐12 百事可乐13 橙汁14"<<endl;cout<<" 咖啡15 "<<endl; cout<<" *"<<endl;void InsertCoins(cout<<endl;cout<<" "cout<<"="<<endl;cout<<" "cout<<"请投币!"<<endl;cout<
14、;<" "cout<<"="<<endl;/钱币类的实现Money:Money(double p:money(pvoid Money:PutMoney(double nmoney+=n;double Money:GetMoney(return money;void Money:Reset(money=0;void Money:WarnPrompt(cout<<"对不起,金额不足!"<<endl;cout<<"是否继续购买:是 选择“OK” 否 选择“EXIT”
15、:"void Money:CurrentMoney(cout<<"您已投入"<<GetMoney(<<"元"<<endl;void Money:Change(int n,Machine *infoMachine m;Money *p=&m;bool Is=false;switch(ncase 11:if(money<1.5WarnPrompt(;BuyAgain(;elsep->Change(n,info;if(info4.Surplus(money-=1.5;info4.Ch
16、angeAmount(;Is=true;elseIs=false;break;case 12:if (money<2WarnPrompt(;BuyAgain(;elsep->Change(n,info;if(info0.Surplus(money-=2;info0.ChangeAmount(;Is=true;elseIs=false;break;case 13:if (money<2WarnPrompt(;BuyAgain(;elsep->Change(n,info;if(info1.Surplus(money-=2;info1.ChangeAmount(;Is=tru
17、e;elseIs=false;break;case 14:if (money<3WarnPrompt(;BuyAgain(;elsep->Change(n,info;if(info2.Surplus(money-=3;info2.ChangeAmount(;Is=true;elseIs=false;break;case 15:if (money<5WarnPrompt(;BuyAgain(;elsep->Change(n,info;if(info3.Surplus(money-=5;info3.ChangeAmount(;Is=true;elseIs=false;bre
18、ak;if(Is&&money!=0cout<<endl<<"是否继续购买其它饮品:是 选择“OK” 否 选择“EXIT”:"BuyMore(;if(!isAgain&&!isMoreif(money!=0cout<<"请到出口处取回您的钱"<<money<<"元"<<endl;cout<<"操作完成!"<<endl;Reset(;/商品信息类的实现Product:Product(stri
19、ng pn,double p,int a:Price(pProductName=pn;Amount=a;void Product:GetProductName(cout<<ProductName;int Product:GetProductAmount(return Amount;void Product:ChangeAmount(-Amount;bool Product:Surplus(if(GetProductAmount(=0return false;return true;void PremiseBuy(cout<<"您是否想要购买其它饮品?"
20、;<<endl;cout<<"是 选择“OK” 否 选择“EXIT”:"/自动售货机类的实现Machine:Machine(Machine:Machine(string pn,double p,int a:Info(pn,p,avoid Machine:GetProductName(Info.GetProductName(;int Machine:GetProductAmount(return Info.GetProductAmount(;void Machine:ChangeAmount(Info.ChangeAmount(;void Machin
21、e:OperatePrompt(cout<<"您可以选择继续投币或者选择饮品:"bool Machine:Surplus(if(GetProductAmount(=0return false;return true;void Machine:Change(int n,Machine *info switch (ncase 11:if(info4.Surplus(cout<<"请到出口取回您的"info4.GetProductName(;cout<<"。"<<endl; elsecout&
22、lt;<"对不起,"info4.GetProductName(;cout<<"已经售完。"<<endl;PremiseBuy(;BuyMore(;break;case 12:if(info0.Surplus(cout<<"请到出口取回您的"info0.GetProductName(;cout<<"。"<<endl;elsecout<<"对不起,"info0.GetProductName(;cout<<&qu
23、ot;已经售完。"<<endl;PremiseBuy(;BuyMore(;break;case 13:if(info1.Surplus( cout<<"请到出口取回您的"info1.GetProductName(;cout<<"。"<<endl;elsecout<<"对不起,"info1.GetProductName(;cout<<"已经售完。"<<endl;PremiseBuy(;BuyMore(;break;case
24、14:if(info2.Surplus(cout<<"请到出口取回您的"info2.GetProductName(;cout<<"。"<<endl;elsecout<<"对不起,"info2.GetProductName(;cout<<"已经售完。"<<endl;PremiseBuy(;BuyMore(;break;case 15:if(info3.Surplus(cout<<"请到出口取回您的"info3.GetProductName(;cout<<"。"<<endl;elsecout<<"对不起,"info3.GetProductName(;cout<<"已经售完。"<<endl;PremiseBuy(;BuyMore(;break;/主函数的实现#include "market.h"int m
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 基于人工智能的教育平台二零二四年度合作协议3篇
- 2024年全新工程招投标及合同管理手册
- 2024年度场地租赁合同:度假村场地租赁(2024版)3篇
- 范惠的专利实施许可合同(2024版)3篇
- 2024版商品房预售资金监管协议3篇
- 2024年跨境电商劳动合同范本3篇
- 2024年双边技术共享协议2篇
- 带装修和设备的美发店转让协议(2024年版)3篇
- 二零二四年度智能物流系统升级合同
- 2024年度智慧物流仓储系统集成服务合同2篇
- 江苏省建筑与装饰工程计价定额(2014)电子表格版
- 山东师范大学《文献学专题》期末考试复习题及参考答案
- 安全心理学智慧树知到答案章节测试2023年太原理工大学
- 北京市绿化工程质量监督实施方法
- 工程四新技术应用
- 完整的公司项目网络工程验收报告(共13页)
- 人教版七年级(上)数学竞赛试题(含答案)
- 部编版五年级语文上册第八单元教材分析及全部教案
- 银行税收自查报告(共5篇)
- 山东省建筑工程施工许可现场踏勘记录表
- 白炭黑的应用(详细)
评论
0/150
提交评论