前言
Hello,亲爱的CSDN的小伙伴们,你们好!基于上一篇博客的基础上,今天我来带领大家实现通讯录项目,上一篇博客在这里哦!顺序表的实现
通讯录的实现
顺序表的实现在上一篇博文中,这里就不再过多讲解了。
我们知道顺序表可以插入内置类型,也可以插入自定义类型。实现通讯录项目,我们要自定义联系人系列内容,再一条一条的插入顺序表中,就构成了我们所知的通讯录。
接下来是代码的实现
通讯录的头文件
#define NAME_MAX 20
#define GENDER_MAX 10
#define AGE_MAX 20
#define TEL_MAX 20
#define ADDR_MAX 100
typedef struct personInfo
{
char name[NAME_MAX];
char gender[GENDER_MAX];
int age[AGE_MAX];
char tel[TEL_MAX];
char addr[ADDR_MAX];
}personInfo;
typedef struct SeqList Contract;
//通讯录的初始化
void ContractInit(Contract* con);
//通讯录的销毁
void ContractDeatory(Contract* con);
//通讯录的添加
void ContractAdd(Contract* con);
//通讯录的删除
void ContractDel(Contract* con);
//通讯录的修改
void ContractModefy(Contract* con);
//通讯录的展示
void ContractShow(Contract* con);
//通讯录的查找
void ContractFind(Contract* con);
通讯录的源文件
#include"Contract.h"
#include"SeqList.h"
void ContractInit(Contract* con)
{
SLInit(con);
}
void ContractDeatory(Contract* con)
{
SLDestory(con);
}
void ContractAdd(Contract* con)
{
personInfo info;
printf("请输入要添加的联系人姓名\n");
scanf("%s", info.name);
printf("请输入要添加的联系人性别\n");
scanf("%s", info.gender);
printf("请输入要添加的联系人年龄\n");
scanf("%s", &info.age);
printf("请输入要添加的联系人电话\n");
scanf("%s", info.tel);
printf("请输入要添加的联系人地址\n");
scanf("%s", info.addr);
SLPushback(con, info);
}
int FindByName(Contract* con, char name[])
{
for (int i = 0; i < con->size; i++)
{
if (0 == strcmp(con->arr[i].name, name))
{
return i;
}
else
return -1;
}
}
void ContractDel(Contract* con)
{
//要删除的数据必须要存在、
//查找
char name[NAME_MAX];
printf("请输入要删除的联系人姓名:\n");
scanf("%s", name);
int find = FindByName(con, name);
if (find < 0)
{
printf("要删除的数据不存在\n");
return;
}
SLErase(con, find);
printf("删除成功\n");
}
void ContractShow(Contract* con)
{
printf("%s %s %s %s %s\n", "姓名", "性别", "年龄", "电话", "地址");
for (int i = 0; i < con->size; i++)
{
printf("%s %s %d %s %s\n",con->arr[i].name,con->arr[i].gender,con->arr[i].age,con->arr[i].tel,con->arr[i].addr);
}
}
void ContractModefy(Contract* con)
{
char name[NAME_MAX];
printf("请输入要修改的联系人姓名:\n");
scanf("%s", name);
int find = FindByName(con, name);
if (find < 0)
{
printf("要修改的数据不存在\n");
return;
}
printf("请输入新的联系人姓名:\n");
scanf("%s", con->arr[find].name);
printf("请输入新的联系人性别:\n");
scanf("%s", con->arr[find].gender);
printf("请输入新的联系人年龄:\n");
scanf("%d", con->arr[find].age);
printf("请输入新的联系人电话:\n");
scanf("%s", con->arr[find].tel);
printf("请输入新的联系人地址:\n");
scanf("%s", con->arr[find].addr);
printf("修改成功\n");
}
void ContractFind(Contract* con)
{
//查找
char name[NAME_MAX];
printf("请输入要查找的联系人姓名:\n");
scanf("%s", name);
int find = FindByName(con, name);
if (find < 0)
{
printf("要查找的数据不存在\n");
return;
}
printf("%s %s %s %s %s\n", "姓名", "性别", "年龄", "电话", "地址");
printf("%s %s %d %s %s\n", con->arr[find].name, con->arr[find].gender, con->arr[find].age, con->arr[find].tel, con->arr[find].addr);
}
需要注意的是,这里的头文件和源文件需要结合顺序表的实现一起写,大家可以翻稳定主页寻找码源。
(完)