C语言实现通讯录的代码怎么写
发表于:2025-11-20 作者:千家信息网编辑
千家信息网最后更新 2025年11月20日,这期内容当中小编将会给大家带来有关C语言实现通讯录的代码怎么写,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。(一)实现思路1.通讯录功能添加好友,删除好友,查找好友
千家信息网最后更新 2025年11月20日C语言实现通讯录的代码怎么写
这期内容当中小编将会给大家带来有关C语言实现通讯录的代码怎么写,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
(一)实现思路
1.通讯录功能
添加好友,删除好友,查找好友,修改好友信息,对好友进行排序
2.模块化实现各方面的功能
a. test.c
测试通讯录功能
b. Contact.c
实现通讯录功能
c. Contact.h
包含通讯录实现的头文件
3.代码实现
(二)源代码
A.test.c
#define _CRT_SECURE_NO_WARNINGS 1#include#include #include #include "contact.h" void menu(){ printf("*******************************\n"); printf("*** 1.Add 2.Del ***\n"); printf("*** 3.Search 4.Modify ***\n"); printf("*** 5.Show 6.Sort ***\n"); printf("*** 7.Help 8.About0 ***\n"); printf("*** 0.Exit ***\n"); printf("*******************************\n");} int main(){ int input = 0; //创建通讯录 int size = 0; struct Contact con;//一个结构体里包含1000个人的信息和size; //size表示的是该通讯录里现在的好友数 //初始化通讯录 InitContact(&con);//使size的初始值,以及好友信息初始化为0; do { menu(); printf("请选择:"); scanf("%d", &input); switch (input) { //添加好友信息 case Add: AddContact(&con); break; //删除好友 case Del: DelContact(&con); break; //查找好友信息 case Search: SearchContact(&con); break; //修改好友信息 case Modify: ModifyContact(&con); break; //显示好友信息 case Show: ShowContact(&con); break; //好友排序 case Sort: SortContact(&con); break; //退出 case Exit: printf("退出通讯录!"); break; //通讯录的使用以及帮助 case Help: HelpContact(); break; //关于通讯录 case About: AboutContact(); break; //选择错误 default: printf("选择错误!"); break; } } while (input); return 0;}
B.Contact.h
#define _CRT_SECURE_NO_WARNINGS 1#define Max 1000#define Max_name 20#define Max_sex 5#define Max_tele 12#define Max_addr 30 enum Option{ Exit, Add, Del, Search, Modify, Show, Sort, Help, About }; //创建一个结构体来存放通讯录中要存放的信息struct PeoInfo{ char name[Max_name]; int age; char sex[Max_sex]; char tele[Max_tele]; char addr[Max_addr];}; //通讯录类型struct Contact{ struct PeoInfo data[Max];//存放一个信息,包括好友姓名,年龄,性别,电话,地址 int size;//记录当前已经有的元素个数 //存入一个好友,size加1,表示通讯录人数增加一个}; //声明函数//1.对通讯录进行初始化void InitContact(struct Contact* ps); //增加好友信息void AddContact(struct Contact* ps); //删除好友void DelContact(struct Contact* ps); //查找指定姓名的好友void SearchContact(struct Contact* ps); //显示好友信息void ShowContact(const struct Contact* ps); //修改好友信息void ModifyContact( struct Contact* ps); //按名字首字母对通讯录的好友进行排序void SortContact( struct Contact* ps); //帮助使用通讯录void HelpContact(); //关于通讯录void AboutContact();C.Contact.c
#define _CRT_SECURE_NO_WARNINGS 1 #include "contact.h"#include#include #include //初始化通讯录void InitContact(struct Contact* ps){ memset(ps->data, 0, sizeof(ps->data)); ps->size = 0;//设置通讯录最初只有0个元素} //帮助使用通讯录void HelpContact(){ printf("各按键的使用:\n"); printf("1.添加好友\n"); printf("2.删除好友\n"); printf("3.查找好友信息\n"); printf("4.修改好友信息\n"); printf("5.显示好友信息\n"); printf("6.对好友进行排序\n"); printf("7.帮助使用通讯录\n"); printf("8.关于通讯录\n"); printf("谢谢使用通讯录!\n"); } //关于通讯录void AboutContact(){ printf("通讯录一般指在日常生活中用笔记录,也在手机,电脑,电子字典等电子产品中拥有这个功能。\n");} //增加好友的电话,信息void AddContact(struct Contact* ps){ if (ps->size == Max) { printf("通讯录已满,无法增加!\n"); } else { printf("请输入姓名:"); scanf("%s", ps->data[ps->size].name); //除了年龄,其他都是数组,直接用数组名 printf("请输入年龄:"); scanf("%d", &(ps->data[ps->size].age)); //年龄不是数组,则需要& printf("请输入性别:"); scanf("%s", ps->data[ps->size].sex); printf("请输入电话:"); scanf("%s", ps->data[ps->size].tele); printf("请输入地址:"); scanf("%s", ps->data[ps->size].addr); ps->size++; //添加成功一个1好友,size加1,; printf("添加成功!\n"); } } //在删除,查找,修改的函数中均涉及查找到该好友才能进行//为了避免冗余,我们把查找的这个环节从函数中抽离出来//在函数中直接使用,就不会显得重复 static int Find_by_name(struct Contact* ps, char name[Max_name]){ int i; for (i = 0; i < ps->size; i++) { //将要查找的好友姓名与通讯录中的好友进行比较 if (0 == strcmp(ps->data[i].name, name)) { //若找到,返回其下标 return i; } } //若都循环,比对完了以后还没找到就返回-1 return -1;} //删除好友信息void DelContact(struct Contact* ps){ int j; char name[Max_name]; printf("请输入删除好友的名字:"); scanf("%s", name); //1.查找要删除的人的位置 int pos = Find_by_name(ps, name); //调用函数进行查找,若找到,返回下标,若没找到,返回-1; //2.删除 if (pos==-1) { printf("该好友不存在!\n"); } else { //删除数据 for (j = pos; j < ps->size - 1; j++) { ps->data[j] = ps->data[j + 1]; //删除数据后,后面的元素位置都改变,向前移动一个位置; } ps->size--; //删除一个好友,size-1. printf("删除成功!\n"); }} //查找指定好友信息void SearchContact(struct Contact* ps){ char name[Max_name]; printf("输入要查找的好友姓名:"); scanf("%s", name); int pos = Find_by_name(ps, name); if (pos ==-1) { printf("该好友不存在!\n"); } else { printf("s\t%4s\t%5s\ts\t%20s\n", "名字", "年龄", "性别", "电话", "地址"); printf("s\t%4d\t%5s\ts\t%20s\n", ps->data[pos].name, ps->data[pos].age, ps->data[pos].sex, ps->data[pos].tele, ps->data[pos].addr); } } //修改好友信息void ModifyContact(struct Contact* ps){ char name[Max_name]; printf("请输入需要修改信息的好友姓名:"); scanf("%s", name); int pos=Find_by_name(ps, name); if (pos == -1) { printf("该用户不存在!\n"); } else { printf("请输入姓名:"); scanf("%s", ps->data[pos].name); printf("请输入年龄:"); scanf("%d", &(ps->data[pos].age)); printf("请输入性别:"); scanf("%s", ps->data[pos].sex); printf("请输入电话:"); scanf("%s", ps->data[pos].tele); printf("请输入地址:"); scanf("%s", ps->data[pos].addr); printf("修改成功!\n"); } } //显示出好友的基本信息void ShowContact(const struct Contact* ps){ if (ps->size == 0) { printf("通讯录为空!\n"); } else { int i = 0; printf("s\t%4s\t%5s\ts\t%20s\n", "名字", "年龄", "性别", "电话", "地址"); for (i = 0; i < ps->size; i++) { printf("s\t%4d\t%5s\ts\t%20s\n", ps->data[i].name, ps->data[i].age, ps->data[i].sex, ps->data[i].tele, ps->data[i].addr); } }} //按照名字的首字母进行排序 int cmp_stu_by_name(const void* e1, const void* e2){ return (strcmp(((struct Contact*)e1)->data->name, ((struct Contact*)e2)->data->name));} //我们用qsort()函数对我们的好友按照名字首字母进行排序void SortContact( struct Contact* ps){ qsort(ps->data, ps->size, sizeof(ps->data[0]), cmp_stu_by_name); printf("s\t%4s\t%5s\ts\t%20s\n", "名字", "年龄", "性别", "电话", "地址"); int i; for (i = 0; i < ps->size; i++) { printf("s\t%4d\t%5s\ts\t%20s\n", ps->data[i].name, ps->data[i].age, ps->data[i].sex, ps->data[i].tele, ps->data[i].addr); }}
上述就是小编为大家分享的C语言实现通讯录的代码怎么写了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。
好友
通讯
通讯录
信息
输入
年龄
名字
姓名
电话
函数
地址
性别
排序
功能
成功
帮助
代码
位置
元素
字母
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
福州安卓系统软件开发
山西精英网络技术开发指导
腾讯服务器可以搭建梯子吗
滨州智慧团建软件开发电话
配资软件开发制作
乌海ftp服务器
网络安全手抄报全国第一
戴尔服务器哪个是管理口
黑客攻击fbi服务器电影
数据库过期记录清理
怎样让爱游戏读取数据库
联网设备网络安全管理制度
steam为什么登上去说服务器
如何查看谁在占用数据库资源
长理网络安全知识竞赛
长春做网络安全行业有前景吗
梦幻西游各等级最火爆服务器排名
云南大学网络安全实验室
oracle 数据库启动
慕义互联网科技有限公司面试
服务器中最大的传送门
大海解说建造王国服务器
哪家服务器公司可以帮防护
有潜力的金融级数据库技术
如何查看谁在占用数据库资源
石嘴山市财政网络安全预算
天堂网络连接不上服务器
火车票订购系统数据库设计
重庆财务软件开发公司
原油期货 什么软件开发