#include <stdio.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
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语言课程设计“仓库管理系统”
最新推荐文章于 2023-06-17 00:25:46 发布