用c语言实现通讯录

本文介绍了如何使用C语言实现一个动态通讯录管理系统,包括添加、删除、查找、修改联系人信息,显示所有联系人,清空通讯录,按名字排序以及文件保存和加载功能。通过结构体存储联系人信息,动态内存管理实现通讯录容量的灵活扩展。
摘要由CSDN通过智能技术生成

通讯录功能

  1. 添加联系人信息
  2. 删除指定联系人信息
  3. 查找指定联系人信息
  4. 修改指定联系人信息
  5. 显示所有联系人信息
  6. 清空所有联系人
  7. 以名字排序所有联系人
  8. 保存联系人到文件
  9. 加载联系人

实现

1.首先弄一个简单的界面显示通讯录的所有功能。

void menu()
{
   
	printf("                                           \n");
	printf("       1.添加 2.删除 3.查找 4.修改 5.显示    \n");
	printf("       6.清空 7.排序 8.保存 9.加载 0.退出    \n");
	printf("                                           \n");
}

2.使用枚举的方法将每一个功能枚举出来

enum
{
   
	quit,			//退出	
	add,			//添加
	dele,			//删除
	search,			//查找
	modify,			//修改
	show,			//显示
	empty,			//清空
	sort,			//排序
	save,			//保存
	landing,		//加载

};

在主函数中进行调试
对程序主体可以使用do while循环至少让用户使用一次

#include<stdio.h>
#include"contact.h"
void menu()
{
   
	printf("                                           \n");
	printf("       1.添加 2.删除 3.查找 4.修改 5.显示    \n");
	printf("       6.清空 7.排序 8.保存 9.加载 0.退出    \n");
	printf("                                           \n");
}
enum
{
   
	quit,		//退出
	add,		//查找
	dele,
	search,
	modify,
	show,
	empty,
	sort,
	save,
	landing,

};
int main()
{
   
	int input = 0;
	do{
   
		menu();
		printf("请选择功能\n");
		scanf("%d", &input);
		switch (input)
		{
   
		case quit:
			break;
		case add:
			break;
		case dele:
			break;
		case modify:
			break;
		case search:
			break;
		case show:
			break;
		case empty:
			break;
		case sort:
			break;
		case save:
			break;
		case landing:
			break;
		default:
			printf("请重新选择\n");
			break;
		}
	} while (input);
	return 0;
}

通讯录的整体就是这样
接下来对通讯录的内容进行考虑
一个通讯录可以保存一个人的姓名,性别,年龄,住址,电话。
可以通过结构体保存这样的信息。

#define USER_MAX 1000
#define NAME_MAX 20
#define ADDRE_MAX 20
#define TELE_MAX 12

typedef struct people
{
   
	char name[NAME_MAX];
	char sex[5];
	short age;
	char tele[TELE_MAX];
	char address[ADDRE_MAX];
	
}people;

一个人的信息可以使用一个结构体保存,而多个人的信息就组成了一个通讯录
,而通讯录还要包含他的成员个数,他的容量。

通讯录可以使用两种方法实现

静态通讯录直接使用数组保存里面所有的信息,但是数组的大小一旦设置好就不能改变

typedef struct contact
{
   
	people	PeoInfo[1000];// 可以容纳1000个人
	int size; //人数
}contact;

动态通讯录可以使用动态内存开辟,这样的话有几个人开辟几个人的空间,可以大大减少内存的使用。

typedef struct contact
{
   
	people*	PeoInfo
	int size; 
	int capacity;
}contact;

这里主要实现动态通讯录。

首先要对通讯录进行初始化
将通讯录中的size设置成0,开辟一定的空间,这里我先将通讯录的容量设置成3,所以先开辟三个人的空间
注意 :使用malloc的开辟空间的话要对返回值进行判断,如果是空指针的话说明电脑没有足够内存,直接退出!

void initcontact(contact*con)
{
   
	assert(con);
	con->PeoInfo = (people*)malloc(3*sizeof(people));
	if (con->PeoInfo == NULL)
	{
   
		perror("initcontact::malloc");
		exit(EXIT_FAILURE);
	}
	con->size = 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值