小实验

 试验一下写第一篇csdn博客

下面是第一次实验课需要完成的水果超市进阶:

1.类的设计:

  1. class FruitKind;  

  2. class Cart;  

  3. class Fruit  

  4. {  

  5. private:  

  6.     int number;  

  7.     string name;  

  8.     double purchaseprice,saleprice;  

    扫描二维码关注公众号,回复: 2501916 查看本文章
  9.   

  10. public:  

  11.     friend class FruitKind;  

  12.     Fruit(int new_number=0,string new_name=" ",double new_purchaseprice=0,double saleprice=0)  

  13.     :number(new_number),name(new_name),purchaseprice(new_purchaseprice){}  

  14.     void SetFruitName(string new_name) {name=new_name;}  

  15.     void SetPurchasePrice(double new_purchaseprice) {purchaseprice=new_purchaseprice;}  

  16.     void Setsaleprice(double new_saleprice) {saleprice=new_saleprice;}  

  17.     void Setnumber(int new_number) {number=new_number;}  

  18.     string GetFruitName() {return name;}  

  19.     double GetPrice() {return saleprice;}  

  20.     double Getchajia() {return saleprice-purchaseprice;}  

  21.     int GetNumber() {return number;}  

  22. };  

  23. class FruitKind  

  24. {  

  25. private:  

  26.     int discKindLength,reguKindLength;  

  27.     Fruit discKind[5],reguKind[5];  

  28. public:  

  29.     FruitKind(int newd=0,int newr=0):discKindLength(newd),reguKindLength(newr){}  

  30.     void AddDiscKind();  

  31.     void AddReguKind();  

  32.     void InitFruitKind();  

  33.     Fruit GetDiscFruit(int n);  

  34.     Fruit GetReguFruit(int n);  

  35.     void DispReguFruitKind();  

  36.     void DispDiscFruitKind();  

  37.     void DispFruitKind();  

  38. };  

  39. class CartItem  

  40. {  

  41. private:  

  42.     Fruit *f;  

  43.     double weight,money;  

  44. public:  

  45.     friend class Cart;  

  46.     CartItem(Fruit *p=new Fruit,double new_weight=0,double new_money=0):f(p),weight(new_weight),money(new_money){}  

  47.     void DispCartItem();  

  48.     double GetMoney(){return f->GetPrice()*weight;}  

  49.     void GetFruit(Fruit a){f=&a;}  

  50.     double Getprofit() {return f->Getchajia()*weight;}  

  51.     double GetWeight(){return weight;}  

  52. };  

  53. class Cart  

  54. {  

  55. private:  

  56.     static int count;  

  57.     CartItem c[5];  

  58. public:  

  59.     Cart(){count++;}  

  60.     void AddItem(CartItem &a);  

  61.     void DeleteItem(int n);  

  62.     double CheckOut();  

  63.     double profit();  

  64.     void DispCart();  

  65. };  

;类的实现:

  1. int Cart::count=0;  
  2. void FruitKind::AddDiscKind()  
  3. {  
  4.     cout<<"正价水果种类已录入完毕,请输入特价水果种类:"<<endl;  
  5.     cin>>discKindLength;  
  6.     for(int i=0;i<discKindLength;i++)  
  7.     {  
  8.         string name;  
  9.         double purchaseprice,saleprice;  
  10.         discKind[i].Setnumber(i+1);  
  11.         cout<<"请输入第 "<<i+1<<" 种特价水果的名称:"<<endl;  
  12.         cin>>name;  
  13.         discKind[i].SetFruitName(name);  
  14.         cout<<"请输入第 "<<i+1<<" 种特价水果的进价:"<<endl;  
  15.         cin>>purchaseprice;  
  16.         discKind[i].SetPurchasePrice(purchaseprice);  
  17.         cout<<"请输入第 "<<i+1<<" 种特价水果的售价:"<<endl;  
  18.         cin>>saleprice;  
  19.         discKind[i].Setsaleprice(saleprice);  
  20.     }  
  21. }  
  22. void FruitKind::AddReguKind()  
  23. {  
  24.     cout<<"请输入要添加正价水果种类的数量:"<<endl;  
  25.     cin>>reguKindLength;  
  26.     for(int i=0;i<reguKindLength;i++)  
  27.     {  
  28.         string name;  
  29.         double purchaseprice,saleprice;  
  30.         reguKind[i].Setnumber(i+1);  
  31.         cout<<"请输入第 "<<i+1<<" 种正价水果的名称:"<<endl;  
  32.         cin>>name;  
  33.         reguKind[i].SetFruitName(name);  
  34.         cout<<"请输入第 "<<i+1<<" 种正价水果的进价:"<<endl;  
  35.         cin>>purchaseprice;  
  36.         reguKind[i].SetPurchasePrice(purchaseprice);  
  37.         cout<<"请输入第 "<<i+1<<" 种正价水果的售价:"<<endl;  
  38.         cin>>saleprice;  
  39.         reguKind[i].Setsaleprice(saleprice);  
  40.     }  
  41. }  
  42.   
  43. void FruitKind::DispReguFruitKind()  
  44. {  
  45.     cout<<"正价水果有:"<<endl;  
  46.     for(int i=0;i<reguKindLength;i++)  
  47.     {  
  48.         cout<<"水果编号:"<<reguKind[i].GetNumber()<<",水果名称:"<<reguKind[i].GetFruitName()<<",售价:"<<reguKind[i].GetPrice()<<endl;  
  49.     }  
  50. }  
  51.   
  52. void FruitKind::DispDiscFruitKind()  
  53. {  
  54.     cout<<"特价水果有:"<<endl;  
  55.     for(int i=0;i<discKindLength;i++)  
  56.     {  
  57.         cout<<"水果编号:"<<discKind[i].GetNumber()<<",水果名称:"<<discKind[i].GetFruitName()<<",售价:"<<discKind[i].GetPrice()<<endl;  
  58.     }  
  59. }  
  60. void FruitKind::DispFruitKind()  
  61. {  
  62.     DispReguFruitKind();  
  63.     DispDiscFruitKind();  
  64. }  
  65. Fruit FruitKind::GetDiscFruit(int n)  
  66. {  
  67.     return discKind[n-1];  
  68. }  
  69. Fruit FruitKind::GetReguFruit(int n)  
  70. {  
  71.     return reguKind[n-1];  
  72. }  
  73. void CartItem::DispCartItem()  
  74. {  
  75.     cout<<"水果编号:"<<f->GetNumber()<<",名称:"<<f->GetFruitName()<<",重量"<<weight<<",金额 "<<money<<endl;  
  76. }  
  77. void Cart::AddItem(CartItem &a)  
  78. {  
  79.   
  80.     count++;  
  81.     c[count]=a;  
  82. }  
  83. void Cart::DeleteItem(int n)  
  84. {  
  85.     for(int i=n-1;i<count;i++)  
  86.     {  
  87.         c[i]=c[i+1];  
  88.     }  
  89.     count--;  
  90. }  
  91. double Cart::CheckOut()  
  92. {  
  93.     double summoney=0;  
  94.     for(int i=0;i<count;i++)  
  95.     {  
  96.         summoney+=c[i].GetMoney();  
  97.     }  
  98.     return summoney;  
  99. }  
  100. double Cart::profit()  
  101. {  
  102.     double sumprofit;  
  103.     for(int i=0;i<count;i++)  
  104.     {  
  105.         sumprofit+=c[i].Getprofit();  
  106.     }  
  107.     return sumprofit;  
  108. }  
  109. void Cart::DispCart()  
  110. {  
  111.     for(int i=0;i<count;i++)  
  112.     {  
  113.         cout<<"第 "<<i+1<<" 条:";c[i].DispCartItem();  
  114.     }  
  115. }  
  116. void Menu()  
  117. {  
  118.     cout<<"欢迎光临本店,请选择相应的功能!"<<endl;  
  119.     cout<<"A/a 买水果..."<<endl;  
  120.     cout<<"D/d 退水果..."<<endl;  
  121.     cout<<"C/c 结账..."<<endl;  
  122.     cout<<"M/m 查看销售总额..."<<endl;  
  123.     cout<<"P/p 查看利润..."<<endl;  
  124.     cout<<"Q/q 退出系统..."<<endl;  
  125. }  

主函数:

  1. int main()  
  2. {  
  3.     FruitKind kind;  
  4.     char s1,s2;  
  5.     cout << "请先初始化水果种类,首先请输入正价水果的种类" <<endl;  
  6.     kind.AddReguKind();  
  7.     kind.AddDiscKind();  
  8.     kind.DispFruitKind();  
  9.     Cart gouwuche;  
  10.     Menu();  
  11.     while(cin>>s1&&(s1!='q'&&s1!='Q'))  
  12.     {  
  13.         kind.DispFruitKind();  
  14.             switch(s1)  
  15.         {  
  16.             case 'a':  
  17.             case 'A':  
  18.                 cout<<"购买特价水果还是正价水果?\nT/t:选择特价水果\nZ/z:选择正价水果"<<endl;  
  19.                 cin>>s2;  
  20.                 if(s2=='T'||s2=='t')  
  21.                 {  
  22.                     int num;  
  23.                     cout<<"选择水果种类编号:"<<endl;  
  24.                     cin>>num;  
  25.                     double weight;  
  26.                     cout<<"购买的重量:"<<endl;  
  27.                     cin>>weight;  
  28.                     Fruit a;  
  29.                     CartItem type(&a,weight);  
  30.                     type.GetFruit(kind.GetDiscFruit(num));  
  31.                     gouwuche.AddItem(type);  
  32.                     gouwuche.DispCart();  
  33.                 }  
  34.                 if(s2=='Z'||s2=='z')  
  35.                 {  
  36.                     int num;  
  37.                     cout<<"选择水果种类编号:"<<endl;  
  38.                     cin>>num;  
  39.                     double weight;  
  40.                     cout<<"购买的重量:"<<endl;  
  41.                     cin>>weight;  
  42.                     Fruit a;  
  43.                     CartItem type(&a,weight);  
  44.                     type.GetFruit(kind.GetReguFruit(num));  
  45.                     gouwuche.AddItem(type);  
  46.                     gouwuche.DispCart();  
  47.                 }  
  48.                 break;  
  49.             case 'D':  
  50.             case 'd':  
  51.                 cout<<"退掉一个水果"<<endl;  
  52.                 cout<<"选择一个编号"<<endl;  
  53.                 int num2;  
  54.                 cin>>num2;  
  55.                 gouwuche.DeleteItem(num2);  
  56.                 break;  
  57.             case 'C':  
  58.             case 'c':  
  59.                 gouwuche.DispCart();  
  60.                 cout<<"合计金额为:"<<gouwuche.CheckOut();  
  61.                 break;  
  62.             case 'M':  
  63.             case 'm':  
  64.                 cout<<"当前销售总额为:"<<gouwuche.CheckOut();  
  65.                 break;  
  66.             case 'P':  
  67.             case 'p':  
  68.                 cout<<"当前利润为:"<<gouwuche.profit();  
  69.                 break;  
  70.             case 'Q':  
  71.             case 'q':  
  72.                 break;  
  73.         }  
  74.         Menu();  
  75.     }  
  76.     return 0;  
  77. }  

运行结果:

。。。。。。请忽略,第一篇测试,数据忘了,很尴尬。

猜你喜欢

转载自blog.csdn.net/thunderforrain/article/details/81074718