饮料自动售货机系统设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
饮料自动售货机系统设计
摘要:设计一个饮料机,实现计算应找钱数,找币,以及销售量统计等多种功能。
1.引言
自动售货机像磁卡电话、银行柜员机一样,以方便、新颖、文明、昼夜服务等特点,成为发达国家不可缺少的便民配套设施。如今的自动售货机可以为顾客提供多种服务。顾客可以根据自己的需要选择商品并投入钱币,售货机接收钱币,售出商品。
2.问题描述
该设计模拟自动售货机的工作原理和方式,完成出售商品、接收钱币、找零钱等功能。
与系统交涉的人有两类:送货员和顾客。
送货员在每周固定时间查看售货机中的饮料数量和钱币数量情况,并根据计划适当添加饮料。同时,送货员也可以根据需要通过重新初始化增加饮料的种类,或修改饮料的价格。
顾客根据需要选择饮料,投入钱币,并等待售货机的响应。售货机(所设计的系统)所做的响应:如果售货机中没有该种饮料,则退回上一步,交易失败。否则,如果售货机中有该种饮料,则判断顾客所投钱币是否足够,如果不够,则提示顾客交易失败,并退回上一步。如果顾客所投的钱币够所购买的饮料,则售出饮料并询问是否继续购买。如果不需购买则进行找币,返回初始界面。
当然,实际生活中的售货机可能有更加强大的功能和更完善的处理,这里只模拟一个售货机系统,所以只实现其核心原理,并练习和提高分析问题能力和编程能力。
问题模型如图所示
3.数据结构设计
3.1类结构体说明
采用了
建立了一个饮料机类
class ylj
{
public:
ylj(){count=0;}
ylj(string a,double b){name=a;price=b;count=0;}
void disp();
void goumai();
void gm();
int count;
string name;
double price;
int stock;
};
Count为销售量计数器,name为饮料名称,price为饮料价格,stock为饮料存货量。
3.2函数说明
disp()函数用于输出对象。
goumai();函数用于购买时的统计。
gm();函数用于当购买失败时的返回处理。
zhaobi(int a)用于对元的找币。
zhaobj(int a)用于对角的找币。
4.算法设计
#include
#include
using namespace std;
double sum;
#define password 123456
class ylj
{
public:
ylj(){count=0;}
ylj(string a,double b){name=a;price=b;count=0;}
void disp();
void goumai();
void gm();
int count;
string name;
double price;
int stock;
};
void ylj::disp() //输出函数
{cout<<"饮料:"< void zhaobi(int a) //找币函数(元) { int b,c; cout<<"找币为"< b=a/50; c=a%50; if(b) cout< b=c/20; c=c%20; if(b) cout< b=c/10; c=c%10; if(b) cout< b=c/5; c=c%5; if(b) cout< cout< } void zhaobij(int a) //找币函数(角) { int b,c; b=a/5; c=a%5; if(b) cout< cout< } void ylj::goumai() //购买函数 { sum+=price; count++; stock--; } void ylj::gm() //购买失败函数 { sum-=price; count--; stock++; } void main() //主函数 { int pw,i,n,choice,c,xz,x,xx,pd,yuan,b,jiao; double money=0; choice=0; xz=0; pd=0; ylj *a; //定义饮料机对象数组 cout<<"进行饮料机初始化,请输入有几种饮料"< for(i=0;i { cout<<"请输入第"< cin>>a[i].name; cout<<"请输入第"< cin>>a[i].price; cout<<"请输入第"< cin>>a[i].stock; if(i==(n-1)) cout<<"输入完毕"< cout<<"目前已有饮料明细为"< for(i=0;i a[i].disp();