利用C语言结构体实现通讯录
更新时间:2020年4月25日 17:26 点击:1278
本文实例为大家分享了C语言结构体实现通讯录的具体代码,供大家参考,具体内容如下
用来存储1000个人的信息的通讯录,每个人的信息包括:
姓名、性别、年龄、电话、住址
程序如下:
#include<stdio.h> #include<string.h> #include<stdlib.h> struct People { char name[20]; char sex[5]; int age; char tel[15]; char addr[50]; }; //定义人的信息结构体(包含各种信息) struct Contact { struct People person[1000]; //定义通讯录结构体 int n; //(包含人的信息的结构体和用户个数n) }; typedef struct Contact * p; void menu(); int add(p q); //p是一个结构体指针类型,q是一个指向struct Contact的一个指针 int delete(p q); //例如:typedef int * int 即 int *p ==> int p int find(p q); int modify(p q); int show(p q); int clear(p q); //函数的声明 void menu() //目录格式 { printf("====================欢迎来到苏嵌154通讯录==================\n"); printf("----------------------1.添加联系人信息---------------------\n"); printf("----------------------2.删除指定联系人信息-----------------\n"); printf("----------------------3.查找指定联系人信息-----------------\n"); printf("----------------------4.修改指定联系人信息-----------------\n"); printf("----------------------5.显示所有联系人信息-----------------\n"); printf("----------------------6.清空所有联系人---------------------\n"); printf("----------------------0.谢谢使用---------------------------\n"); printf("====================欢迎来到苏嵌154通讯录==================\n"); } int add(p q) //添加联系人 { if((*q).n >= 1000) { printf("contact is full!\n"); return -1; } else { printf("输入姓名:\n"); scanf("%s",(*q).person[(*q).n].name); printf("输入性别:\n"); scanf("%s",(*q).person[(*q).n].sex); printf("输入年龄:\n"); scanf("%d",&(*q).person[(*q).n].age); printf("输入电话:\n"); scanf("%s",(*q).person[(*q).n].tel); printf("输入地址:\n"); scanf("%s",(*q).person[(*q).n].addr); ((*q).n)++; } return 0; } int delete(p q) //删除联系人 { int ret = find(q); //调用查找函数并保存其值 if(ret != -1) { int i = 0; i = ret; //这里要用另一个变量来保存输入的姓名 for(i = 0;i < (*q).n-1;i++) { (*q).person[i] = (*q).person[i+1]; //用后一个覆盖前边的,如果要删除的是最后一个不进行此步骤 } (*q).n --; //直接减去最后一个即count-- } return 0; } int find(p q) //查找联系人 { int i = 0; char ret[20]; //用另一个数组来保存姓名 printf("输入姓名:\n"); scanf("%s",ret); while(i <= (*q).n) { if(strcmp(ret,(*q).person[i].name)== 0) //比较输入的姓名和通讯录中已有的姓名 { printf("姓名\t性别\t年龄\t电话\t地址\4t\n"); //制表符来制作表头 printf("%s\t",(*q).person[i].name); printf("%s\t",(*q).person[i].sex); printf("%d\t",(*q).person[i].age); printf("%s\t",(*q).person[i].tel); printf("%s\4t\n",(*q).person[i].addr); return i; } i++; } printf("你丫的我班没这个人\n"); return -1; } int modify(p q) //修改函数,首先找到如要修改的姓名,然后重新输入 { int ret = find(q); if(ret != -1) { printf("输入修改的姓名:\n"); scanf("%s",(*q).person[ret].name); printf("输入修改的性别:\n"); scanf("%s",(*q).person[ret].sex); printf("输入修改的年龄:\n"); scanf("%d",&((*q).person[ret].age)); printf("输入修改的电话:\n"); scanf("%s",(*q).person[ret].tel); printf("输入修改的地址:\n"); scanf("%s",(*q).person[ret].addr); } else { printf("你丫的我班没这个人\n"); } return 0; } int show(p q) //显示全部联系人 { int i = 0; printf("姓名\t性别\t年龄\t电话\t地址\4t\n"); for(i = 0;i < (*q).n;i++) { printf("%s\t",(*q).person[i].name); printf("%s\t",(*q).person[i].sex); printf("%d\t",(*q).person[i].age); printf("%s\t",(*q).person[i].tel); printf("%s\4t\n",(*q).person[i].addr); } printf("\n"); return 0; } int clear(p q) //清除所有人,直接让成员个数变为0 { (*q).n = 0 ; return 0; } int main() { int n=1; struct Contact people; //调用通讯录结构体 people.n = 0; //初始化n while(n) { menu(); printf("请选择你的骚操作:\n"); scanf("%d",&n); switch(n) //switch case语句分支选择不同函数实现不同作用 { case 1: { add(&people); break; } case 2: { delete(&people); break; } case 3: { find(&people); break; } case 4: { modify(&people); break; } case 5: { show(&people); break; } case 6: { clear(&people); break; } default: { return 0; break; } } } return 0; }
这样就实现了一个简单的通讯录。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持猪先飞。
上一篇: C指针原理教程之AT&T汇编
下一篇: C++中的函数修饰符深入讲解
相关文章
- 这篇文章主要为大家详细介绍了C语言实现放烟花的程序,有音乐播放,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-23
- 本篇文章主要介绍C语言中char的知识,并附有代码实例,以便大家在学习的时候更好的理解,有需要的可以看一下...2020-04-25
- 这篇文章主要介绍了详解如何将c语言文件打包成exe可执行程序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-25
- 这篇文章主要为大家详细介绍了python实现学生通讯录管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-25
- free函数是释放之前某一次malloc函数申请的空间,而且只是释放空间,并不改变指针的值。下面我们就来详细探讨下...2020-04-25
- 这篇文章主要介绍了C语言中计算正弦的相关函数总结,包括正弦和双曲线正弦以及反正弦的函数,需要的朋友可以参考下...2020-04-25
详解C语言中的rename()函数和remove()函数的使用方法
这篇文章主要介绍了详解C语言中的rename()函数和remove()函数的使用方法,是C语言入门学习中的基础知识,需要的朋友可以参考下...2020-04-25- 这篇文章主要介绍了C语言中求和、计算平均值、方差和标准差的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-12-10
- 本篇文章主要讲解C语言 基本语法,这里提供简单的示例和代码来详细讲解C语言的基本语法,开始学习C语言的朋友可以看一下,希望能够给你带来帮助...2021-09-18
- 这篇文章主要介绍了C语言中send()函数和sendto()函数的使用方法,是C语言入门学习中的基础知识,需要的朋友可以参考下...2020-04-25
- 今天小编就为大家分享一篇C语言实现从文件读入一个3*3数组,并计算每行的平均值,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-04-25
- 这篇文章主要介绍了利用aotu.js实现微信自动添加通讯录中的联系人,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-05-28
- 这篇文章主要介绍了C语言中memcpy 函数的用法详解的相关资料,需要的朋友可以参考下...2020-04-25
- 这篇文章主要介绍了使用C语言操作文件的基本函数整理,包括创建和打开以及关闭文件的操作方法,需要的朋友可以参考下...2020-04-25
- 这篇文章主要介绍了C语言中查找字符在字符串中出现的位置的方法,分别是strchr()函数和strrchr()函数的使用,需要的朋友可以参考下...2020-04-25
- 很多同学在学习c语言的时候是不是会碰到a++和++a都有甚么作用啊。今天我们就来探讨下...2020-04-25
- 这篇文章主要为大家详细介绍了原生JS实现微信通讯录,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-19
- 这篇文章主要对C语言中const关键字的用法进行了详细的分析介绍,需要的朋友可以参考下...2020-04-25
- 下面小编就为大家带来一篇C语言实现时间戳转日期的算法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-04-25
- 这篇文章主要介绍了C语言之整数划分问题(递归法)实例代码的相关资料,需要的朋友可以参考下...2020-04-25