仓库管理系统源代码#include#include#include#include#includestruct cangku{int num;char name[20];char introdution[50];float square;};typedef struct cangku Cangku;int Input(Cangku t[]);void List(Cangku t[],int n); void SearchOnName(Cangku t[],int n);int DeleteRecord(Cangku t[],int n); int AlterRecord(Cangku t[],int n); int AddRecord(Cangku t[],int n); void SortOnName(Cangku t[],int n); void SortOnSquare(Cangku t[],int n); void SaveRecord(Cangku t[],int n); int LoadRecord(Cangku t[]); int LoadRecord1(Cangku t[]); void Save(Cangkut[],int n); void Load(Cangku t[],int n); void Load1(Cangku t[]);int Menu_select();void main(){Cangku ck[50];int i,l,length,w=1;int q[4]={5,2,1,0};system("cls");printf("请输入第1个密码:\n");for (i=0;i<4;i++){scanf("%d",&l);system("cls");if(l==q[i])printf("正确,继续输入第%d个密码:.\n",i+2); else{w=0;printf ("输入错误!\n");break;}}while(w){switch(Menu_select()){case 1: length=Input(ck);SaveRecord(ck,length);break;case 2: length=LoadRecord(ck); SearchOnName(ck,length); break;case 3: length=LoadRecord(ck); length=DeleteRecord(ck,length); SaveRecord(ck,length);break;case 4: length=LoadRecord(ck); length=AlterRecord(ck,length); SaveRecord(ck,length);break;case 5: length=LoadRecord(ck); length=AddRecord(ck,length); SaveRecord(ck,length);break;case 6: length=LoadRecord(ck); system("cls");List(ck,length);break;case 7: length=LoadRecord(ck); system("cls");SortOnName(ck,length);SaveRecord(ck,length);break;case 8: length=LoadRecord(ck); system("cls");SortOnSquare(ck,length);SaveRecord(ck,length);break;case 9: length=LoadRecord(ck); system("cls");Save(ck,length);break;case 0: length=LoadRecord1(ck);Load1(ck);system("cls");Load(ck,length);break;case 10: exit(0);}}}int Menu_select(){int c;printf("按任意键进入仓库管理菜单\n");getchar();system("cls");system("color F0");printf(" ******************************仓库管理*******************************\n");printf(" * 1. 录入仓库初始记录 *\n");printf(" * 2. 按仓库名称查找记录 *\n");printf(" * 3. 删除仓库记录 *\n");printf(" * 4. 修改仓库记录 *\n");printf(" * 5. 增加仓库信息 *\n");printf(" * 6. 显示全部记录 *\n");printf(" * 7. 按仓库名称排序*\n");printf(" * 8. 按仓库面积排序*\n");printf(" * 9. 备份*\n");printf(" * 0. 恢复*\n");printf(" * 10. 退出*\n");printf("******************************************************************** *\n");do{printf("\n输入您想要进行的操作选项键(0-10):"); if(scanf("%d",&c)!=1){while(getchar()!='\n')continue;}}while(c<0||c>10);return c;}int Input(Cangku t[]){int i,n;system("cls");printf("\n请输入要输入的仓库数目:\n");scanf("%d",&n);printf("开始输入仓库信息:\n");for(i=0;i<n;i++){system("cls");printf("\n第%d个仓库的编号:",i+1);scanf ("%d",&t[i].num);printf("第%d个仓库的名称:",i+1);scanf ("%s",t[i].name);printf("第%d个仓库的面积:",i+1);scanf ("%f",&t[i].square);printf("第%d个仓库的说明:",i+1);scanf ("%s",t[i].introdution); }return (n);}void List(Cangku t[],int n){int i;printf("******************************************************************** *\n");printf(" ** 编号名称面积说明\n");printf("---------------------------------------------------------------------\n");for(i=0;i<n;i++){printf("%17d%13s%20f%14s\n",t[i].num,t[i].name,t[i].square,t[i].intr odution);}printf("******************************************************************** *\n");printf ("\n");getchar();}void SearchOnName(Cangku t[],int n) {char s[20];int i,flag=0;system("cls");printf("请输入要查找的仓库名称:\n");scanf("%s",s);for(i=0;i<n;i++){if(strcmp(s,t[i].name)==0){flag=1;system("cls");printf("\n\n要查找的仓库信息如下:\n");printf("\n");printf("******************************************************************** *\n");printf(" ** 编号名称面积说明\n");printf("---------------------------------------------------------------------\n");{printf("%17d%13s%20f%14s\n",t[i].num,t[i].name,t[i].square,t[i].intr odution);}printf("******************************************************************** *\n");printf ("\n");}}if(flag==0)printf("要查找的仓库不存在!!\n");getchar();}int DeleteRecord(Cangku t[],int n){char s[20];char ch;int i,j,flag=0;system("cls");printf("请输入要删除的仓库名称\n");scanf("%s",s);for(i=0;i<n;i++){if(strcmp(s,t[i].name)==0){flag=1;system("cls");printf("\n\n要删除的仓库信息如下:\n");printf("\n");printf("******************************************************************** *\n");printf(" ** 编号名称面积说明\n");printf("---------------------------------------------------------------------\n");{printf("%17d%13s%20f%14s\n",t[i].num,t[i].name,t[i].square,t[i].intr odution);}printf("******************************************************************** *\n");printf ("\n");printf("确定删除仓库信息吗?(Y/N)\n"); ch=getchar();ch=getchar();if(ch=='Y'||ch=='y'){for(j=i;j<n-1;j++)t[j]=t[j+1];n--;i--;printf ("删除成功.\n");}}}if(flag==0)printf("要删除的仓库不存在!!\n"); getchar();return n;}int AlterRecord(Cangku t[],int n) { int i,flag=0;char s[20],ch;system("cls");printf("请输入要修改的仓库名称\n");scanf("%s",s);for(i=0;i<n;i++){if(strcmp(s,t[i].name)==0){flag=1;system("cls");printf("\n\n要修改的仓库信息如下:\n");printf("\n");printf("*********************************************************************\n" );printf(" ** 编号名称面积说明\n");printf(" ---------------------------------------------------------------------\n");{printf("%17d%13s%20f%14s\n",t[i].num,t[i].name,t[i].square,t[i].intr odution);}printf("******************************************************************** *\n");printf ("\n");printf("确定修改仓库信息吗,(Y/N)\n");ch=getchar();ch=getchar();if(ch=='y'||ch=='Y'){system("cls");printf("请输入修改后的信息:\n");printf("请输入仓库新的名称:");scanf("%s",t[i].name);printf("请输入%s仓库新的编号:",t[i].name); scanf("%d",&t[i].num);printf("请输入%s仓库新的面积:",t[i].name); scanf("%f",&t[i].square);printf("请输入%s仓库新的说明:",t[i].name); scanf("%s",t[i].introdution);}}}if(flag==0)printf("要修改的仓库不存在~~\n"); getchar();return n;}int AddRecord(Cangku t[],int n) {int i,m;system("cls");printf("\n请输入再增加的记录数:\n"); scanf("%d",&m);printf("开始追加记录\n");for(i=n;i<n+m;i++){ system("cls");printf("\n第%d个仓库的编号:",i+1); scanf("%d",&t[i].num);printf("第%d个仓库的名称:",i+1); scanf("%s",t[i].name);printf("第%d个仓库的面积:",i+1); scanf("%f",&t[i].square);printf("第%d个仓库的说明:",i+1); scanf("%s",t[i].introdution);}return (n+m);}void SortOnName(Cangku t[],int n) {int i,j;struct cangku temp ;for(j=1;j<n;j++)for(i=0;i<n-j;i++)if((strcmp(t[i].name,t[i+1].name))>0) {temp=t[i];t[i]=t[i+1];t[i+1]=temp;}printf("排序成功!!!\n");printf("排序后仓库信息列表如下:\n"); List(t,n);}void SortOnSquare(Cangku t[],int n) {int i,j;struct cangku temp ;for(j=1;j<n;j++)for(i=0;i<n-j;i++)if(t[i].square<t[i+1].square){temp=t[i];t[i]=t[i+1];t[i+1]=temp;}printf("排序成功!!!\n");printf("排序后仓库信息列表如下:\n");List(t,n);}void SaveRecord(Cangku t[],int n) {int i;FILE *fp;if((fp=fopen("record.txt","w"))==NULL) {printf("不能打开文件!\n");exit(1);}for(i=0;i<n;i++){fwrite(&t[i],sizeof(struct cangku),1,fp); }fclose(fp);}int LoadRecord(Cangku t[]){int n=0;FILE *fp;if((fp=fopen("record.txt","a+"))==NULL) {printf("不能打开文件!\n");exit(1);}while(fread(&t[n],sizeof(struct cangku),1,fp)) n++; fclose(fp);printf("从文件中成功读出记录!!!\n");return n;}int LoadRecord1(Cangku t[]) {int n=0;FILE *fp;if((fp=fopen("bkrecord.txt","a+"))==NULL){printf("不能打开文件!\n");exit(1);}while(fread(&t[n],sizeof(struct cangku),1,fp)) n++; fclose(fp);printf("从文件中成功读出记录!!!\n");return n;}void Save(Cangku t[],int n) {int i;FILE *fp;if((fp=fopen("bkrecord.txt","w"))==NULL){printf("不能打开文件!\n");exit(1);}for(i=0;i<n;i++){fwrite(&t[i],sizeof(struct cangku),1,fp);}fclose(fp);printf("备份成功.\n");getchar();}void Load1(Cangku t[]) {int n=0;FILE *fp;if((fp=fopen("bkrecord.txt","a+"))==NULL){printf("不能打开文件!\n");exit(1);}while(fread(&t[n],sizeof(struct cangku),1,fp)) n++; fclose(fp);getchar();}void Load(Cangku t[],int n) {int i;FILE *fp;if((fp=fopen("record.txt","w"))==NULL) {printf("不能打开文件!\n");exit(1);}for(i=0;i<n;i++){fwrite(&t[i],sizeof(struct cangku),1,fp); }fclose(fp);printf("恢复成功.\n");}。