#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#define MAX 100
struct nod{
char num[20];
char baixiuren[20];
char weixiu[20];
char pos[20];
}shuidian[MAX];
void menu();
void search();
void display();
void insert();
void del();
void save(int m);
int downlod();
void main()
{
int f;
menu();
while(1)
{
//getchar();
scanf("%d",&f);
switch(f)
{
case 1: insert();break;
case 2: search();;break;
case 3: del();break;
case 4: display();break;
case 5: system("cls");break;
case 6: goto A;
default :break;
}
}
A: ;
}
int downlod()
{
FILE*fp;
int i=0;
if((fp=fopen("data.txt","rb"))==NULL)
{
printf("文件打开失败!\n");
exit(0);
}
else
{
do
{
fread(&shuidian[i],sizeof(struct nod),1,fp);
i++;
}
while(feof(fp)==0);
}
fclose(fp);
return(i-1);
}
void insert(){
int m,i;
printf("请输入需录入的组数:");scanf("%d",&m);
for(i=0;i<m;i++)
{
printf("请输入第%d组信息:\n",i+1);
printf("请输入编号:");scanf("%s",shuidian[i].num);
printf("请输入报修人:");scanf("%s",shuidian[i].baixiuren);
printf("请输入维修人:");scanf("%s",shuidian[i].weixiu);
printf("请输入位置:");scanf("%s",shuidian[i].pos);
printf("\n");
}
save(m);
printf("信息录入完毕\n重新录入请按1,返回主菜单请按2");
scanf("%d",&i);
if(i==1)
insert();
else
menu();
}
void del(){
int m,i,flag=1;
char bian[20];
printf("请输入需删除人的编号:");
scanf("%s",bian);
m=downlod();
for(i=0;i<m;i++)
if(strcmp(shuidian[i].num,bian)==0)
{
printf("将删除的信息为:\n");
printf("编号:%s\n报修人: %s\n位置:%s\n维修人:%s\n",shuidian[i].num,shuidian[i].baixiuren,shuidian[i].pos,shuidian[i].weixiu);
for(int j=i+1;j<m;j++)
{
strcpy(shuidian[j-1].num,shuidian[j].num);
strcpy(shuidian[j-1].baixiuren,shuidian[j].baixiuren);
strcpy(shuidian[j-1].weixiu,shuidian[j].weixiu);
strcpy(shuidian[j-1].pos,shuidian[j].pos);
}
save(m-1);
flag=0;
printf("该信息已删除\n继续删除请按1,返回主菜单请按2\n");
}
if(flag==1)
printf("无此信息!\n继续删除请按1,返回主菜单请按2");
scanf("%d",&i);
if(i==1)
search();
else
menu();
}
void search(){
char Num[20];
int i,m,flag;
flag=0;
printf("请输入要查询的编号:\n");
scanf("%s",Num);
m=downlod();
for(i=0;i<m;i++)
if(strcmp(Num,shuidian[i].num)==0)
{
flag=1;
printf("信息已找到:\n");
printf("编号:%s\n报修人: %s\n位置:%s\n维修人:%s\n",shuidian[i].num,shuidian[i].baixiuren,shuidian[i].pos,shuidian[i].weixiu);
}
if(flag==0)
printf("无此信息!继续查询请按1,返回主菜单请按2");
scanf("%d",&i);
if(i==1)
search();
else
menu();
}
void menu(){
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\t\t欢迎进入水电维修系统\n\n\n");
printf("\t\t\t1.录入新信息\n");
printf("\t\t\t2.查询信息\n");
printf("\t\t\t3.删除信息\n");
printf("\t\t\t4.浏览全部信息\n");
printf("\t\t\t5.清屏\n");
printf("\t\t\t6.退出系统\n");
printf("\n");
printf("\n");
printf("\n");
printf("please choose one:");
//getchar();
}
void display(){
int m,i;
m=downlod();
for(i=0;i<m;i++)
printf("编号:%s\n报修人: %s\n位置:%s\n维修人:%s\n",shuidian[i].num,shuidian[i].baixiuren,shuidian[i].pos,shuidian[i].weixiu);
printf("\n按任意键回主菜单!");
getch();
menu();
}
void save(int m)
{
int i;
FILE*fp;
if ((fp=fopen("data.txt","wb"))==NULL)
{
printf("文件打开失败!\n");
exit(0);
}
for (i=0;i<m;i++)
{
if (fwrite(&shuidian[i],sizeof(struct nod),1,fp)!=1)
printf("文件录入完毕\n");
}
fclose(fp);
}