利用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语言结构体实现通讯录相关推荐
- 利用C语言结构体实现学生成绩录入系统
利用C语言结构体实现学生成绩录入系统 ##功能介绍 密码功能嵌入于主函数中,初始密码为:123456(可根据需要修改) 输入1可以调用add函数对学生的基本信息以及成绩进行输入 输入2则调用print ...
- 利用c语言结构体和union实现类似c++的public,private的实现
最近在看strongswan源代码,看到strongswan的代码框架很有意思,用C语言实现类的思想.当我们编写完一个模块,我们需要提供的是H的文件给其他模块使用,我们希望H文件中就只能包含一些公有函 ...
- c语言结构体实现存储信息,用C语言结构体实现通讯录
实现一个通讯录: 通讯录可以用来存储1000个人的信息,每个人的信息包括: 姓名.性别.年龄.电话.住址 提供方法: 1. 添加联系人信息 2. 删除指定联系人信息 3. 查找指定联 ...
- 利用C语言结构体解决“各个国家体育竞赛获奖排名”问题
一.题目描述: 输入一个正整数N代表国家个数,紧接着输入国家名称,该国家获得金牌数目,获得银牌数目,获得铜牌数目.然后根据输入输出国家获奖排名,排名规则是首先按金牌排名,如果金牌相同则比较银 ...
- c语言结构体成员变量私有化,C语言中结构体变量私有化详解
C语言中结构体变量私有化详解 背景介绍 操作系统 : CentOS7.3.1611_x64 gcc版本 :4.8.5 什么是结构体? 在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚 ...
- ARM汇编语言实现peek()_ARM汇编之访问C语言结构体数据
前言 本文的写作目的在于装逼,没有要产生实际价值的意思. 前几天在做编译器的项目,有一个项目团队成员一直在问我ARM汇编能不能读C语言的结构体.我心想,我这生成ARM汇编的代码是用C++写的呀,又不是 ...
- 关于c语言结构体偏移的一点思考
注:此处只是利用了编译器的特性来计算结构体偏移 这句话就一笔带过,说得有点牵强附会.以后有时间自己再详细了解一下编译器的特性... more exceptional c++ 中文版 26页 https ...
- C语言结构体对齐的不足
该博文为原创文章,未经博主同意不得转载,如同意转载请注明博文出处 本文章博客地址:https://cplusplus.blog.csdn.net/article/details/105065657 C ...
- c语言结构体单元测试,C语言结构体单元练习.doc
C语言结构体单元练习 1.有以下定义和语句: struct student { int age; int num; }; struct student stu[3]={{1001,20},{1002, ...
最新文章
- QCon上海2015 架构实战热点前瞻
- 【数字信号处理】傅里叶变换性质 ( 频域函数的共轭对称分解 | 序列的傅里叶变换 | 傅里叶变换的共轭对称 | 傅里叶变换的共轭反对称 )
- Apache CXF实现WebService发布和调用
- Python连接字符串用join还是+
- VS如何更改项目类型?
- Linux下安装VMware Tools 的方法
- 在Heroku上部署(托管)Rails项目
- Python练习-从小就背不下来的99乘法表
- 推荐系统(3)-协同过滤2-矩阵分解算法
- linux 查看是否安装perl模块
- 【node内存泄漏耗尽之解决方法】
- jQuery Mobile中导航栏navbar的data-*选项
- 3月15日 卡尔曼与多元传感器融合
- 纯js实现下载功能【附上js代码】
- 小米出品的最干净的APP,浏览器界的一股“清流”!
- Simscape/Fluids液压元件 -- Pressure Reducing Valve(减压阀)
- Lenovo ThinkPad SL400安装克隆版的XP
- 比赛介绍评委的pp咋做_播音主持专业如何做自我介绍?
- oracle rac实现,炼数成金Oracle 12C RAC集群原理与管理实战 16课
- 孙溟㠭20载艺术之路