文档库 最新最全的文档下载
当前位置:文档库 › 建筑工地管理系统

建筑工地管理系统

#include
#include /*在内存的动态存储区中分配空间*/
#include
int shouldsave1=0,shouldsave2=0,shouldsave3=0,shouldsave4=0;
struct xhs_pj_jzgd/*定义“销售商--配件--建筑工地”结构体*/
{
char xnum[15];
char pnum[15];
char gnum[15];
int amount;
};
typedef struct node1/*用NODE1代替已有结构体*/
{
struct xhs_pj_jzgd data;
struct node1 *next;
}Node1,*Link1;
struct jzgd/*定义“建筑工地”结构体*/
{
char gnum[15];
char gname[16];
char gcity[16];
};
typedef struct node2/*用NODE2代替已有结构体*/
{
struct jzgd data;
struct node2 *next;
}Node2,*Link2;
struct pj/*定义“配件”结构体*/
{
char pnum[15];
char pname[20];
char color[5];
int weight;
char product_place[16];
};
typedef struct node3/*用NODE3代替已有结构体*/
{
struct pj data;
struct node3 *next;
}Node3,*Link3;
struct xhs/*定义“销售商”结构体*/
{
char xnum[15];
char xname[20];
char state[15];
char xcity[16];
};
typedef struct node4/*用NODE4代替已有结构体*/
{
struct xhs data;
struct node4 *next;
}Node4,*Link4;
void menu()
{
printf("******************************主菜单*****************************\n");
printf("1.添加销售商--配件--建筑工地信息 2.删除销售商--配件--建筑工地信息\n");
printf("3.查询销售商--配件--建筑工地信息 4.修改销售商--配件--建筑工地信息\n");
printf("5.保存销售商--配件--建筑工地信息 6.添加建筑工地信息\n");
printf("7.删除建筑工地信息 8.查询建筑工地信息\n");
printf("9.修改建筑工地信息 10.保存建筑工地信息\n");
printf("11.添加配件信息 12.删除配件信息\n");
printf("13.查询配件信息 14.修改配件信息\n");
printf("15.保存配件信息 16.添加销售商信息\n");
printf("17.删除销售商信息 18.查询销售商信息\n");
printf("19.修改销售商信息 20.保存销售商信息\n");
printf("21.查询与供应商所在城市相同的零件--供应商,项目--供应商记录对\n");
printf("0.退出系统\n");
printf("*****************************************************************\n");
}
void printe1(Node1 *p)
{
printf("%5s %5s %5s %5d\n",p->data.xnum,p->data.pnum,p->data.gnum,p->data.amount);
}
Node1 *Locate1(Link1 l,char findmess1[],char findmess2[],char findmess3[])
{
Node1 *r;
r=l->next;
while(r!=NULL)
{
if(strcmp(r->data.xnum,findmess1)==0&&strcmp(r->data.pnum,findmess2)==0&&strcmp(r->data.gnum,findmess3)==0)
return r;
r=r->next;
}
return NULL;
}
void Add1(Link1 l)
{
Node1 *p,*r,*s;
char xnum[15];
char pnum[15];
char gnum[15];
r=l;
s=l->next;
while(r->next!=NULL)
r=r->next; /*将指针置于最末尾*/
while(1)
{
printf("请你输入销货商号

码:(输入0返回上一级菜单)");
scanf("%5s",xnum); getchar();
if(strcmp(xnum,"0")==0)
break;
printf("请你输入配件号:(输入0返回上一级菜单)");
scanf("%5s",pnum); getchar();
if(strcmp(pnum,"0")==0)
break;
printf("请你输入工地号:(输入0返回上一级菜单)");
scanf("%5s",gnum); getchar();
if(strcmp(gnum,"0")==0)
break;
while(s)
{
if(strcmp(s->data.xnum,xnum)==0&&strcmp(s->data.pnum,pnum)==0&&strcmp(s->data.gnum,gnum)==0)
{
printf("=====>提示:销货商号码为'%5s',配件号为'%5s',工地号为'%5s'的数量信息已存在,若要修改请你选择'4'修改!\n",xnum,pnum,gnum);
printf("-----------------------------------------------------------------------\n");
printf("销售商号码 配件号 工地号 数量\n\n\n");
printe1(s);
printf("-----------------------------------------------------------------------\n");
printf("\n");
return;
}
s=s->next;
}
p=(Node1 *)malloc(sizeof(Node1));
strcpy(p->data.xnum,xnum);
strcpy(p->data.pnum,pnum);
strcpy(p->data.gnum,gnum);
printf("请您输入数量:");
scanf("%5d",&p->data.amount);
getchar();
/*信息输入已经完成*/
p->next=NULL;
r->next=p;
r=p;
shouldsave1=1;
}
}
void Delete1(Link1 l)
{
Node1 *p,*r;
char findmess1[15],findmess2[15],findmess3[15];
if(!l->next)
{
printf("\n=====>提示:没有资料可以删除!\n");
return;
}
printf("请你输入要删除的销售商号码:");
scanf("%5s",findmess1); getchar();
printf("请你输入要删除的配件号:");
scanf("%5s",findmess2); getchar();
printf("请你输入要删除的工地号:");
scanf("%5s",findmess3); getchar();
p=Locate1(l,findmess1,findmess2,findmess3);
if(p)
{
r=l;
while(r->next!=p)
r=r->next;
r->next=p->next;
free(p);
printf("\n=====>提示:该销售商--配件--建筑工地信息已经成功删除!\n");
shouldsave1=1;
}
else
printf("\n=====>提示:没有找到该 销售商--配件--建筑工地 信息!\n");
}
void Modify1(Link1 l)
{
Node1 *p;
char findmess1[15],findmess2[15],findmess3[15];
if(!l->next) /*没有找到相应的信息*/
{
printf("\n=====>提示:没有资料可以修改!\n");
return;
}
printf("请你输入要修改的销货商号码:");
scanf("%5s",findmess1); getchar();
printf("请你输入要修改的配件号:");
scanf("%5s",findmess2); getchar();
printf("请你输入要修改的工地号:");
scanf("%5s",findmess3); getchar();
p=Locate1(l,findmess1,findmess2,findmess3);
if(p)
{
printf("请你输入新销货商号码(原来是%s):",p->data.xnum);
scanf("%5s",p->data.xnum);
getchar();
printf("请你输入新配件号(原来是%s):",p->data.pnum);
scanf("%5s",p->data.pnum);
getchar();
printf("请你输入新工地号(原来是%s):",p->data.gnum);
scanf("%5s",p->data.gnum);
getchar();
printf("请你输入新数量(原来是%d):",p->data.amount);
scanf

("%5d",&p->data.amount);
getchar();
printf("\n=====>提示:资料修改成功!\n");
shouldsave1=1;
}
else
printf("\n=====>提示:没有找到该销售商--配件--建筑工地信息!\n");
}
void Query1(Link1 l)
{
char findmess1[15],findmess2[15],findmess3[15];
Node1 *p;
if(!l->next)
{
printf("\n=====>提示:没有资料可以查询!\n");
return;
}
printf("请你输入要查询的销售商号码:");
scanf("%5s",findmess1); getchar();
printf("请你输入要查询的配件号:");
scanf("%5s",findmess2); getchar();
printf("请你输入要查询的工地号:");
scanf("%5s",findmess3); getchar();
p=Locate1(l,findmess1,findmess2,findmess3);
if(p)
{
printf("\t\t\t\t查找结果:\n");
printf("-----------------------------------------------------------------------\n");
printf("销售商号码 配件号 工地号 数量\n\n\n ");
printe1(p);
printf("-----------------------------------------------------------------------\n");
}
else
printf("\n=====>提示:没有找到该 销售商--配件--建筑工地 信息!\n");
}


void Save1(Link1 l)
{
FILE* fp;
Node1 *p;
int flag=1,count=0;
fp=fopen("c:\\file1.txt","wb"); /*以写的方式打开二进制文件*/
if(fp==NULL)
{
printf("\n=====>提示:重新打开销售商--配件--建筑工地文件时发生错误!\n");
exit(1);
}
p=l->next;
while(p)
{
if(fwrite(p,sizeof(Node1),1,fp)==1)
{
p=p->next;
count++;
}
else
{
flag=0;
break;
}
}
if(flag)
{
printf("\n=====>提示:销售商--配件--建筑工地文件保存成功!(有%d条记录已经保存.)\n",count);
shouldsave1=0;
}
fclose(fp);
}
void printe2(Node2 *p)
{
printf("%5s %5s %5s \n",p->data.gnum,p->data.gname,p->data.gcity);
}
Node2 *Locate2(Link2 l,char findmess[],char nameornum[])
{
Node2 *r;
r=l->next;
if(strcmp(nameornum,"num")==0) /*按工地号查询*/
{
r=l->next;
while(r!=NULL)
{
if(strcmp(r->data.gnum,findmess)==0)
return r;
r=r->next;
}
}
else if(strcmp(nameornum,"name")==0) /*按名字查询*/
{
r=l->next;
while(r!=NULL)
{
if(strcmp(r->data.gname,findmess)==0)
return r;
r=r->next;
}
}
return 0;
}
void Add2(Link2 l)
{
Node2 *p,*r,*s;
char gnum[15];
r=l;
s=l->next;
while(r->next!=NULL)
r=r->next; /*将指针置于最末尾*/
while(1)
{
printf("请你输入工地号:(输入0返回上一级菜单)");
scanf("%5s",gnum); getchar();
if(strcmp(gnum,"0")==0)
break;
while(s)
{
if(strcmp(s->data.gnum,gnum)==0)
{
printf("=====>提示:销货商号码为'%5s'的建筑工地信息已存在,若要修改请你选择'9'修改!\n",gnum);
printf("-----------------------------------------------------------------------\n");
printf("工地号 名字 城市\n\n\n");
printe2(s);
printf("-----------------------------------------------------------------------\n");
printf("\n");

return;
}
s=s->next;
}
p=(Node2 *)malloc(sizeof(Node2));
strcpy(p->data.gnum,gnum);
printf("请你输入名字:");
scanf("%5s",p->data.gname); getchar();
printf("请你输入城市:");
scanf("%5s",p->data.gcity); getchar();
/*信息输入已经完成*/
p->next=NULL;
r->next=p;
r=p;
shouldsave2=1;
}
}
void Delete2(Link2 l)
{
int sel;
Node2 *p,*r;
char findmess[16];
if(!l->next)
{
printf("\n=====>提示:没有资料可以删除!\n");
return;
}
printf("\n=====>1按工地号删除\n=====>2按名字删除\n");
scanf("%d",&sel); getchar();
if(sel==1)
{
printf("请你输入要删除的工地号:");
scanf("%5s",findmess);
p=Locate2(l,findmess,"num");
if(p)
{
r=l;
while(r->next!=p)
r=r->next;
r->next=p->next;
free(p);
printf("\n=====>提示:该 建筑工地 信息已经成功删除!\n");
shouldsave2=1;
}
else
printf("\n=====>提示:没有找到该建筑工地信息!\n");
}
else if(sel==2)
{
printf("请你输入要删除的名字:");
scanf("%5s",findmess);
p=Locate2(l,findmess,"name");
if(p)
{
r=l;
while(r->next!=p)
r=r->next;
r->next=p->next;
free(p);
printf("\n=====>提示:该 建筑工地 信息已经成功删除!\n");
shouldsave2=1;
}
else
printf("\n=====>提示:没有找到该建筑工地信息!\n");
}
else
printf("\n=====>提示:输入错误,请重新输入!\n");
}
void Modify2(Link2 l)
{
Node2 *p;
char findmess[15];
if(!l->next) /*没有找到相应的信息*/
{
printf("\n=====>提示:没有资料可以修改!\n");
return;
}
printf("请你输入要修改的工地号:");
scanf("%5s",findmess); getchar();
p=Locate2(l,findmess,"num");
if(p)
{
printf("请你输入新工地(原来是%s):",p->data.gnum);
scanf("%5s",p->data.gnum);
getchar();
printf("请你输入新名字(原来是%s):",p->data.gname);
scanf("%5s",p->data.gname);
getchar();
printf("请你输入新城市(原来是%s):",p->data.gcity);
scanf("%5s",p->data.gcity);
getchar();
printf("\n=====>提示:资料修改成功!\n");
shouldsave2=1;
}
else
printf("\n=====>提示:没有找到建筑工地信息!\n");
}



void Query2(Link2 l)
{
int sel;/*查询时输入相应选择的变量*/
char findmess[16];
Node2 *p;
if(!l->next)
{
printf("\n=====>提示:没有资料可以查询!\n");
return;
}
printf("\n=====>1按工地号查找\n=====>2按名字查找\n");
scanf("%d",&sel);getchar();
if(sel==1)/*通过工地号查找*/
{
printf("请你输入要查找的工地号:");
scanf("%5s",findmess);
p=Locate2(l,findmess,"num");
if(p)
{
printf("\t\t\t\t查找结果:\n");
printf("-----------------------------------------------------------------------\n");
printf("工地号 名字 城市\n\n\n");
printe2(p);
printf("-----------------------------------------------------------------------\n");
}
else
printf("\n===

==>提示:没有找到该建筑工地信息!\n");
}
else if(sel==2) /*通过名字查找*/
{
printf("请你输入要查找的名字:");
scanf("%5s",findmess);
p=Locate2(l,findmess,"name");
if(p)
{
printf("\t\t\t查找结果\n");
printf("-----------------------------------------------------------------------\n");
printf("工地编号 名字 城市\n\n\n");
printe2(p);
printf("-----------------------------------------------------------------------\n");
}
else
printf("\n=====>提示:没有找到该建筑工地信息!\n");
}
else
printf("\n=====>提示:输入错误!\n");
}
void Save2(Link2 l)
{
FILE* fp;
Node2 *p;
int flag=1,count=0;
fp=fopen("c:\\file2.txt","wb");
if(fp==NULL)
{
printf("\n=====>提示:重新打开工地文件文件时发生错误!\n");
exit(1);
}
p=l->next;
while(p)
{
if(fwrite(p,sizeof(Node2),1,fp)==1)
{
p=p->next;
count++;
}
else
{
flag=0;
break;
}
}
if(flag)
{
printf("\n=====>提示:建筑工地文件保存成功!(有%d条记录已经保存.)\n",count);
shouldsave2=0;
}
fclose(fp);
}
void printe3(Node3 *p)
{
printf("%5s %5s %5s %5d %5s\n",p->data.pnum,p->data.pname,p->data.color,p->data.weight,p->data.product_place);
}
Node3 *Locate3(Link3 l,char findmess[],char nameornum[])
{
Node3 *r;
r=l->next;
if(strcmp(nameornum,"num")==0) /*按配件号查询*/
{
r=l->next;
while(r!=NULL)
{
if(strcmp(r->data.pnum,findmess)==0)
return r;
r=r->next;
}
}
else if(strcmp(nameornum,"name")==0) /*按配件名查询*/
{
r=l->next;
while(r!=NULL)
{
if(strcmp(r->data.pname,findmess)==0)
return r;
r=r->next;
}
}
return 0;
}
void Add3(Link3 l)
{
Node3 *p,*r,*s;
char pnum[15];
r=l;
s=l->next;
while(r->next!=NULL)
r=r->next; /*将指针置于最末尾*/
while(1)
{
printf("请你输入配件号:(输入0返回上一级菜单)");
scanf("%5s",pnum); getchar();
if(strcmp(pnum,"0")==0)
break;
while(s)
{
if(strcmp(s->data.pnum,pnum)==0)
{
printf("=====>提示:配件号为'%5s'的配件信息已存在,若要修改请你选择'14'修改!\n",pnum);
printf("-----------------------------------------------------------------------\n");
printf("配件号 配件名 颜色 重量 产地\n\n\n");
printe3(s);
printf("-----------------------------------------------------------------------\n");
printf("\n");
return;
}
s=s->next;
}
p=(Node3 *)malloc(sizeof(Node3));
strcpy(p->data.pnum,pnum);
printf("请你输入配件名:");
scanf("%5s",p->data.pname); getchar();
printf("请你输入颜色:");
scanf("%5s",p->data.color); getchar();
printf("请你输入重量:");
scanf("%5d",&p->data.weight); getchar();
printf("请你输入产地:");
scanf("%5s",p->data.product_place); getchar();
/*信息输入已经完成*/
p->next=NULL;
r->next=p;
r=p;
shouldsave3=1;
}
}
voi

d Delete3(Link3 l)
{
int sel;
Node3 *p,*r;
char findmess[20];
if(!l->next)
{
printf("\n=====>提示:没有资料可以删除!\n");
return;
}
printf("\n=====>1按配件号删除\n=====>2按配件名删除\n");
scanf("%d",&sel); getchar();
if(sel==1)
{
printf("请你输入要删除的配件号:");
scanf("%5s",findmess);
p=Locate3(l,findmess,"num");
if(p)
{
r=l;
while(r->next!=p)
r=r->next;
r->next=p->next;
free(p);
printf("\n=====>提示:该 配件 信息已经成功删除!\n");
shouldsave3=1;
}
else
printf("\n=====>提示:没有找到该配件信息!\n");
}
else if(sel==2)
{
printf("请你输入要删除的配件名:");
scanf("%5s",findmess);
p=Locate3(l,findmess,"name");
if(p)
{
r=l;
while(r->next!=p)
r=r->next;
r->next=p->next;
free(p);
printf("\n=====>提示:该 配件 信息已经成功删除!\n");
shouldsave3=1;
}
else
printf("\n=====>提示:没有找到该配件信息!\n");
}
else
printf("\n=====>提示:输入错误,请重新输入!\n");
}
void Modify3(Link3 l)
{
Node3 *p;
char findmess[20];
if(!l->next) /*没有找到相应的信息*/
{
printf("\n=====>提示:没有资料可以修改!\n");
return;
}
printf("请你输入要修改的配件号:");
scanf("%5s",findmess); getchar();
p=Locate3(l,findmess,"num");
if(p)
{
printf("请你输入新配件号(原来是%5s):",p->data.pnum);
scanf("%5s",p->data.pnum);
getchar();
printf("请你输入新配件名(原来是%5s):",p->data.pname);
scanf("%5s",p->data.pname);
getchar();
printf("请你输入新颜色(原来是%5s):",p->data.color);
scanf("%5s",p->data.color);
getchar();
printf("请输入新重量(原来是%5d):",p->data.weight);
scanf("%5d",&p->data.weight);
getchar();
printf("请输入新产地(原来是%5s):",p->data.product_place);
scanf("%5s",p->data.product_place);
getchar();
printf("\n=====>提示:资料修改成功!\n");
shouldsave3=1;
}
else
printf("\n=====>提示:没有找到该配件信息!\n");
}
void Query3(Link3 l)
{
int sel;/*查询时输入相应选择的变量*/
char findmess[20];
Node3 *p;
if(!l->next)
{
printf("\n=====>提示:没有资料可以查询!\n");
return;
}
printf("\n=====>1按配件号查找\n=====>2按配件名查找\n");
scanf("%d",&sel);getchar();
if(sel==1)/*通过配件号查找*/
{
printf("请你输入要查找的配件号:");
scanf("%5s",findmess);
p=Locate3(l,findmess,"num");
if(p)
{
printf("\t\t\t\t查找结果:\n");
printf("-----------------------------------------------------------------------\n");
printf("配件号 配件名 颜色 重量 产地\n\n\n");
printe3(p);
printf("-----------------------------------------------------------------------\n");
}
else
printf("\n=====>提示:没有找到该配件信息!\n");
}
else if(sel==2) /*通过配件名查找*/
{
printf("请你输入

要查找的配件名:");
scanf("%5s",findmess);
p=Locate3(l,findmess,"name");
if(p)
{
printf("\t\t\t查找结果\n");
printf("-----------------------------------------------------------------------\n");
printf("配件号 配件名 颜色 重量 产地\n\n\n");
printe3(p);
printf("-----------------------------------------------------------------------\n");
}
else
printf("\n=====>提示:没有找到该配件信息!\n");
}
else
printf("\n=====>提示:输入错误!\n");
}
void Save3(Link3 l)
{
FILE* fp;
Node3 *p;
int flag=1,count=0;
fp=fopen("c:\\file3.txt","wb");
if(fp==NULL)
{
printf("\n=====>提示:重新打开配件文件时发生错误!\n");
exit(1);
}
p=l->next;
while(p)
{
if(fwrite(p,sizeof(Node3),1,fp)==1)
{
p=p->next;
count++;
}
else
{
flag=0;
break;
}
}
if(flag)
{
printf("\n=====>提示:配件文件保存成功!(有%d条记录已经保存.)\n",count);
shouldsave3=0;
}
fclose(fp);
}
void printe4(Node4 *p)
{
printf("%5s %5s %5s %5s\n",p->data.xnum,p->data.xname,p->data.state,p->data.xcity);
}
Node4 *Locate4(Link4 l,char findmess[],char nameornum[])
{
Node4 *r;
r=l->next;
if(strcmp(nameornum,"num")==0) /*按号码查询*/
{
r=l->next;
while(r!=NULL)
{
if(strcmp(r->data.xnum,findmess)==0)
return r;
r=r->next;
}
}
else if(strcmp(nameornum,"name")==0) /*按名字查询*/
{
r=l->next;
while(r!=NULL)
{
if(strcmp(r->data.xname,findmess)==0)
return r;
r=r->next;
}
}
return 0;
}
void Add4(Link4 l)
{
Node4 *p,*r,*s;
char xnum[15];
r=l;
s=l->next;
while(r->next!=NULL)
r=r->next; /*将指针置于最末尾*/
while(1)
{
printf("请你输入号码:(输入0返回上一级菜单)");
scanf("%5s",xnum); getchar();
if(strcmp(xnum,"0")==0)
break;
while(s)
{
if(strcmp(s->data.xnum,xnum)==0)
{
printf("=====>提示:号码为'%5s'的销售商信息已存在,若要修改请你选择'19'修改!\n",xnum);
printf("-----------------------------------------------------------------------\n");
printf("号码 名字 状态 城市\n\n\n");
printe4(s);
printf("-----------------------------------------------------------------------\n");
printf("\n");
return;
}
s=s->next;
}
p=(Node4 *)malloc(sizeof(Node4));
strcpy(p->data.xnum,xnum);
printf("请你输入名字:");
scanf("%5s",p->data.xname); getchar();
printf("请你输入状态:");
scanf("%5s",p->data.state); getchar();
printf("请你输入城市:");
scanf("%5s",p->data.xcity); getchar();
/*信息输入已经完成*/
p->next=NULL;
r->next=p;
r=p;
shouldsave4=1;
}
}
void Delete4(Link4 l)
{
int sel;
Node4 *p,*r;
char findmess[20];
if(!l->next)
{
printf("\n=====>提示:没有资料可以删除!\n");
return;
}
printf("\n=====>1按号码删除\n=====>2按名字删除\n");
scanf("%d",&sel); getchar();
i

f(sel==1)
{
printf("请你输入要删除的号码:");
scanf("%5s",findmess);
p=Locate4(l,findmess,"num");
if(p)
{
r=l;
while(r->next!=p)
r=r->next;
r->next=p->next;
free(p);
printf("\n=====>提示:该 销货商 信息已经成功删除!\n");
shouldsave4=1;
}
else
printf("\n=====>提示:没有找到该销货商信息!\n");
}
else if(sel==2)
{
printf("请你输入要删除的名字:");
scanf("%5s",findmess);
p=Locate4(l,findmess,"name");
if(p)
{
r=l;
while(r->next!=p)
r=r->next;
r->next=p->next;
free(p);
printf("\n=====>提示:该 销货商 信息已经成功删除!\n");
shouldsave4=1;
}
else
printf("\n=====>提示:没有找到该销货商信息!\n");
}
else
printf("\n=====>提示:输入错误,请重新输入!\n");
}
void Modify4(Link4 l)
{
Node4 *p;
char findmess[20];
if(!l->next) /*没有找到相应的信息*/
{
printf("\n=====>提示:没有资料可以修改!\n");
return;
}
printf("请你输入要修改的号码:");
scanf("%5s",findmess); getchar();
p=Locate4(l,findmess,"num");
if(p)
{
printf("请你输入新号码(原来是%5s):",p->data.xnum);
scanf("%5s",p->data.xnum);
getchar();
printf("请你输入新名字(原来是%5s):",p->data.xname);
scanf("%5s",p->data.xname);
getchar();
printf("请你输入新状态(原来是%5s):",p->data.state);
scanf("%5s",p->data.state);
getchar();
printf("请输入新城市(原来是%5s):",p->data.xcity);
scanf("%5s",p->data.xcity);
getchar();
printf("\n=====>提示:资料修改成功!\n");
shouldsave4=1;
}
else
printf("\n=====>提示:没有找到该销货商信息!\n");
}
void Query4(Link4 l)
{
int sel;/*查询时输入相应选择的变量*/
char findmess[20];
Node4 *p;
if(!l->next)
{
printf("\n=====>提示:没有资料可以查询!\n");
return;
}
printf("\n=====>1按号码查找\n=====>2按名字查找\n");
scanf("%d",&sel);getchar();
if(sel==1)/*通过号码查找*/
{
printf("请你输入要查找的号码:");
scanf("%5s",findmess);
p=Locate4(l,findmess,"num");
if(p)
{
printf("\t\t\t\t查找结果:\n");
printf("-----------------------------------------------------------------------\n");
printf("号码 名字 状态 城市\n\n\n");
printe4(p);
printf("-----------------------------------------------------------------------\n");
}
else
printf("\n=====>提示:没有找到该销货售信息!\n");
}
else if(sel==2) /*通过名字查找*/
{
printf("请你输入要查找的名字:");
scanf("%5s",findmess);
p=Locate4(l,findmess,"name");
if(p)
{
printf("\t\t\t查找结果\n");
printf("-----------------------------------------------------------------------\n");
printf("号码 名字 状态 城市\n\n\n");
printe4(p);
printf("-----------------------------------------------------------------------\n");
}
else
printf("\n=====

>提示:没有找到该销售商信息!\n");
}
else
printf("\n=====>提示:输入错误!\n");
}
void Save4(Link4 l)
{
FILE* fp;
Node4 *p;
int flag=1,count=0;
fp=fopen("c:\\file4.txt","wb");
if(fp==NULL)
{
printf("\n=====>提示:重新打开销售商文件时发生错误!\n");
exit(1);
}
p=l->next;
while(p)
{
if(fwrite(p,sizeof(Node4),1,fp)==1)
{
p=p->next;
count++;
}
else
{
flag=0;
break;
}
}
if(flag)
{
printf("\n=====>提示:销售商文件保存成功!(有%d条记录已经保存.)\n",count);
shouldsave4=0;
}
fclose(fp);
}
void Query5(Link2 l2,Link3 l3,Link4 l4)
{
int sel;/*查询时输入相应选择的变量*/ int flag=0;
char findmess[20],xcity[16];
Node4 *p; Node3 *q; Node2 *r;
if(!l4->next)
{
printf("\n=====>提示:没有资料可以查询!\n");
return;
}
printf("\n=====>1按供货商号码查找\n=====>2按供货商名字查找\n");
scanf("%d",&sel);getchar();
if(sel==1)/*通过号码查找*/
{
printf("请你输入要查找的号码:");
scanf("%5s",findmess);
p=Locate4(l4,findmess,"num");
if(p)
{
strcpy(xcity,p->data.xcity);
printf("\t\t与供应商所在城市相同的零件--供应商对:\n\n\n");
printf("\t\t供应商:\n");
printf("-----------------------------------------------------------------------\n");
printf("号码 名字 状态 城市\n\n\n ");
printe4(p);
printf("-----------------------------------------------------------------------\n");
q=l3->next;
printf("\t\t零件:\n");
printf("-----------------------------------------------------------------------\n");
printf("配件号 配件名 颜色 重量 产地\n\n\n");
while(q)
{
if(strcmp(xcity,q->data.product_place)==0)
{printe3(q);flag++;}
q=q->next;
}
printf("-----------------------------------------------------------------------\n");
if(flag==0)printf("无对应零件信息\n"); flag=0;
printf("\t\t与供应商所在城市相同的项目--供应商记录对:\n");
printf("\t\t供应商:\n");
printf("-----------------------------------------------------------------------\n");
printf("号码 名字 状态 城市\n\n\n");
printe4(p);
printf("-----------------------------------------------------------------------\n");
r=l2->next;
printf("\t\t项目:\n");
printf("-----------------------------------------------------------------------\n");
printf("工地号 名字 城市\n\n\n");
while(r)
{
if(strcmp(xcity,r->data.gcity)==0)
{printe2(r);flag++;}
r=r->next;
}
printf("-----------------------------------------------------------------------\n");
if(flag==0)printf("无对应项目信息\n");flag=0;
}
else
printf("\n=====>提示:没有找到该供货商信息!\n");
}
else if(sel==2) /*通过名字查找*/
{
printf("请你输入要查找的名字:");
scanf("%5s",findmess);
p=Locate4(l4,findmess,"na

me");
if(p)
{
strcpy(xcity,p->data.xcity);
printf("\t\t与供应商所在城市相同的零件--供应商对:\n\n\n");
printf("\t\t供应商:\n");
printf("-----------------------------------------------------------------------\n");
printf("号码 名字 状态 城市\n\n\n");
printe4(p);
printf("-----------------------------------------------------------------------\n");
q=l3->next;
printf("\t\t零件:\n");
printf("-----------------------------------------------------------------------\n");
printf("配件号 配件名 颜色 重量 产地\n\n\n");
while(q)
{

if(strcmp(xcity,q->data.product_place)==0)
{printe3(q); flag++;}
q=q->next;
}
printf("-----------------------------------------------------------------------\n");
if(flag==0)printf("无对应零件信息\n");
printf("\t\t与供应商所在城市相同的项目--供应商记录对:\n\n\n");
printf("\t\t供应商:\n");
printf("-----------------------------------------------------------------------\n");
printf("号码 名字 状态 城市\n\n\n");
printe4(p);
printf("-----------------------------------------------------------------------\n");
r=l2->next;
printf("\t\t项目:\n");
printf("-----------------------------------------------------------------------\n");
printf("工地号 名字 城市\n\n\n");
while(r)
{
if(strcmp(xcity,r->data.gcity)==0)
{printe2(r);flag++;}
r=r->next;
}
printf("-----------------------------------------------------------------------\n");
if(flag==0)printf("无对应项目信息\n");
}
else
printf("\n=====>提示:没有找到该供货商信息!\n");
}
else
printf("\n=====>提示:输入错误!\n");
}
void main()
{
Link1 l1;/*链表*/ Link2 l2;Link3 l3;Link4 l4;
FILE *fp;
int sel;
char ch;
char jian;
int count=0;
Node1 *p1,*r1; Node2 *p2,*r2;Node3 *p3,*r3;Node4 *p4,*r4;
printf("\t\t\t\t建筑工地信息管理系统\n\t\t\t\t-------万 亚 \n");
l1=(Node1*)malloc(sizeof(Node1));
l1->next=NULL;
r1=l1;
fp=fopen("file1.txt","rb"); /*为输入打开一个二进制文件*/
if(fp==NULL)
{
printf("\n=====>提示:文件“销售商--配件--建筑工地”还不存在,是否创建新文件?(y/n)\n");
scanf("%c",&jian);
if(jian=='y'||jian=='Y')
fp=fopen("file1.txt","wb");
else
exit(0);
}
printf("\n=====>提示:文件“销售商--配件--建筑工地”已经打开,正在导入记录,请稍后......\n");
while(!feof(fp))
{
p1=(Node1*)malloc(sizeof(Node1));
if(fread(p1,sizeof(Node1),1,fp)) /*将文件的内容放入接点中*/
{
p1->next=NULL;
r1->next=p1;
r1=p1; /*将该接点挂入连中*/
count++;
}
}
fclose(fp); /*关闭文件*/
printf("\n=====>提示:“销售商--配件--建筑工地”记录导入完毕,共导入%d条记录.\n",count);
count=0;
l2=(Node2*)malloc(sizeof(Node2));
l2->next=NULL;
r2=l2

;
fp=fopen("file2.txt","rb");
if(fp==NULL)
{
printf("\n=====>提示:文件“建筑工地”还不存在,是否创建新文件?(y/n)\n");
scanf("%c",&jian);
if(jian=='y'||jian=='Y')
fp=fopen("file2.txt","wb");
else
exit(0);
}
printf("\n=====>提示:文件“建筑工地”已经打开,正在导入记录,请稍后......\n");
while(!feof(fp))
{
p2=(Node2*)malloc(sizeof(Node2));
if(fread(p2,sizeof(Node2),1,fp)) /*将文件的内容放入接点中*/
{
p2->next=NULL;
r2->next=p2;
r2=p2; /*将该接点挂入连中*/
count++;
}
}
fclose(fp); /*关闭文件*/
printf("\n=====>提示:“建筑工地”记录导入完毕,共导入%d条记录.\n",count);
count=0;
l3=(Node3*)malloc(sizeof(Node3));
l3->next=NULL;
r3=l3;
fp=fopen("file3.txt","rb");
if(fp==NULL)
{
printf("\n=====>提示:文件“配件”还不存在,是否创建新文件?(y/n)\n");
scanf("%c",&jian);
if(jian=='y'||jian=='Y')
fp=fopen("file3.txt","wb");
else
exit(0);
}
printf("\n=====>提示:文件“配件”已经打开,正在导入记录,请稍后......\n");
while(!feof(fp))
{
p3=(Node3*)malloc(sizeof(Node3));
if(fread(p3,sizeof(Node3),1,fp)) /*将文件的内容放入接点中*/
{
p3->next=NULL;
r3->next=p3;
r3=p3; /*将该接点挂入连中*/
count++;
}
}
fclose(fp); /*关闭文件*/
printf("\n=====>提示:“配件”记录导入完毕,共导入%d条记录.\n",count);
count=0;
l4=(Node4*)malloc(sizeof(Node4));
l4->next=NULL;
r4=l4;
fp=fopen("file4.txt","rb");
if(fp==NULL)
{
printf("\n=====>提示:文件“销售商”还不存在,是否创建新文件?(y/n)\n");
scanf("%c",&jian);
if(jian=='y'||jian=='Y')
fp=fopen("c:\\file4.txt","wb");
else
exit(0);
}
printf("\n=====>提示:文件“销售商”已经打开,正在导入记录,请稍后......\n");
while(!feof(fp))
{
p4=(Node4*)malloc(sizeof(Node4));
if(fread(p4,sizeof(Node4),1,fp)) /*将文件的内容放入接点中*/
{
p4->next=NULL;
r4->next=p4;
r4=p4; /*将该接点挂入连中*/
count++;
}
}
fclose(fp); /*关闭文件*/
printf("\n=====>提示:“销售商”记录导入完毕,共导入%d条记录.\n",count);
while(1)
{
menu();
printf("请你选择操作:");
scanf("%d",&sel);
if(sel==0)
{
if(shouldsave1==1)
{
getchar();
printf("\n=====>提示:销售商--配件--建筑工地资料已经改动,是否将改动保存到文件中(y/n)?\n");
scanf("%c",&ch);
if(ch=='y'||ch=='Y')
Save1(l1);
}
if(shouldsave2==1)
{
getchar();
printf("\n=====>提示:建筑工地资料已经改动,是否将改动保存到文件中(y/n)?\n");
scanf("%c",&ch);
if(ch=='y'||ch=='Y')
Save2(l2);
}
if(shouldsave3==1)
{
getchar();
printf("\n=====>提示:配件资料已经改动,是否将改动保存到文件中(y/n)?\n");
scanf("%c",&c

h);
if(ch=='y'||ch=='Y')
Save3(l3);
}
if(shouldsave4==1)
{
getchar();
printf("\n=====>提示:销售商资料已经改动,是否将改动保存到文件中(y/n)?\n");
scanf("%c",&ch);
if(ch=='y'||ch=='Y')
Save4(l4);
}
printf("\n=====>提示:已经退出系统,再见!\n");
break;
}
switch(sel)
{
case 1:
Add1(l1);/*返回Add1函数*/
break;
case 2:
Delete1(l1);/*返回Delete1函数*/
break;
case 3:
Query1(l1);/*返回Query1函数*/
break;
case 4:
Modify1(l1);/*返回Modify1函数*/
break;
case 5:
Save1(l1);/*返回Save1函数*/
break;
case 6:
Add2(l2);/*返回Add2函数*/
break;
case 7:
Delete2(l2);/*返回Delete2函数*/
break;
case 8:
Query2(l2);/*返回Query2函数*/
break;
case 9:
Modify2(l2);/*返回Modify2函数*/
break;
case 10:
Save2(l2);/*返回Save2函数*/
break;
case 11:
Add3(l3);/*返回Add3函数*/
break;
case 12:
Delete3(l3);/*返回Delete3函数*/
break;
case 13:
Query3(l3);/*返回Query3函数*/
break;
case 14:
Modify3(l3);/*返回Modify3函数*/
break;
case 15:
Save3(l3);/*返回Save3函数*/
break;
case 16:
Add4(l4);/*返回Add4函数*/
break;
case 17:
Delete4(l4);/*返回Delete4函数*/
break;
case 18:
Query4(l4);/*返回Query4函数*/
break;
case 19:
Modify4(l4);/*返回Modify4函数*/
break;
case 20:
Save4(l4);/*返回Save4函数*/
break;
case 21:
Query5(l2,l3,l4);/*返回Query5函数*/
break;
default:
printf("\n=====>提示:输入错误!\n");
getchar();
break;
}
}
}

相关文档