C语言课程设计“仓库管理系统”

#include 
#include 
#include 
#include 
#include 
void input();
void show();
void search();
void change();
void Delete();
void output();
void menu();
struct Info
{
	char num[10];//编号
    char name[20];//名称
    int amount;//数量
}info;
void main()
{
	menu();
}
void menu()//菜单函数
{
	int n;//n记录选择的运行的函数
    system("cls");
    puts("\t\t             欢迎来到仓库货物管理系统              ");
    puts("\t\t***********************菜单**********************\n");
    puts("\t\t*                  1.货物入库                   *\n");
    puts("\t\t*                  2.显示货物信息               *\n");
    puts("\t\t*                  3.查询货物信息               *\n");
    puts("\t\t*                  4.修改货物信息               *\n");
    puts("\t\t*                  5.删除货物信息               *\n");
    puts("\t\t*                  6.货物出库                   *\n");
    puts("\t\t*                  7.退出系统                   *\n");
    puts("\t\t*************************************************\n");
    printf("                请选择你要输入数(1-7): \n");
   scanf("%d",&n);
   while(n<1||n>7)
   {
      printf("输入指令有误,请重新输入:\n");
	  scanf("%d",&n);
   }
     switch(n)
	   {
		   case 1:input();break;
		   case 2:show();break;
		   case 3:search();break;
		   case 4:change();break;
		   case 5:Delete();break;
		   case 6:output();break;
		   case 7:printf("谢谢您的使用!\n");exit(0);
	   }
}
void printf1()
{
    printf("********************************************************************\n");
    printf("\t\t%-10s\t%-10s\t%-10s\n","编号","名称","数量\n");
	printf("********************************************************************\n");
}
void printf2(struct Info info)
{
    printf("--------------------------------------------------------------------\n");
    printf("\t\t%-10s\t%-10s\t%-10d\n",info.num,info.name,info.amount );
    printf("--------------------------------------------------------------------\n");  
} 
void input()
{
    struct Info info;
    FILE *fp1,*fp2;
	char f,ch[10];
    fp1=fopen("1.dat","rb");
	fp2=fopen("2.dat","wb+");
    printf("请输入货物编号:");
	scanf("%s",&ch);
    while(!feof(fp1))
	{
		if(fread(&info,sizeof(info),1,fp1))
		{
			if(strcmp(ch,info.num)==0)
			{
				printf1();
			    printf2(info);
				printf("请输入货物数量:");
				scanf("%d",&info.amount);
				printf("\n");
				fwrite(&info,sizeof(info),1,fp2);
				while(!feof(fp1))
				{
				    if(fread(&info,sizeof(info),1,fp1))
					fwrite(&info,sizeof(info),1,fp2);
				}
				break;
			} 
		}
		else
		{
			printf("请输入新的信息:\n");
            printf("请输入货物名称:");
			scanf("%s",&info.name);
			printf("\n");
			printf("请输入货物数量:");
			scanf("%d",&info.amount);
			printf("\n");
			printf("请输入货物编号:");
			scanf("%s",&info.num);
			fwrite(&info,sizeof(info),1,fp2);
		}
	}
	fclose(fp1);
	fclose(fp2);
	remove("1.dat");
    rename("2.dat","1.dat");
	printf("按任意键返回菜单");
	getchar();
	system("cls");
    menu();
}


void show() //货物信息显示函数
{
	struct Info info;
    FILE * fp;
    int m=0;
	if((fp=fopen("1.dat","rb"))==NULL)
    {
		printf("不能打开文件!");
        getchar();
        exit(1);
	}
    while(fread(&info,sizeof(info),1,fp)==1)
	{
		m++;
	    if(m==1)
		printf1();
	    printf2(info);
	    if((m!=0)&&(m%10==0))
		{
			printf("输入任何键继续   ");
	        getchar();
	        puts("\n\n");
	        printf1();
		}
	}
	fclose(fp);
    printf("总共有%d条记录在其中!\n",m);
	getchar();
	printf("按任意键返回菜单");
	getchar();
	system("cls");
	menu();
}
void search()// 货物信息查询函数
{
	struct Info info;
    FILE * fp;             
    int flag;              //flag为 1 按编号查询 ,flag为 2 按姓名查询
    int a=0;           //记录符合条件的记录的个数
    char ch[10];
    char f;
	if((fp=fopen("1.dat","rb"))==NULL)
	{
		printf("  \t 不能打开文件!\n");
        getchar();
        exit(1); 
	}
	do
	{
		rewind(fp);
		printf("查询通过(1:编号 2:姓名):\n");
		while(1)
		{
			scanf("%d",&flag);
	        getchar();
	        if(flag<1||flag>2)
			{
				printf("出错了!请再次输入(1:编号 2:姓名) \n");
			}
			else
				break;
		}
		if(flag==1)    //按编号进行查询
		{
			printf("请输入你要查询的编号: \n");
		    gets(ch);
		    a=0;        //符合条件的记录数
			while(fread(&info,sizeof(info),1,fp)==1)
				if(strcmp(ch,info.num)==0)
				{
					a++;
	                if(a==1)
		            printf1();
	                printf2(info);
				}
		}
		else                 //按名称进行查询 
		{
			printf("  请输入你要查询的名称: \n");
		    gets(ch);
		    a=0;
			while(fread(&info,sizeof(info),1,fp)==1)
				if(strcmp(ch,info.name)==0)
				{
					a++;
	                if(a==1)
		            printf1();
	                printf2(info);
				}
		}
		printf(" 总共有%d记录在其中!   \n",a);
	    printf("  还需要查询吗?(Y/N):  \n");
	    f=getchar();
	    getchar();
	}
	while(f=='Y'||f=='y');
    fclose(fp);
    printf("按任意键返回菜单");
	getchar();
	system("cls");
	menu();
}
void output()//出库函数
{
	struct Info info;
	FILE *fp1,*fp2;
	int a;
	char ch[20];
    if((fp1=fopen("1.dat","rb"))==NULL)
	printf("open file error");
	if((fp2=fopen("2.dat","ab"))==NULL)
	printf("open file error");
	printf("请输入需要出库的编号");
	scanf("%s",ch);
	while(!feof(fp1))
	{
		if(fread(&info,sizeof(info),1,fp1))
			if(strcmp(ch,info.num)==0)
			{
				printf1();
				printf2(info);
				printf("请输入需要出库的数量");
				scanf("%d",&a);
				if(a<=info.amount)
				{
					info.amount-=a;
				    fwrite(&info,sizeof(info),1,fp2);
					printf("出库成功!\n");
				}
				else
				{
					printf("货物不足!\n");
				}
				while(!feof(fp1))
				{
					if(fread(&info,sizeof(info),1,fp1))
					fwrite(&info,sizeof(info),1,fp2);
					break;
				}
			}
			else
				fwrite(&info,sizeof(info),1,fp2);
	}
	fclose(fp1);fclose(fp2);
	remove("1.dat");
	rename("2.dat","1.dat");
	system("pause");
	printf("按任意键返回菜单");
	getchar();
	system("cls");
	menu();
}
void Delete()          //货物信息删除函数
{
	struct Info info;
	FILE *fp1,*fp2;
	int flag;
	char ch[10];
	char f;
	do
	{
		if((fp1=fopen("1.dat","rb"))==NULL)
		{
			printf("  \t 不能打开文件! \n");
            getchar();
            exit(1); 
		}
		if((fp2=fopen("2.dat","wb"))==NULL)
		{
			printf(" \t 不能打开文件!        \n");
            getchar();
            exit(1);
		}
		printf("请输入你需要删除货物的编号: \n");
		scanf("%s",&ch);
		flag=0;
		while(!feof(fp1))
		{
			if(fread(&info,sizeof(info),1,fp1))
			{ 
				if(strcmp(ch,info.num)==0)
				{	
					printf("删除成功!\n");									
				}
				else
				{
					fwrite(&info,sizeof(info),1,fp2);
				    printf("没有找到货物信息!\n");
				}
			}
		}
		fclose(fp1);
		fclose(fp2);
		remove("1.dat");
		rename("2.dat","1.dat");
		printf("还删除其他吗?(Y/N):  \n");
		f=getchar();
		getchar();
	}
	while(f=='y'||f=='Y');
	printf("按任意键返回菜单");
	getchar();
	system("cls");
	menu();
}
void change()//货物信息修改函数
{
	struct Info info;
	FILE *fp1,*fp2;
	int i;
	char ch[10];
	printf("请输入需要修改的货物名称:");
	scanf("%s",ch);
	do
	{
		fp1=fopen("1.dat","rb");
		fp2=fopen("2.dat","wb+");
		while(!feof(fp1))
		{
			if(fread(&info,sizeof(info),1,fp1))
			{
				if(strcmp(ch,info.name)==0)
				{
					printf1();
					printf2(info);
					printf("请输入货物名称:");
					scanf("%s",info.name);
					printf("\n");
					printf("请输入货物数量:");
					scanf("%d",&info.amount);
					printf("\n");
					printf("请输入货物编号:");
					scanf("%s",&info.num);
					fwrite(&info,sizeof(info),1,fp2);
					while(!feof(fp1))
					{
						if(fread(&info,sizeof(info),1,fp1))
						fwrite(&info,sizeof(info),1,fp2);
					}		
					break;
				}
				else
				{
					printf("%s没有被录入,请重新输入\n",ch);
					change();
					fclose(fp1);fclose(fp2);
					remove("1.dat");
					rename("2.dat","1.dat");
					i=1;
				}
			}
		}
		fclose(fp1);fclose(fp2);
		remove("1.dat");
		rename("2.dat","1.dat");
	}
	while(i==1);
	system("pause");
	printf("按任意键返回菜单");
	getchar();
	system("cls");
	menu();
}

				

					

你可能感兴趣的:(c语言)