团队项目任务

在团队项目的任务分配中,我的工作是和张斌斌写底层的代码,我主要负责编写咖啡类,使得能够实现按照咖啡的名字决定咖啡的单价,并且可以按照自己的意愿添加牛奶和糖,并且让机器运动到相应的位置

咖啡类中定义了成员变量price和caffeeName,构造函数根据咖啡的名字决定咖啡的价格

咖啡类中还添加了AddMaterial类作为成员变量,AddMaterial类没有成员变量只有几个

可执行的函数,表示添加的咖啡的种类,是否在咖啡中添加牛奶和糖,在调用成员函数的时候

咖啡的价格也会随着改变。

在咖啡类中添加AddMaterial成员变量的好处是在咖啡的原料的添加料改变是只需要修改AddMaterial

类中的底层函数二不需要修改Caffee类中的函数,能保持上层的稳定性。

该功能还能根据后续的要求变化继续扩展。

以下是实现代码

  1 #ifndef ADDMATERIAL
  2 #define ADDMATERIAL
  3 
  4 class AddMaterial
  5 {
  6 public:
  7     AddMaterial(){};
  8     void  AddCappuccino(double &);        //卡布奇诺
  9     void  AddLatte(double &);        //拿铁咖啡
 10     void  AddMocha(double &);        //摩卡咖啡
 11     void  AddSugar(double &);        //咖啡加糖,返回价格
 12     void  AddMilk(double &);        //咖啡加牛奶,返回价格
 13     double  GetExchange(double &,double &);    //找零钱
 14 };
 15 
 16 
 17 #endif ADDMATERIAL
 18 
 19 
 20 
 21 #include"AddMaterial.h"
 22 
 23 //卡布奇诺咖啡的价格,并运动到相应的位置
 24 void AddMaterial::AddCappuccino(double & p)
 25 {
 26     //添加运动到相应工位的代码
 27 
 28     p = p + 5;
 29 }
 30 
 31 //拿铁的价钱,并运动到相应的位置
 32 void AddMaterial::AddLatte(double & p)
 33 {
 34     //添加运动到相应工位的代码
 35 
 36     p = p + 4;
 37 
 38 }
 39 
 40 //摩卡的价钱,并运动到相应的位置
 41 void AddMaterial::AddMocha(double & p)
 42 {
 43     //添加运动到相应工位的代码
 44 
 45     p = p + 6;
 46 
 47 }
 48 
 49 //加糖要多加0.5元,并运动到相应的位置
 50 void AddMaterial::AddSugar(double & p)    //p为咖啡的初始价格
 51 {
 52     //添加运动到相应工位的代码
 53 
 54     p = p + 0.5;
 55 
 56 }
 57 
 58 //加牛奶要多加0.8元,并运动到相应的位置
 59 void AddMaterial::AddMilk(double & p)    //p为咖啡的初始价格
 60 {
 61     //添加运动到相应工位的代码
 62 
 63     p = p + 0.8;
 64     
 65 }
 66 
 67 //找零钱,第一个参数是投入的金额,第二个参数是咖啡总价格
 68 double  AddMaterial::GetExchange(double & inMoney, double & p)
 69 {
 70     return (inMoney - p);
 71 }
 72 
 73 
 74 
 75 #ifndef CAFFEE
 76 #define CAFFEE
 77 
 78 #include<string>
 79 #include"AddMaterial.h"
 80 
 81 using namespace std;
 82 
 83 class Caffee
 84 {
 85 private:
 86     string caffeeName;
 87     double price;
 88     AddMaterial add;
 89 
 90 public:
 91     Caffee(){};
 92     Caffee(string name = "");    //初始化咖啡只需要名字,首字母大写
 93     void addSugar();
 94     void addMilk();
 95     double getPrice();
 96     double getExchane(double);
 97 };
 98 
 99 
100 #endif CAFFEE
101 
102 
103 #include"Caffee.h"
104 #include<iostream>
105 using namespace std;
106 
107 Caffee::Caffee(string name)
108 {
109     caffeeName = name;
110     price = 0.0;
111 
112     if (caffeeName == "Cappuccino")        //卡布奇诺
113          add.AddCappuccino(price);
114 
115     if (caffeeName == "Latte")        //拿铁
116          add.AddCappuccino(price);
117 
118     if (caffeeName == "Mocha")        //摩卡
119          add.AddCappuccino(price);
120 
121 }
122 
123 //咖啡加糖,返回价钱
124 void Caffee::addSugar()
125 {
126     return add.AddSugar(price);
127 }
128 
129 //咖啡加牛奶,返回价格
130 void Caffee::addMilk()
131 {
132     return add.AddMilk(price);
133 }
134 
135 //获取咖啡的价格
136 double Caffee::getPrice()
137 {
138     return price;
139 }
140 
141 //找零钱
142 double Caffee::getExchane(double inMoney)
143 {
144     if (inMoney < price)
145     {
146         cout << "请投入足够的钱!";
147         return 0;
148     }
149     else
150 
151         return add.GetExchange(inMoney, price);
152 
153 }
154 
155 
156 
157 #include<iostream>
158 #include"Caffee.h"
159 
160 using namespace std;
161 
162 int main()
163 {
164     Caffee Cappuccino("Cappuccino");
165     double ini = Cappuccino.getPrice();
166     cout << "只加咖啡时的价格" << ini <<endl;
167     Cappuccino.addMilk();
168     ini = Cappuccino.getPrice();
169     cout << "加牛奶之后的价格" << ini << endl;
170     Cappuccino.addSugar();
171     ini = Cappuccino.getPrice();
172     cout << "加牛奶和糖之后的价格" << ini << endl;
173 
174     system("pause");
175     return 0;
176 
177 }

测试运行效果图

原文地址:https://www.cnblogs.com/RXWein/p/5102562.html