#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void add_person(); //添加联系人
void del_person(); //删除联系人
void research_person(); //查找联系人
void show_all(); //显示所有联系人
void repair_person(); //修改联系人信息
void inter_face(); //显示主菜单
void write_file(); //写入文本
void read_file(); //读取文本
int N=0; //表示所有联系人的个数
FILE *fp;
struct Person
{
char name[20]; //姓名
char home_phonenumber[30]; //家庭联系方式
char move_phonenumber[30]; //手机联系方式
char beizhu[50]; //备注
char address[100]; //家庭地址
}person[1000],datachance;
void main()
{
read_file();
while(1);
{
inter_face();
}
}
void read_file()
{
char ch;
if((fp=fopen("system.txt","r"))==NULL)
{
printf("\n\t\t 通讯录不存在!\n");
if((fp=fopen("system.txt","w"))==NULL)
{
printf("\n\t\t 建立失败!\n");
exit(0);
}
else
{
printf("\t\t*****************欢迎使用通讯录管理系统*******************\n");
printf("\t\t 通讯录文件已建立 \n");
printf("\t\t 按任意键进入主菜单 \n");
printf("\t\t**********************************************************\n");
getchar();
inter_face();
}
exit(0);
}
fseek(fp,0,SEEK_SET);
if(ch=fgetc(fp)!=EOF)
{
rewind(fp);
for(N=0;!feof(fp)&&fread(&person[N],sizeof(struct Person),1,fp);N++);
printf("\n\t***************欢迎使用通讯录管理系统*******************\n");
printf("\n\t 文件导入成功 \n");
printf("\n\t 按任意键返回主菜单 \n");
printf("\n\t********************************************************\n");
getchar();
inter_face();
}
else
{
printf("\n\t********************欢迎使用通讯录管理系统******************\n");
printf("\n\t 文件导入成功 \n");
printf("\n\t 通讯录文件中无任何记录 \n");
printf("\n\t 按任意键返回主菜单 \n");
printf("\n\t************************************************************\n");
getchar();
inter_face();
}
}
void write_file()
{
int i;
if((fp=fopen("system.txt","w"))==NULL)
{
printf("\n\t\t文件打开失败!\n");
}
for(i=0;i<N;i++)
{
if(fwrite(&person[i],sizeof(struct Person),1,fp)!=1)
{
printf("\n\t\t写入文件错误!\n");
}
}
fclose(fp);
printf("\n\t*****************************************\n");
printf("\n\t\t通讯录文件已保存\n");
printf("\n\t\t谢谢使用\n");
printf("\n\t\t欢迎再次使用\n");
exit(0);
printf("\n\t******************************************\n");
}
void inter_face()
{
int choose;
printf("\t\t****************************************\n");
printf("\t\t 通讯录管理系统 \n");
printf("\t\t \n");
printf("\t\t 1.添加联系人 4.修改联系人信息 \n");
printf("\t\t 2.删除联系人 5.查询联系人 \n");
printf("\t\t 3.显示所有联系人 6.关闭通讯录 \n");
printf(" \n");
printf("\t\t****************************************\n");
printf("\t\t请输入:");
scanf("%d",&choose);
switch(choose)
{
case 1:
add_person();
break;
case 2:
deleteall();
break;
case 3:
show_all();
break;
case 4:
repair_person();
break;
case 5:
research_person();
break;
case 6:
write_file();
break;
default:
printf("请重新输入!\n");
system("cls");
inter_face();
}
}
void add_person()
{
char n;
printf("\t\t***********您已经进入了增加联系人系统***********\n");
one:printf("请输入联系人的姓名\n\n");
scanf("%s",person[N].name);
printf("\n");
printf("请对联系人进行备注\n\n");
scanf("%s",person[N].beizhu);
printf("\n");
printf("您输入的联系人已经保存!\n\n\n");
N++;
printf("您是否继续添加联系人:Y.是 N.否\n");
two:scanf("%c",&n);
if(n=='Y'||n=='N')
{
if(n=='Y')
{
goto one;
}
else
{
inter_face();
}
}
else
{
goto two;
printf("您是否继续添加联系人:Y.是 N.否\n");
}
}
void del_person()
{
int i,m,z=1;
int deletemark=0;
char q;
printf("\t\t************您已经进入删除联系人的系统**************\n\n");
printf("请根据显示的联系人的序号,选择要删除的联系人\n\n");
for(i=0;i<N;i++)
{
printf("%d\t",i);
printf("%s\n",person[i].name);
}
three:scanf("%d",&m);
printf("确定是否要删除联系人:%s",person[m].name);
printf("\tY.确定\tN.否 \n\n");
scanf("%s",&q);
if(q=='Y'||q=='N')
{
if(q=='Y')
{
for(m=i;m<N-1;m++)
{
person[m]=person[m+1];
N--;
}
deletemark++;
printf("该联系人已经删除\n\n");
}
}
else
{
goto three;
printf("输入有误,请重新输入\n");
}
inter_face();
}
void show_all()
{
int i;
for(i=0;i<N;i++)
{
printf("\t姓名:%s",person[i].name);
printf("\t家庭电话号码:%s",person[i].home_phonenumber);
printf("\t 手机号码:%s",person[i].move_phonenumber);
printf("\t 家庭地址:%s",person[i].address);
printf("\t 备注:%s",person[i].beizhu);
}
printf("\n");
inter_face();
}
void repair_person()
{
int i,a,b;
if(N>0)
{
four:printf("请输入您修改的联系人的序号\n");
for(i=0;i<N;i++)
{
printf("%d\t",i);
printf("姓名:%s\n",person[i].name);
}
printf("\n");
scanf("%d",&a);
printf("\n");
printf("请输入要修改的对象: ");
printf("0.姓名 1.家庭电话号码 2.本人手机号码 3.家庭地址 4.备注\n");
scanf("%d",&b);
if(a>=0&&a<N)
{
switch(b)
{
case 0:
{
scanf("%s",datachance.name);
strcpy(person[i].name,datachance.name);
}break;
case 1:
{
scanf("%s",datachance.home_phonenumber);
strcpy(person[a].home_phonenumber,datachance.home_phonenumber);
}break;
case 2:
{
scanf("%s",datachance.move_phonenumber);
strcpy(person[a].move_phonenumber,datachance.move_phonenumber);
}break;
case 3:
{
scanf("%s",datachance.address);
strcpy(person[a].address,datachance.address);
}
break;
case 4:
{
scanf("%s",datachance.address);
strcpy(person[a].beizhu,datachance.beizhu);
}break;
default:
{
goto four;
}
break;
}
printf("%s被修改后的信息\n",person[a].name);
printf("姓名: %s",person[a].name);
printf("\t家庭电话号码:%s",person[a].home_phonenumber);
printf("\t本人手机号码:%s",person[a].move_phonenumber);
printf("\t家庭地址:%s",person[a].address);
printf("\t备注:%s\n",person[a].beizhu);
}
else
{
printf("输入有错,请重新输入");
goto four;
}
}
inter_face();
}
void research_person()
{
int i,a;
printf("请输入您要查找的联系人的序号\n");
for(i=0;i<N;i++)
{
printf("%d\t",i);
printf("姓名:%s\n",person[i].name);
}
printf("\n");
scanf("%d",&a);
printf(" 姓名:%s\n",person[a].name);
printf("\t家庭电话号码:%s\n",person[a].home_phonenumber);
printf("\t本人手机号码:%s\n",person[a].move_phonenumber);
printf("\t家庭地址:%s\n",person[a].address);
printf("\t备注:%s\n\n\n",person[a].beizhu);
inter_face();
}