#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void add();
void name();
void address();
void index();
void del();
int i,j,l,n;
struct tels
{
char name[20];
int numbers;
char address[50];
};
void main()
{
printf("/*****************************电话号码存储系统*******************************/\n");
while(n!=6)
{
printf("1.增加电话\n2.按姓名修改纪录\n3.按地址查询\n4.按姓名查询\n5.删除\n6.退出\n请选择:");
scanf("%d",&n);
if(n==1)
add();//增加电话
else if(n==2)
name();//按姓名修改
else if(n==3)
address();//按地址查询
else if(n==4)
index();//按姓名查询
else if(n==5)
del();
}
}
/******************** 增加电话记录 ********************/
void add()
{
char flag='y';
struct tels tel;
FILE *fp;
if((fp=fopen("d:/c.txt","ab+"))==NULL)
{
exit(0);
}
while(flag=='y')
{
printf("请输入姓名:");
scanf("%s",tel.name);
printf("请输入电话:");
scanf("%d",&tel.numbers);
printf("请输入地址:");
scanf("%s",tel.address);
fwrite(&tel,sizeof(struct tels),1,fp);
printf("是否继续y/n:\n");
scanf(" %c",&flag);
}
fclose(fp);
}
/******************** 按姓名修改纪录 ********************/
void name()
{
FILE *fp;
struct tels tel;
char flag='y',find;
char name[20];
if((fp=fopen("d:/c.txt","a+"))==NULL)
printf("\n\tThe system can't open the file!!");
while(flag=='y')
{
printf("请输入您要修改的用户名");
scanf("%s",name);
find='n';
rewind(fp);
while((fread(&tel,sizeof(tel),1,fp))==1&&find=='n')
{
if(strcmp(tel.name,name)==0)
{
find='y';
break;
}
}
if(find=='y')
{
printf("姓名%s\n",tel.name);
printf("地址%s\n",tel.address);
printf("电话:%d\n",tel.numbers);
printf("请输入姓名");
scanf("%s",tel.name);
printf("请输入地址");
scanf("%s",tel.address);
printf("请输入电话:");
scanf("%d",&tel.numbers);
fseek(fp,-(long)(sizeof(struct tels)),1);/*文件标记向下*/
fwrite(&tel,sizeof(tel),1,fp);
}
printf("是否继续:");/*提示是否继续修改另一已存用户信息*/
scanf(" %c",&flag);
}
fclose(fp); /*关闭文件*/
}
/******************** 按地址查询 ********************/
void address()
{
char flay='y';
char find='n';
char address[50];
FILE *fp;
struct tels tel;
if((fp=fopen("d:/c.txt","r+"))==NULL)
printf("\n\tThe system can't open the file!!");
while(flay=='y')
{
printf("请输入您要查的地址:");
scanf("%s",address);
rewind(fp);
while((fread(&tel,sizeof(tel),1,fp))==1&&find=='n')
{
if(strcmp(address,tel.address)==0)
{
find='y';
break;
}
}
if(find=='y')
{
printf("姓名%s\n",tel.name);
printf("地址%s\n",tel.address);
printf("电话:%d\n",tel.numbers);
}
printf("是否继续y/n\n");
scanf(" %c",&flay);
}
fclose(fp);
}
/******************** 按姓名查询 ********************/
void index()
{
char flay='y';
char find='n';
char index[20];
FILE *fp;
struct tels tel;
if((fp=fopen("d:/c.txt","r+"))==NULL)
printf("\n\tThe system can't open the file!!");
while(flay=='y')
{
printf("请输入您要查的姓名:");
scanf("%s",index);
rewind(fp);
while((fread(&tel,sizeof(tel),1,fp))==1&&find=='n')
{
if(strcmp(index,tel.name)==0)
{
find='y';
break;
}
}
if(find=='y')
{
printf("姓名%s\n",tel.name);
printf("地址%s\n",tel.address);
printf("电话:%d\n",tel.numbers);
}
printf("是否继续y/n\n");
scanf(" %c",&flay);
}
fclose(fp);
}
/******************** 删除一条记录 ********************/
void del()
{
struct tels tel;
FILE *fp;
char flag='y';
char find='n';
char index[20];
char n;
if((fp=fopen("d:/c.txt","a+"))==NULL)
printf("打开文件出错");
while(flag=='y')
{
printf("请输入姓名:");
scanf("%s",index);
rewind(fp);
while((fread(&tel,sizeof(tel),1,fp))==1&&find=='n')
{
if(strcmp(index,tel.name)==0)
{
find='y';
break;
}
}
if(find=='y')
{
printf("姓名%s\n",tel.name);
printf("地址%s\n",tel.address);
printf("电话:%d\n",tel.numbers);
printf("是否确定删除y/n:");
scanf(" %c",&n);
if(n=='y')
strcpy(tel.name,"");
strcpy(tel.address,"");
tel.numbers=0;
fseek(fp,-(long)(sizeof(struct tels)),1);
fwrite(&tel,sizeof(tel),1,fp);
printf("删除成功\n");
}
printf("是否继续删除y/n:\n");
scanf(" %c",&flag);
}
fclose(fp);
}