#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include <stdarg.h>
#define N 100
struct record//静态数组
{
char name[20];
char email[30];
char homeaddr[60];
char telephone[13];
} records[N];
int i=0;
void Data_Up()
{
FILE*fp;
fp=fopen("d:\record.text","r");//at+读写打开一个文本文件,允许读,或在文件末追加数据
for(i=0;i<10000;i++)
{
fscanf(fp,"%s\n%s\n%s\n%s\n",&records[i].name,&records[i].email,&records[i].homeaddr,&records[i].telephone);
if(strcmp(records[i].name,"stop")==0)
break;
}
}
void Add_People(char name[20])
{
for(int j=0;j<=i;j++)
if(strcmp(records[j].name,name)>0)
break;
for(int n=i;n>=j;n--)
{
strcpy(records[n+1].name,records[n].name);
strcpy(records[n+1].email,records[n].email);
strcpy(records[n+1].homeaddr,records[n].homeaddr);
strcpy(records[n+1].telephone,records[n].telephone);
}
i++;
strcpy(records[j].name,name);
printf("\n请输入联系人的电子邮件:");
scanf("%s",records[j].email);
printf("\n请输入联系人的家庭地址:");
scanf("%s",records[j].homeaddr);
printf("\n请输入联系人的电话:");
scanf("%s",records[j].telephone);
printf("添加成功!\n");
}
void Data_Save()
{
int m;
FILE*fp;
fp=fopen("record.txt","w");
for(m=0;m<i;m++)
{
fprintf(fp,"%s\n%s\n%s\n%s\n",records[m].name,records[m].email,records[m].homeaddr,records[m].telephone);
}fclose(fp);
}
int Search_Name(char namestr[20])
{
int j;
for(j=0;j<=i;j++)
{
if(strcmp(namestr,records[j].name)==0)
break;
}
return j;
}
void DeletePeo()
{
char nametemp[20];
int tp,n;
if(i<1)
{
printf("\n没有删除的记录\n");
return;
}
printf("请输入您要查找的联系人的姓名:");
scanf("%s",nametemp);
n=Search_Name(nametemp);
if(n==-1)
{
printf("查找失败!\n");
return;
}
printf("确认要删除吗?确认按1,否则按任意键返回上一级菜单!\n");
scanf("%d",&tp);
if(tp==1)
{
int j;
for(j=n+1;j<=i;j++)
{
strcpy(records[j-1].name,records[j].name);
strcpy(records[j-1].email,records[j].email);
strcpy(records[j-1].homeaddr,records[j].homeaddr);
strcpy(records[j-1].telephone,records[j].telephone);
}
i--;//人数减少
}
else return;
}
void Data_Show(int j)//浏览
{
printf("联系人的基本信息如下:\n");
printf("姓名:%s",records[j].name);
printf("电子邮箱:%s",records[j].email);
printf("通信地址:%s",records[j].homeaddr);
printf("电话号码:%s",records[j].telephone);
printf("\n");
}
void Change(char name[20])
{
int n,m;
char string[60];
n=Search_Name(name);
if(n>i)
{
printf("您查找的联系人不存在!\n");
return;
}
Data_Show(n);
printf("请选择您要修改的资料:\n1->修改联系人姓名;\n2->修改联系人电子邮件;\n3->修改联系人地址;\n4->修改联系人电话;5->退出!\n\n");
scanf("%d",&m);
while(m!=5)
{
switch(m)
{
case 1:
printf("%s",string);scanf("%s",string);
strcpy(records[n].name,string);
break;
case 2:
printf("请输入新的电子邮件:");
scanf("%s",string);
strcpy(records[n].email,string);
case 3:
printf("请输入新的地址:");
scanf("%s",string);
strcpy(records[n].homeaddr,string);
case 4:
printf("请输入新的电话:");
scanf("%s",string);
strcpy(records[n].telephone,string);
case 5:
return;
}
printf("请继续选择您要修改的资料:\n1->修改联系人姓名;\n2->修改联系人电子邮件;\n3->修改联系人地址;\n4->修改联系人电话;\n5->退出!");
scanf("%d",&m);
}
}
void main()
{
int ch,m,n;//j;
char tp,nametemp[20];
Data_Up();//读取
i--;
printf("电子通讯录:\n");
printf("请选择您需要的操作:\n");
printf("1->修改;\n2->查看所有的联系人;\n3->删除联系人;\n4->查询联系人;\n5->添加联系人;\n6->保存;\n7->退出\n\n");
scanf("%d",&ch);
while(ch!=7)
{
switch(ch)
{
case 1:
printf("要修改的%s的姓名");
scanf("%s",nametemp);
Change(nametemp);//修改
break;
case 2:
for(m=0;m<=i;m++)
Data_Show(m);//浏览
break;
case 3:
DeletePeo();//删除
break;
case 4:
printf("请输入你要查询的人的姓名:");
scanf("%s",nametemp);
n=Search_Name(nametemp);//查找
if(n>i)
printf("没有您要找的联系人!\n");
else Data_Show(n);
break;
case 5:
printf("请输入待添加的联系人的姓名:");
scanf("%s",nametemp);
Add_People(nametemp);//添加
break;
case 6:
printf("保存数据吗?确定按8键,否则按任意键选择其它操作!\n");
scanf("%d",&tp);
if(tp==8)
Data_Save();
case 7:return;//退出
}
system("pause");
system("c|s");
printf("1->修改;n2->查看所有的联系人;\n3->删除联系人;\n4->查询联系人;\n5->添加联系人;\n6->保存;\n7->退出\n");
printf("请输入您的选择:");
scanf("%d",&ch);
}
}