在团队项目的任务分配中,我的工作是和张斌斌写底层的代码,我主要负责编写咖啡类,使得能够实现按照咖啡的名字决定咖啡的单价,并且可以按照自己的意愿添加牛奶和糖,并且让机器运动到相应的位置
咖啡类中定义了成员变量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 }
测试运行效果图