实现一个通讯录;

通讯录可以用来存储联系人的信息,每个人的信息包括:

姓名、性别、年龄、电话、住址

提供方法:

1.添加联系人信息

2.删除指定联系人信息

3.查找指定联系人信息

4.修改指定联系人信息

5.显示所有联系人信息

6.以名字排序所有联系人

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>enum OP        //枚举定义switch转换的接口位置
{
NUL,
ADD,      //ADD=1
DELETE,    //DELETE=2
FIND,     //FIND=3
ALTER,    //ALTER=4
PRINT,    //PRINT=5
SORT     //SORT=6
};void menu()
{
printf("*************   简易通讯录      ************\n");
printf("************* 1.添加联系人信息  ************\n");
printf("************* 2.删除联系人信息  ************\n");
printf("************* 3.查找联系人信息  ************\n");
printf("************* 4.修改联系人信息  ************\n");
printf("************* 5.显示所有联系人  ************\n");
printf("************* 6.排序所有联系人  ************\n");
printf("************* 0.   退   出      ************\n");
}typedef struct man      //定义联系人相关信息的结构体
{
char name[15];
char sex[6];
char adrr[30];
char phone_num[10];
}Man;Man man[10];        //存储10个联系人信息int Add_man(Man man[],int n)    //添加联系人函数
{
int i = 0;
char sign = 0;        //继续添加时Y/N的输入
char x[10];
while (sign != 'n'&&sign != 'N')
{
printf("phone_number:");
scanf("%s",&man[n+i].phone_num);
printf("name:");
scanf("%s", &man[n + i].name);
printf("sex:");
scanf("%s",&man[n+i].sex);
printf("address:");
scanf("%s",&man[n+i].adrr);
gets(x);
printf("\n是否继续添加?(Y/N)");
scanf("%c",&sign);
i++;
}
return (n + i);
}int Delete_man(Man man[],int n)    //删除联系人信息
{
char a[10];
int i = 0;
int j = 0;
printf("请输入要删除的联系人姓名:");
scanf("%s",a);
while (strcmp(man[i].name, a) != 0 && i < n)
{
i++;
}
if (i == n)
{
printf("查无此人,输入有误!");
return (n);
}
for (j = i; j < n - 1; j++)
{
strcpy(man[j].phone_num, man[j + 1].phone_num);
strcpy(man[j].name, man[j + 1].name);
strcpy(man[j].sex, man[j + 1].sex);
strcpy(man[j].adrr, man[j + 1].adrr);
}
printf("Delete success!\n\n\n");
return (n - 1);
}void Alter_man(Man man[],int n)    //修改联系人信息
{
char a[10];
int i = 0;
printf("请输入要修改的联系人姓名:");
scanf("%s",a);
while (strcmp(man[i].name, a) != 0 && i < n)
{
i++;
}
if (i == n)
{
printf("查无此人,输入有误!\n");
}
printf("phone_number:");
scanf("%s",&man[i].phone_num);
printf("name:");
scanf("%s",&man[i].name);
printf("sex:");
scanf("%s",&man[i].sex);
printf("address:");
scanf("%s",&man[i].adrr);
printf("Alter success!\n\n\n");
}void Find_man(Man man[],int n)    //查找相关联系人
{
int choose = 0;
printf("******************************\n");
printf("********  查询方式  **********\n");
printf("*****   1.people_name    *****\n");
printf("******************************\n");
printf("*****   2.phone_number   *****\n");
printf("******************************\n");
printf("choose one find way:");
scanf("%d",&choose);
while (choose != 1 && choose != 2)
{
printf("输入有误,请重新输入!");
scanf("%d",&choose);
}
if (choose == 1)
{
char a[10];
int i = 0;
printf("请输入要查找的联系人姓名:");
scanf("%s",a);
while (strcmp(man[i].name, a) != 0 && i < n)
{
i++;
}
if (i == n)
{
printf("\n\n查无此人!\n\n");
}
else
{
printf("phone_number:%s\n", man[i].phone_num);
printf("name:%s\n", man[i].name);
printf("sex:%s\n", man[i].sex);
printf("address:%s\n", man[i].adrr);
}
}
if (choose == 2)
{
char a[10];
int i = 0;
printf("请输入要查找的联系人电话:");
scanf("%s",a);
while (strcmp(man[i].phone_num, a) != 0 && i < n)
{
i++;
}
if (i == n)
{
printf("\n\n查无此号!\n\n");
}
else
{
printf("phone_number:%s\n", &man[i].phone_num);
printf("name:%s\n", man[i].name);
printf("sex:%s\n", man[i].sex);
printf("address:%s\n", man[i].adrr);
}
}
}void Print_man(Man man[],int n)    //显示所有联系人信息
{
int i = 0;
printf("----------------------------------------------\n");
printf("电话姓名性别地址\n");
printf("----------------------------------------------\n");
for (i = 0; i < n ; i++)
{
printf("%s \t %s \t %s \t %s\n",man[i].phone_num,man[i].name,man[i].sex,man[i].adrr);
}
printf("----------------------------------------------\n");
}void Sort_man(Man man[],int n)    //按联系人名称排序所有联系人
{
int i = 0;
int j = 0;
struct man tmp;
for (i = 0; i < n - 1; i++)
{
for (j = i; j < n; j++)
{
if (strcmp(man[i].name, man[j].name)>0)
{
tmp = man[i];
man[i] = man[j];
man[j] = tmp;
}
}
}
for (i = 0; i < n ; i++)
{
printf("%s \t %s \t %s \t %s\n", man[i].phone_num, man[i].name, man[i].sex, man[i].adrr);
}
}//主函数
int main()
{
int input = 1;
int ret = 0;
while (input)
{
menu();
printf("请输入您的选项:>");
scanf("%d",&input);
switch (input)
{
case ADD:          //利用枚举定义的函数名替代了case后的1,2,3,4等,使得每一个调用函数的入口有意义,而非毫无意义的单纯数字
ret=Add_man(man,ret);
break;
case DELETE:
ret=Delete_man(man,ret);
break;
case FIND:
Find_man(man,ret);
break;
case ALTER:
Alter_man(man,ret);
break;
case PRINT:
Print_man(man,ret);
break;
case SORT:
Sort_man(man,ret);
break;
case 0:
return 0;
break;
default:
break;
}
}
return 0;
}

联系人的添加:

联系人的显示:

联系人的排序(按名称排序):

联系人信息的修改:

修改后的联系人显示:

联系人的删除:

查找联系人(按电话或姓名查找):

1.按姓名查找

2.按电话查找:

转载于:https://blog.51cto.com/10738469/1717826

C语言实现简易通讯录相关推荐

  1. c语言通讯录打电话,C语言实现简易通讯录 | 术与道的分享

    #include #include #include #include #include #pragma warning (disable:4996) enum Contact //枚举变量 { Qu ...

  2. c语言个人通讯录管理系统实验报告_C语言实现个人通讯录管理系统

    如何用c语言制作简易的个人通讯录管理系统?想必这是每一位初步学习c语言的同学需要解决的一个大问题.如何将这些数据类型不完全相同的数据元素存储并访问呢?采用结构体便能轻松解决这个问题! #include ...

  3. C#简易通讯录的开发试题

    题目:简易通讯录的开发 语言和环境 语言:C#,WinForms 环境:Visual Studio 2010,SQL Server 2008 二.  实现目标 简易通讯录,要求使用.NET WinFo ...

  4. android运用 sqlite 实现简单的通讯录_大一新生作品:利用 C 语言实现quot;通讯录管理系统quot;,直言太简单...

    说明: 本系统基于C语言实现班级通讯录管理系统,为大一时学习C语言刚入门所做的课程设计.功能包括增.删.查.改等,非常适合初学者练手.通讯录包括的个人信息有姓名.学号.性别.籍贯.政治面貌.手机号.Q ...

  5. C++实现简易通讯录

    功能和效果图 功能 通讯录实现联系人查找,添加联系人,删除联系人,联系人信息修改 效果图 实现代码 创建结构体 typedef struct News {string name; //姓名string ...

  6. c语言3级菜单_大一新生作品:利用 C 语言实现quot;通讯录管理系统quot;,直言太简单...

    说明: 本系统基于C语言实现班级通讯录管理系统,为大一时学习C语言刚入门所做的课程设计.功能包括增.删.查.改等,非常适合初学者练手.通讯录包括的个人信息有姓名.学号.性别.籍贯.政治面貌.手机号.Q ...

  7. c语言计算器程序代码 链栈,【C语言】简易科学计算器源代码(链栈应用)(原创).doc...

    [C语言]简易科学计算器源代码(链栈应用)(原创) 用到的是算符优先法的思想,现摘自严蔚敏的数据结构(C语言版)的3.2.5章来详细说明算符优先法的思想: (摘抄结束) 我给出的计算器功能有:支持欧拉 ...

  8. 基于 c++ 语言的简易 vim 编辑器

    问题描述 现要求你设计出一个基于 c/c++ 语言的简易 vim 编辑器. 基本要求 在命令行模式下,实现 vim 的一些基本功能,必须实现的功能包括以下内容: 编辑器有两个模式,normal 和 i ...

  9. C 语言实现简易区块链

    C 语言实现简易区块链 总结:C 语言真不是我这种菜鸡所能驾驭的- 无奈哈希函数太麻烦,就采用 base64 替代下哈希函数吧,其他符合区块链理论 #include <stdio.h> # ...

最新文章

  1. wsl for pycharm vscode
  2. 一台物理机上VMware虚拟机实现拨号上网同时内网通信
  3. PyCharm修改镜像源无用?
  4. 水木告白工作室:Java从零入门之模仿头条资讯(一)
  5. Animator忽视TimeScale
  6. 【solitidy】生成随机数算法
  7. uv422转换为yuv420_利用libswscale转换yuyv422到yuv422p或rgb之间的转换, 视频翻转
  8. 误码率matlab怎么计算,PSK理论误码率与实际误码率MATLAB仿真程序(最新整理)
  9. EasyNLP 发布融合语言学和事实知识的中文预训练模型 CKBERT
  10. C#WebApi下载文件
  11. IO与文件读写---使用Apache commons io包提高读写效率
  12. 【C语言你真的学会了吗】C语言深度剖析(1)【关键字深度剖析】
  13. oracle dbs文件夹,Oracle10g 目录$ORACLE_HOME/dbs 下有文件 hc_.dat ,用处是 ?
  14. 中英翻译《The number thirteen数字13》
  15. JVM、Dalvik、ART
  16. java获取word图片_java代码获取word文件中的图片
  17. wincc 数据库的连接方法
  18. 青龙面板-饿l么(更新)
  19. mysql drop fulltext_MySQL使用全文索引(fulltext index)
  20. Java Type接口 运行时获取泛型类型

热门文章

  1. 【Git】如何撤销改动
  2. Swift 懒性属性
  3. Chrome浏览器内部协议Chrome://收集
  4. 遇到的问题和解决方案
  5. 为什么要使用main函数
  6. 理解class.forName()
  7. [转]php-mobile-detect
  8. Ubuntu中Apache修改DocumentRoot(修改网站根目录)
  9. CSS HACK:IE6、IE7、IE8、Firefox兼容性问题解决方案
  10. Maven项目配置EL表达式原样输出解决方法