/* 实现一个通讯录;
通讯录可以用来存储1000个人的信息,每个人的信息包括:
姓名、性别、年龄、电话、住址
提供方法:
1. 添加联系人信息
2. 删除指定联系人信息
3. 查找指定联系人信息
4. 修改指定联系人信息
5. 显示所有联系人信息
6. 清空所有联系人 */
#include
#include"phone_book.h"
#include
#include
typedef struct phone_book
{
char name[10];
char sex[5];
char addr[20];
int year;
int phone_num;
struct phone_book *pnext;
}book,*pbook;
pbook add_linkman(pbook head)
{
int i = 0;
char name[10];
char sex[5];
char addr[20];
int year;
long phone_num;
pbook pbase = head;
assert(head);
flag:
printf("你要添加多少个联系人:");
scanf("%d",&i);
if (i <= 0)
{
printf("输入数量错误!\n");
goto flag;
}
if (head->pnext == null)
{
while (i--)
{
pbook pnew = (pbook)malloc(sizeof(book));
assert(pnew);
printf("请输入联系人信息:(姓名、性别、地址、年龄、电话号码)\n");
scanf("%s", name);
scanf("%s", sex);
scanf("%s", addr);
strcpy(pnew->name, name);
strcpy(pnew->sex, sex);
strcpy(pnew->addr, addr);
scanf("%d", &pnew->year);
scanf("%d", &pnew->phone_num);
pbase->pnext = pnew;
pnew->pnext = null;
pbase = pnew;
}
}
else
{
while (pbase->pnext != null)
{
pbase = pbase->pnext;
}
while (i--)
{
pbook pnew = (pbook)malloc(sizeof(book));
assert(pnew);
printf("请输入联系人信息:(姓名、性别、地址、年龄、电话号码)\n");
scanf("%s", name);
scanf("%s", sex);
scanf("%s", addr);
strcpy(pnew->name, name);
strcpy(pnew->sex, sex);
strcpy(pnew->addr, addr);
scanf("%d", &pnew->year);
scanf("%d", &pnew->phone_num);
pbase->pnext = pnew;
pnew->pnext = null;
}
}
return head;
}
pbook remove_linkman(pbook head)
{
pbook link_man = head;
char name[10];
if (!head)
{
printf("没有联系人,不能删除!\n");
return null;
}
printf("请问你要删除哪位联系人? ");
scanf("%s",name);
while (link_man->pnext!=null)
{
if (strcmp(link_man->pnext->name, name) == 0)
{
if (link_man->pnext->pnext == null)
{
free(link_man->pnext);
link_man->pnext = null;
printf("删除完成!\n");
}
else
{
pbook ptmp = null;
ptmp = link_man->pnext;
link_man->pnext = link_man->pnext->pnext;
free(ptmp);
printf("删除完成!\n");
}
return head;
}
else
{
link_man = link_man->pnext;
}
}
printf("没有找到该联系人!\n");
return head;
}
void traver_linkman(pbook head)
{
pbook link_man = head;
if (head->pnext == null)
{
printf("电话簿为空!\n");
}
while (link_man->pnext!=null)
{
printf("%s\n", link_man->pnext->name);
printf("%s\n", link_man->pnext->sex);
printf("%s\n", link_man->pnext->addr);
printf("%d\n", link_man->pnext->year);
printf("%ld\n", link_man->pnext->phone_num);
printf("***********************************\n");
link_man = link_man->pnext;
}
}
void empty_linkman(pbook head)
{
pbook ptmp = null;
pbook link_man = head;
if (head->pnext == null)
{
printf("电话簿为空!不用清空哦!(ˇ0ˇ) \n");
}
while (link_man->pnext != null)
{
if (link_man->pnext->pnext == null)
{
free(link_man->pnext);
link_man->pnext = null;
}
else
{
ptmp = link_man->pnext;
link_man->pnext = link_man->pnext->pnext;
free(ptmp);
}
}
printf("清空完成!\n");
}
pbook amend_linkman(pbook head)
{
char name[10];
char sex[5];
char addr[20];
pbook link_man = head;
if (!head)
{
printf("没有联系人,不能修改!\n");
return null;
}
printf("请问你要修改哪位联系人? ");
scanf("%s", name);
while (link_man->pnext != null)
{
if (strcmp(link_man->pnext->name, name) == 0)
{
printf("请输入联系人信息:(姓名、性别、地址、年龄、电话号码)\n");
scanf("%s", name);
scanf("%s", sex);
scanf("%s", addr);
strcpy(link_man->pnext->name, name);
strcpy(link_man->pnext->sex, sex);
strcpy(link_man->pnext->addr, addr);
scanf("%d", &link_man->pnext->year);
scanf("%d", &link_man->pnext->phone_num);
return head;
}
else
link_man = link_man->pnext;
}
return head;
}
void search_linkman(pbook head)
{
char name[10];
pbook link_man = head;
if (!head)
{
printf("没有联系人,查找失败!\n");
return null;
}
printf("请问你要查找哪位联系人? ");
scanf("%s", name);
while (link_man->pnext != null)
{
if (strcmp(link_man->pnext->name, name) == 0)
{
printf("%s\n", link_man->pnext->name);
printf("%s\n", link_man->pnext->sex);
printf("%s\n", link_man->pnext->addr);
printf("%d\n", link_man->pnext->year);
printf("%ld\n", link_man->pnext->phone_num);
printf("***********************************\n");
return 0;
}
else
link_man = link_man->pnext;
}
printf("没有找到!\n");
}
void start(pbook *phead)
{
int i = -1;
assert(phead);
while (1)
{
printf("欢迎使用电话薄系统!选择您的操作:\n\n");
printf("*********************************************\n"
"*1.添加联系人信息 2.删除指定联系人信息 *\n"
"*3.查找指定联系人信息 4.修改指定联系人信息 *\n"
"*5.显示所有联系人信息 6.清空所有联系人 *\n"
"*0.结束系统! ————中情局专用———— *\n"
"*********************************************\n");
scanf("%d",&i);
switch (i)
{
case 0:
printf("*****感谢使用本系统!*****\n");
exit(0);
case 1:
*phead=add_linkman( phead);
break;
case 2:
*phead = remove_linkman(phead);
break;
case 3:
search_linkman(phead);
break;
case 4:
*phead = amend_linkman(phead);
break;
case 5:
traver_linkman(phead);
break;
case 6:
empty_linkman( phead);
break;
default:
printf("选择有误!请重新选择\n");
break;
}
}
}
#include
#include"phone_book.h"
int main()
{
pbook phead = null;
start(&phead);
return 0;
}