编写通讯录管理程序。每个人有姓名、电话、移动电话、邮编和通讯地址信息可以, 要求:
(1)至多存储 50 个人的信息;
(2)提供录入、删除、修改和查询的功能;
(3)删除、修改和查询的时提示用户输入姓名,找到对应位置后进行相关操作
/*===================================================================================
*学号:1527403059
*作业:E74
*功能:编写通讯录管理程序。每个人有姓名、电话、移动电话、邮编和通讯地址信息可以, 要求:
(1)至多存储 50 个人的信息;
(2)提供录入、删除、修改和查询的功能;
(3)删除、修改和查询的时提示用户输入姓名,找到对应位置后进行相关操作
*作者:陆胤任
*日期:2016.1.1
*====================================================================================*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct PersonNode //定义结构体
{
char name[10];
int tel;
int mobile;
int zip;
char add[20];
}TagNode;
/*function define
*@brief:录入功能
*@param:TagNode *p结构体数组首元素的地址
*@reval:count:录入联系人的个数
*/
int input_Node(TagNode *p)
{
int count=0,flag=1;
while(flag)
{
printf("请输入联系人姓名:\n");
scanf("%s",p[count].name);
printf("请输入联系人电话:\n");
scanf("%d",&p[count].tel);
printf("请输入联系人移动电话:\n");
scanf("%d",&p[count].mobile);
printf("请输入联系人邮编:\n");
scanf("%d",&p[count].zip);
printf("请输入联系人地址:\n");
scanf("%d",p[count].add);
printf("如果继续录入请按1,终止录入请按0:\n");
scanf("%d",&flag);
if(flag==1)
{
count++;
}
}
return count;
}
/*function define
*@brief:删除功能
*@param:TagNode *p:结构体数组首元素的地址
count:联系人个数
*@reval:count:删除后联系人的个数
*/
int dele_Node(TagNode *p,int count)
{
char name[10];
int i,j,flag=1;
while(flag)
{
printf("请输入要删除联系人的名字:\n");
scanf("%s",name);
for(i=0;i<count;i++)
{
if(strcmp(p[i].name,name)==0)
{
for(j=i+1;j<count;j++)
{
p[j-1]=p[j];
}
i--;
count--;
break;
}
}
if(i>=count)
{
printf("\n联系人中并没有所要查询的人。\n");
}
printf("继续删除请按1,终止删除请按0:\n");
scanf("%d",&flag);
}
return count;
}
/*function define
*@brief:修改功能
*@param:TagNode *p:结构体数组首元素的地址
count:联系人个数
*@reval:void
*/
void chang_Node(TagNode *p,int count)
{
char name[10];
int i,flag=1;
while(flag)
{
printf("请输入想要修改的联系人的姓名:\n");
scanf("%s",name);
for(i=0;i<count;i++)
{
if(strcmp(p[i].name,name)==0)
{
printf("请输入新姓名:\n");
scanf("%s",p[i].name);
printf("请输入该联系人新电话:\n");
scanf("%d",&p[i].tel);
printf("请输入该联系人新移动电话:\n");
scanf("%d",&p[i].mobile);
printf("请输入该联系人新邮编:\n");
scanf("%d",&p[i].zip);
printf("请输入该联系人新地址:\n");
scanf("%d",p[i].add);
break;
}
}
if(i>=count)
{
printf("\n联系人中没有所要查找的联系人。\n");
}
printf("继续修请按1,终止修改请按0:\n");
scanf("%d",&flag);
}
}
/*function define
*@brief:查询功能
*@param:TagNode *p:结构体数组首元素的地址
count:联系人个数
*@reval:void
*/
void find_Node(TagNode *p,int count)
{
char name[10];
int i,flag=1;
while(flag)
{
printf("请输入想要修改的联系人的名字:\n");
scanf("%s",name);
for(i=0;i<count;i++)
{
if(strcmp(p[i].name,name)==0)
{
printf("姓名:\n");
printf("%s",p[i],name);
printf("电话:\n");
printf("%d",p[i].tel);
printf("移动电话:\n");
printf("%d",p[i].mobile);
printf("邮编:\n");
printf("%d",p[i].zip);
printf("地址:\n");
printf("%s",p[i].add);
break;
}
}
if(i>=count)
{
printf("联系人中没有所要查找的人。\n");
}
printf("继续查找请按1,终止查找请按0:\n");
scanf("%d",&flag);
}
}
int main()
{
TagNode inform[50]; //定义结构体数组
int flag=1,count=0;
while(flag)
{
printf("请选择通讯管理程序的功能:录入功能请按1,删除功能请按2,修改功能请按3,查询功能亲按4,退出请按5:\n");
scanf("%d",&flag);
switch(flag)
{
case 1:count=input_Node(inform);break;
case 2:count=dele_Node(inform,count);break;
case 3:chang_Node(inform,count);break;
case 4:find_Node(inform,count);break;
case 5:flag=0;break;
}
}
return 0;
}