商品信息管理系统(c语言)

这是一个C语言实现的商品信息管理系统,包括输入、查询、修改、删除和统计商品信息功能。系统读写文件进行数据存储,支持根据商品编号或名称进行操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


        在下小白,若用错误请指出

#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);
	}
}


 

 

 

设计一个商品销售管理程序。该程序应该具有以下功能: (1)录入、修改、删除某商品信息; (2)显示所有商品信息; (3)按商品编号由小到大的顺序显示商品信息; (4)按商品销售数量从大到小的顺序显示商品信息; (5)按商品名称、商品编号、供货商等信息进行查询,若查询信息不存在,输出没找到的信息; (6)商品的销售; (7)统计缺货商品(可设定一个边界范围,如数量小于5,以便及时订货),并产生订货信息; (8)商品销售统计。 题目要求: (1)按照分析、设计、编码、调试和测试的软件开发过程完成这个应用程序,即在程序中加入异常处理,检查用户输入数据的有效性,以保证程序的健壮性; (2)商品信息应该包括商品编号、名称、规格、进货数量、销售数量、价格、供货商名称等; (3)为各项操作功能设计一个菜单,应用程序运行后,先显示这个菜单,然后用户通过菜单选项选则所需进行的操作项目,菜单要界面友好、清晰; (4)将所有商品信息存储在一个文件中,并实现文件的读写操作,即将输入的数据以文件的形式存盘,将原来已经存盘的文件读入内存,进行管理; (5)应保证测试用例测试程序的各种边缘情况。 输入要求: 应用程序运行后,在屏幕上显示一个菜单。用户可以根据需要,选定相应的操作项目。进入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息。 输出要求: (1)应用程序运行后,在屏幕上显示一个菜单。 (2)要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值