仿真超市收银系统

来源:互联网 发布:数据恢复精 编辑:程序博客网 时间:2024/05/01 06:17
#include<iostream.h>
#include<fstream.h>
#include<windows.h>
#include<math.h>
#define N 10


ofstream write("b.txt");
double sum0, sum_0; //sum0为商品参加促销活动后的总价格,sum_0为商品促销后又参与商家促销后的总价格。


struct products{ //商品库存
int num;
char name[20];
char type[20];
double price;
};


class Product{    //商品
private:
int num; //商品编号
char name[20];//商品名称
char type[20];//商品类型
int amount; //商品数量
double price; //商品单价
public:
void set_num(int x){num = x;};//设置商品编号
void set_name(char n[20]){strcpy(name, n);};//设置商品名称
void set_type(char t[20]){strcpy(type, t);};//设置商品种类
void set_amount(int y){amount = y;};//设置商品数量
void set_price(double z){price = z;};//设置商品价格
int get_num(){return num;};//获取商品编号
char * get_name(){return name;};//获取商品名称
char * get_type(){return type;};//获取商品种类
int get_amount(){return amount;};//获取商品数量
double get_price(){return price;};//获取商品价格
};


class CashManager{ //收银系统
private:
Product product;
products pro[5];


public:
void input(); //输入商品信息
void count(double sum2);//计算价格
void print(); //打印账单
void face(); //主界面
};


class SalesTactics{ //促销策略
public:
double ChildDay(double sum1);//儿童节
double MidFestival(double sum1);//中秋节
double ValentineDay(double sum1);//情人节
double FactorySales(double sum1);//厂家促销
};




class SalesActivity{ //促销活动
private:
SalesTactics tactics;
public:
double ChildDay(double sum1){return tactics.ChildDay(sum1);};
double MidFestival(double sum1){return tactics.MidFestival(sum1);};
double ValentineDay(double sum1){return tactics.ValentineDay(sum1);};
double FactorySales(double sum1){return tactics.FactorySales(sum1);};
};


double SalesTactics::ChildDay(double sum1){ //儿童节:文具类商品一律9折
double  sum;
sum = sum1 * 0.9;
return sum;
}


double SalesTactics::MidFestival(double sum1){ //中秋节:食品类商品一律8折


double sum;
sum = sum1 * 0.8;
return sum;
}


double SalesTactics::FactorySales(double sum1){ //商家促销:满50减5元
double  sum;
int s, ss;
s = (int)(sum1 * 100);
ss = s % 5000 + s / 5000 * 4500;
sum = (double)ss / 100;
return sum;
}


void CashManager::face(){ //总界面
int i;
cout<<"***********欢迎进入超市促销活动收银系统*********"<<endl;
cout<<"*                1.商品支付                    *"<<endl;
cout<<"*                2.退出                        *"<<endl;
cout<<"************************************************"<<endl;
cout<<"请输入您的操作选项:";
cin>>i;
switch(i){
case 1:
input();
break;
case 2:
cout<<"系统将退出..."<<endl;
break;
default:
cout<<"输入不符合规范,系统将退出..."<<endl;
break;
}
}


void CashManager::input(){ //购买商品输入界面
int i = 0, num, amount,  k;
double sum;
ifstream read1("a.txt");
while(!read1.eof()){
read1>>pro[i].num>>pro[i].name>>pro[i].type>>pro[i].price;
i++;
}
read1.close();


while(true){ //只需输入商品编号,即可查询库存信息获取该商品所有信息
cout<<"请输入商品编号:";
cin>>num;
cout<<"请输入商品数量:";
cin>>amount;
for(i = 0; i <= 5; i++){
if(pro[i].num == num){
product.set_num(pro[i].num);
product.set_name(pro[i].name);
product.set_type(pro[i].type);
product.set_amount(amount);
product.set_price(pro[i].price);
break;
}
}
sum = amount * pro[i].price;//计算商品未参与促销活动前的价格
write<<product.get_num()<<""<<product.get_name()<<" "<<product.get_type()<<""<<product.get_price()<<" "<<product.get_amount()<<""<<sum<<" ";
count(sum); //商品参与促销


cout<<"是否还需购买商品?(1-是,2-否)"<<endl;//是否继续购买商品
cin>>k;
if(k == 2){
write.close();
print();
break;
}

}



}


void CashManager::print(){ //输出价格及是否打印小票
int i;
int num;
char name[20];
char type[20];
int amount;
double price, s_sum, sum;
double money;
SalesActivity c;
sum_0 = c.FactorySales(sum0);//计算商品参与厂家促销后的价格
cout<<"商品总价格为:"<<sum_0<<endl;
cout<<"实收金额:";
cin>>money;
cout<<"应找回金额:"<<money - sum_0<<endl;
cout<<"是否打印小票?(1-是,2-否)"<<endl;
cin>>i;
if(i == 1){ //打印收银小票
cout<<"—————-———————超市收银小票—————————————"<<endl;
cout<<"编号 名称 类型 单价数量 总价 折扣后"<<endl;
ifstream read("b.txt");
while(!read.eof()){
read>>num>>name>>type>>price>>amount>>s_sum>>sum;
if(!read.eof())
cout<<num<<" "<<name<<" "<<type<<""<<price<<" "<<amount<<""<<s_sum<<" "<<sum<<endl;
}
read.close();
cout<<"促销后总价格为:"<<sum0<<"元"<<endl;
cout<<"参与满50减5促销后价格为:"<<sum_0<<"元"<<endl;
cout<<"实收金额:"<<money<<"元"<<"找回金额:"<<money-sum_0<<"元"<<endl;
cout<<"———————————————————————————————-"<<endl;
}
}






void CashManager::count(double sum2){
char t[20];
char tp1[20]="文具类", tp2[20] = "食品类";
double sum1;
SalesActivity b;
strcpy(t, product.get_type());
if(strcmp(t, tp1) == 0){

sum1 = b.ChildDay(sum2);
}
else if(strcmp(t, tp2) == 0){
sum1 = b.MidFestival(sum2);
}
else
sum1 = sum2;
sum0 += sum1;
write<<sum1<<endl;
cout<<"商品名称:"<<product.get_name()<<""<<"购买单价:"<<product.get_price()<<" "<<"购买数量:"<<product.get_amount()<<""<<"促销后小计:"<<sum1<<endl;
}




void main(){
CashManager a;
a.face();
}

0 0
原创粉丝点击