|
发表于 2014-6-22 22:11:44
|
显示全部楼层
#include<stdio.h>
#include<windows.h>
#include<conio.h>
#define data "d:\\contact.txt"
#define amount 100
struct person
{
char name[20];
char address[60];
char phone[20];
}p[amount];
void add()
{
FILE *fp;
if((fp=fopen(data,"a+"))==NULL)
{
printf("文件打开错误\n");
exit(1);
}
int m=0;
while(!feof(fp))
{
if(fread(&p[m],sizeof(struct person),1,fp))
m++;
}
printf("输入联系人姓名\n");
scanf("%20s",&p[m].name);
printf("输入联系人家庭住址\n");
scanf("%60s",&p[m].address);
printf("输入联系人电话号码\n");
scanf("%s",&p[m].phone);
int i;
for(i=0;i<=m;i++)
{
if(fwrite(&p[i],sizeof(struct person),1,fp)!=1)
{
printf("文件写入错误,联系人保存失败\n");
exit(1);
}
}
printf("%s已被成功保存\n",p[m].name);
fclose(fp);
return ;
}
void del()
{
FILE *fp;
if((fp=fopen(data,"r+"))==NULL)
{
printf("文件打开错误\n");
exit(0);
}
int m=0;
while(!feof(fp))
{
if(fread(&p[m],sizeof(struct person),1,fp))
m++;
}
printf("输入要删除的联系人的名字\n");
char temp[20];
scanf("%s",temp);
int i,j;
for(i=0;i<m;i++)
{
if(!strcmp(temp,p[i].name))
{
break;
}
}
for(i=0;i<m-1;i++)
{
p[i]=p[i+1];
}
fclose(fp);
}
void search()
{
FILE *fp;
if((fp=fopen(data,"r"))==NULL)
{
printf("文件打开错误\n");
exit(1);
}
int m=0;
while(!feof(fp))
{
if(fread(&p[m],sizeof(struct person),1,fp))
m++;
}
char temp[20];
loop3:printf("输入要查询的联系人姓名\n");
scanf("%s",temp);
int i;
for(i=0;i<m;i++)
{
if(!strcmp(temp,p[i].name))
{
printf("%s已被成功定位\n",temp);
printf("%s的家庭住址是%s 电话号码是 :%s\n",temp,p[i].address,p[i].phone);
break;
}
}
if(i==m)
{
printf("未在通讯录中找到%s\n",temp);
goto loop3;
}
fclose(fp);
}
void menu()
{
printf("\n\n\n");
printf("*****************************通讯录系统****************************************\n\n");
printf(" 1:添加新联系人\n");
printf(" 2:查询联系人信息\n");
printf(" 3:删除联系人\n");
printf(" 4:退出系统\n");
printf("\n\n*****************************通讯录系统****************************************\n");
}
void cho(char c)
{
switch(c)
{
case '1':add();
break;
case '2':search();
break;
case '3':del();
break;
case '4':exit(1);
break;
}
}
int main()
{
system("color 5A");
while(1)
{
menu();
char ch=getch();
cho(ch);
}
}
|
|