我是靠谱客的博主 矮小刺猬,最近开发中收集的这篇文章主要介绍用C语言实现通讯录(初阶),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

包括三个文件。

  1. test.c——用于测试功能
  2. Contact.c——用于写各种功能函数实现代码
  3. Contact.h——用于声明函数或者结构的
    代码如下:
    1、Contact.h
#define _CRT_SECURE_NO_WARNINGS 1
#define MAX 1000
#define MAX_NAME 20
#define MAX_SEX 5
#define MAX_TEL 12
#define MAX_ADDR 30
#include <stdio.h>
#include <Windows.h>
#include <string.h>
//通讯录存放的信息
struct PeoInfo{
	char name[MAX_NAME];
	int age;
	char Sex[MAX_SEX];
	int tel[MAX_TEL];
	char addr[MAX_ADDR];
};
//枚举函数类型
enum Option{
	EXIT,//0
	ADD,
	DEL,
	RESEARCH,
	MODIFY,
	SHOW,
	SORT
};
//通讯录类型
struct Contact{
	struct PeoInfo data[MAX];//存放1000个人的信息
	int size;//记录当前通讯录中已存放了多少人的信息
};
//声明通讯录初始化函数
void InitContact(struct Contact *ps);
//声明通讯录添加函数
void AddContact(struct Contact *ps);
//声明打印通讯录函数
void ShowContact(const struct Contact *ps);
//声明删除指定联系人函数
void DeleteContact(struct Contact *ps);
//声明通讯录查找联系人函数
void ResearchContact(const struct Contact *ps);
//声明修改通讯录信息函数
void ModifyContact(struct Contact *ps);

2、Contact.c

#define _CRT_SECURE_NO_WARNINGS 1
#include "contact.h"
//初始化通讯录函数实现
void InitContact(struct Contact *ps)
{
	memset(ps->data, 0, sizeof(ps->data));
	ps->size = 0;//设置同学录最初只有0个元素
}
//通讯录增加函数实现
void AddContact(struct Contact *ps)
{
	if (ps->size == MAX)
	{
		printf("通讯录已满n");
	}
	else
	{
		printf("请输入名字n");
		scanf("%s", ps->data[ps->size].name);
		printf("请输入年龄n");
		scanf("%d", &(ps->data[ps->size].age));
		printf("请输入性别n");
		scanf("%s", ps->data[ps->size].Sex);
		printf("请输入电话号码n");
		scanf("%s", ps->data[ps->size].tel);
		printf("请输入家庭住址n");
		scanf("%s", ps->data[ps->size].addr);
		ps->size++;
		printf("添加成功n");
	}
}
//打印通讯录函数实现
void ShowContact(const struct Contact *ps)
{
	if (ps->size == 0)
	{
		printf("通讯录为空");
	}
	else
	{
		int i = 0;
		printf("%20st%4st%5st%12st%20sn", "名字", "年龄", "性别", "电话", "住址");
		for (i = 0; i < ps->size; i++)
		{
		printf("%20st%4dt%5st%12st%20sn", 
			ps->data[i].name,
			ps->data[i].age,
			ps->data[i].Sex,
			ps->data[i].tel,
			ps->data[i].addr);
		}
	}
	
}
//通过名字在通讯录查找该元素的下标
static int FindByName(const struct Contact *ps, char name[MAX_NAME])
{
	//查找人
	int i = 0;
	for (i = 0; i < ps->size; i++)
	{//找到相同名字的人的数组下标
		if (0 == strcmp(ps->data[i].name, name))
		{
			return i;
		}
	}
		return -1;
}
//删除指定联系人函数实现
void DeleteContact(struct Contact *ps)
{
	char name[MAX_NAME];
	printf("请输入你要删除的人的名字n");
	scanf("%s", name);
	//查找人
	//找到了返回名字所在元素的下标
	//找不到返回-1
	int pos = FindByName(ps, name);
	//删除人
	if (pos == -1)
	{//找名字时遍历完数组中的所有元素没有匹配时,则说明通讯录无此人信息,跳出函数
		printf("通讯录不存在你要删除的人的信息");
	}
	else{
		//删除数据
		int j = pos;
		for (j = pos; j < ps->size - 1; j++)
		{//将要删除位置后面的数据往前挪一个位子
			ps->data[j] = ps->data[j + 1];
		}
		printf("删除成功!");
		ps->size--;
	}
}
//通讯录查找联系人函数实现
void ResearchContact(const struct Contact *ps)
{
	char name[MAX_NAME];
	printf("请输入你要查找人的名字n");
	scanf("%s", name);
	//查找人
	//找到了返回名字所在元素的下标
	//找不到返回-1
	int pos = FindByName(ps, name);
	//查找人
	if (pos == -1)
	{//找名字时遍历完数组中的所有元素没有匹配时,则说明通讯录无此人信息,跳出函数
		printf("通讯录不存在你要查找的人的信息");
	}
	else{
		//打印信息
		int i = 0;
		printf("%20st%4st%5st%12st%20sn", "名字", "年龄", "性别", "电话", "住址");
		printf("%20st%4dt%5st%12st%20sn",
			ps->data[pos].name,
			ps->data[pos].age,
			ps->data[pos].Sex,
			ps->data[pos].tel,
			ps->data[pos].addr);
	}
}
	//通讯录信息修改函数实现
	void ModifyContact(struct Contact *ps)
	{
		char name[MAX_NAME];
		printf("请输入要修改人的名字");
		scanf("%s", name);
		//查找修改人信息的下标
		int pos = FindByName(ps, name);
		if (pos == -1)
		{//找名字时遍历完数组中的所有元素没有匹配时,则说明通讯录无此人信息,跳出函数
			printf("通讯录不存在你要修改的人的信息");
		}
		else{
			//重新录入信息
			printf("请输入名字n");
			scanf("%s", ps->data[pos].name);
			printf("请输入年龄n");
			scanf("%d", &(ps->data[pos].age));
			printf("请输入性别n");
			scanf("%s", ps->data[pos].Sex);
			printf("请输入电话号码n");
			scanf("%s", ps->data[pos].tel);
			printf("请输入家庭住址n");
			scanf("%s", ps->data[pos].addr);
			ps->size++;
			printf("修改成功n");
		}
	}
	

3、 test.c

#define _CRT_SECURE_NO_WARNINGS 1
#include "contact.h"
//菜单
void menu()
{
	printf("*********************************************n");
	printf("*****     1.add            2.del        *****n");
	printf("*****     3.research       4.modify     *****n");
	printf("*****     5.show           6.sort       *****n");
	printf("*****     0.exit                        *****n");
	printf("*********************************************n");
}
int main(){
	int input = 0;
	//创建通讯录
	struct Contact con;//con是可以存放1000个人信息的通讯录,里面还包括记录人数的size
	//初始化通讯录
	InitContact(&con);
	do{
		menu();
		printf("请选择-》n");
		scanf("%d", &input);
		switch (input){
		case ADD:
			AddContact(&con);
			break;
		case DEL:
			DeleteContact(&con);
			break;
		case RESEARCH:
			ResearchContact(&con);
			break;
		case MODIFY:
			ModifyContact(&con);
			break;
		case SHOW:
			ShowContact(&con);
			break;
		case SORT:
			break;
		case EXIT:
			break;
		default:
			break;
		}
	}while (input);
	system("pause");
	return 0;
}

最后

以上就是矮小刺猬为你收集整理的用C语言实现通讯录(初阶)的全部内容,希望文章能够帮你解决用C语言实现通讯录(初阶)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部