C语言实现通讯录的代码怎么写
发表于:2025-02-07 作者:千家信息网编辑
千家信息网最后更新 2025年02月07日,这期内容当中小编将会给大家带来有关C语言实现通讯录的代码怎么写,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。(一)实现思路1.通讯录功能添加好友,删除好友,查找好友
千家信息网最后更新 2025年02月07日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安全错误
数据库的锁怎样保障安全
京东商城网络安全的防范措施
网络安全攻防演练有几人
网络安全课的标准尺度
东南大学网络安全学院可以跨考吗
数据库服务器有什么用
网络安全法规定国家任务
网站服务器会不会被封
数据库flabspath
北京杰佛软件开发公司
wps如何提取重复项数据库
wps如何实现数据库的左连接
重庆浪潮服务器虚拟化系统云空间
联想服务器配件
1600核服务器
连接数据库记录图趋势
嘉定网络安全监测中心
阿里云服务器怎么部署
软件开发 牛人
icsd数据库怎么用
ezdml数据库设计
河北商城类软件开发
铜川网络技术哪个好
泰拉瑞亚手机版如何免费开服务器
redis数据库生成
花生壳ddns服务器
暗迹 网络安全
简单的网络安全选择题
工业软件开发学什么专业
大王卡服务器
金蝶服务器总控台在哪里显示