Ps:在做谭浩强的一个用静态成员和静态函数处理一个商品销售某种商品的习题。做完后觉得自己做得不好,但是上网搜了一下,觉得网上的答案也不合我意。于是重新做了一下,并决定把它发上来。共勉。
题目:
商店销售某一商品,每天公布统一的折扣(discount)。同时允许销售人员在销售时灵活掌握售价(price),在此基础上,一次购10件以上者,还可以享受9.8折优惠。现已知当天m个销货员销售情况为
销货员号(num) 销货件数(quantity) 销货单价(price)
101 5 23.5
102 12 24.56
103 100 21.5
请编写程序,计算出当日此商品的总销售款sum以及每件商品的平均售价。要求用静态数据成员和静态成员函数。
(提示: 将折扣discount,总销售款sum和商品销售总件数n声明为静态数据成员,再定义静态成员函数average(求平均售价)和display(输出结果)。
class Product{
public:
void set_value(); //设置商品的price和单次销售数量 num
void total(); //计算总的销售额sum 和总的销售数量total_num
static void ave_count(); //计算平均商品价格
static void display(); // 显示sum,total_num和 average
private:
double price;
int num; //注意这里,我觉得在这个某种商品的类里面有一个表示单次销售商品量的属性很奇怪,大家觉得呢?
static double discount;
static int total_num;
static double sum;
static double average;
};
double Product::discount=0.98;
int Product::total_num=0;
double Product::sum=0;
double Product::average=0;
void Product::set_value(){
cin>>num>>price;
}
void Product::total(){
total_num+=num;
if(num>10)
sum+=num*price*discount;
else
sum+=num*price;
}
void Product::ave_count(){
average=sum/total_num;
}
void Product::display(){
cout<<"num="<<total_num<<endl
<<"sum="<<sum<<endl
<<"average="<<average<<endl;
}
int main(){
const int t=3;
Product p[t];
for(int i=0;i<t;i++){
p[i].set_value();
p[i].total();
}
Product::ave_count();
Product::display();
return 0;
}