试验一下写第一篇csdn博客
下面是第一次实验课需要完成的水果超市进阶:
1.类的设计:
class FruitKind;
class Cart;
class Fruit
{
private:
int number;
string name;
double purchaseprice,saleprice;
public:
friend class FruitKind;
Fruit(int new_number=0,string new_name=" ",double new_purchaseprice=0,double saleprice=0)
:number(new_number),name(new_name),purchaseprice(new_purchaseprice){}
void SetFruitName(string new_name) {name=new_name;}
void SetPurchasePrice(double new_purchaseprice) {purchaseprice=new_purchaseprice;}
void Setsaleprice(double new_saleprice) {saleprice=new_saleprice;}
void Setnumber(int new_number) {number=new_number;}
string GetFruitName() {return name;}
double GetPrice() {return saleprice;}
double Getchajia() {return saleprice-purchaseprice;}
int GetNumber() {return number;}
};
class FruitKind
{
private:
int discKindLength,reguKindLength;
Fruit discKind[5],reguKind[5];
public:
FruitKind(int newd=0,int newr=0):discKindLength(newd),reguKindLength(newr){}
void AddDiscKind();
void AddReguKind();
void InitFruitKind();
Fruit GetDiscFruit(int n);
Fruit GetReguFruit(int n);
void DispReguFruitKind();
void DispDiscFruitKind();
void DispFruitKind();
};
class CartItem
{
private:
Fruit *f;
double weight,money;
public:
friend class Cart;
CartItem(Fruit *p=new Fruit,double new_weight=0,double new_money=0):f(p),weight(new_weight),money(new_money){}
void DispCartItem();
double GetMoney(){return f->GetPrice()*weight;}
void GetFruit(Fruit a){f=&a;}
double Getprofit() {return f->Getchajia()*weight;}
double GetWeight(){return weight;}
};
class Cart
{
private:
static int count;
CartItem c[5];
public:
Cart(){count++;}
void AddItem(CartItem &a);
void DeleteItem(int n);
double CheckOut();
double profit();
void DispCart();
};
;类的实现:
- int Cart::count=0;
- void FruitKind::AddDiscKind()
- {
- cout<<"正价水果种类已录入完毕,请输入特价水果种类:"<<endl;
- cin>>discKindLength;
- for(int i=0;i<discKindLength;i++)
- {
- string name;
- double purchaseprice,saleprice;
- discKind[i].Setnumber(i+1);
- cout<<"请输入第 "<<i+1<<" 种特价水果的名称:"<<endl;
- cin>>name;
- discKind[i].SetFruitName(name);
- cout<<"请输入第 "<<i+1<<" 种特价水果的进价:"<<endl;
- cin>>purchaseprice;
- discKind[i].SetPurchasePrice(purchaseprice);
- cout<<"请输入第 "<<i+1<<" 种特价水果的售价:"<<endl;
- cin>>saleprice;
- discKind[i].Setsaleprice(saleprice);
- }
- }
- void FruitKind::AddReguKind()
- {
- cout<<"请输入要添加正价水果种类的数量:"<<endl;
- cin>>reguKindLength;
- for(int i=0;i<reguKindLength;i++)
- {
- string name;
- double purchaseprice,saleprice;
- reguKind[i].Setnumber(i+1);
- cout<<"请输入第 "<<i+1<<" 种正价水果的名称:"<<endl;
- cin>>name;
- reguKind[i].SetFruitName(name);
- cout<<"请输入第 "<<i+1<<" 种正价水果的进价:"<<endl;
- cin>>purchaseprice;
- reguKind[i].SetPurchasePrice(purchaseprice);
- cout<<"请输入第 "<<i+1<<" 种正价水果的售价:"<<endl;
- cin>>saleprice;
- reguKind[i].Setsaleprice(saleprice);
- }
- }
- void FruitKind::DispReguFruitKind()
- {
- cout<<"正价水果有:"<<endl;
- for(int i=0;i<reguKindLength;i++)
- {
- cout<<"水果编号:"<<reguKind[i].GetNumber()<<",水果名称:"<<reguKind[i].GetFruitName()<<",售价:"<<reguKind[i].GetPrice()<<endl;
- }
- }
- void FruitKind::DispDiscFruitKind()
- {
- cout<<"特价水果有:"<<endl;
- for(int i=0;i<discKindLength;i++)
- {
- cout<<"水果编号:"<<discKind[i].GetNumber()<<",水果名称:"<<discKind[i].GetFruitName()<<",售价:"<<discKind[i].GetPrice()<<endl;
- }
- }
- void FruitKind::DispFruitKind()
- {
- DispReguFruitKind();
- DispDiscFruitKind();
- }
- Fruit FruitKind::GetDiscFruit(int n)
- {
- return discKind[n-1];
- }
- Fruit FruitKind::GetReguFruit(int n)
- {
- return reguKind[n-1];
- }
- void CartItem::DispCartItem()
- {
- cout<<"水果编号:"<<f->GetNumber()<<",名称:"<<f->GetFruitName()<<",重量"<<weight<<",金额 "<<money<<endl;
- }
- void Cart::AddItem(CartItem &a)
- {
- count++;
- c[count]=a;
- }
- void Cart::DeleteItem(int n)
- {
- for(int i=n-1;i<count;i++)
- {
- c[i]=c[i+1];
- }
- count--;
- }
- double Cart::CheckOut()
- {
- double summoney=0;
- for(int i=0;i<count;i++)
- {
- summoney+=c[i].GetMoney();
- }
- return summoney;
- }
- double Cart::profit()
- {
- double sumprofit;
- for(int i=0;i<count;i++)
- {
- sumprofit+=c[i].Getprofit();
- }
- return sumprofit;
- }
- void Cart::DispCart()
- {
- for(int i=0;i<count;i++)
- {
- cout<<"第 "<<i+1<<" 条:";c[i].DispCartItem();
- }
- }
- void Menu()
- {
- cout<<"欢迎光临本店,请选择相应的功能!"<<endl;
- cout<<"A/a 买水果..."<<endl;
- cout<<"D/d 退水果..."<<endl;
- cout<<"C/c 结账..."<<endl;
- cout<<"M/m 查看销售总额..."<<endl;
- cout<<"P/p 查看利润..."<<endl;
- cout<<"Q/q 退出系统..."<<endl;
- }
主函数:
- int main()
- {
- FruitKind kind;
- char s1,s2;
- cout << "请先初始化水果种类,首先请输入正价水果的种类" <<endl;
- kind.AddReguKind();
- kind.AddDiscKind();
- kind.DispFruitKind();
- Cart gouwuche;
- Menu();
- while(cin>>s1&&(s1!='q'&&s1!='Q'))
- {
- kind.DispFruitKind();
- switch(s1)
- {
- case 'a':
- case 'A':
- cout<<"购买特价水果还是正价水果?\nT/t:选择特价水果\nZ/z:选择正价水果"<<endl;
- cin>>s2;
- if(s2=='T'||s2=='t')
- {
- int num;
- cout<<"选择水果种类编号:"<<endl;
- cin>>num;
- double weight;
- cout<<"购买的重量:"<<endl;
- cin>>weight;
- Fruit a;
- CartItem type(&a,weight);
- type.GetFruit(kind.GetDiscFruit(num));
- gouwuche.AddItem(type);
- gouwuche.DispCart();
- }
- if(s2=='Z'||s2=='z')
- {
- int num;
- cout<<"选择水果种类编号:"<<endl;
- cin>>num;
- double weight;
- cout<<"购买的重量:"<<endl;
- cin>>weight;
- Fruit a;
- CartItem type(&a,weight);
- type.GetFruit(kind.GetReguFruit(num));
- gouwuche.AddItem(type);
- gouwuche.DispCart();
- }
- break;
- case 'D':
- case 'd':
- cout<<"退掉一个水果"<<endl;
- cout<<"选择一个编号"<<endl;
- int num2;
- cin>>num2;
- gouwuche.DeleteItem(num2);
- break;
- case 'C':
- case 'c':
- gouwuche.DispCart();
- cout<<"合计金额为:"<<gouwuche.CheckOut();
- break;
- case 'M':
- case 'm':
- cout<<"当前销售总额为:"<<gouwuche.CheckOut();
- break;
- case 'P':
- case 'p':
- cout<<"当前利润为:"<<gouwuche.profit();
- break;
- case 'Q':
- case 'q':
- break;
- }
- Menu();
- }
- return 0;
- }
运行结果:
。。。。。。请忽略,第一篇测试,数据忘了,很尴尬。