通讯录系统(无文件输入输出)
源程序:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct node //定义一个通讯录的结构
{
char name[20];
char phonenumber[11];
char address[20];
struct node *next;
}Hnode, *Hlink;
void create_node(Hlink *new_node)
{
*new_node = (Hlink)malloc(sizeof(Hnode));
}
void create_list(Hlink *head)
{
create_node(head);
(*head)->next = NULL;
}
void insert_node_tail(Hlink head,Hlink new_node) //尾端插入节点
{
Hlink p;
p = head;
while(p->next != NULL)
{
p = p->next;
}
p->next = new_node;
new_node->next = NULL;
}
void mean()
{
printf("---------------------\n");
printf("--按1输入联系人的信息--\n");
printf("--按2查找联系人的信息--\n");
printf("--按3修改联系人的信息--\n");
printf("--按4删除联系人的信息--\n");
printf("--按5显示联系人的信息--\n");
printf("------按0退出系统------\n");
printf("---------------------\n");
}
void add(Hlink head) //插入联系人
{
system("CLS");
Hlink new_node;
create_node(&new_node);
printf("请输入联系人的姓名:\n");
scanf("%s", &new_node->name);
printf("请输入联系人的电话:\n");
scanf("%s", &new_node->phonenumber);
printf("请输入联系人的地址:\n");
scanf("%s", &new_node->address);
insert_node_tail(head, new_node);
printf("输入完成!\n");
}
void find(Hlink head) //查找联系人
{
system("CLS");
Hlink p;
p = head;
int mark = 0;
char name[20];
printf("请输入被查找人的姓名:\n");
scanf("%s", name);
while (p != NULL)
{
if (strcmp(name, p->name) == 0)
{
printf("联系人已找到,具体信息如下:\n");
printf("姓名:%s\n", p->name);
printf("电话:%s\n", p->phonenumber);
printf("地址:%s\n", p->address);
mark = 1;
}
p = p->next;
}
if (mark == 0)
{
printf("查无此人!\n");
}
}
void change(Hlink head) //改变联系人信息
{
system("CLS");
Hlink p, q;
p = q = head;
int mark = 0;
char name[20];
printf("请输入被修改信息的人的姓名:\n");
scanf("%s", name);
while (p != NULL)
{
if (strcmp(name, p->name) == 0)
{
printf("联系人已找到,具体信息如下:\n");
printf("姓名:%s\n", p->name);
printf("电话:%s\n", p->phonenumber);
printf("地址:%s\n", p->address);
mark = 1;
q = p;
}
p = p->next;
}
if (mark == 0)
{
printf("查无此人!请返回主菜单重新选择!\n");
}
else if (mark == 1)
{
printf("请输入联系人的新电话:\n");
scanf("%s", &q->phonenumber);
printf("请输入联系人的新地址:\n");
scanf("%s", &q->address);
}
}
void del(Hlink head) //删除联系人的信息
{
system("CLS");
Hlink p, q;
p = head;
q = head->next;
char name[20];
printf("请输入需要被删除的人的姓名:\n");
scanf("%s", name);
while (strcmp(q->name, name) != 0)
{
p = q;
q = q->next;
}
p->next = q->next;
printf("删除联系人成功!\n");
}
void show(Hlink head) //查看通讯录
{
system("CLS");
int num= 0;
Hlink p = head->next;
if (p == NULL)
{
printf("您的通讯录为空!\n");
}
else
{
printf("您的通讯录如下所示:\n");
while (p != NULL)
{
num++;
printf("联系人%d:\n", num);
printf("姓名:%s\n", p->name);
printf("电话:%s\n", p->phonenumber);
printf("地址:%s\n", p->address);
printf("__________________________\n");
p = p->next;
}
}
}
int main()
{
Hlink head;
create_list(&head);
int choose;
printf("欢迎使用BK通讯录系统!\n");
mean:
mean();
printf("请按数字键选择相应的功能!\n");
scanf("%d", &choose);
switch(choose)
{
case 1:add(head);
goto mean;
case 2:find(head);
goto mean;
case 3:change(head);
goto mean;
case 4:del(head);
goto mean;
case 5:show(head);
goto mean;
case 0:
printf("期待您的下次使用!\n");
break;
}
return 0;
}