用C语言写一个简单的通讯录(静态版)

本文介绍了如何使用C语言编写一个简单的静态通讯录,包括初始化、增加、删除、查找、修改和排序联系人等功能。通过test.c、contact.h和contact.c三个文件实现,通讯录容量固定,具有一定的局限性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

在实现通讯录前,我们需先考虑这个通讯录应该具备哪些功能,以下是我写的通讯录功能预览。

  1. 添加联系人信息
  2. 删除指定联系人信息
  3. 查找指定联系人信息
  4. 修改指定联系人信息
  5. 显示所有联系人信息
  6. 清空所有联系人
  7. 排序通讯录联系人

代码实现

写通讯录时,我们需要创建三个文件,方便代码的调试和修改。

  1. test.c 测试整个通讯录的逻辑
  2. contact.h 通讯录相关功能的函数声明
  3. contact.c 通讯录相关功能的函数实现

test.c

我们先创建一个菜单供用户选择

static void menu()
{
   
	printf("******************************\n");
	printf("****   1.add       2.del  ****\n");
	printf("***    3.search    4.modfy****\n");
	printf("***    5.show      6.sort  ***\n");
	printf("***    0.exit              ***\n");
	printf("******************************\n");
}

然后创建一个枚举类型对应菜单的数据,方便使用switch时看过去更明了。

enum Option
{
   
	EXIT,		//退出
	ADD,		//增加
	DEL,		//删除
	SRARCH,		//查找
	MODFY,		//修改
	SHOW,		//显示
	SORT		//排序
};

然后在main函数里面创建一个通讯录的变量(这里的结构体我在contact.h里面定义了)和大概框架给写好。

int main()
{
   

	int input = 0;
	struct Contact con;//创建了一个描述通讯录的变量
	InitContact(&con);//初始化通讯录
	do
	{
   
		menu();//菜单
		printf("请选择:");
		scanf("%d",&input);
		switch (input)
		{
   
		case EXIT:
			printf("退出通讯录\n");
			break;
		case ADD:
			Addcontact(&con);//增加联系人
			break;
		case DEL:
			DelContact(&con);//删除联系人
			break;
		case SRARCH:
			SrarchContact(&con);//查找联系人
			break;
		case MODFY:
			ModfyContact(&con);//修改通讯录
			break;
		case SHOW:
			ShowCotact(&con);//显示通讯录
			break;
		case SORT:
			SortContact(&con);//排序通讯录
			break;
		default:
			printf("选择错误,请重新选择\n");
		}
	} while (input);
	return 0;
}

contact.h

在创建的头文件里把需要的头文件加上,这样其他两个.c文件只需要声明我们自己创建的头文件就可以使用库函数了,然后创建一个结构体来描述一个联系人的信息,用**#define**定义常量,可以更方便的修改。
再创建一个结构体,里面创建一个结构体数组,数组里面存放1000个联系人的信息,再创建一个整型变量,用来记录当前存放了多少个人的信息。

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

#define NAME_MAX 20  //名字
#define SEX_MAX 5	 //性别
#define TELE_MAX 12	 //电话
#define ADDR_MAX 30	 //地址
#define DATA_MAX 1000//人数

struct PeoInfo  //描述一个人信息的结构体
{
   
	char name[NAME_MAX];//名字
	int age;//年龄
	char sex[SEX_MAX];//性别
	char tele[TELE_MAX];//电话
	char addr[ADDR_MAX];//地址
};
//通讯录的结构体
struct Contact
{
   
	struct PeoInfo data[DATA_MAX];
	int sz;//记
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值