一、前言
本文将会用C语言实现通讯录系统。
此通讯录的联系人的信息由---姓名---性别---年龄---联系方式---家庭住址---这五个部分组成。
通讯录的功能包含以下6点
增加联系人
删除目标联系人
查找目标联系人
修改目标联系人的信息
排序通讯录的联系人
打印通讯录联系人的信息
二、通讯录如何实现
菜单的创建和选择
为通讯录打造一个菜单,以便用户了解通讯录的相关功能。
首先需要建立一个菜单,便于用户了解此通讯录
代码如下:
使用printf引用头文件
#include <stdio.h>
void menu()
{
printf("*****************************************\n");
printf("******* 1.Add 2.Erase ******\n");
printf("******* 3.Search 4.Amend ******\n");
printf("******* 5.Sort 6.Print ******\n");
printf("*********** 0.Exit **************\n");
}
运行效果如下:
![](https://i-blog.csdnimg.cn/blog_migrate/c82c1bffd7fecc284ff9be858fdd98c6.png)
根据菜单里的选项进行相关功能的实现
采用枚举类型的结构体,成员变量的大小是从0开始,依次递增
enum option
{
EXIT,
ADD,
ERASE,
SEARCH,
AMEND,
SORT,
PRINT
};
EXIT代表0依次递增
写代码实现菜单功能使用do while语句进行最少一次的循环
int main()
{
int input = 0;
do
{
menu();
printf("请选择:>");
scanf("%d", &input);
switch (input)
{
case ADD:
break;
case ERASE:
break;
case SEARCH:
break;
case AMEND:
break;
case SORT:
break;
case PRINT:
break;
case EXIT:
printf("退出通讯录\n");
break;
default:
printf("选择错误,重新输入\n");
break;
}
} while(input);
}
联系人如何创建
一个人联系人由---姓名--性别--年龄--联系方式--家庭住址,这五个部分组成。
所以用结构体来组成联系人信息。
typedef struct peoinfo //typedef结构体定义一个新的名字
{
char name[NAME_MAX];
char set[SET_MAX];
int age;
char tele[TELE_MAX];
char addr[ADDR_MAX];
}peoinfo;
//静态版本
//创建一个结构体变量包含 data数组&&sz
typedef struct contack
{
peoinfo data[MAX];//1000个结构体为peoinfo中存放的信息
int sz;//记录当前通讯录中有效信息的个数
}contack;
以上是两个结构体
第一个结构体组成联系人的信息
第二个结构体以data命名peoinfo这个结构体 data[MAX]为表示有MAX个数组,记录此通讯录当前有效信息的个数。
对MAX以及第一个结构体的元素数组进行宏定义以便更好的维护
如下代码:
#define NAME_MAX 20
#define SET_MAX 10
#define TELE_MAX 20
#define ADDR_MAX 10
#define MAX 1000
通讯录功能实现
(1) 通讯录的创建和初始化
首先需要创建通讯录在将其初始化
初始化函数使用memset这个库函数
memset的作用是将某一块内存中的内容全部设置为指定的值
使用memset函数引用头文件
#include <string.h>
contack con;//创建通讯录
initcontack(&con);//初始化通讯录
//初始化函数实现如下
void initcontack(contack* p)
{
p->sz = 0;//sz为当前通讯录中有效信息的个数
memset(p->data, 0, sizeof(p->da