您的位置:首页 > 编程语言 > C语言/C++

仿真超市收银系统

2015-09-25 10:40 363 查看
#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-是,
a000
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();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ 超市收银