结构体数组(C)

编写通讯录管理程序。每个人有姓名、电话、移动电话、邮编和通讯地址信息可以, 要求:
(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;
}

猜你喜欢

转载自blog.csdn.net/ukco_well/article/details/82193768