当前位置: 首页 > news >正文

基于顺序表基础实现通讯录项目

基于顺序表基础实现通讯录项目

  • 前言
  • 通讯录的实现

前言

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;}elsereturn -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);}

需要注意的是,这里的头文件和源文件需要结合顺序表的实现一起写,大家可以翻稳定主页寻找码源。
(完)

http://www.lryc.cn/news/383879.html

相关文章:

  • 加班的员工,循环的电池
  • windows安装Nacos并使用
  • 准备篇(三)网页相关知识
  • 基于SSM的医药垃圾分类管理系统
  • web 应用防火墙的作用是什么
  • 搜索框回车刷新表格(解决搜索框回车刷新页面问题)
  • 洞察用户需求,Xinstall数据统计App让你的App运营如虎添翼
  • 如何正确的报考志愿
  • go的reflect实战
  • 【学习】常用的分类网络
  • 3. 向索引库中导入数据
  • java-冒泡排序 2
  • 记一次面试
  • Linux提升篇-正则表达式
  • 专利、论文免费检索
  • 【Qt】QSettings使用
  • Js逆向爬虫基础篇
  • 同步时钟系统为何能成为机场时间管理的好伙伴?
  • Robust semi-supervised segmentationwith timestep ensembling diffusion models
  • 如何迁移R包
  • 如何在next14项目中加入favicon
  • 【深度学习】基础数据结构+访问
  • 一个产品需求工程师繁忙的一天
  • MD5加密接口
  • AI大模型日报#0626:首款大模型芯片挑战英伟达、面壁智能李大海专访、大模型测试题爆火LeCun点赞
  • 专业技能篇---计算机网络
  • Matlab|【免费】含氢气氨气综合能源系统优化调度
  • python的一些常用的内建函数
  • Docker部署常见应用之Oracle数据库
  • 小程序中echarts的bug