商店销售某一商品,每天公布统一的折扣(discount)。同时允许销售人员在销售时灵活掌握售价(price),在此基础上,一次购10件以上者,还可以享受9.8折优惠。现已知当天3个销货员的销售情况为
销售员号(num) 销售件数(quantity) 销售单价(price)
101 5 23.5
102 12 24.56
103 100 21.5
请编写程序,计算出当日此商品的总销售款sum以及每件商品的平均售价。要求用静态数据成员和静态成员函数。
(提示:将折扣discount,总销售款sum和商品销售总件数n声明为静态数据成员,再定义静态成员函数average(求平均售价)和display(输出结果)。
#include<iostream>
using namespace std;
class Product
{
public:
Product(int m, int q, float p) :num(m), quantity(q), price(p)//用参数初始化表对数据成员(num、quantity、price)初始化
{
};
void total();//声明类成员函数total,求总销售款sum和总销货件数n
static float average();//声明静态成员函数avereage,求平均售价sum/n
static void display();//声明静态成员函数display,输出总销售款sum和平均售价average()即sum/n
private:
int num;//销货员号
int quantity;//销货件数
float price;//销货单价
static float discount;//定义静态数据成员商店统一折扣discount
static float sum;//定义静态数据成员总销售款sum
static int n;//定义静态数据成员总销货件数n
};
void Product::total()//定义求总销售款sum和总销货件数n的函数
{
float rate = 1.0;//定义基础折扣rate为10折,即不打折
if (quantity > 10)//若客户购10件以上,即该销售员销售10件以上
rate = float(0.98 * rate);//灵活折扣rate为98折
sum = sum + quantity * price * rate * (1 - discount);//总销售款sum
n = n + quantity;//总销货件数n
}
float Product::average()//求平均售价sum/n
{
return (sum / n);
}
void Product::display()//输出总销售款sum和平均售价average()即sum/n
{
cout << sum << endl;//输出总销售款sum
cout << average() << endl;//输出平均售价average()即sum/n
}
float Product::discount = (float)0.05;//对静态数据成员discount(求商店统一折扣)初始化为0.05,即假设当天的统一折扣为5折,即打1-discount折
float Product::sum = 0;//对静态数据成员总销售款sum初始化为0
int Product::n = 0;//对静态数据成员总销货件数n初始化为0
int main()
{
Product Prod[3] =//定义Product类对象数组,并给出数据对对象数组初始化
{
Product(101,5,23.5f),Product(102,12,24.56f),Product(103,100,21.5f)
};
for (int i = 0; i < 3; i++)//调用三次total函数,统计3个销货员的销货情况
{
Prod[i].total();
}
Product::display();//输出结果
return 0;
}