通讯录管理系统简单实现的功能

addressbook.h 新建的头文件
#include<stdio.h>
#include<assert.h>
#include<string.h>
#include<stdlib.h>
typedef enum SEX
{
man,
woman,
}SEX;
typedef struct AddressInfo
{
char _name[20];
char _phone[20];
char _address[50];
int _age;
SEX _sex;
}AddressInfo;
typedef struct AddressBook
{
AddressInfo* Information;
size_t _size;
size_t _capacity;
}AddressBook;
//初始化通讯录
void AddressBookInit(AddressBook* pbook);
//添加联系人
void AddressBookAdd(AddressBook* pbook, AddressInfo* pinfo);
//删除联系人
void AddressBookDel(AddressBook* pbook, const char* name);
//查找联系人
AddressInfo* AddressBookFind(AddressBook* pbook, const char* name);
//打印通讯录
void AddressBookShow(AddressBook* pbook);
//更改联系人信息
void AddressBookChange(AddressBook* pbook, const char* name);
//输入联系人
void Input(AddressInfo* pinfo);
//单独打印信息
void According(AddressInfo* pinfo);
//在文件中写入信息
void AddressBookSave(AddressBook* pbook, const char* filename);
//从文件中读取信息
void AddressBookLoad(AddressBook* pbook, const char* filename);
//通讯录排序
void AddressBookSort(AddressBook* pbook);
输入联系人信息
void Input(AddressInfo* pinfo)
{
char name[20], phone[20];
int i = 0;
int age = 0;
printf("联系人姓名-->\n");
scanf("%s", name);
strcpy(pinfo->_name, name);
printf("联系人电话号码-->");
scanf("%s", phone);
strcpy(pinfo->_phone, phone);
printf("联系人年龄-->");
scanf("%d", &age);
pinfo->_age = age;
printf("联系人性别(男-->man 女-->woman)-->");
while (1)
{
scanf("%d", &i);
if (i == 0 || i == 1)
{
pinfo->_sex = i;
break;
}
else
{
printf("请输入正确的信息!\n");
}
}
printf("请输入联系人地址-->\n");
scanf("%s", pinfo->_address);
}
添加联系人
void AddressBookAdd(AddressBook* pbook, AddressInfo* pinfo)
{
assert(pbook&&pinfo);
if (pbook->_size == pbook->_capacity)
{
pbook->Information = realloc(pbook->Information, sizeof(AddressInfo)*(pbook->_capacity) * 2);
pbook->_capacity *= 2;
}
pbook->Information[pbook->_size]._age = pinfo->_age;
pbook->Information[pbook->_size]._sex = pinfo->_sex;
strcpy(pbook->Information[pbook->_size]._name, pinfo->_name);
strcpy(pbook->Information[pbook->_size]._phone, pinfo->_phone);
strcpy(pbook->Information[pbook->_size]._address, pinfo->_address);
pbook->_size++;
}
删除联系人
void AddressBookDel(AddressBook* pbook, const char* name)
{
size_t i = 0;
for (i = 0; i < pbook->_size; i++)
{

最低0.47元/天 解锁文章
525

被折叠的 条评论
为什么被折叠?



