目录
一、模块化编程
本文采用模块化编程,共有三个文件,如下:
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;