在下小白,若用错误请指出
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define N 1000
struct commdity
{
int num;
char name[N];
float price;
int inventory;
char type[N];
};
struct commdity com[N];
void input(struct commdity *ps,int i);//用于输入商品信息
void save(struct commdity com[],int n,FILE *fp);//用于将数据存储到文件中
void refer(struct commdity com[],FILE *fp);//查询商品信息
void deletecom1(FILE *fp,struct commdity com1[],char name1[]);//删除商品信息
void deletecom2(FILE *fp,struct commdity com1[],int num1);
void modifyGoods(FILE *fp,struct commdity com1[],int num1);//修改商品信息(进货或出售)
void statistics(FILE *fp,struct commdity com1[],int num1);//统计商品
int main()
{
int n;
int i;
int num,num1;
int m;
char name1[20];
FILE *fp;
printf("*********************************\n");
printf("* 商品信息管理系统 *\n");
printf("* 1---输入商品信息 *\n");
printf("* 2---查询商品信息 *\n");
printf("* 3---修改商品信息 *\n");
printf("* 4---删除商品信息 *\n");
printf("* 5---统计 *\n");
printf("* 6---退出系统功能 *\n");
printf("*********************************\n");
printf("\n");
printf("\n");
printf("请输入序号选择功能\n");
printf("请输入你的选择:");
scanf("%d",&num);
system("cls");
if(num==1)
{
printf("请输入您要输入商品的类型有几种:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
input(&com[i],i+1);
}
save(com,n,fp);
}
if(num==2)
{
refer(com,fp);
}
if(num==3)
{
printf("请输入您要修改商品的商品编号:");
scanf("%d",&m);
system("cls");
modifyGoods(fp,com,m);
}
if(num==4)
{
printf("请根据商品名称或商品编号删除商品信息\n");
printf("请输入序号(1--商品名称、2--商品编号):");
scanf("%d",&m);
if(m==1)
{
printf("请输入商品名称:");
scanf("%s",name1);
printf("--------------------------------\n");
deletecom1(fp,com,name1);
}
if(m==2)
{
printf("请输入商品编号:");
scanf("%d",&num1);
printf("--------------------------------\n");
deletecom2(fp,com,num1);
}
}
if(num==5)
{
printf("请根据商品编号或者商品类型统计商品数量!\n");
printf("请输入序号(1--商品编号、2--商品类型):");
scanf("%d",&m);
statistics(fp,com,m);
}
if(num==6)
{
printf("退出系统并按任意键退出!\n");
}
return 0;
}
void input(struct commdity *ps,int i)
{
printf("请输入第%d个商品的相关信息(编号、名称、价格、库存、类型):\n",i);
scanf("%d %s %f %d %s",&(*ps).num,(*ps).name,&(*ps).price,&(*ps).inventory,(*ps).type);
}
void save(struct commdity com[],int n,FILE *fp)
{
fp=fopen("D:\\商品信息.txt","a");
if(!fp)
{
printf("file open faile!\n");
exit(0);
}
for(int i=0;i<n;i++)
{
fprintf(fp,"%d %s %0.2f %d %s\n",com[i].num,com[i].name,com[i].price,com[i].inventory,com[i].type);
}
fclose(fp);
printf("Data save successfully!\n");
}
void refer(struct commdity com1[],FILE *fp)
{
int i;
int num;
int number;
printf("请输入序号(1--查询单个商品、2--查询全部商品):");
scanf("%d",&number);
if(number==1)
{
printf("请输入您要查询商品的商品编号:");
scanf("%d",&num);
system("cls");
fp=fopen("D:\\商品信息.txt","r+");
if(!fp)
{
printf("file open false!\n");
exit(0);
}
for(i=0;i<N;i++)
{
fscanf(fp,"%d %s %f %d %s",&com1[i].num,com1[i].name,&com1[i].price,&com1[i].inventory,com1[i].type);
if(num==com1[i].num)
{
printf("商品编号:%d\n",com1[i].num);
printf("商品名称:%s\n",com1[i].name);
printf("商品价格:%0.2f\n",com1[i].price);
printf("商品库存:%d\n",com1[i].inventory);
printf("商品类型:%s\n",com1[i].type);
}
}
fclose(fp);
}
if(number==2)
{
system("cls");
fp=fopen("D:\\商品信息.txt","r+");
if(!fp)
{
printf("file open false!\n");
exit(0);
}
for(i=0;i<N;i++)
fscanf(fp,"%d %s %f %d %s",&com1[i].num,com1[i].name,&com1[i].price,&com1[i].inventory,com1[i].type);
printf("全部商品信息如下(商品编号、商品名称、商品价格、商品库存、商品类型):\n");
for(i=0;i<N;i++)
{
if(com1[i].num==0)
continue;
printf("%10d%s\t\t%0.2f\t\t%d\t\t%s\t\t\n",com[i].num,com[i].name,com[i].price,com[i].inventory,com[i].type);
}
}
}
void modifyGoods(FILE *fp,struct commdity com1[],int num1)
{
int number;
int i;
int quantity;
int m;
fp=fopen("D:\\商品信息.txt","r");
if(!fp)
{
printf("file open false!\n");
exit(0);
}
for(i=0;i<N;i++)
fscanf(fp,"%d %s %f %d %s",&com1[i].num,com1[i].name,&com1[i].price,&com1[i].inventory,com1[i].type);
for(i=0;i<N;i++)
{
if(num1==com1[i].num)
{
printf("要修改的商品信息为:\n");
printf("商品编号:%d\n商品名称:%s\n",com1[i].num,com1[i].name);
printf("商品价格:%0.2f\n库存:%d\n",com1[i].price,com1[i].inventory);
printf("商品类型:%s\n",com1[i].type);
printf("--------------------------------\n");
m=i;
}
}
printf("请输入您要修改内容(1--进货、2--出售)!\n");
printf("请输入序号:");
scanf("%d",&number);
fp=fopen("D:\\商品信息.txt","w");
if(!fp)
{
printf("file open false!\n");
exit(0);
}
if(number==1)
{
printf("请输入您要进货的数量:");
scanf("%d",&quantity);
com1[m].inventory+=quantity;
}
if(number==2)
{
printf("请输入您要出售的数量:");
scanf("%d",&quantity);
com1[m].inventory-=quantity;
}
system("cls");
printf("修改成功!\n");
printf("修改后的商品信息:\n");
printf("商品编号:%d\n商品名称:%s\n",com1[m].num,com1[m].name);
printf("商品价格:%0.2f\n库存:%d\n",com1[m].price,com1[m].inventory);
printf("商品类型:%s\n",com1[m].type);
for(i=0;i<N;i++)
{
if(com1[i].num==0)
continue;
fprintf(fp,"%d %s %0.2f %d %s\n",com[i].num,com[i].name,com[i].price,com[i].inventory,com[i].type);
}
fclose(fp);
}
void deletecom1(FILE *fp,struct commdity com1[],char name1[])
{
int i;
int m;
char a[20];
char b[20]={"yes"},c[20]={"no"};
char d[20]="\0";
fp=fopen("D:\\商品信息.txt","r");
if(!fp)
{
printf("file open false!\n");
exit(0);
}
for(i=0;i<N;i++)
fscanf(fp,"%d %s %f %d %s",&com1[i].num,com1[i].name,&com1[i].price,&com1[i].inventory,com1[i].type);
for(i=0;i<N;i++)
{
if(strcmp(name1,com1[i].name)==0)
{
printf("要删除的商品信息为:\n");
printf("商品编号:%d 商品名称:%s\n",com1[i].num,com1[i].name);
printf("商品价格:%0.2f 库存:%d\n",com1[i].price,com1[i].inventory);
printf("商品类型:%s\n",com1[i].type);
printf("--------------------------------\n");
m=i;
printf("请问是否要删除?\n");
printf("情输入yes或no:\n");
scanf("%s",a);
if(strcmp(a,b)==0)
{
com1[m].num=0;
strcpy(com1[m].name,d);
com1[m].price=0.00;
com1[m].inventory=0;
strcpy(com1[m].type,d);
fp=fopen("D:\\商品信息.txt","w");
if(!fp)
{
printf("file open false!\n");
exit(0);
}
for(i=0;i<N;i++)
{
if(com1[i].num==0)
continue;
fprintf(fp,"%d %s %0.2f %d %s\n",com[i].num,com[i].name,com[i].price,com[i].inventory,com[i].type);
}
fclose(fp);
printf("删除成功!\n");
}
if(strcmp(a,c)==0)
printf("请按任意键退出该系统!\n");
}
}
fclose(fp);
}
void deletecom2(FILE *fp,struct commdity com1[],int num1)
{
int i;
int m;
char a[20];
char b[20]={"yes"},c[20]={"no"};
char d[20]="\0";
fp=fopen("D:\\商品信息.txt","r");
if(!fp)
{
printf("file open false!\n");
exit(0);
}
for(i=0;i<N;i++)
fscanf(fp,"%d %s %f %d %s",&com1[i].num,com1[i].name,&com1[i].price,&com1[i].inventory,com1[i].type);
for(i=0;i<N;i++)
{
if(num1==com1[i].num)
{
printf("要删除的商品信息为:\n");
printf("商品编号:%d 商品名称:%s\n",com1[i].num,com1[i].name);
printf("商品价格:%0.2f 库存:%d\n",com1[i].price,com1[i].inventory);
printf("商品类型:%s\n",com1[i].type);
printf("--------------------------------\n");
m=i;
printf("请问是否要删除?\n");
printf("情输入yes或no:\n");
scanf("%s",a);
if(strcmp(a,b)==0)
{
com1[m].num=0;
strcpy(com1[m].name,d);
com1[m].price=0.00;
com1[m].inventory=0;
strcpy(com1[m].type,d);
fp=fopen("D:\\商品信息.txt","w");
if(!fp)
{
printf("file open false!\n");
exit(0);
}
for(i=0;i<N;i++)
{
if(com1[i].num==0)
continue;
fprintf(fp,"%d %s %0.2f %d %s\n",com[i].num,com[i].name,com[i].price,com[i].inventory,com[i].type);
}
fclose(fp);
printf("删除成功!\n");
}
if(strcmp(a,c)==0)
printf("请按任意键退出该系统!\n");
}
}
fclose(fp);
}
void statistics(FILE *fp,struct commdity com1[],int num1)
{
int number;
int i;
int m;
char type1[20];
if(num1==1)
{
printf("请输入您要统计商品的商品编号:");
scanf("%d",&number);
fp=fopen("D:\\商品信息.txt","r");
if(!fp)
{
printf("file open false!\n");
exit(0);
}
for(i=0;i<N;i++)
{
fscanf(fp,"%d %s %f %d %s",&com1[i].num,com1[i].name,&com1[i].price,&com1[i].inventory,com1[i].type);
if(number==com1[i].num)
{
printf("您要统计的商品信息如下:\n");
printf("商品编号:%d\n",com1[i].num);
printf("商品名称:%s\n",com1[i].name);
printf("商品价格:%0.2f\n",com1[i].price);
printf("商品库存:%d\n",com1[i].inventory);
printf("商品类型:%s\n",com1[i].type);
m=i;
}
}
fclose(fp);
printf("--------------------------------\n");
printf("经过统计,该商品的数量为:%d",com1[m].inventory);
}
if(num1==2)
{
printf("请输入您要统计商品的商品类型:");
scanf("%s",type1);
fp=fopen("D:\\商品信息.txt","r");
if(!fp)
{
printf("file open false!\n");
exit(0);
}
for(i=0;i<N;i++)
{
fscanf(fp,"%d %s %f %d %s",&com1[i].num,com1[i].name,&com1[i].price,&com1[i].inventory,com1[i].type);
if(strcmp(type1,com1[i].type)==0)
{
printf("--------------------------------\n");
printf("您要统计的商品信息如下:\n");
printf("商品编号:%d\n",com1[i].num);
printf("商品名称:%s\n",com1[i].name);
printf("商品价格:%0.2f\n",com1[i].price);
printf("商品库存:%d\n",com1[i].inventory);
printf("商品类型:%s\n",com1[i].type);
m=i;
printf("经过统计,该商品的数量为:%d\n",com1[m].inventory);
}
}
fclose(fp);
}
}