#include "Shop.h"
void menu()
{
int choice;
system("color 3e");
printf("###########################################\n");
printf("\n");
printf(" 欢迎光临商店管理系统\n");
printf("\n");
printf("###########################################\n");
printf("^-^0->退出\n");
printf("^-^1->商品进库管理\n");
printf("^-^2->商品出库管理\n");
printf("^-^3->创建新商品信息\n");
printf("^-^4->清除商品信息\n");
printf("^-^5->销售统计\n");
printf("^-^6->显示库存量\n");
printf("请输入你要选择的功能\n");
scanf("%d",&choice);
switch(choice)
{
case 0:
Exit();
case 1:
In();
break;
case 2:
Out();
break;
case 3:
Add();
break;
case 4:
Del();
break;
case 5:
Sale();
break;
case 6:
Remined();
break;
default:
menu();
}
}
//增加新商品
void Add()
{
FILE *fp;
char m;
struct product inf;
printf("请输入商品编号\n");
scanf("%ld",&inf.number);
printf("请输入商品数量\n");
scanf("%d",&inf.count);
printf("请输入商品进价\n");
scanf("%f",&inf.inprice);
printf("请输入商品售价\n");
scanf("%f",&inf.outprice);
printf("请输入商品名称\n");
scanf("%s",inf.name);
fopen("商品信息","a+");
if(fp == NULL)
printf("");
fwrite(&inf,sizeof(struct product),1,fp);
fclose(fp);
printf("是否继续输入?是(Y/y),否(N/n)\n");
getchar();
m = getchar();
if(m == 'Y' || m == 'y')
Add();
if(m == 'N' || m == 'n')
menu();
}
//进货模块
void In()
{
FILE *fp;
int i;
int b;
char m;
long number;
int count;
struct product inf[SIZE];
struct product inf1;
fp = fopen("商品信息","r");
if((fp = fopen("商品信息","r"))== NULL)
printf("打开商品信息文件出错\n");
printf("请输入商品编号\n");
scanf("%ld",&number);
printf("请输入商品数量\n");
scanf("%d",&count);
i = 0;
while(fread(&inf1,sizeof(struct product),1,fp)!= (int)NULL)
{
if(inf1.number != number)
{
inf[i].number = inf1.number;
strcpy(inf[i].name,inf1.name);
inf[i].inprice = inf1.inprice;
inf[i].outprice = inf1.outprice;
inf[i].count = inf1.count;
i++;
}
else
{
inf[i].number = inf1.number;
inf[i].inprice = inf1.inprice;
inf[i].outprice = inf1.outprice;
inf[i].count = inf1.count;
strcpy(inf[i].name,inf1.name);
i++;
}
}
fclose(fp);
if((fp = fopen("商品信息","w+")) == NULL)
printf("打开商品信息文件出错\n");
for(b = 0;b < i; b++)
{
if(fwrite(&inf[b],sizeof(struct product),1,fp) == !1)
printf("写入商品信息文件出错\n");
}
fclose(fp);
printf("是否继续输入?是(输入Y/y) 否(N/n)\n");
getchar();
m = getchar();
if(m == 'Y'|| m== 'y')
In();
if(m == 'N' || m == 'n')
menu();
}
//出货模块
void Out()
{
FILE *fp;
char m;
float money = 0;
long number;
int count;
int b;
int i;
struct product inf[SIZE],inf1;
struct product list;
if((fp = fopen("商品信息","rb"))== NULL)
printf("打开商品文件出错\n");
printf("请输入商品编号\n");
scanf("%ld",&number);
printf("请输入商品数量\n");
scanf("%d",&count);
i = 0;
while(fread(&inf1,sizeof(struct product),1,fp)!=(int)NULL)
{
if(inf1.number != number)
{
inf[i].number = inf1.number;
strcpy(inf[i].name,inf1.name);
inf[i].inprice = inf1.inprice;
inf[i].outprice = inf1.outprice;
inf[i].count = inf1.count;
i++;
}
else
{
inf[i].number = number;
inf[i].inprice = inf1.inprice;
inf[i].outprice = inf1.outprice;
inf[i].count = inf1.count - count;
strcpy(inf[i].name,inf1.name);
list.number = number;
list.count = count;
list.inprice = inf1.inprice;
list.outprice = inf1.outprice;
strcpy(list.name,inf1.name);
money = (list.count)*(list.outprice);
i++;
}
}
fclose(fp);
if((fp=fopen("商品信息","w+"))==NULL)
printf("打开商品信息文件出错\n");
for(b = 0;b < i;b++)
{
if(fwrite(&inf[b],sizeof(struct product),1,fp)==(int)NULL)
printf("写入商品信息文件出错\n");
}
fclose(fp);
fp = fopen("清单","a+");
fwrite(&list,sizeof(struct product),1,fp);
fclose(fp);
printf("是否打印本次清单?是(Y/y) 否(N/n)\n");
getchar();
m = getchar();
if(m == 'Y' || m == 'y')
printf("商品编号 商品名称 进价 售价 金额\n");
printf("%3ld%s%3.1f%3.1f%3.1f\n",list.number,list.name,list.inprice,list.outprice,money);
printf("是否继续输入?是(Y/y) 否(N/n)");
getchar();
m = getchar();
if(m == 'Y' || m == 'y')
Out();
if(m == 'N' || m == 'n')
menu();
}
//清除模块
void Del()
{
int i;
int b;
long number;
struct product inf[SIZE],infd;
char m;
FILE *fp;
printf("请输入商品编号\n");
scanf("%ld",&number);
fp = fopen("商品信息","r");
if(fp == NULL)
printf("打开文件出错\n");
i = 0;
while(fread(&infd,sizeof(struct product),1,fp)!=(int)NULL)
{
if(infd.number != number)
{
inf[i].number = infd.number;
inf[i].count = infd.count;
inf[i].inprice = infd.inprice;
inf[i].outprice = infd.outprice;
strcpy(inf[i].name,infd.name);
i++;
}
}
fclose(fp);
if(fopen("商品信息","w+")==NULL)
printf("打开商品信息文件出错\n");
for(b = 0;b < i;b++)
{
if(fwrite(&inf[b],sizeof(struct product),1,fp)==1)
printf("写入商品信息文件出错\n");
}
fclose(fp);
printf("是否继续输入?是(Y/y) 否(N/n)\n");
getchar();
m = getchar();
if(m == 'Y' || m == 'y')
Del();
if(m == 'N' || m == 'n')
menu();
}
//退出模块
void Exit()
{
char m;
printf("是否确认? 是(Y/y) 否(N/n)\n");
getchar();
m = getchar();
if(m == 'Y' || m == 'y')
exit(1);
if(m == 'N' || m == 'n')
menu();
}
//清单模块
void Sale()
{
char m;
struct product list;
FILE *fp;
printf("确认打印?是(Y/y) 否(N/n)\n");
getchar();
m = getchar();
if(m == 'Y' || m == 'y')
{
fp = fopen("清单","r");
printf("商品名称 商品编号 商品售价 总金额 销售数量\n");
while(fread(&list,sizeof(struct product),1,fp)!=(int)NULL)
printf("%s%5ld%3.1f%3.1f%d\n",list.name,list.number,list.outprice,(list.count*list.outprice),list.count);
}
{
printf("按任意键返回菜单\n");
getchar();
getchar();
menu();
}
if(m == 'n' || m == 'N')
menu();
}
//显示库存
void Remined()
{
struct product list1;
FILE *fp;
fp = fopen("商品信息","r+");
printf("商品编号 商品名称 商品进价 商品售价 库存量\n");
while(fread(&list1,sizeof(struct product),1,fp)!=(int)NULL)
printf("%ld%s%f%f %d\n",list1.number,list1.name,list1.inprice,list1.outprice,list1.count);
printf("按任意键返回菜单\n");
getchar();
getchar();
menu();
}