实现一个通讯录;

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

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

实现功能:

1. 添加联系人信息

2. 删除指定联系人信息

3. 查找指定联系人信息

4. 修改指定联系人信息

5. 显示所有联系人信息

6. 清空所有联系人

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

程序说明:

分模块实现

Phonelist.h 头文件——存放函数声明

fun.c ——函数实现

test.c——主函数

!Phonelist.h!//Phonelist.h

#pragma once

#ifndef __ARROPT_H__

#define __ARROPT_H__

typedef struct PHONE

{

char Name[10];

int Age;

char Sex[3];  //男/女

char Tele[13];

char Address[20];

//struct PHONE *next;

}PHONE,*Phone;

void ADD(PHONE *p);//添加

int DEL(Phone p, char*);//删除

void SEEK(Phone p, char *);//查找

void REVISE(Phone p, char *);//修改

void SHOW(Phone p);//显示

void FREE_ALL(Phone p);//清空

void SORT(Phone p, const size_t );//用快排排序必须将结构体第一个成员设为 Name,才可以实现

void menu();

#endif  //__ARROPT_H__

fun.c ——函数实现//fun.c

#include

#include

#include

#include"Phonelist.h"

#define MAX 1000  //通讯录最大存储人数

//*****************添加**************

void ADD(Phone p)

{

printf("请输入要录入联系人的姓名\n");

scanf_s("%s", p->Name, 10);//用scanf_s 函数实现字符串的输入

printf("请输入要录入联系人的性别(男/女)\n");

scanf_s("%s", p->Sex,3);

printf("请输入要录入联系人的年龄\n");

scanf_s("%d", &p->Age);

printf("请输入要录入联系人的电话\n");

scanf_s("%s",p->Tele, 13);

printf("请输入要录入联系人的住址\n");

scanf_s("%s", p->Address, 20);

}

//****************删除**************************

int DEL(Phone p,char *name)

{

int i = 0;

int tmp = 0;

Phone j = p;

while (i++

{

if (strcmp(j->Name, name) == 0)

{

j->Age = 0;

tmp = 1;

break;

}

j++;

}

if (tmp == 1)

{

printf("%s信息删除成功!\n", name);

return 1;

}

else

{

printf("%s信息删除失败,无此人!\n", name);

return 0;

}

}

//*********查找*************

void show_one(Phone j)

{

printf("Name: %s  ", j->Name);

printf("  Age: %d  ", j->Age);

printf("  Tele: %s  ", j->Tele);

printf("  Sex: %s  ", j->Sex);

printf("  Address: %s  \n", j->Address);

}

void SEEK(Phone p, char *name)

{

int i = 0;

int tmp = 0;

Phone j = p;

while (i++

{

if (strcmp(j->Name, name) == 0)

{

tmp = 1;

break;

}

j++;

}

if (tmp == 1)

{

printf("%s信息存在!\n", name);

show_one(j);

}

else

printf("%s信息查找失败,无此人!\n", name);

}

//***********修改**********

void REVISE(Phone p, char *name)

{

int i = 0;

int tmp = 0;

Phone j = p;

while (i++

{

if (strcmp(j->Name, name) == 0)

{

ADD(j);

tmp = 1;

break;

}

j++;

}

if (tmp == 1)

printf("%s信息修改成功!\n", name);

else

printf("%s信息修改失败,无此人!\n", name);

}

//************显示所有联系人********

void SHOW(Phone p)

{

Phone j = p;

int i = 0;

int count = 0;

while (i++

{

if (j->Age != 0)

{

show_one(j);

count++;

}

j++;

}

if(0==count)

printf("通讯录里还没有人,请选择1,添加您的好友\n");

}

//************清空****************

void FREE_ALL(Phone p)

{

Phone j = p;

int i = 0;

while (i Age != 0)

{

j->Age = 0;

j++;

}

printf("通讯录已清空!\n");

}

//*************以名字排序所有联系人********

void SORT(Phone p,const size_t num)

{

qsort(p, num, sizeof(*p), strcmp);//用快排排序必须将结构体第一个成员设为 Name,才可以实现

}

//***************菜单******************

void menu()

{

printf("***********************************************\n");

printf("*                  MENU                       *\n");

printf("***********************************************\n");

printf("*       1.添加联系人信息                      *\n");

printf("*       2.删除指定联系人信息                  *\n");

printf("*       3.查找指定联系人信息                  *\n");

printf("*       4.修改指定联系人信息                  *\n");

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

printf("*       6.清空所有联系人                      *\n");

printf("*       7.以名字排序所有联系人                *\n");

printf("*       0.退出                                *\n");

printf("***********************************************\n");

printf("***********************************************\n");

printf("请输入选择序号:->");

}

test.c——主函数#include

#include

#include

#include"Phonelist.h"

#define MAX 1000

PHONE PEO[MAX] = {0};

int main()

{

int choose = 1;

int i = 0;

int ret = 0;

while (choose)

{

menu();

scanf_s("%d", &choose);

char name[10];

if (choose >= 0 && choose

{

switch (choose)

{

i = 0;

case 1:

if (PEO[i].Age == 0 && i

ADD(&PEO[i++]);

break;

case 2:

printf("请输入要删除学生的名字\n");

scanf_s("%s", name, 10);

ret = DEL(PEO, name);

if (ret == 1)

i--;

break;

case 3:

printf("请输入要查找学生的名字\n");

scanf_s("%s", name, 10);

SEEK(PEO, name);

break;

case 4:

printf("请输入要修改学生的名字\n");

scanf_s("%s", name, 10);

REVISE(PEO, name);

break;

case 5:

SHOW(PEO);

break;

case 6:

FREE_ALL(PEO);

break;

case 7:

SORT(PEO, i - 1);

printf("排序结果: \n");

SHOW(PEO);

break;

default:

break;

}

}

}

system("pause");

return 0;

}

c语言手机通讯录退出程序,通讯录小程序(C/C++)C语言练习小程序相关推荐

  1. C语言手机通讯录系统

    C语言手机通讯录系统 任务3 题目:手机通讯录系统 任务描述 (1)设计一个对手机通讯录信息进行查询.编辑.添加.删除等操作的管理程序. (2)通讯录的基本信息包括姓名.年龄.联系电话.类别(朋友.家 ...

  2. 通讯录(文件版)程序编写(C语言版)

    目录 C语言实战项目之通讯录(文件版) 通讯录(初级静态版)链接: 通讯录(动态增长版)程序编写(C语言版)链接: C语言实战项目之通讯录(文件版) 问题导引: 问题思考: 问题解决步骤: 源程序: ...

  3. 通讯录管理系统C语言课程设计大作业,c语言课程设计报告---通讯录管理系统.doc...

    c语言课程设计报告---通讯录管理系统.doc Yangtze University College of Arts and Science 学生实习手册 (课程设计报告) 学 部 理 工 学 部 专 ...

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

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

  5. C语言课程设计:通讯录系统

    C语言课程设计:通讯录系统 [题目4]通讯录程序设计 设计一个实用的小型通讯录程序,具有添加,查询和删除功能.由姓名,籍贯,电话号码1,电话号码2,电子邮箱组成,姓名可以由字符和数字混合编码.电话号码 ...

  6. 下载android版本到手机通讯录,和通讯录下载-和通讯录 安卓版v6.0.4-PC6安卓网

    需要调用以下重要权限 - 查看更多权限列表[和通讯录] ● 获取定位允许应用通过网络或卫星对设备进行定位 ● 使用模拟地点来源进行测试创建模拟地点来源进行测试.恶意应用程序可能利用此选项覆盖由真实地点 ...

  7. android 微信 备份通讯录,微信通讯录备份在哪里?安卓手机的备份方法介绍

    由于科技的发展,只能手机也在不断的更新换代,一个品牌每年都会推出好几款机型,所以用户在使用这些科技产品的时候更新换代的速度也是比较快的,在更新的过程中难免会丢失一些数据,所以大家对于手机内的一些信息操 ...

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

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

  9. 用C语言编写简单的通讯录(大一课程作业)

    用C语言编写简单的通讯录(大一课程作业) 该系统概述: 因本人只学习了C语言的基础部分,所以编写该系统时只使用了一个C文件.存储通讯录信息以txt文件方式保存. 系统设计: 显示主菜单主函数:int ...

最新文章

  1. 读书笔记:编写高质量代码--web前端开发修炼之道(二:5章)
  2. 【python】Series和DataFrame的简单介绍
  3. Gradle 的使用
  4. maven安装错误履历
  5. python的for语句是否只有一种写法_跟老齐学Python之for循环语句
  6. python怎么编程输入坐标_python编程之API入门: (一)使用百度地图API查地理坐标...
  7. android中有哪些utils的作用,AndroidUtils
  8. 【下班后学Android】Android开发环境搭建
  9. Pycharm中运行Python代码的几种方式
  10. gearman mysql 扩展_Gearman的安装和使用
  11. url中找出IP地址
  12. 题目——求一个二进制串中连续的1或连续的0出现的最大次数
  13. mybatis主键返回
  14. asp.net 获取当前页面html代码,在asp.net中获取当前页面的URL的方法(推荐)
  15. 只读更新全程图解教程(转)
  16. 约束(Constraint)SQL约束有哪几种?【常用的约束】【有例子】【非空约束】【唯一约束】【主键约束】【外键约束】【检查约束】
  17. 大淘客的index.php,index.php · zenozhengs/大淘客CMS底部菜单修改版 - Gitee.com
  18. PTA 奇数值结点链表 超详细
  19. PyQt5试验:基于QTableWidget的应用
  20. 2022081班李亚楠20220914

热门文章

  1. etherchannel
  2. 黄聪:DEDECMS系统栏目、文章页面、分页面伪静态和域名301重定向详细方法
  3. 极富创意的404错误个性页面设计欣赏
  4. 洛谷P3616 富金森林公园
  5. LZW算法PHP实现方法 lzw_decompress php
  6. Android中隐藏光标
  7. python 安装 pip,setuptools
  8. 跳出圈子易,再入围城难,重新学编程,且学且珍惜
  9. C#interface定义及使用浅析
  10. 你认为手机会取代个人电脑吗?