#include

#include

#include

#include

#include

#pragma warning (disable:4996)

enum Contact //枚举变量

{

Quit, //默认为0,下面依次递增+1

Add, //1

Delect, //2

Select, //3

Alter, //4

Show, //5

Empty, //6

Sort //7

};

//打印菜单

void menu()

{

printf("#########################################################\n");

printf("############## C语言实现简易通讯录 #############\n");

printf("############## 1.添加联系人 #############\n");

printf("############## 2.删除联系人 #############\n");

printf("############## 3.查找联系人 #############\n");

printf("############## 4.修改联系人 #############\n");

printf("############## 5.显示所有联系人 #############\n");

printf("############## 6.清空联系人 #############\n");

printf("############## 7.按联系人名字排序 #############\n");

printf("############## 0.退出 #############");

}

//定义一个结构体

typedef struct Peo

{

char name[10];

char sex[5];

char Old[10];

char Phone_num[20];

char adrress[30];

}people;

people Peo[1000]; //定义一个可以存储1000用户的结构图数组

//添加联系人

int Add_Peo(people Peo[], int n)

{

int i = 0;

char select = 0;

char Rem[20];

while (select != 'N') //判断是否继续添加联系人

{

printf("姓名:");

scanf("%s", &Peo[n + i].name);

printf("性别:");

scanf("%s", &Peo[n + i].sex);

printf("年龄:");

scanf("%s", &Peo[n + i].Old);

printf("电话:");

scanf("%s", &Peo[n + i].Phone_num);

printf("地址:");

scanf("%s", &Peo[n + i].adrress);

gets(Rem); //读取字符串

printf("\n是否继续添加?(Y/N):");

scanf("%c", &select);

i++;

}

return (n + i);

}

//删除联系人

int Del_Peo(people Peo[], int n)

{

int i = 0;

int j = 0;

char Name[15];

printf("请输入你要删除联系人的姓名:");

scanf("%s", Name);

while ((strcmp(Peo[i].name, Name) != 0) && (i < n))

{ //判断输入的与结构体数组中存在的是否匹配,此处为不匹配,且未到达联系人上限

i++;

}

if (i == n) //结构体的出口,说明到达联系人上限

{

printf("没有此联系人!\n\n");

return n;

}

for (j = i; j < n - 1; j++) //找到匹配的联系人,删除后,将删除处之后的数据前移一位

{

strcpy(Peo[j].name, Peo[j + 1].name);

strcpy(Peo[j].sex, Peo[j + 1].sex);

strcpy(Peo[j].Old, Peo[j + 1].Old);

strcpy(Peo[j].Phone_num, Peo[j + 1].Phone_num);

strcpy(Peo[j].adrress, Peo[j + 1].adrress);

}

printf("删除成功!\n");

return (n - 1);

}

//查找联系人

void Sel_Peo(people Peo[], int n)

{

char Name[15];

int i = 0;

printf("请输入要查看联系人的姓名:");

scanf("%s", Name);

while ((strcmp(Peo[i].name, Name) != 0) && (i < n))

{

i++;

}

if (i == n)

{

printf("查找的联系人不存在!\n\n");

}

else

{

printf("姓名:%s\n", Peo[i].name);

printf("性别:%s\n", Peo[i].sex);

printf("年龄:%s\n", Peo[i].Old);

printf("电话:%s\n", Peo[i].Phone_num);

printf("地址:%s\n", Peo[i].adrress);

}

printf("\n");

}

//修改联系人信息

void Alter_Peo(people Peo[], int n)

{

int i = 0;

char Name[15];

printf("请输入你要修改的联系人姓名:");

scanf("%s", Name);

while ((strcmp(Peo[i].name, Name) != 0) && (i < n))

{

i++;

}

if (i == n)

{

printf("未查到此联系人!\n\n");

}

else

{

printf("姓名:");

scanf("%s", &Peo[i].name);

printf("性别:");

scanf("%s", &Peo[i].sex);

printf("年龄:");

scanf("%s", &Peo[i].Old);

printf("电话:");

scanf("%s", &Peo[i].Phone_num);

printf("地址:");

scanf("%s", &Peo[i].adrress);

}

}

//显示所有联系人信息

void Show_Peo(people Peo[], int n)

{

int i = 0;

printf(" 姓名 性别 年龄 电话 地址\n");

for (i = 0; i < n; i++)

{

printf("%7s%6s%8s%14s%15s\n", Peo[i].name, Peo[i].sex, Peo[i].Old, Peo[i].Phone_num, Peo[i].adrress);

}

printf("\n");

}

//清空联系人信息

void Empty_Peo(people Peo[], int n)

{

int i = 0;

for (i = 0; i < n; i++)

{

*Peo[i].name = '\0';

*Peo[i].sex = '\0';

*Peo[i].Old = '\0';

*Peo[i].Phone_num = '\0';

*Peo[i].adrress = '\0';

}

printf("\n");

}

//按联系人名字排序

void Sort_Peo(people Peo[], int n)

{

int i = 0;

int j = 0;

struct Peo tmp;

for (i = 0; i < n - 1; i++)

{

for (j = i; j < n; j++)

{

if ((strcmp(Peo[i].name, Peo[j].name)) > 0)

{

tmp = Peo[i];

Peo[i] = Peo[j];

Peo[j] = tmp;

}

}

}

}

int main()

{

int input = 1;

int ret = 0;

while (input)

{

menu();

printf("\n请选择-->");

scanf("%d", &input);

switch (input)

{

case Add:

ret = Add_Peo(Peo, ret);

break;

case Delect:

ret = Del_Peo(Peo, ret);

break;

case Select:

Sel_Peo(Peo, ret);

break;

case Alter:

Alter_Peo(Peo, ret);

break;

case Show:

Show_Peo(Peo, ret);

break;

case Empty:

Empty_Peo(Peo, ret);

break;

case Sort:

Sort_Peo(Peo, ret);

break;

case Quit:

exit(0);

break;

default:

break;

}

}

system("pause");

return 0;

}

c语言通讯录打电话,C语言实现简易通讯录 | 术与道的分享相关推荐

  1. JAVA散列表个人通讯录_散列表实现简易通讯录

    散列表实现通讯录 1.项目研究背景与意义 背景:随着信息活动在国民经济中主导地位的确立和信息产业的崛起,信息资源管理作为一个专有名词和独立的学科逐渐发展起来.如何积极开发.合理配置和有效利用信息资源, ...

  2. c语言对称矩阵的压缩存储_C++实现对称矩阵的压缩存储 | 术与道的分享

    压缩存储数据是一个比较高效.节省空间的方法,当我们存储的数据足够大时,我们要尽量避免数据的冗余重复,减少空间的浪费.对阵矩阵的压缩存储就是一个简单的实例. 算法分析与设计 如下图所示,我们要存储的是一 ...

  3. C语言实现简易通讯录

    实现一个通讯录: 通讯录可以用来存储联系人的信息,每个人的信息包括: 姓名.性别.年龄.电话.住址 提供方法: 1.添加联系人信息 2.删除指定联系人信息 3.查找指定联系人信息 4.修改指定联系人信 ...

  4. 个人通讯管理程序C语言,个人通讯录管理系统C语言源程序(优秀版)[1]

    个人通讯录管理系统C语言源程序(优秀版)[1] 更新时间:2017/2/22 1:03:00  浏览量:613  手机版 C语言个人通讯录系统源程序: #include /*头文件*/ #includ ...

  5. 【C语言进阶】C语言程序设计:动态通讯录(顺序表实现)

    目录 动态通讯录的实现 一.实验的目的和意义 二.实验内容描述 三.功能描述 四.数据结构 1.三大模块 2.结构设计 3.动态开辟 4.文件操作 5.主要函数 五.流程图及模块算法 1.Contac ...

  6. 【C语言进阶】C语言实现通讯录

    目录 一.引言 二.如何实现通讯录 1.通讯录要求 2.创建主菜单 3.初步设置主函数 4.创建通讯录 5.初始化通讯录 6.case 1(增加联系人) 7.case 5(显示通讯录中的信息) 8.c ...

  7. C语言 --- 动态内存管理(上)+优化版通讯录+笔试题

    文章目录 前言 一.为什么存在动态内存分配 二.动态内存函数的介绍 2.1.malloc函数+free函数 2.2.calloc函数+free函数 2.3.realloc函数 三.常见的动态内存错误 ...

  8. 数据结构(C语言)课设1——单位员工通讯录管理系统(线性表应用)

    数据结构(C语言)课设1--单位员工通讯录管理系统(线性表应用) 题目要求: 为某个单位建立一个员工通讯录管理系统,可以方便查询每一个员工的手机号.及电子邮箱.其功能包括通讯录链表的建立.员工通讯信息 ...

  9. 通讯录管理系统 C语言课程设计实验报告

    通讯录管理系统C语言课程设计 一.实验目的 1.巩固和加深学生对C语言课程的基本知识的理解和掌握 2.掌握C语言编程和程序调试的基本技能 3.利用C语言进行基本的软件设计 4.掌握书写程序设计说明文档 ...

最新文章

  1. vue中常碰见的坑_Vue 与 Vuex 的第一次接触遇到的坑
  2. SAP MM已经转成PO的采购申请Item依旧可以被删除?
  3. 创建WCF第一个应用程序
  4. Neural Networks神经网络编程入门
  5. 吴恩达 coursera AI 专项四第四课总结+作业答案
  6. ef 数据迁移mysql_Windows下重装xampp并做MySQL数据迁移的步骤
  7. arm引脚复用linux,ARM知识分享-i.MX6Q GPIO复用修改方法
  8. 测试面试题集-3.生活物品测试:行李箱、电梯、洗衣机
  9. 如何暴力破解wifi密码
  10. java满天星星代码_纯Java代码实现流星划过天空
  11. Verilog TestBench 高级教程
  12. CSRF攻击、防止CSRF攻击原理及配置
  13. 蛮力法基本了解及练习
  14. Java课程实验报告一:初识java
  15. 区块链之java(六) 合约监听
  16. JDBC基础工具类的实现
  17. sketch创建组建
  18. YOLOv5被禁用!Kaggle全球小麦检测竞赛结果惹争议
  19. 这几款免费的解说配音软件,非常适合制作解说视频
  20. BOM、body的位置属性

热门文章

  1. 阿里云K8S容器服务的使用
  2. 2022-2028年中国轻型输送带行业市场发展规模及市场分析预测报告
  3. Qt中如何改变三角形图形项的包围盒
  4. Win10系统如何在防火墙里开放端口
  5. 受用一生的高效 PyCharm 使用技巧(六)
  6. 关于python 中的__future__模块
  7. LeetCode简单题之自除数
  8. Linux实现ffmpeg H.265视频编码
  9. MindSpore数据集mindspore::dataset
  10. h265player开发