C语言实现通讯录(动态的版本)

通讯录的实现框架

动态的版本
通讯录默认能存放3个人的信息
如果空间不够了,就增加空间,每次增加2个人的空间

实现一个通讯录 :
人的信息:
名字 + 年龄 + 性别 + 电话 + 地址
1.增加联系人
2.删除指定联系人
3.查找联系人
4.修改联系人
5.显示联系人
6.排序

测试功能 test.c
通讯录相关的实现 contact.c
通讯录相关的声明 contact.h

其实只是在静态的基础上稍作修改,所以这里只说明修改的部分

test.c的代码

#include "contact.h"

enum Option
{
   
	Exit,
	Add,
	Del,
	Search,
	Modify,
	Show,
	Sort
};

void menu()
{
   
	printf("**************************************\n");
	printf("****    1.Add        2.Del       *****\n");
	printf("****    3.Search     4.Modify    *****\n");
	printf("****    5.Show       6.Sort      *****\n");
	printf("****    0.Exit                   *****\n");
	printf("**************************************\n");
}

int main()
{
   
	Contact con;//通讯录
	InitContact(&con);
	int input = 0;
	do 
	{
   
		menu();
		printf("请选择:>");
		scanf("%d", &input);
		switch (input)
		{
   
		case Add:
			AddContact(&con);
			break;
		case Del:
			DelContact(&con);
			break;
		case Search:
			SearchContact(&con);
			break;
		case Modify:
			ModifyContact(&con);
			break;
		case Show:
			ShowContact(&con);
			break;
		case Sort:
			SortContact(&con);
			break;
		case Exit:
			DestroyContact(&con);
			printf("退出通讯录\n");
			break;
		default:
			printf("选择错误,请重新选择\n");
			break;
		}
	} while (input);
	return 0;
}

contact.h的代码

#pragma once

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

#define MAX 100
#define MAX_NAME 20
#define MAX_SEX 5
#define MAX_TELE 13
#define MAX_ADDR 30
#define DEFAULT_SZ 3
#define INC_SZ 2

//通讯录函数的声明

//人的信息
typedef struct PeoInfo
{
   
	char name[MAX_NAME];
	int age;
	char sex[MAX_SEX];
	char tele[MAX_TELE];
	char addr[MAX_ADDR];
}PeoInfo;


//通讯录
typedef struct Contact
{
   
	PeoInfo* data;
	int count;
	int capacity;
}Contact;

//初始化通讯录
void InitContact(Contact* pc);

//销毁通讯录
void DestroyContact(Contact* pc);

//增加联系人到通讯录
void AddContact(Contact* pc);

//显示通讯录信息
void ShowContact(const Contact
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值