#2
a2841028492008-12-12 09:35
|
* saleheader.h
#include <iostream.h>
class MoneyCounter
{
public:
MoneyCounter();
~MoneyCounter() {}
void getmoney(); //显示可投币种类,显示顾客投币
float money_from_buyer(); //返回投币金额
void clear(); //清空,准备下一轮投币
void return_money(float); //返回找的零钱
private:
float input_money; //标记顾客投币金额
};
MoneyCounter::MoneyCounter():input_money(0.0f)
{ //初始化顾客投币金额为0.00
}
void MoneyCounter::getmoney() //显示顾客投币
{
float money;
cout<<"\n请投入钱币。\n";
cin>>money;
input_money+=money;
cout<<"\n您投入的金额是"<<input_money<<"元。\n";
return;
}
float MoneyCounter::money_from_buyer() //返回顾客投币金额
{
return input_money;
}
void MoneyCounter::clear()
{
input_money=0.0f;
return;
}
void MoneyCounter::return_money(float change)
{
cout<<"\n找零"<<change"元。\n"; //返回找零信息,
return;
}
class GoodsInfo
{
public:
GoodsInfo();
~GoodsInfo(){}
void set_goods(string,float,int);
string goods_name(); //返回饮料的名称
float goods_price(); //返回饮料的价格
int goods_nunber(); //返回饮料的数量
private:
string name; //饮料名称
float price; //饮料的单价
int total; //饮料的总库存数
};
GoodsInfo::GoodsInfo():name(""),price(0.0f),total(0)
{ //初始化饮料信息
}
void GoodsInfo::set_goods(string n,float p,int num)
{ //设置饮料信息
name=n;
price=p;
total=num;
}
string GoodsInfo::goods_name() //返回饮料名称
{
return name;
}
float GoodsInfo::goods_nunber() //返回饮料单价
{
return price;
}
int GoodsInfo::goods_nunber() //返回饮料数量
{
return total;
}
class DrinkMachine
{
public:
DrinkMachine(); //初始化自动售货机中的商品信息
~DrinkMachine(){}
void showchoices(); //显示待选饮料信息
void inputmoney(); //获取顾客投入钱币
bool goodsitem(int); //检查饮料状况
void return_allmoney();
private:
MoneyCounter moneyctr; //定义MoneyCounter的对象
GoodsInfo v_goods[5]; //一共有5种饮料,详见该类的实现
}
DrinkMachine::DrinkMachine() //初始化自动售货机中的商品信息
{
v_goods[0].set_goods("橙汁",3,20);
v_goods[1].set_goods("咖啡",5,0);
v_goods[2].set_goods("纯净水",1.5,20);
v_goods[3].set_goods("可口可乐",2,30);
v_goods[4].set_goods("百事可乐",2,28);
return;
}
void DrinkMachine::showchoices() //显示待选商品信息
{
cout.precision(2);
cout.setf(ios::fixed);
cout<<"\n您投入的金额是"<<moneyctr.money_from_buyer()<<"元。\n";
cout<<"请选择商品代码\n";
for(int i=0;i<5;i++)
{
cout<<i<<" "<<v_goods[i].goods_name()<<" "<<v_goods[i].goods_price()<<"元"<<endl;
}
cout<<"5 退款并且退出\n";
return;
}
void DrinkMachine::inputmoney() //显示可接受的面值,提示顾客投币
{
cout<<"\n本机只接受10元、5元、2元、1元和0.5元的纸币跟硬币。";
moneyctr.getmoney(); //提示顾客投币
return;
}
bool DrinkMachine::goodsitem(int select) //检查货物状况
{
int nunber=v_goods[select].goods_nunber();
if(nunber>0) //剩余数量>0
{
if (moneyctr.money_from_buyer()>=v_goods[select].goods_price()) //投币额>货物金额
{
float change=moneyctr.money_from_buyer()-v_goods[select].goods_price();
cout<<"\n您选择的是"<<v_goods[select].goods_name()<<",请在出口处拿取。\n";
if(change>0) //有找零
{
moneyctr.return_money(change); //显示找零信息
}
return true;
}
else
{
cout<<"\n您投入的金额不足!\n";
}
}
else
{
cout<<"\n您选择的饮料已售完!\n";
}
return false;
}
void DrinkMachine::return_allmoney()
{
cout<<"\n退款"<<moneyctr.money_from_buyer()<<"元。\n";
}
#include <iostream.h>
#include <string.h>
#include <"saleheader.h"> //用包含命令将类定义头文件包含进来
void main()
{
DrinkMachine dri;
string buf;
bool go_on(true),cash_on(true),got_it(true);
cout<<"\n=========欢迎使用本自动售货机!==========\n\n";
//接收投入钱币
while(go_on) //继续购买则开始下一轮循环
{
while(cash_on) //继续投币则开始下一轮循环
{
dri.inputmoney();
cout<<"\n继续投币吗? y(yes)或者n(no)";
cin>>buf;
if(buf=="n"||buf=="no")
{
cash_on=false;
}
}
//显示选择信息
dri.showchoices();
//接受顾客的数字选择
cin>>buf;
int select = atoi(buf.c_str());
if (select == 5) //显示退款信息,结束进程
{
dri.return_allmoney();
go_on = false;
}
else
{
got_it = dri.goodsystem(select);
if (got_it)
{
go_on = false; //顾客购买完毕,自动结束
}
else
{
cout<<"\n需要其他饮料吗?y(yes)或者n(no)";
cin>>buf;
if(buf=="y"||buf=="yes")
{
cash_on = true;
go_on = true;
}
else
{
dri.return_allmoney();
go_on = false;
}
}
}
}
cout<<"\n谢谢!再见!";
}
这是一个关于饮料自动售货机的程序,急求一个完整的头文件,,,