电子通讯录(1)_电话本通讯录联系人

电子通讯录(1)_电话本通讯录联系人这是一个基于链表的项目,由于之前学习了怎样来创建一个单链表,在一个基础上就想来做一个电子通讯录玩玩

电子通讯录(1)_电话本通讯录联系人"

这是一个基于链表的项目,由于之前学习了怎样来创建一个单链表,在一个基础上就想来做一个电子通讯录玩玩。

项目需求: 制作一个电子通讯录,通过该通讯录能存入好友 ID 号、姓名(英文) 、手机号码、家庭住址、公司电话。

模块包括  :

  主界面:主要显示软件功能。
A)  添加好友信息。
B)  列表好友信息。(包含排序功能)
C)  搜索好友
D)  删除好友


  添加好友:
用户输入 INSERT 命令后,让用户输入好友信息。添加成功或失败都需要提示用户。


  列表好友:
用户输入 DISPLAY 命令后,好友信息升序排列。


  搜索好友:
用户输入 SEARCH 命令后,让用户输入将要搜索好友姓名查询。如果未搜索到
请友好提示。如果搜索到,显示出该好友信息。

  删除好友:
用户输入 DELETE 命令后,让用输入将要删除好友姓名删除,如果存在同名的
多个好友,则列表出,所有同名的好友信息,让用户通过输入 ID 号删除。提示用
户删除成功。  

由于用链表来实现,将每个好友的信息都放入一个结构体中作为一个结点。首先要先创建这个链表,将每个好友的信息添加到这个链表中构成这个通讯录。其次就是对这个通讯录进行操作,说白了就是对链表进行增删改查等。

一个好友包括5个信息。可以建一个如下的结构体。

typedef struct friend
{
	int id;                    //结点数据
	char name[20];
	char phone[20];
	char addr[20];
	char company_phone[20];
	struct friend *next;       //结点指针
}Friend;
typedef Friend* PFriend;        //重命名结点指针类型


我这次是用头结点的方式来创建的链表的。在main函数中定义一个PFriend类型的结点为head_node。

创建链表我用的是尾插法,在结构体中有id,name[]等数据,我选择用id作为一个递增的值,通过id++就可以不断的插入结点。

         因为主界面会显示4个内容,在主函数中用switch..case..语句来判断。

下面是初写的一个只能实现添加好友的版本。

#include <stdio.h>
#include <stdlib.h>

#define OK          	0
#define ERROR      	   -1
#define MALLOC_ERROR   -2

typedef struct friend
{
	int id;                         //结点数据
	char name[20];
	char phone[20];
	char addr[20];
	char company_phone[20];
	struct friend *next;           //结点指针
}Friend;
typedef Friend *PFriend;           //重命名结点指针类型

int Add_Friend(PFriend s,int id)
{
	if (s == NULL)
	{
		return ERROR;
	}
	
	//要插入的朋友信息
	PFriend friend = (PFriend)malloc(sizeof(Friend)/sizeof(char));
	if (friend == NULL)
	{
		return MALLOC_ERROR;
	}
	friend->id = id;
	printf ("\n\tput your name:");
	scanf ("%s",friend->name);
	printf ("\n\tput your phone:");
	scanf ("%s",friend->phone);
	printf ("\n\tput your addr:");
	scanf ("%s",friend->addr);
	printf ("\n\tput your company_phone:");
	scanf ("%s",friend->company_phone);
	
	friend->next = NULL;
	
	//找最后一个结点
	PFriend temp = s;
	while (temp->next)
	{
		temp->next = temp;
	}
	temp->next = friend;
	
	return OK;
	
}

void interface()
{
	printf ("1) 添加好友\n");
	printf ("2) 列举好友\n");
	printf ("3) 搜索好友\n");
	printf ("4) 删除好友\n");
	printf ("请选择:");
}

int main()
{
	int id = 0;
	
	PFriend head_node = (PFriend)malloc(sizeof(Friend)/sizeof(char));
	if (head_node == NULL)
	{
		return MALLOC_ERROR;
	}
	head_node->next == NULL;
	
	//选择
	char choice[2];
	system("clear");            //清屏
	while(1)
	{
		interface();
		scanf ("%s",choice);      //字符串以"\n"结尾
		switch(choice[0])
		{
			case '1'://添加好友
			{
				id++;
				if (Add_Friend(head_node,id) != OK)
				{
					return ERROR;
					system("clear");
					printf ("\n\n\n");
					printf ("\t添加好友失败,请重新添加!");
				}
				system("clear");
				printf ("\n\n\n");
				printf ("\t添加好友成功!\n");
				break;
			}
			case'2'://列举好友
			{
				break;
			}
			case'3'://搜索好友
			{
				break;
			}
			case'4'://删除好友
			{
				break;
			}
			default:
			{
				system("clear");
				printf ("\n\n\n");
				printf ("请输入正确的选项!\n\n\n");
				break;
			}
		}
	}
	
	system("claer");
	return 0;
}


今天的文章电子通讯录(1)_电话本通讯录联系人分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/86294.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注