C语言百行代码实现简易版通讯录,完成增删改查功能【附源码】

本文介绍了如何使用C语言编写一个简单的通讯录程序,包括通讯录结构、菜单交互、功能实现(如新增、查找、删除、修改、查看、排序)以及完整代码展示。通过结构体和函数指针实现通讯录操作,同时提供了结果演示。
摘要由CSDN通过智能技术生成

一、通讯录

通讯录可以用来存储1000个人的信息,每个人的信息包括:姓名、电话。

功能:

  1. 新增联系人

  2. 查找联系人

  3. 删除联系人

  4. 修改联系人

  5. 查看所有联系人

  6. 清空所有联系人

  7. 以名字排序所有联系人

这是一个简单的通讯录,实现方案是初级版。只能在程序运行期间存在(没有写入文件)。

二、菜单实现和用户交互

0.退出     1.新增联系人    2.查找联系人    3.删除联系人   4.修改联系人   5.查看所有联系人     6.清空所有联系人     7.以名字排序所有联系人

int menu(){
printf("=====================\n");
printf(" 1. 新增联系人\n");
printf(" 2. 查找联系人\n");
printf(" 3. 删除联系人\n");
printf(" 4. 修改联系人\n");    
printf(" 5. 查看所有联系人\n");
printf(" 6. 清空所有联系人\n");
printf(" 7. 以名字排序所有联系人\n");
printf(" 0. 退出\n");
printf("=====================\n");
printf(" 请输入您的选择:");
int choice = 0;
scanf("%d", &choice);
return choice;
}
12345678910111213141516

三、主函数

1.转移表

使用转移表的方式来简化代码。定义函数指针Func,参数类型是结构体指针。

typedef void(*Func)(AddressBook*);
1

2.choice判断

选择为0,打印GoodBye!!!。选择不在0-7范围内时,提示输入错误,重新输入选择。选择在0-7范围内时,使用转移表调用函数。

int main()
{
Func funcs[] = {
NULL,
addPerson,
findPerson,
delPerson,
updatePerson,
printPerson,
clearPerson,
sortPerson,
};
init(&addressbook);

while (1){
int choice = menu();
if (choice == 0){
printf("GoodBye!!!");
break;
}
if (choice<0 || choice > sizeof(funcs)/sizeof(funcs[0])){
printf("您的输入无效!\n");
continue;
}
funcs[choice](&addressbook);
}
system("pause");
return 0;
}
1234567891011121314151617181920212223242526272829

 

四、定义联系人和通讯录

1.定义联系人结构体

表示一个联系人,包含联系人姓名和电话。

typedef struct Person{
char name[1024];
char tel[1024];
}Person;
1234

2.定义通讯录结构体

表示整个通讯录,管理所有联系人,包含联系人。

通讯录刚开始是空着的,每次新增联系人,才会增加一个元素。定义size用来控制当前通讯录中有多少个人。[0, size) 就是有效区间。

#define MAX_PERSON 1000
typedef struct AddressBook {
Person persons[MAX_PERSON];
int size;
}AddressBook;
12345

3.定义结构体变量

全局变量addressbook

AddressBook addressbook;
1

 

五、通讯录初始化

针对整个通讯录初始化,只需要将size设置为0。

void init(AddressBook* addressbook) {
addressbook->size = 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值