自动售货机系统程序.docx
- 文档编号:11725497
- 上传时间:2023-03-31
- 格式:DOCX
- 页数:23
- 大小:19.13KB
自动售货机系统程序.docx
《自动售货机系统程序.docx》由会员分享,可在线阅读,更多相关《自动售货机系统程序.docx(23页珍藏版)》请在冰豆网上搜索。
自动售货机系统程序
Coin类:
#include
#include
#include
usingnamespacestd;
classCoin
{
public:
/**
Constructsacoinwithagivennameandvalue
paramnthecoinname
paramvthecoinvalue
*/
Coin(stringn,doublev);
/**
Getsthecoinname.
returnthename
*/
stringget_name()const;
/**
Getsthecoinvalue
returnthevalue
*/
doubleget_value()const;
private:
stringname;
doublevalue;
};
Coin:
:
Coin(stringn,doublev)
{
name=n;
value=v;
}
stringCoin:
:
get_name()const
{
returnname;
}
doubleCoin:
:
get_value()const
{
returnvalue;
}
Product类:
#include
#include
#include
usingnamespacestd;
classProduct
{
public:
/**
Constructsaproductwithagivenname,priceandquantity
paramntheproductname
paramptheprice
paramqthequantity
*/
Product(stringn,doublep,intq);
/**
Getstheproductname
returnthename
*/
stringget_name()const;
/**
Getstheproductprice
returntheprice
*/
doubleget_price()const;
/**
Getstheproductquantity
returnthequantity
*/
intget_quantity()const;
/**
Addstotheproductquantity
paramamounttheamounttoadd
*/
voidadd_quantity(intamount);
private:
stringname;
doubleprice;
intquantity;
};
Product:
:
Product(stringn,doublep,intq)
{
name=n;
price=p;
quantity=q;
}
stringProduct:
:
get_name()const
{
returnname;
}
doubleProduct:
:
get_price()const
{
returnprice;
}
intProduct:
:
get_quantity()const
{
returnquantity;
}
voidProduct:
:
add_quantity(intamount)
{
quantity=quantity+amount;
}
VendingMachine类:
classVendingMachine
{
public:
/**
Constructsavendingmachinewithnocurrent
productselection.
*/
VendingMachine();
/**
Addsproducttothemachine.
paramptheproducttoadd
*/
voidadd_product(Productp);
/**
Setsthecurrentlyselectedproduct
paramnametheproductname
returntrueifthemachinehasaproductwiththegiven
name
*/
boolselect_product(stringname);
voidchaxun_product();//查询当前售货机内的商品
/**
Addsacointopayforthecurrentlyselectedproduct.
paramcthecointoadd
returntrueifsufficientcoinshavebeenaddedtopay
fortheselectedproduct.
*/
booladd_coin(vector
/**
Removesallcoinsthatwereaddedtopayforthecurrent
product.
returnthevalueofthereturnedcoins
*/
doublereturn_coins();
/**
Removesallmoneythatwaspaidforproducts.
returnthevalueofthemoney
*/
doubleremove_money();
doubleadd_coinbijiao(vector
doublereturn_yiyoucoins();//统计售货机中已有的货款
voidsetcurrent_product();//把当前选择的商品代号置为-1
intgetcurrent_product();//得到当前选择的商品代号
private:
vector
intcurrent_product;
vector
vector
};
VendingMachine:
:
VendingMachine()
{
current_product=-1;
}
voidVendingMachine:
:
add_product(Productp)//添加商品
{
for(inti=0;i { if(products[i].get_name()==p.get_name()&&products[i].get_price()==p.get_price()) { products[i].add_quantity(p.get_quantity()); cout<<"添加成功! "< return; } elseif(products[i].get_name()==p.get_name()&&products[i].get_price()! =p.get_price()) { cout<<"已存在该商品,与您输入的价格不同! "< return; } } products.push_back(p); cout<<"添加成功! "< } boolVendingMachine: : select_product(stringname)//选择商品 { inti; for(i=0; i { if(products[i].get_name()==name&&products[i].get_quantity()>0) { current_product=i; returntrue; } else { if(products[i].get_name()==name&&products[i].get_quantity()==0) { cout<<"对不起,该商品已售完! \n"; returnfalse; } } } if(i==products.size()) { cout<<"对不起,不存在该商品! "< returnfalse; } } doubleVendingMachine: : return_yiyoucoins()//统计售货机当前的金钱总额 { doubletotal=0; for(inti=coins.size()-1;i>=0;i--) { total=total+coins[i].get_value(); } returntotal; } boolVendingMachine: : add_coin(vector { if(current_product==-1)returnfalse; for(intk=0;k { current_payment.push_back(current_pay[k]); } doubletotal=0; for(inti=0;i { total=total+current_payment[i].get_value(); } if(total>=products[current_product].get_price())//投入的钱数与所购商品的价格比较 { for(inti=current_payment.size()-1;i>=0;i--) { coins.push_back(current_payment[i]); current_payment.pop_back(); } products[current_product].add_quantity(-1); current_product=-1; cout<<"交易成功! "< returntrue; } else { returnfalse; } } doubleVendingMachine: : add_coinbijiao(vector { if(current_product==-1)returnfalse; doubletotal=0; for(intk=0;k { total=total+current_pay[k].get_value(); } doublem=products[current_product].get_price()-total; if(m>0) returnm; else return-1; } doubleVendingMachine: : return_coins()//统计当前投入的金钱总额 { doubletotal=0; for(inti=current_payment.size()-1;i>=0;i--) { total=total+current_payment[i].get_value(); current_payment.pop_back(); } returntotal; } doubleVendingMachine: : remove_money()//取钱 { doubletotal=0; for(inti=coins.size()-1;i>=0;i--) { total=total+coins[i].get_value(); coins.pop_back(); } returntotal; } voidVendingMachine: : chaxun_product() { if(products.size()==0) { cout<<"暂时没有添加商品! "< } else { cout<<"商品名"<<"\t\t"<<"价格"<<"\t\t"<<"数量"< for(inti=0;i { cout< } } } voidVendingMachine: : setcurrent_product() { current_product=-1; } intVendingMachine: : getcurrent_product() { returncurrent_product; } Main函数: #include #include #include #include"coin.h" #include"product.h" #include"machine.h" usingnamespacestd; voidmain() { vector vector coins.push_back(Coin("nickel",0.05)); coins.push_back(Coin("dime",0.1)); coins.push_back(Coin("quarter",0.25)); coins.push_back(Coin("rmb",1.00)); VendingMachinemachine; boolmore=true; machine.chaxun_product(); while(more) { cout<<"a)添加商品x)查询商品s)选择商品p)投币c)取消e)查询当前金额r)取款q)退出: "; stringmand; cin>>mand; if(mand=="a") { cout<<"商品名: "; stringname; cin>>name; cout<<"价格: "; doubleprice; cin>>price; cout<<"数量: "; intquantity; cin>>quantity; machine.add_product(Product(name,price,quantity)); } elseif(mand=="s") { doubletotal1; total1=machine.return_yiyoucoins(); if(total1>=5000)//当售货机中的货款大于等于5000时,暂停售货 { cout<<"对不起,现在暂停售货! "< } else { machine.setcurrent_product(); cout<<"商品名: "; stringname; cin>>name; machine.select_product(name); } } elseif(mand=="p") { if(machine.getcurrent_product()! =-1)//如果当前已选择商品,才可以投币 { boolpanduan=false; while(! panduan)//多次投币的实现 { cout<<"所投钱币名称(以#结束投币过程): "; stringname; cin>>name; while(name! ="#") { boolfound=false;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 自动 售货 系统 程序