当前位置:网站首页>通讯录(链表实现)

通讯录(链表实现)

2022-07-05 13:27:00 拉的很多

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
const int max = 100;
//姓名、性别、电话、手机、传真、邮箱、地址
typedef struct phone
{
	char name[20]; //姓名
	char sex[20];  // 性别 
    int tel; //电话
	int  fax;       // 传真
	char qq[100];   // 邮箱 
	char addre[20]; //地址 
}Ipa;//给存放通讯录属性的结构体取个别名

typedef struct List
{
	Ipa data;
	struct List *next;

}list;
list *head ;

// 初始化
void inint()
{
	head = (list*)malloc(sizeof(list));
	head->next = NULL;
	printf("初始化成功");
} 
// 添加用户

void great()
{
	list *p , *t;
	int n;
	printf("请输入用户人数:\n");
	scanf("%d",&n);
	printf("请依次输入:姓名、性别、电话、传真、邮箱、地址\n");
	for(int i = 0 ; i < n ; i++)
	{
		p  = (list*)malloc(sizeof(list));
		scanf("%s %s %d %d %s %s",p->data.name,p->data.sex,&p->data.tel,&p->data.fax,p->data.qq,p->data.addre);
		//printf("%s",p->data.name);
		t = head->next;
		head->next = p;
		p->next = t;
	} 
}

//显示 
int display()
{
	list*p;
	p = head->next;
	if(!p)
	{
		printf("通讯录为空\n");
		return 0;
	}
	else
	{
		printf("元素如下:\n");
		while(p)
		{
			printf("%s %s %d %d %s %s\n",p->data.name,p->data.sex,p->data.tel,p->data.fax,p->data.qq,p->data.addre);
			p = p->next;
		}
	}
	return 0;
}

//查找 
void seek()
{
	char name_tmpt[100];
	printf("请输入你要查询的姓名:\n");
	scanf("%s",name_tmpt);
	list *p;
	p = head->next;
	int flage = 0;// 1表示已经找到元素
	while(p)
	{
		if(strcmp(name_tmpt,p->data.name) == 0)
		{
			printf("%s %s %d %d %s %s\n",p->data.name,p->data.sex,p->data.tel,p->data.fax,p->data.qq,p->data.addre);
			flage = 1;
			break;
		}
		p = p->next;
	} 
	if(!flage)
	printf("没有该联系人的信息!\n");
} 

// 删除
void dele()
{
	char name_tmpt[100];
	printf("请输入你要删除的姓名:\n");
	scanf("%s",name_tmpt);
	list *p , *par;
	p = head->next;
	par = head;
	int flage = 0;// 1表示已经找到元素
	while(p)
	{
		if(strcmp(name_tmpt,p->data.name) == 0)
		{
			par->next = p->next;
			free(p);
			//printf("%s %s %d %d %s %s\n",p->data.name,p->data.sex,p->data.tel,p->data.fax,p->data.qq,p->data.addre);
			flage = 1;
			printf("操作成功!\n");
			break;
		}
		else
		{
			par = p;//存储p的前一个节点 
			p = p->next; 
		}
	}
	if(!flage)
	printf("没有该联系人的信息!\n");
}

// 更新
void newdata()
{
	char name_tmpt[100];
	printf("请输入你要更新的姓名:\n");
	scanf("%s",name_tmpt);
	list *p;
	p = head->next;
	int flage = 0;// 1表示已经找到元素
	while(p)
	{
		if(strcmp(name_tmpt,p->data.name) == 0)
		{
			//printf("%s %s %d %d %s %s\n",p->data.name,p->data.sex,p->data.tel,p->data.fax,p->data.qq,p->data.addre);
			printf("请输入新的信息:\n");
			scanf("%s %s %d %d %s %s",p->data.name,p->data.sex,&p->data.tel,&p->data.fax,p->data.qq,p->data.addre);
			printf("操作成功!\n"); 
			flage = 1;
			break;
		}
		p = p->next;
	} 
	if(!flage)
	printf("没有该联系人的信息!\n");
}

// 菜单 
void menu()
{
	printf("\t\t\t****************************************************\n");
	printf("\t\t\t1.初始化通讯录                          2.建立通讯录\n");
	printf("\t\t\t3.删除联系人                            4.修改联系人\n");
	printf("\t\t\t5.查找联系人                            6.显示通讯录  \n");
	printf("\t\t\t7 退出系统                                     \n");
	printf("\t\t\t****************************************************\n");
}
int main()
{
	menu(); 
	int op = 10;
	while(op!= 8)
	{
		printf("请选择你的操作:\n");
		scanf("%d",&op);
		switch(op)
		{
			case 1 : inint();break;
			case 2 : great();break;
			case 3 : dele();break;
			case 4 : newdata();break;
			case 5 : seek();break;
			case 6 : display();break;
			case 7 : op = 8;break;
		}
	}
	return 0;
} 

原网站

版权声明
本文为[拉的很多]所创,转载请带上原文链接,感谢
https://blog.csdn.net/ajl2003/article/details/125591708