#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<stdlib.h>
#include <fstream>
#include <algorithm>
#include<iomanip>
#include <string.h>
#include <windows.h>
#include<iostream>
using namespace std;
int flag1=0;
int flag2=0;
int flag3=0;
int t=0;
int i;
int j;
int m;
int n=0;
int z;
int s;
int b;
string cx1;
string cx2;
string cx3;
string cx4;
string n1;
string n2;
struct Good
{
string name1;
string num;
string type;
double price;
}a[1000];
class G
{
public:
void Goodcate()
{
printf("\t1水果类\n");
printf("\t2生活用品类\n");
printf(" \t3饮品类\n");
printf("\t4食物类\n");
}
virtual void Goodinfo()=0;
};
class G1:public G
{
public:
void Goodinfo()
{
cout << "cherry" << " " << "price=" << "98.00"<<endl ;
cout << "orange" << " " << "price=" << "3.50"<<endl;
cout << "banana" << " " << "price=" << "3.00"<<endl;
cout << "apple" << " " << "price=" << "4.40"<<endl;
cout << "pear" << " " << "price=" << "3.25"<<endl;
cout << "grape" << " " << "price=" << "4.36"<<endl;
cout << "cong" << " " << "price=" << "1.26"<<endl;
cout << "suan" << " " << "price=" << "2.00"<<endl;
cout << "pot" << " " << "price=" << "100.50"<<endl;
cout << "bowl" << " " << "price=" << "19.00"<<endl;
cout << "spon" << " " << "price=" << "25.00"<<endl;
cout << "salver" << " " << "price=" << "90.00"<<endl;
cout << "coke" << " " << "price=" << "3.00" <<endl;
cout << "cocktail" << " " << "price=" << "2.00"<<endl ;
cout << "sprit" << " " << "price=" << "8.00" <<endl;
cout << "juice" << " " << "price=" << "3.00" <<endl;
cout << "chipspotato" << " " << "price=" << "6.00"<<endl;
cout << "cake" << " " << "price=" << "16.00" <<endl;
cout << "biscuit" << " " << "price=" << "5.66"<<endl;
cout << "pie" << " " << "price=" << "26.80"<<endl ;
}
};
void Input()
{
cout<<"\n---------------------------------------------------请录入商品信息-------------------------------------------------------\n\n";
cout<<"请输入您要录入的商品数量:";
cin>>n;
cout<<endl;
cout<<"请依次输入“商品类型”、“商品名称”、“商品编号”、“价格”\n\n";
for(s=0;s<n;s++)
{
cout<<"请输入商品类型:"<<endl;
cin>>a[s].type ;
cout<<"请输入商品名称:"<<endl;
cin>>a[s].name1;
cout<<"请输入商品编号:"<<endl;
cin>>a[s].num;
cout<<"请输入商品价格:"<<endl;
cin>>a[s].price;
}
}
void Modify()
{
cout <<"\n----------------------------------------------------修改商品信息--------------------------------------------------------\n";
cout<<"请输入您想要修改的商品的商品编号:";
cin>>n1;
cout<<"\n该商品信息如下:"<<endl;
for(i=0;i<=n;i++)
{
if(n1==a[i].num)
{
cout<<"原商品类型:"<<a[i].type<<endl;
cout<<"原商品名:"<<a[i].name1<<endl;
cout<<"原商品编号:"<<a[i].num<<endl;
cout<<"原商品价格:"<<a[i].price<<endl;
m=i;
}
}
cout<<"修改后的商品类型:";
cin>>a[m].type;
cout<<"\n修改后的商品名:";
cin>>a[m].name1;
cout<<"修改后的商品编号:";
cin>>a[m].num;
cout<<"修改后的商品价格:";
cin>>a[m].price;
cout<<"\n★★★★★★★★★★★★★★★ 修改成功! ★★★★★★★★★★★★★★★\n\n";
}
void Delete()
{
cout <<"\n----------------------------------------------------删除商品信息--------------------------------------------------------\n";
cout<<"\n请输入要删除商品的商品编号:";
cin>>n2;
cout<<"\n该商品信息如下:"<<endl;
for(i=0;i<=n;i++)
{
if(n2==a[i].num)
{
cout<<"商品类型:"<<a[i].type<<endl;
cout<<"商品名:"<<a[i].name1<<endl;
cout<<"商品编号:"<<a[i].num<<endl;
cout<<"商品价格:"<<a[i].price<<endl;
cout<<endl;
m=i;
}
}
cout<<"确定删除?"<<endl;
cout<<"确定请输入1"<<" "<<"取消请输入除1外任意键返回主菜单\n\n";
cout<<"请输入:" ;
cin>>b;
if(b==1)
{
for(i=0;i<n;i++)
{
if(n2==a[i].num)
{
a[i].name1=a[i+1].name1;
a[i].num=a[i+1].num;
a[i].type=a[i+1].type;
a[i].price=a[i+1].price;
n--;
}
}
cout<<"\n\n删除成功!\n\n";
cout<<"输入任意键返回主菜单";
}
}
char r_name[30]="";
char r_pwd[10]="";
char on_name[30];
char on_pwd[10];
//用户注册系统
void regist()
{
//清屏
system("pause");
system("cls");
printf("\n\n\t\t\t欢迎使用超市结账系统\n\n");
while(1)
{
//输入用户名
printf("\t\t请输入用户名(不能大于十个字符):");
scanf("%s",r_name);
//判断
if(strlen(r_name)<=10)
{
while(1)
{
printf("\n\t\t请输入密码(密码长度为六位):");
scanf("%s",r_pwd);
//判断密码
if(strlen(r_pwd)==6)
{
printf("\n\n\t\t注册成功\n\n");
break;
}
else
{
printf("\n\t\t密码长度不规范,请重新输入\n");
}
}
break;
}
else
{
printf("\n\t\t用户名长度不规范,请重新输入\n");
}
}
}
//判断是否注册
int judge()
{
if(strcmp(r_name,"")==0&&strcmp(r_pwd,"")==0)
{
printf("\n\n\t\t您尚未注册,请先注册!\n\n");
return 0;
}
else
{
return 1;
}
}
//用户登录
void dl()
{
int i;
system("pause");
system("cls");
printf("\n\n\t\t\t欢迎使用超市结账系统\n\n");
//三次验证
for(i=1;i<=3;i++)
{
printf("\t\t请输入用户名:");
scanf("%s",on_name);
printf("\n\t\t请输入密码:");
scanf("%s",on_pwd);
if(strcmp(r_name,on_name)==0&&strcmp(r_pwd,on_pwd)==0)
{
printf("\n\n\t\t登陆成功,欢迎使用超市结账系统\n\n");
break;
}
else
{
printf("\n\n\t\t登陆失败,请重新登陆,您还有%d次机会\n\n",3-i);
}
}
}
int main(void)
{ int id;
while(1)
{
system("pause");
system("cls");
printf("\n\n\t\t超市结账系统\n\n");
printf("\t\t\t1:注册\n");
printf("\t\t\t2:登录\n");
printf("\t\t\t0:退出\n\n");
//输入编号
printf("\t\t请选择功能编号:");
scanf("%d",&id);
switch(id)
{
case 1:regist();break;
case 2:
if(judge()==1)
{
dl();
}
break;
case 0:exit(1);break;
defaule:
printf("\n\t\t您输入的编码有误,请重新输入!\n");
}
G*gg;
G1 g1;
gg=&g1;
cout<<"\n-------------------------------------------------欢迎进入超市结算系统------------------------------------------------";
cout<<"\n\n 欢迎进入超市结算系统 ";
cout<<"\n \n";
cout<<"\n \n";
cout<<"\n \n";
cout<<"\n ===点击进入系统 \n";
cout<<"\n \n";
cout<<"\n \n\n\n\n\n\n\n\n\n";
cout<<" 超市购物系统\n";
cout<<" 请选择您的身份\n";
cout<<" 管理员 顾客";
int qq;
cin>>qq;
if(qq==1)
{
printf("\t身份:管理员\n");
printf("\t1.商品分类管理\n");
printf(" \t2.商品信息管理\n");
printf("\t3.录入信息管理\n");
printf("\t4.修改信息管理\n");
printf("\t5.删除信息管理\n");
printf("\t6.结算窗口\n");
int aa;
cin>>aa;
switch(aa)
{
case 1:
gg->Goodcate();
break;
case 2:
gg->Goodinfo();
break;
case 3:
Input();
break;
case 4:
Modify();
break;
case 5:
Delete();
break;
case 6:
break;
}
}
if(qq==2)
{
printf("\t身份:顾客\n");
printf("\t1.商品信息管理\n");
printf(" \t2.购物车\n");
printf("\t3.结算窗口\n");
printf("\t4.积分积累\n");
int bb;
cin>>bb;
switch(bb)
{
case 1:
gg->Goodcate();
break;
case 2:
Input();
break;
case 3:
break;
}
}
int d = 1;
int m = 1;
int w = 0;
int a = 0;
int b = 0;
int c = 0;
int q = 0;
int r;
float e = 0.0;
float f = 0.0;
float g = 0.0;
float h = 0.0;
puts("欢迎进入超市结账系统");
for (r = 1; r < 100; r++)
putchar('*');
putchar('\n');
that:
d = 1;
g = 0;
printf("输入“0”开始结账\n");
do {
e = g;
printf(" 第%d件商品多少钱?", d++);
scanf("%f", &f);
g = e + f;
puts("按1继续");
scanf("%d", &m);
} while (m != 0);
printf("本次共购买:%d 件商品;\n一共:%.2f 元\n", d - 1, g);
int da = 0;
int svip = 0;
int nvip;
int zk = 8;
int xsvip;
float dz = 1.0;
puts("是否是为会员?");
puts("如果是请输入0;不是请输入1");
printf("请输入您的答案");
scanf("%d", &da);
if (da < 1)
{
printf("请输入您的会员卡号:");
scanf("%d", &svip);
switch (svip)
{
case 3838438:printf(" svip 客户今日折扣 %d 折\n", zk); dz = 0.8; break;
case 55555555:printf("svip 客户今日折扣 %d 折\n", zk); dz = 0.8; break;
case 66666666:printf("svip 客户今日折扣 %d 折\n", zk); dz = 0.8; break;
case 88888888:printf("svip 客户今日折扣 %d 折\n", zk); dz = 0.8; break;
case 99999999:printf("svip 客户今日折扣 %d 折\n", zk); dz = 0.8; break;
}
}
if (da >= 1)
{
printf("是否办理会员卡?今日消费可打 %d 折\n", zk);
printf("办理请输入 0 ;不办请输入 1\n");
scanf("%d", &nvip);
switch (nvip)
{
case 1:
dz = 1;
break;
case 0:
printf("请创建一个会员账号:");
scanf("%d", &xsvip);
printf("基于本账号为您打%d折\n", zk);
dz = 0.8;
break;
}
}
g = dz * g;
printf("本次共购买:%d 件商品;\n一共:%.2f 元\n", d - 1, g);
float ok = 0.0;
do {
printf("支付金额为 元\n");
scanf("%f", &h);
printf("应收:%.2f 元;\n实收:%.2f 元;\n找零:%.2f 元。\n", g, h + ok, ok + h - g);
w = ok + h - g;
if (h + ok < g)
{
ok = h;
puts("钱不够");
w = 1;
}
else w = 3;
} while (w< 2);
int j = (h - g + ok) / 100;
int k = 0;
if (j >= 1)
{
printf("找您 %d 张 壹佰元\n", j);
}
k = (h - g + ok) - 100 * j;
if (k > 50)
{
puts("1 张 伍十元");
k = k - 50;
}
if (k >= 20)
{
int ko = k / 20;
switch (ko)
{
case 1:
puts("1 张 贰拾元");
k -= 20;
break;
case 2:
puts("2 张 贰拾元");
k -= 40;
break;
}
}
if (k >= 10)
{
puts("1 张 拾元");
k = k - 10;
}
if (k >= 5)
{
printf("1 张 伍元\n");
k = k - 5;
}
if (k >= 1)
{
printf("%d 张/枚 壹元\n", k);
}
int l = h - g + ok;
float mn = h - g + ok;
int n = (mn - (float)l) * 100;
if (n >= 10)
{
printf("%d 张壹角\n", n / 10);
}
printf("%d 张 壹分\n", n % 10);
q++;
printf("结账已完成,第%d位顾客\n", q);
for (r = 1; r < 100; r++)
putchar('*');
putchar('\n');
goto that;
return 0;
}
}