C语言静态通讯录

目录

一、模块化编程

1.头文件

1.1符号常量的定义

1.2功能模块的声明

1.3结构体的定义

2.主代码部分

2.1该部分介绍

2.2各个函数模块

3.测试代码部分

二、各个功能模块的实现

2.1初始化通讯录函数

2.2寻找 PeoInfo 结构体数组成员姓名函数

2.3添加联系人函数

2.4删除联系人函数

2.5查找联系人函数

2.6修改联系人函数

2.7排序联系人函数

2.8打印联系人函数

三、简易通讯录全部代码

3.1头文件

3.2主代码

3.3测试代码


一、模块化编程

本文采用模块化编程,共有三个文件,如下:

1.头文件<contact.h>

头文件包括实现通讯录功能模块的函数声明、成员信息结构体的定义、通讯录结构体的定义以及一些符号常量的定义;

1.1符号常量的定义

辅助实现通讯录功能的一些符号常量的定义

1.1.1.通讯录结构体中联系人信息结构体数组的最大成员数量--MAX_DATA

#define MAX_DATA 1000    //数组最大成员数

1.1.2联系人信息结构体姓名字符数组的最大成员数量--MAX_NAME

#define MAX_NAME 20   //不用加分号,下同

1.1.3联系人信息结构体性别字符数组的最大成员数量--MAX_SEX

#define MAX_SEX 20

1.1.4联系人信息结构体电话字符数组的最大成员数量--MAX_TELE

#define MAX_TELE 12      //电话是11位,存进去一个\0,所以多加1位

1.1.5联系人信息结构体地址字符数组的最大成员数量--MAX_NAME

#define MAX_ADDR 30

1.1.6排序功能模块中函数指针数组的最大成员数量--MAX_CFUN

#define CFUN_MAX 3    //排序函数中函数指针的成员数

1.2功能模块的声明

1.2.1增加通讯录成员信息的函数的声明

添加通讯录成员信息的函数--Addcontact

函数参数类型是通讯录结构体指针:

void Addcontact(Contact* pcontact);

1.2.2删除通讯录成员信息的函数的声明

删除通讯录成员信息的函数--Delcontact

函数参数类型是通讯录结构体指针:

void Delcontact(Contact* pcontact);

1.2.3查找通讯录成员信息的函数的声明

查找通讯录成员信息的函数--Searchcontact

函数参数类型是通讯录结构体指针:

依据名字查找联系人信息并打印出来

void Searchcontact(Contact* pcontact);

1.2.4修改通讯录成员信息的函数的声明

修改通讯录成员信息的函数--Modifycontact

函数参数类型是通讯录结构体指针:

依据联系人名字查找联系人并重新输入其信息

void Modifycontact(Contact* pcontact);

1.2.5排序通讯录成员信息的函数的声明

对通讯录联系人成员按照一定规则进行排序

函数参数类型是通讯录结构体指针:

该函数的主体部分采用库函数Qsort函数,结合比较函数、函数指针数组完成相应功能

void Sortcontact(Contact* pcontact);

1.2.6比较通讯录成员信息的函数的声明

排序函数中,可以根据不同的排序规则对成员进行排序

函数参数类型是通讯录结构体指针:

这里提供三种排序规则,分别按照联系人姓名首字母、年龄、性别进行排序

每一种排序规则,对应一种比较函数(C语言库函数qsort的使用)

int compare_name(const void* e1, const void* e2);
int compare_age(const void* e1, const void* e2);
int compare_sex(const void* e1, const void* e2);

1.2.7寻找联系人姓名函数的声明

在删除联系人函数、查找联系人函数中寻找联系人姓名的函数

int Findname(Contact* pcontact, char name[]);

1.2.8打印通讯录成员信息函数的声明

找到要打印成员,并将其信息打印出来

void Printcontact(const Contact* pcontact);

1.2.9初始化通讯录成员信息的函数的声明

对通讯录结构体进行初始化,全部赋值0

void Initcontact(Contact* pcontact);   //Contact是通讯录类型 contact是通讯录变量名

1.3结构体的定义

1.3.1联系人信息结构体的定义

结构体的类型是 struct PeoIofo,成员变量包括姓名、年龄、性别、电话以及地址

并将结构体类型 struct PeoIofo 定义别名 PeoIofo 

typedef struct PeoInfo
{
	char name[MAX_NAME];  //姓名
	char sex[MAX_SEX];    //性别
	int age;              //年龄 
	char tele[MAX_TELE];  //地址
	char addr[MAX_ADDR];  //地址
}PeoInfo;

1.3.2通讯录结构体的定义     

结构体的类型是 struct Contact ,成员包括 PeoInfo 数组以及当前通讯录成员数sz

并将结构体类型 struct Contact 定义别名 Contact 

typedef struct Contact
{
	PeoInfo data[MAX_DATA];   //存放添加进来的人的信息
	int sz;  //记录的是当前通讯录中有效信息的个数
}Contact;

2.主代码部分<contact.c>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hskwcy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值