(就让我硬水过去了OVO
代码通俗易懂
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct ADRESS
{
char name[15];
char units[20];
char phone[15];
}adress;
adress r[10000];
int InputRecord(adress r[])//用来记录联系人记录
{
int n;
printf("\t\t\t\t 请输入添加的人数:");
scanf("%d",&n);
for(int i=0;i<n;i++)
{
printf("\t\t\t\t 姓名 单位 电话\n");
printf("\t\t\t\t ");
scanf("%s %s %s",r[i].name,r[i].units,r[i].phone);
}
printf("\t\t\t\t 添加成功!!\n\n");
return n;
}
int DeleteRecord(adress r[],int n)// 删除联系人记录
{
int flag=0;
adress comp;
printf("\t\t\t\t 请输入想要删除人的信息:\n");
printf("\t\t\t\t 姓名 单位 电话\n");
printf("\t\t\t\t ");
scanf("%s %s %s",comp.name,comp.units,comp.phone);
for(int i=0;i<n;i++)
{
if(strcmp(r[i].name ,comp.name )==0&&strcmp(r[i].units ,comp.units ) ==0&&strcmp(r[i].phone ,comp.phone )==0)
{
flag=1;
memset(r[i].name , 0, sizeof(r[i].name ));
memset(r[i].phone , 0, sizeof(r[i].phone ));
memset(r[i].units , 0, sizeof(r[i].units ));
}
}
if(flag)printf("\t\t\t\t 已经删除想要删除人的信息。\n\n");
else printf("\t\t\t\t 未找到想要删除人的信息!!\n\n");
return 0;
}
int InsertRecord(adress r[],int n)//插入一个新的联系人
{
int pl;
adress ne;
adress z;
printf("\t\t\t\t 请输入想要插入位置\n:");
printf("\t\t\t\t 若不存在此位置则自动放在最后\n");
printf("\t\t\t\t ");
scanf("%d",&pl);
printf("\t\t\t\t 请输入想要插入人的信息:\n");
printf("\t\t\t\t 姓名 单位 电话\n");
printf("\t\t\t\t ");
scanf("%s %s %s",ne.name,ne.units,ne.phone);
if(pl>n)
{
strncpy(r[n].name ,ne.name ,strlen(ne.name )+1);
strncpy(r[n].units ,ne.units ,strlen(ne.units )+1);
strncpy(r[n].phone ,ne.phone ,strlen(ne.phone )+1);
n++;
}
else
{
for(int i=n;i>=pl;i--)
{
strncpy(r[i].name ,r[i-1].name ,strlen(r[i-1].name )+1);
strncpy(r[i].units ,r[i-1].units ,strlen(r[i-1].units )+1);
strncpy(r[i].phone ,r[i-1].phone ,strlen(r[i-1].phone )+1);
}
strncpy(r[pl-1].name ,ne.name ,strlen(ne.name )+1);
strncpy(r[pl-1].units ,ne.units ,strlen(ne.units )+1);
strncpy(r[pl-1].phone ,ne.phone ,strlen(ne.phone )+1);
n++;
}
printf("\t\t\t\t 插入成功!!\n\n");
return n;
}
void ListRecord(adress t[],int n)//查询联系人记录
{
printf("\t\t\t\t 姓名 单位 电话\n");
int j=1;
int flag=0;
for(int i=0;i<=n;i++)
{
if(strcmp(t[i].name,"\0" )==0)continue;
else flag=1;
printf("\t\t\t\t %d %s %s %s\n",j++,t[i].name,t[i].units ,t[i].phone );
}
if(flag)printf("\t\t\t\t 已经显示全部信息!!\n\n");
else printf("\t\t\t\t 未有联系人记录!!\n\n");
}
void SaveRecord(adress r[],int n)//保存联系人记录
{
FILE*fp;
fp=fopen("I:\\adress.txt","w+");
fprintf(fp,"\t\t\t\t 姓名 单位 电话\n");
for(int i=0;i<n;i++)
{
fprintf(fp,"\t\t\t\t %s %s %s\n",r[i].name,r[i].units ,r[i].phone );
}
fclose(fp);
printf("\t\t\t\t 保存成功!!\n\n");
}
void Menu()
{
printf("\n\n\n");
printf("\t\t\t\t****************************************\n");
printf("\t\t\t\t*************通讯录管理系统*************\n");
printf("\t\t\t\t========================================\n");
printf("\t\t\t\t* 1.添加联系人信息 *\n");
printf("\t\t\t\t* 2.删除联系人信息 *\n");
printf("\t\t\t\t* 3.查询联系人信息 *\n");
printf("\t\t\t\t* 4.插入联系人信息 *\n");
printf("\t\t\t\t* 5.保存联系人信息 *\n");
printf("\t\t\t\t* 0.退出系统 *\n");
printf("\t\t\t\t========================================\n");
printf("\t\t\t\t****************************************\n");
printf("\t\t\t\t 请选择(0-5):");
}
int main()
{
Menu();
int pp;
int ti=0;
while(scanf("%d",&pp)!=EOF)
{
if(pp<0||pp>5)
{
printf("\t\t\t\t 请选择(0-5)以内的数:");
continue;
}
if(pp==0)
{
printf("\t\t\t\t 期待你的下次使用拜拜!!");
break;
}
switch(pp)
{
case 1:ti=InputRecord(r);break;
case 2:DeleteRecord(r,ti);break;
case 3:ListRecord(r,ti);break;
case 4:ti=InsertRecord(r,ti);break;
case 5:SaveRecord(r,ti); break;
}
printf("\t\t\t\t 请选择(0-5)以内的数:");
}
return 0;
}