标题:大神们 这个哪错了 求改
只看楼主
斯坦利
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-7-2
 问题点数:0 回复次数:3 
大神们 这个哪错了 求改
#include <stdio.h>
#include<string>
#include<windows.h>
void jieshao()//软件介绍
{
printf("\t**************************************************\n");
printf("\t***** 欢 迎 来 到 超 市 收 银 系 统 ******\n");
printf("\t*************************************************\n");
}
float zongjine=0;//消费总金额
float chengben=0;//保存使用的成本
float yingli=0;//保存盈利金额
int guanshuliang=0;//记录管理员数量
int xiaoshuliang=0;//记录销售员数量
int chenggong=0;//0 则是管理员,非0 则是销售员。证明登陆是否成功
int zhonglei=0;//记录货物种类
int zhenjia=0; //记录是否是会员 0 则不是会员1 则是会员
int diji=0;//记录是会员编号
int zongjifen=0;//记录一共接受了多少积分
struct huiyuan//定义会员信息结构
{
float jifen;//记录会员积分
char name[50];//帐户
char mima[50];//密码
};huiyuan hui[1000000];//会员信息
struct shangpin//定义商品结构体
{
char name[50];//商品名
char tiaoxinma[50];//条形码
float xiaoshoudanjia;//销售单价
float jinhuodanjia;//进货单价
int kucun;//库存
};
shangpin shp[10000000];//用于保存商品的信息
struct xiaoshouyuan//定义销售员结构体
{
int cunzai;//用于记录该销售员是否存在,=-1 则表示被删除
char zhanghu[20];//销售员帐户
char mima[20]; //销售员密码
};xiaoshouyuan xiao[50];
struct guanliyuan//定义管理员结构体
{
int cunzai;//用于记录该管理员员是否存在,=-1 则表示被删除
char zhanghu[20];//管理员帐户
char mima[20]; //管理员密码
};guanliyuan guan[100];
FILE *fp;//定义一个FILE 类型的*fp 指针
//保存商品结构体数组
void Saveshangpin()//wb 为二进制写,如果文件不存在则自动创建文件shangpin.dat
{
fp=fopen("shangpin.dat","wb");
if(fp) //如果文件被成功打开的话(有可能文件不存在)
{
for(int i=0;i<zhonglei;i++)
{
if(fwrite(&shp[i],sizeof(struct shangpin),1,fp)!=1)
printf("文件写入错误!\n");
}
fclose(fp);
}
}
//读取商品结构体数组到文件
void Loadshangpin()
{
fp=fopen("shangpin.dat","rb");
if(fp) //如果文件被成功打开的话(有可能文件不存在)
{
for(int i=0;fread(&shp[i],sizeof(struct shangpin),1,fp);i++)
{
zhonglei++;
}
fclose(fp);
}
}
//保存管理员结构体数组
void Saveguanliyuan()//wb 为二进制写,如果文件不存在则自动创建文件
{
fp=fopen("guanliyuan.dat","wb");
if(fp) //如果文件被成功打开的话(有可能文件不存在)
{
for(int i=0;i<guanshuliang;i++)
{
if(fwrite(&guan[i],sizeof(struct guanliyuan),1,fp)!=1)
printf("文件写入错误!\n");
}
fclose(fp);
}
}
void Loadguanliyuan()//读取管理员结构体数组到文件
{
fp=fopen("guanliyuan.dat","rb");
if(fp) //如果文件被成功打开的话(有可能文件不存在)
{
guanshuliang=0;
for(int i=0;fread(&guan[i],sizeof(struct guanliyuan),1,fp);i++)
{
guanshuliang++;
}
fclose(fp);
}
}
//保存销售员结构体数组
void Savexiaoshouyuan()//wb 为二进制写, 如果文件不存在则自动创建文件
shangpin.dat
{
fp=fopen("xiaoshouyuan.dat","wb");
if(fp) //如果文件被成功打开的话(有可能文件不存在)
{
for(int i=0;i<xiaoshuliang;i++)
{
if(fwrite(&xiao[i],sizeof(struct xiaoshouyuan),1,fp)!=1)
printf("文件写入错误!\n");
}
fclose(fp);
}
}
void Loadxiaoshouyuan()//读取销售员结构体数组到文件
{
fp=fopen("xiaoshouyuan.dat","rb");
if(fp) //如果文件被成功打开的话(有可能文件不存在)
{
xiaoshuliang=0;
for(int i=0;fread(&xiao[i],sizeof(struct xiaoshouyuan),1,fp);i++)
{
xiaoshuliang++;
}
fclose(fp);
}
}
void guanlicaidan()//管理员权限菜单
{
printf("\n\n\t********* 管理员权限菜单: **************\n");
printf("\t**************************************************\n");
printf("\t********** 1. 商品管理 **********\n");
printf("\t \n");
printf("\t********** 2. 查看利润 **********\n");
printf("\t \n");
printf("\t********** 0. 返回身份选择! **********\n");
printf("\t**************************************************\n");
}
void xiaocaidan()//销售员权限菜单
{
printf("\n\n\t******** 销售员权限菜单: ***********\n");
printf("\t \n");
printf("\t******* 1. 浏览商品信息 *******\n");
printf("\t \n");
printf("\t******* 2. 销 售 *******\n");
printf("\t \n");
printf("\t******* 0. 返回身份选择! *******\n");
printf("\t**************************************************\n");
}
void jinhuo()//进货
{
Loadshangpin();
char choose;
int i=zhonglei;
int shi=1;//记录条形码是否被使用-数则表示被使用了
do
{
shi=1;//在判断条码前为非负数
printf("购买商的条码:");
fflush(stdin);
scanf("%s",shp[i].tiaoxinma);
if(zhonglei>0)
{
for(int a=0;a<zhonglei;a++)
{
if(a!=i&&shp[a].kucun>=0)
{
if(strcmp(shp[i].tiaoxinma,shp[a].tiaoxinma)==0)
{
printf("错误!!此条码已经被使用!\n");
shi=-1;//条码被使用。标记为-数;
break;
}
}
}
}
if(shi!=-1)
{
printf("商品的名称:");
fflush(stdin);
scanf("%s",shp[i].name);
printf("进货单价:");
fflush(stdin);
scanf("%f",&shp[i].jinhuodanjia);
printf("进货数量:");
fflush(stdin);
scanf("%d",&shp[i].kucun);
printf("销售价格:");
fflush(stdin);
scanf("%f",&shp[i].xiaoshoudanjia);
i++;
zhonglei++;
printf("是否继续进货:(y/n)");
fflush(stdin);
scanf("%c",&choose);
}
}while(choose=='y'||choose=='Y');
Saveshangpin();
}
void xiaoshou()//销售物品
{
int i=0;
int shiyongjifen=0;//保存每次的使用积分
int dayin[1000];//标记打印,若值为1 则为打印商品
char tiaoma[50];
char choose;
int shuliang=0;//保存购买数量
int geshu[1000];//记录多次购物的个数
float shifu=0;//保存实付金额
float zhaoling=0;//找零
int chaochu;//标记购买量是否超出库存
if(zhenjia==1)
{
do
{
chaochu=0;
printf("\n 请输入条形码:");
fflush(stdin);
scanf("%s",tiaoma);
printf("数量:");
fflush(stdin);
scanf("%d",&shuliang);
for(i=0;i<zhonglei;i++)
{
if(shp[i].kucun>=0)
{
if(strcmp(tiaoma,shp[i].tiaoxinma)==0)
{
printf("\n 购买商品信息如下:\n");
printf("\t 商品名: %s\t 进货单价: %.2f\t 销售单
价:%.2f\n",shp[i].name,shp[i].jinhuodanjia,shp[i].xiaoshoudanjia);
if(shuliang>shp[i].kucun)
{
chaochu=-1;//标记为-数表示超出
printf("没有足够库存!\n\n");
break;
}
dayin[i]=1;
geshu[i]=shuliang;
shp[i].kucun=shp[i].kucun-shuliang;
zongjine+=shp[i].xiaoshoudanjia*shuliang;// 计算应付金

chengben+=shp[i].jinhuodanjia*shuliang;//计算成本
hui[diji].jifen+=shp[i].xiaoshoudanjia*shuliang;
break;
}
}
}
if(i==zhonglei) printf("没有此商品!\n");
if(chaochu!=-1)
{
printf("是否继续购买(y/n):");
fflush(stdin);
scanf("%c",&choose);
}
}while(choose=='y'||choose=='Y'||chaochu==-1);
printf("应付金额%.2f\n",zongjine);
printf("实付金额:");
fflush(stdin);
scanf("%f",&shifu);
printf("100 积分=1 元,是否使用积分?(y/n)");
fflush(stdin);
scanf("%c",&choose);
if(choose=='y'||choose=='Y')
{
printf("剩余积分%.2f\n",hui[diji].jifen);
printf("使用多少积分?");
fflush(stdin);
scanf("%d",&shiyongjifen);
zongjifen+=shiyongjifen;
zhaoling=shifu-zongjine+shiyongjifen/100.0;
hui[diji].jifen-=shiyongjifen;
}
else zhaoling=shifu-zongjine;
}
if(zhenjia!=1)
{
do
{
printf("请输入条形码:");
fflush(stdin);
scanf("%s",tiaoma);
printf("数量:");
fflush(stdin);
scanf("%d",&shuliang);
for(i=0;i<zhonglei;i++)
{
if(shp[i].kucun>=0)
{
if(strcmp(tiaoma,shp[i].tiaoxinma)==0)//找到被销售的商品
{
printf("\n 购买商品信息如下:\n");
printf("\t 商品名: %s\t 进货单价: %.2f\t 销售单
价:%.2f\n",shp[i].name,shp[i].jinhuodanjia,shp[i].xiaoshoudanjia);
if(shp[i].kucun<=10) printf(" 提示:该商品库存不足10 份!
请及时补充!\n");//提示库存信息
if(shuliang>shp[i].kucun)//判断是否有足够库存
{
chaochu=-1;//-数表示超出
printf("没有足够库存!\n");
break;
}
dayin[i]=1;//销售的商品标记打印为1;用于打印小票
geshu[i]=shuliang;
shp[i].kucun-=shuliang;//库存=原库存-销售数量
zongjine+=shp[i].xiaoshoudanjia*shuliang;// 计算应付金

chengben+=shp[i].jinhuodanjia*shuliang;//计算成本
break;
}
}
}
if(i==zhonglei) printf("没有此商品!\n");
printf("\n 是否继续购买(y/n):");
fflush(stdin);
scanf("%c",&choose);
}while(choose=='y'||choose=='Y'||i==zhonglei);
printf("应付金额%.2f\n",zongjine);
printf("实付金额:");
fflush(stdin);
scanf("%f",&shifu);
zhaoling=shifu-zongjine;
}
printf("是否打印小票(y/n)");
fflush(stdin);
scanf("%c",&choose);
if(choose=='y'||choose=='Y')//打印小票
{
printf("\n\n 条形码\t 名称\t 销售单价\t 数量\t 金额\n");
for(i=0;i<zhonglei;i++)
{
if(dayin[i]==1)
{
printf("%s\t%s\t%.2f\t\t%d\t%.2f\n",shp[i].tiaoxinma,shp[i].name,shp[i].
xiaoshoudanjia,geshu[i],shp[i].xiaoshoudanjia*geshu[i]);
}
}
if(zhenjia==1) printf("使用%d 积分!\n",shiyongjifen);
printf(" 应付金额%.2f 元\t 实付金额%.2f 元\t 找零%.2f 元
\n",zongjine,shifu,zhaoling);
}
yingli+=zongjine-chengben;//盈利=收入金额-成本
zongjine=0;
chengben=0;
Saveshangpin();
}
void lirun()//利润函数
{
printf("共接受了%d 的抵价积分!\n",zongjifen);//显示共接受的积分量
printf("今日已赚%.2f 元\n",yingli);//显示盈利量
}
void shanchu()//删除商品
{
Loadshangpin();
char tiaoma[50];
char choose;
do
{
printf("请输入要删除的商品的条码:");
fflush(stdin);
scanf("%s",tiaoma);
for(int i=0;i<zhonglei;i++)
{
if(shp[i].kucun!=-1)
{
if(strcmp(tiaoma,shp[i].tiaoxinma)==0)//找到要删除的商品
{
printf("\n 原信息如下:\n");
printf("\t 商品名:%s\t 进货单价:%.2f\t 销售单价:%.2f 库
存: %d\n",shp[i].name,shp[i].jinhuodanjia,shp[i].xiaoshoudanjia,shp[i].kucu
n);
shp[i].kucun=-1; //删除则将库存标为负数
printf("该商品已删除!\n");
break;
}
if(i==zhonglei) //没有找到商品
{
printf("没有此商品!\n");
break;
}
}
}
printf("\n 是否继续删除(y/n):");
fflush(stdin);
scanf("%c",&choose);
}while(choose=='y'||choose=='Y');
Saveshangpin();
}
void xiugai()//修改商品
{
Loadshangpin();
char tiaoma[50];
char choose;
do{
printf("请输入要修改的商品条码:");
fflush(stdin);
scanf("%s",tiaoma);
for(int i=0;i<zhonglei;i++)
{
if(shp[i].kucun>=0) //判断是否被删除
{
if(strcmp(tiaoma,shp[i].tiaoxinma)==0)//找到要修改的商品
{
printf("\n 原信息如下:\n");
printf("\t 商品名:%s\t 进货单价:%.2f\t 销售单价:%.2f 库
存: %d\n",shp[i].name,shp[i].jinhuodanjia,shp[i].xiaoshoudanjia,shp[i].kucu
n);
printf("\n 修改商品名:");
fflush(stdin);
scanf("%s",shp[i].name);
printf("修改进货单价:");
fflush(stdin);
scanf("%f",&shp[i].jinhuodanjia);
printf("修改销售单价:");
fflush(stdin);
scanf("%f",&shp[i].xiaoshoudanjia);
printf("修改库存:");
scanf("%d",&shp[i].kucun);
break;
}
}
if(i==zhonglei)
printf("没有此货物!\n");
}
printf("\n 是否继续修改?(y/n)");
fflush(stdin);
scanf("%c",&choose);
}while(choose=='y'||choose=='Y');
Saveshangpin();
}
void liulanshp()//浏览所有商品
{
printf("条形码\t 名称\t 销售单价\t 进货单价\t 库存\n");
for(int i=0;i<zhonglei;i++)
{
if(shp[i].kucun>=0)
{
if(shp[i].jinhuodanjia!=0)//判断是否存在
{
printf("%s\t%s\t%.2f\t\t%.2f\t\t%d\n",shp[i].tiaoxinma,shp[i].name,shp[i
].xiaoshoudanjia,shp[i].jinhuodanjia,shp[i].kucun);
}
}
if(zhonglei==i) break;
}
}
void sousuo()//搜索商品
{
char tiaoma[50];
printf("请输入您要查找的商品条形码:");
fflush(stdin);
scanf("%s",tiaoma);
for(int i=0;i<zhonglei;i++)
{
if(shp[i].kucun>=0)//判断是否存在
{
if(strcmp(tiaoma,shp[i].tiaoxinma)==0)//找到商品
{
printf("\n 条形码\t 名称\t 销售单价\t 进货单价\t 库存\n");
if(shp[i].jinhuodanjia!=0)
printf("%s\t%s\t%.2f\t\t%.2f\t\t%d\n",shp[i].tiaoxinma,shp[i].name,shp[i
].xiaoshoudanjia,shp[i].jinhuodanjia,shp[i].kucun);
break;
}
}
if(zhonglei==i)
{
printf("没有此商品!\n");
}
}
}
void tianjia()//添加货物数量
{
Loadshangpin();
char choose;
char tiaoma[50];
int jia=0;
do
{
printf("请输入条形码:");
fflush(stdin);
scanf("%s",tiaoma);
for(int i=0;i<zhonglei;i++)
{
if(shp[i].kucun>=0)
{
if(strcmp(tiaoma,shp[i].tiaoxinma)==0)//找到要添加的商品
break;
}
}
if(i==zhonglei)
{
printf("没有此商品!\n");
break;
}
printf("\n 原信息如下:\n");
printf("\t 商品名: %s\t 进货单价: %.2f\t 销售单价: %.2f 库
存: %d\n",shp[i].name,shp[i].jinhuodanjia,shp[i].xiaoshoudanjia,shp[i].kucu
n);
printf("\n 请输入添加的数量:");
fflush(stdin);
scanf("%d",&jia);
shp[i].kucun=shp[i].kucun+jia;
printf("\n 是否继续添加(y/n)");
fflush(stdin);
scanf("%c",&choose);
}while(choose=='y'||choose=='Y');
Saveshangpin();
}
void tianjiaguanliyuan()//添加管理员
{
Loadguanliyuan();
char heduimima[50];
int chongfu;
do
{
chongfu=0;
printf("请添加管理员帐户:");
scanf("%s",guan[guanshuliang].zhanghu);
for(int a=0;a<guanshuliang;a++)
{
if(a!=guanshuliang)
{
if(strcmp(guan[guanshuliang].zhanghu,guan[a].zhanghu)==0)
chongfu=1;
}
}
if(chongfu==1)
{
printf("该帐户已存在!");
break;
}
printf("请输入密码:");
scanf("%s",guan[guanshuliang].mima);
fflush(stdin);
printf("请再次输入密码:");
scanf("%s",heduimima);
if(strcmp(guan[guanshuliang].mima,heduimima)==0)
{
printf("管理员设置成功!\n");
guanshuliang++;
break;
}
else
printf("两次输入的密码不正确!\n");
}while(guan[guanshuliang].mima!=heduimima);
Saveguanliyuan();
}
void tianjiaxiaoshouyuan()//添加销售员
{
Loadxiaoshouyuan();
char heduimima[50];
char choose;
int chongfu;
do
{
chongfu=0;
printf("请添加销售员帐户:");
scanf("%s",xiao[xiaoshuliang].zhanghu);
for(int a=0;a<xiaoshuliang;a++)
{
if(a!=xiaoshuliang)
{
if(strcmp(xiao[xiaoshuliang].zhanghu,xiao[a].zhanghu)==0)
chongfu=1;
}
}
if(chongfu==1)
{
printf("该帐户已存在!");
break;
}
printf("请输入密码:");
scanf("%s",xiao[xiaoshuliang].mima);
fflush(stdin);
printf("请再次输入密码:");
scanf("%s",heduimima);
if(strcmp(xiao[xiaoshuliang].mima,heduimima)==0)
{
printf("销售员设置成功!\n");
xiaoshuliang++;
break;
}
else
printf("两次输入的密码不正确!\n");
}while(xiao[xiaoshuliang].mima!=heduimima);
Savexiaoshouyuan();
}
void shpguanlicaidan()//商品管理功能菜单
{
printf("\n\n\t******** 商品管理功能菜单:*******************\n");
printf("\t \n");
printf("\t********** 1. 进 货 **********\n");
printf("\t \n");
printf("\t********** 2. 修 改 **********\n");
printf("\t \n");
printf("\t********** 3. 浏 览 **********\n");
printf("\t \n");
printf("\t********** 4. 搜 索 **********\n");
printf("\t \n");
printf("\t********** 5. 添 加 **********\n");
printf("\t \n");
printf("\t********** 6. 删 除 **********\n");
printf("\t \n");
printf("\t********** 0. 返回上级菜单! **********\n");
printf("\t**************************************************\n");
}
void shpguanli()//商品管理功能 包括修改、删除、浏览
{
int num;
do{
shpguanlicaidan();
printf("请选择:");
fflush(stdin);
scanf("%d",&num);
switch(num)
{
case 1:
jinhuo();//调用进货商品函数
break;
case 2:
xiugai();//调用修改商品函数
break;
case 3:
liulanshp();//调用浏览商品函数
break;
case 4:
sousuo();//搜索商品
break;
case 5:
tianjia();//添加商品
break;
case 6:
shanchu();// 删除
break;
case 0:
printf("退出商品管理!\n");
break;
default:
printf("选择错误!请重新选择!\n");
break;
}
}while(num!=0);
}
void dengluguanli()//管理员登陆成功
{
int num;
do{
guanlicaidan();
printf("请选择:");
fflush(stdin);
scanf("%d",&num);
switch(num)
{
case 1:
shpguanli();//可以商品管理,其中包括 浏览。删除。修改商品
break;
case 2:
lirun();// 查看利润
break;
case 0:
printf("谢谢使用\n");
break;
default:
printf("选择错误!请重新选择!\n");
break;
}
}while(num!=0);
}
void dengluxiao()// 销售员登陆成功函数
{
int num;
do{
xiaocaidan();
printf("请选择:");
fflush(stdin);
scanf("%d",&num);
switch(num)
{
case 1:
liulanshp();//可以浏览商品
break;
case 2:
xiaoshou();//主要任务 销售
break;
case 0:
printf("谢谢使用\n");
break;
default:
printf("选择错误!请重新选择!\n");
break;
}
}while(num!=0);
}
void panduanquanxian()//选择身份登陆函数
{
int num;//用于保存用户选择身份的选项
int i=0;//循环变量
char zhanghu[50];//用于保存输入的帐户,然后用于和系统帐户对比
char mima[50];//保存用户输入的密码
do
{
printf("\n\n\t**********************************************\n");
printf("\t****** 请选择你的身份: **********\n");
printf("\t****** 1. 管理员 **********\n");
printf("\t****** 2. 销售员 **********\n");
printf("\t**********************************************\n");
printf("(1/2):");
scanf("%d",&num);
switch(num)
{
case 1:
do
{
printf("\n 管理员登陆:\n");
printf("\t 管理账户:");
fflush(stdin);
scanf("%s",zhanghu);
printf("\t 管理密码:");
fflush(stdin);
scanf("%s",mima);
for(i=0;i<guanshuliang;i++)
{
if(strcmp(zhanghu,guan[i].zhanghu)==0)
{
if(strcmp(mima,guan[i].mima)==0)
{
printf("登陆成功!\n");
printf("请稍候:\n");
for(int sleep=0;sleep<50;sleep++)//延时
{
Sleep(50);
printf(">");
}
dengluguanli();//登陆成功调用对应权限函

break;
}
}
}
if(i==guanshuliang) printf("没有此账号!或密码错误\n");
}while(i==guanshuliang||strcmp(mima,guan[i].mima)!=0);
break;
case 2:
do
{
printf("销售员登陆:\n");
printf("\t 请输入账户:");
fflush(stdin);
scanf("%s",zhanghu);
printf("\t 请输入密码:");
fflush(stdin);
scanf("%s",mima);
for(i=0;i<xiaoshuliang;i++)
{
if(xiao[i].cunzai!=-1)
{
if(strcmp(zhanghu,xiao[i].zhanghu)==0)
{
if(strcmp(mima,xiao[i].mima)==0)
{
printf("登陆成功!\n");
printf("请稍候:\n");
for(int sleep=0;sleep<50;sleep++)
{
Sleep(50);
printf(">");
}
dengluxiao();
break;
}
}
}
}
if(i==xiaoshuliang)printf("没有此账号或密码错误!\n");
}while(i==xiaoshuliang||strcmp(mima,xiao[i].mima)!=0);
break;
default:
printf("选择错误!请重新选择!\n");
break;
}
}while(chenggong!=1||chenggong!=2);
}
//进入主函数
void main()
{
Loadguanliyuan();
Loadxiaoshouyuan();
Loadshangpin();
jieshao();//软件介绍函数
if(guanshuliang==0)
{
printf("初次使用软件请添加管理员、和销售员!\n");
tianjiaguanliyuan();
tianjiaxiaoshouyuan();
}
for(;;)//程序无限次使用
{
panduanquanxian();//判断登陆用户身份并完成其对应权限
}
}
搜索更多相关主题的帖子: include 管理员 销售员 成本 记录 
2015-07-02 15:21
斯坦利
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-7-2
得分:0 
这是个超市收银系统
2015-07-02 15:23
斯坦利
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-7-2
得分:0 
2015-07-02 15:39
斯坦利
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-7-2
得分:0 
或者谁有让我借鉴
2015-07-02 15:41



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-454989-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.118602 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved