C语言实现简易通讯录实例

目录
  • 一、问题描述
  • 二、功能介绍
  • 二、实现流程
    • 1.创建通讯录
    • 2.创建源文件test.c
    • 3.创建源文件contact.c
    • 4.删除通讯录联系人信息 (DelContact函数实现)
    • 5.查找通讯录联系人信息( SearchContact函数实现)
    • 6.修改联系人信息(ModifyContact函数实现)
  • 总结:

一、问题描述

用C语言来写一个简易的通讯录

二、功能介绍

通讯录
1.通讯录中能够存放1000个人的信息
每个人的信息:
名字,年龄,性别,电话,地址
2.增加人的信息
3.删除人的信息
4.修改指定人的信息
5.查找指定人的信息
6.排序

二、实现流程

1.创建通讯录

1.创建头文件contact.h

头文件contact.h用来实现类型的定义和函数的声明。

2.定义结构体类型(struct peoInfo)

一个人的信息包含名字,年龄,性别,电话,地址,所以我们要定义一个结构体类型才能完整的表述。

写一个结构体类型struct peoInfo存放一个人的信息

代码如下:

/类型的定义
typedef struct peoInfo
{
	char name[MAX_NAME];//名字
	char sex[MAX_SEX];//性别
	int age;//年龄
	char tele[MAX_TELE];//电话
	char addr[MAX_ADDR];//地址
}peoInfo;

typedef(类型重命名),struct peoInfo重命名为peoInfo。

3.定义通讯录结构体类型(struct contact)

因为要存放1000个这样的人的信息,所以我们创建一个结构体类型的数组data。再创建一个变量sz来表示这个数组的下标,data数组中存第一个人信息的时候,我们放在下标为sz的位置,这个时候让我们的sz等于0,存第二个人的信息的时候,让我们的sz等于1,这样后续就方便我们通过下标的方式找到存入的每一个人的信息。

代码如下:

peoInfo data[MAX];//存放添加进来的人的信息
	int sz;//记录的是通讯录中有效信息的个数

上述代码加起来就构成了我们的通讯录,很明显这也是一个结构体。

代码如下:

//通讯录
typedef struct contact
{
	peoInfo data[MAX];//存放添加进来的人的信息
	int sz;//记录的是通讯录中有效信息的个数
}contact;

4.#define定义标识符常量

为了后续我们方便随时调整通讯录的大小所以我们把数组的数字挨个用#define定义标识符常量

代码如下:

#define MAX_NAME 20
#define MAX_SEX 10
#define MAX_TELE 12
#define MAX_ADDR 30
#define MAX 1000

5.功能实现函数的声明

/初始化通讯录
void Initcontact(contact* cp);

//增加联系人信息
void AddContact(contact* cp);

//打印联系人信息
void PintContact(const contact* cp);

//删除联系人信息
void DelContact(contact* cp);

//查找联系人信息
void SearchContact(contact* cp);

//修改联系人信息
void ModifyContact(contact* cp);

2.创建源文件test.c

源文件test.c测试通讯录的模块

通讯录有了之后,我们要写出通讯录的基本操作逻辑,选择增加联系人,选择删除联系人,选择修改联系人......选择错误,重新选择,选择重新开始等等。

1.打印菜单

代码如下:

void menu()
{
	printf("******************************\n");
	printf("*****1.add     2.del *********\n");
	printf("*****3.search  4.modify*******\n");
	printf("*****5.sort    6.print *******\n");
	printf("*****0.exit    ***************\n");
	printf("******************************\n");
}

2.枚举方法定义编号

代码如下:

enum Option
{
	EXIT,
	ADD,
	DEL,
	SEARCH,
	MODIFY,
	SORT,
	PRINT
};

3.主文件的实现

代码如下

int main()
{
	int input = 0;
	//创建通讯录
	contact con;//通讯录
	//初始化通讯录
	Initcontact(&con);
	do
	{
		menu();
		printf("请选择:>");
		scanf("%d", &input);
		switch (input)
		{
		case ADD:
			//增加人的信息
			AddContact(&con);
			break;
		case DEL:
			//删除人的信息
			DelContact(&con);
			break;
		case SEARCH:
			//查找联系人的信息
			SearchContact(&con);
			break;
		case MODIFY:
			//修改联系人信息
			ModifyContact(&con);
			break;
		case SORT:
			break;
		case PRINT:
			//打印人的信息
			PintContact(&con);
			break;
		case EXIT:
			printf("退出登录\n");
			break;
		default:
			printf("选择错误,请重新选择\n");
			break;
		}

	} while (input);
	return 0;
}

写出一个菜单来供用户们选择自己想要的功能,采用枚举的方式让程序员看代码的时候能一目了然,一眼就也可以看出来这里要实现的是什么功能。

3.创建源文件contact.c

源文件contact.c来实现我们想要的功能(函数的实现)

1.初始化通讯录为0(Initcontact函数实现)

//初始化通讯录为0
void Initcontact(contact* cp)
{
	cp->sz = 0;//通讯录中人的数量先初始化为0
	memset(cp->data, 0, sizeof(cp->data));//数组内存中每个字节初始化为0

2.增加通讯录联系人信息(AddContact函数实现)

先判断通讯录人数是不是满了,满了就无法添加,没满就添加联系人信息。

代码如下:

//增加联系人的信息
void AddContact(contact* cp)
{
	if (cp->sz == MAX)
	{
		printf("通讯录已满,无法添加\n");
		return;
	}
	//增加一个人的信息
	printf("请输入名字:>");
	scanf("%s", cp->data[cp->sz].name);
	printf("请输入年龄:>");
	scanf("%d", &(cp->data[cp->sz].age));
	printf("请输入性别:>");
	scanf("%s", cp->data[cp->sz].sex);
	printf("请输入电话:>");
	scanf("%s", cp->data[cp->sz].tele);
	printf("请输入地址:>");
	scanf("%s", cp->data[cp->sz].addr);
	cp->sz++;
	printf("增加成功\n");

}

3.打印通讯录联系人信息( PintContact函数实现)

代码如下:

//打印联系人的信息
void PintContact(const contact* cp)
{
	//打印标题
	int i = 0;
	printf("%-5s\t %-5s\t %-5s\t %-12s\t %-20s\n", "名字", "年龄", "性别", "电话", "地址");
	for (i = 0; i < cp->sz; i++)
	{
		printf("%-5s\t %-5d\t %-5s\t %-12s\t %-20s\n",
			cp ->data[i].name,
			cp -> data[i].age,
			cp -> data[i].sex,
			cp -> data[i].tele,
			cp -> data[i].addr);
	}
}

增加完联系人信息之后我们可以打印出来看一看。

4.删除通讯录联系人信息 (DelContact函数实现)

首先判断通讯录里有没有联系人,没有就无需删除,有的话就根据查找函数查找通讯录成员名字来删除所对应的信息。

代码如下:

static int  FindByName(contact* cp, char name[])
{
	int i = 0;
	for (i = 0; i < cp->sz; i++)
	{
		if (strcmp(cp->data[i].name, name) == 0)
		{
			return i;
		}
	}
	return -1;
}

//删除联系人信息
void DelContact(contact* cp)
{
	char name[MAX_NAME] = { 0 };
	if (cp->sz == 0)
	{
		printf("通讯录为空,无需删除\n");
		return;
	}
	//1.查找要删除的人
	//有没有
	printf("请输入要删除人的名字\n");
	scanf("%s", name);

	int pos = FindByName(cp, name);

		if (pos == -1)
		{
			printf("要删除的人不存在\n");
			return;
		}
		//2.删除
		int i = 0;
		for (i = pos; i < cp -> sz - 1; i++)
		{
			cp->data[i] = cp->data[i + 1];
		}
		cp->sz--;
		printf("删除成功\n");

}

5.查找通讯录联系人信息( SearchContact函数实现)

根据查找函数查找通讯录成员名字来删除所对应的信息。

代码如下

/查找联系人信息
void SearchContact(contact* cp)
{
	char name[MAX_NAME] = { 0 };
	printf("请输入要查找人的名字\n");
	scanf("%s", name);
	int pos = FindByName(cp, name);

	if (pos == -1)
	{
		printf("要查找的人不存在\n");
		return;
	}
	else
	{
		printf("%-5s\t %-5s\t %-5s\t %-12s\t %-20s\n", "名字", "年龄", "性别", "电话", "地址");
		printf("%-5s\t %-5d\t %-5s\t %-12s\t %-20s\n",
			cp->data[pos].name,
			cp->data[pos].age,
			cp->data[pos].sex,
			cp->data[pos].tele,
			cp->data[pos].addr);

	}
}

6.修改联系人信息(ModifyContact函数实现)

根据查找函数查找通讯录成员名字来修改所对应的信息。

代码如下:

//修改联系人的信息
void ModifyContact(contact* cp)
{
	char name[MAX_NAME] = { 0 };
	printf("请输入要修改人的名字\n");
	scanf("%s", name);
	int pos = FindByName(cp, name);

	if (pos == -1)
	{
		printf("要修改的人不存在\n");
		return;
	}
	else
	{
		printf("请输入名字:>");
		scanf("%s", cp->data[pos].name);
		printf("请输入年龄:>");
		scanf("%d", &(cp->data[pos].age));
		printf("请输入性别:>");
		scanf("%s", cp->data[pos].sex);
		printf("请输入电话:>");
		scanf("%s", cp->data[pos].tele);
		printf("请输入地址:>");
		scanf("%s", cp->data[pos].addr);
		printf("修改成功\n");

	}
}

部分功能结果图:

总结:

上述简单实现了通讯录的增删改查功能,写出了一个简易通讯录

到此这篇关于C语言实现简易通讯录实例的文章就介绍到这了,更多相关C语言通讯录内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C语言实现简易通讯录完整流程

    目标:通讯录可以存放1000个人信息,人的信息:性别名字年龄电话住址 菜单打印 1.增加联系人 2.删除联系人 3.查找联系人(修改) 4.名字排序联系人 5.展示 6.清空 分析: 首先通讯录存放联系人信息,还需知晓联系人个数,因此是个结构体类型 其次人的信息类型多,因此每个联系人也应为结构体类型 说明: 每个标题下展示的代码顺序:test.c (主函数测试运行)  ->  contact.h  (功能函数声明) ->  contact.c  (功能函数实现) 菜单打印: void menu

  • C语言实现可排序通讯录的示例代码

    目录 1.目的 2.分部流程 1.初始化通讯录 2.添加联系人 3.判断联系人是否存在 4.判断通讯录是否已满 5.判断通讯录是否为空 6.通讯录扩容 7.核心函数 8.查找联系人 9.修改联系人 10.清空通讯录 11.删除联系人 12.显示通讯录 13.比较联系人 14.通讯录排序 3.总代码展示 1.目的 写一个实用型通讯录,它有如下功能: 显示目录 void ShowMenu() { printf("#######################\n"); printf(&qu

  • 详解C语言之实现通讯录

    目录 基本思路和代码实现 其他探讨 总结 基本思路和代码实现 为了代码清晰易读,我们创建一个Main.c源文件用来实现代码的基本逻辑.创建一个Contact.h源文件用于封装实现功能的函数,创建Contact.h头文件用于函数的声明. 首先就是构架代码基本框架,在主函数中实现打印菜单和循环的功能 (这里为了好截图switch里的语句缩进得比较紧凑) 基本逻辑实现后开始考虑创建通讯录,通讯录里会记录人的信息.所以要先能够描述人的信息: 创建表达人的信息的结构体类型,在Contact.h中定义: 而

  • 用c语言编写一个通讯录代码详解

    目录 实现通讯录的思路如下: 总结 实现通讯录的思路如下: 1.程序运行起来时用户首先要看到菜单栏选项并且对应菜单栏所给出的选项做出选择,这里我们简单设计一个Menu()函数可以让用户看见可选项目: 2.用户可选的范围应该是1~7,为了避免用户做出超出范围的选择我们可以用switch语句来判断用户的选择若用户输入的数字非法还可以让用户继续选择,而继续选择这个动作需要用到while语句,用户对通讯录的不断操作也需要用到while语句: 3.用户选择不同的选项,程序就要调用对应的函数来实现其功能并且

  • C语言实现通讯录的详细代码

    目录 (一)实现思路 1.通讯录功能 2.模块化实现各方面的功能 3.代码实现 (二)源代码 A.test.c B.Contact.h C.Contact.c (一)实现思路 1.通讯录功能 添加好友,删除好友,查找好友,修改好友信息,对好友进行排序 2.模块化实现各方面的功能 a. test.c 测试通讯录功能 b. Contact.c 实现通讯录功能 c. Contact.h 包含通讯录实现的头文件 3.代码实现 (二)源代码 A.test.c #define _CRT_SECURE_NO_

  • C语言实现简易通讯录实例

    目录 一.问题描述 二.功能介绍 二.实现流程 1.创建通讯录 2.创建源文件test.c 3.创建源文件contact.c 4.删除通讯录联系人信息 (DelContact函数实现) 5.查找通讯录联系人信息( SearchContact函数实现) 6.修改联系人信息(ModifyContact函数实现) 总结: 一.问题描述 用C语言来写一个简易的通讯录 二.功能介绍 通讯录1.通讯录中能够存放1000个人的信息每个人的信息:名字,年龄,性别,电话,地址2.增加人的信息3.删除人的信息4.修

  • C语言实现简易通讯录

    本文实例为大家分享了C语言实现简易通讯录的具体代码,供大家参考,具体内容如下 功能描述: 1.存储联系人的相关信息,包括姓名.性别.电话号码.备注 2.可输出通讯录全部信息 3.清空通讯录的 4.用户交互界面 5.插入新联系人信息 6.查找联系人,包括"按姓名查找"和"按电话号查找"两种 7.删除联系人,包括"按姓名删除"和"按电话号删除"两种 8.按性别筛选联系人信息 在本次通讯录的编写代码中,涉及到了C高级和数据结构的一些

  • C语言实现简易通讯录功能

    本文实例为大家分享了C语言实现简易通讯录的具体代码,供大家参考,具体内容如下 这两天用C语言编写了一个简易版通讯录(学生信息管理) ,大致功能有添加信息,查看信息(自动按姓名排序,printf输出带颜色字体),查找信息(按姓名查找),删除信息(输入姓名删除相关信息),修改信息(输入修改人的名字,可选择修改其任意信息)和退出 . #include <stdio.h> #include <string.h> #include <stdlib.h> #define SIZE

  • C语言实现简易通讯录(静态版本)的代码分享

    目录 一.通讯录 1.演示效果 2.完整代码 二.代码解析 1.宏定义及结构体声明 2.主菜单函数 3.主函数 4.查找函数 5.初始化联系人信息 6.添加联系人信息 7.显示所有联系人信息 8.删除指定联系人信息 9.修改联系人信息 10.查找指定联系人 11.按照姓氏对联系人信息排序 12.清空所有联系人信息 一.通讯录 1.演示效果 2.完整代码 #define _CRT_SECURE_NO_WARNINGS 1 //#include "ConTacts.h" #include

  • 用C语言实现简易通讯录

    C语言实现一个通讯录,通讯录可以用来存储1000个人的信息,每个人的信息包括: 姓名.性别.年龄.电话.住址 **提供方法: 1. 添加联系人信息 2. 删除指定联系人信息 3. 查找指定联系人信息 4. 修改指定联系人信息 5. 显示所有联系人信息 6. 清空所有联系人 7. 以名字排序所有联系人** 思路分析: 首先我们可以分三个模块来解决这个问题,第一个模块我们需要一个头文件,这个头文件里可以包含一些相应信息,当实现文件和测试文件包含自己定义的头文件时便可以获得一些相关的信息.所以头文件里

  • C语言实现简单通讯录

    本文实例为大家分享了C语言实现简易通讯录的具体代码,供大家参考,具体内容如下 一.概述 通讯录的实现其中包括了指针.结构体.动态内存管理.文件的读写操作等知识点,是对这些知识点应用巩固的非常好的例子: 通讯录功能如下: 添加联系人 删除联系人 查找联系人 修改联系人 显示所有联系人 加载联系人 保存联系人 联系人排序 二.代码如下 contact.h #ifndef CONTACT_H #define CONTACT_H #define NAME_MAX 20 #define SEX_MAX 1

  • C语言简易通讯录的实现代码

    本文实例为大家分享了C语言简易通讯录的具体代码,供大家参考,具体内容如下 通讯录的实现: 一.介绍: 运用C语言的数组.指针.结构体等相关知识:实现一个简易的通讯录: 此通讯录的大概内容为: 通讯录可存储1000个人的信息: 每个人的基本信息有:名字+ 年龄+性别 +  电话+ QQ + 地址 此通讯录所具有的功能:增加+ 删除 +  查询 + 修改 +  排序 + 退出 此通讯录在设计时:总共设计了三个文件: contact.h: 类型的声明和函数的声明 contact.c:函数功能的具体实现

  • C语言链表实现简易通讯录

    本文实例为大家分享了C语言链表实现简易通讯录的具体代码,供大家参考,具体内容如下 链表实现通讯录功能: 1.添加–(输入 姓名,电话) 2.删除-- (输入人名,删除该人) 3.查询-- (直接打印所有联系人) 4.修改-- (输入人名,修改电话) 运行效果: 代码分主函数块 和 链表块: Linklist.h #ifndef LINKLIST_H_INCLUDED #define LINKLIST_H_INCLUDED //链表节点 typedef struct Node { char nam

  • C语言通讯录实例分享

    本文实例为大家分享了C语言通讯录实例的具体代码,供大家参考,具体内容如下 main.c文件: // // main.c // c语言通讯录 // // Created by stevenchang on 9/6/15. // Copyright (c) 2015 cz. All rights reserved. // /** 1.添加联系人 2.删除联系人 3.更新联系人 4.显示所有联系人 5.查找联系人 6.退出系统 */ #include <stdio.h> int main(int a

随机推荐