教你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 30enum 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;}}//若都循环,比对完了以后还没找到就返回-1return -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("%10s\t%4s\t%5s\t%12s\t%20s\n", "名字", "年龄", "性别", "电话", "地址");printf("%10s\t%4d\t%5s\t%12s\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("%10s\t%4s\t%5s\t%12s\t%20s\n", "名字", "年龄", "性别", "电话", "地址");for (i = 0; i < ps->size; i++){printf("%10s\t%4d\t%5s\t%12s\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("%10s\t%4s\t%5s\t%12s\t%20s\n", "名字", "年龄", "性别", "电话", "地址");int i;for (i = 0; i < ps->size; i++){printf("%10s\t%4d\t%5s\t%12s\t%20s\n",ps->data[i].name,ps->data[i].age,ps->data[i].sex,ps->data[i].tele,ps->data[i].addr);} }
到此这篇关于C语言实现通讯录的详细代码的文章就介绍到这了。
教你C语言实现通讯录的详细代码相关推荐
- 【五】 C语言基础知识学习回顾 | 一篇搞定C语言基础 | 内附详细代码以及注释
一 .C语言学习第一天 1.1 编写C语言代码:hello.c #include<stdio.h> #include<stdlib.h> //调用system系统函数需要包含的 ...
- C++语言实现网络爬虫详细代码
最近有关注到某论坛在讨论网络爬虫用python或者java等语言写有多么多么好,其实这种没法具体说哪个好,只能说各自有各自的优点,下文就是关于我使用C++语言写的爬虫代码,对于我来说挺简单的,可以供大 ...
- c语言二分法_14个经典C语言算法你就不看一眼?(附详细代码)
今天,给大家讲一讲,单片机常用的14个C语言算法(附详细代码)哟! 一.计数.求和.求阶乘等简单算法 此类问题都要使用循环,要注意根据问题确定循环变量的初值.终值或结束条件,更要注意用来表示计数.和. ...
- c语言通讯录txt保存,C语言实现通讯录.pdf
C语语言言实实现现通通讯讯录录 本文实例为大家分享了C语言实现通讯录的具体代码,供大家参考,具体内容如下 实现的功能 : 1.初始化通讯录: 2. 通讯录中增加条目: 3. 删除通讯录中的指定条目: ...
- C语言实现通讯录详细教学
作者:~小明学编程~ 文章专栏:C语言练习题 目之所及皆为回忆,心之所向皆为过往 目录 前言 contact.h text.c contact.c 初始化函数 增加成员函数 删除成员函数 Find函数 ...
- 简陋版C语言仿真通讯录之动态内存开辟版本
简陋版C语言仿真通讯录 https://blog.csdn.net/csdn_kou/article/details/80287640 简陋版C语言仿真通讯录之动态内存开辟版本 给Contact结构体 ...
- svn中文语言包安装(最详细步骤)+Language Pack+TortoiseSVN 安装
原文链接:https://blog.csdn.net/massillon/article/details/102780782 svn中文语言包安装(最详细步骤) 一. 查看自己的SVN 版本(这里省略 ...
- 个人通讯管理程序C语言,个人通讯录管理系统C语言源程序(优秀版)[1]
个人通讯录管理系统C语言源程序(优秀版)[1] 更新时间:2017/2/22 1:03:00 浏览量:613 手机版 C语言个人通讯录系统源程序: #include /*头文件*/ #includ ...
- c语言八数码A星算法代码解析,八数码问题c语言a星算法详细实验报告含代码解析...
八数码问题c语言a星算法详细实验报告含代码解析 (13页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.9 积分 一.实验内容和要求 八数码问题:在3 ...
最新文章
- Docker的使用(二:Docker客户端常用指令练习)
- 弃 Windows 而拥抱 Linux 之后,这本书教了新玩法
- IOS 项目名称修改(XCODE4.6)
- 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 26丨餐馆营业额变化增长【难度中等】​
- 玩玩机器学习1——ubuntu16.04 64位安装TensorFlow GPU+python3+cuda8.0+cudnn8.0
- 将某一类型文件还原为无默认打开方式
- UI设计灵感|这才是分享美图的正确姿势!
- CV中必要的数学知识_奇异值的物理意义是什么?
- 智能体挑战赛 - “奥林匹克 跑步运动”
- python修改wav文件声音大小_Python更改wav文件的音高
- 读书笔记:《置身事内》
- 邮件这样写,PK 掉 99% 的同事
- 从WINDOW管理器差异,看WINDOWS与LINUX设计思想的文化内涵不同
- 【原创】RPA在BPO领域的场景分享-中科云创CEO每日分享
- 苹果id密码忘记了怎么重新设置?请收好这份攻略!
- 漫谈云数据中心的前世今生
- 互联网月饼大赏,你最喜欢哪家的?
- 华三服务器怎样用hdm安装linux,H3C R4900 G2服务器通过HDM安装系统
- Spring Boot整合JWT实现用户认证(附源码)
- 如何旋转BlackBerry BB10模拟器