#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;
}
通讯录(链表实现)
最新推荐文章于 2023-01-03 11:57:58 发布