【通讯录】--C语言

这篇具有很好参考价值的文章主要介绍了【通讯录】--C语言。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【通讯录】--C语言,C语言进阶,c语言,开发语言

💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤
📃个人主页 :阿然成长日记 👈点击可跳转
📆 个人专栏: 🔹数据结构与算法🔹C语言进阶
🚩 不能则学,不知则问,耻于问人,决无长进
🍭 🍯 🍎 🍏 🍊 🍋 🍒 🍇 🍉 🍓 🍑 🍈 🍌 🍐 🍍

用c语言实现一个通讯录的系统,并且存储若干人的信息,每个人的信息包括:
姓名,性别,年龄,电话号码,住址。
此通讯录系统的功能包括:
1.增加联系人
2.删除对应的联系人
3.查找联系人
4.修改联系人的信息
5.排序此通讯录
6.打印出通讯录每个人的信息

设计
test.c--------------------测试通讯录的功能

contact.h---------------通讯录的实现(接口的声明)

contact.c---------------通讯录的实现(接口的实现)

🎈 一、初始版本

contact.h

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
#include<assert.h>

#define MAX 100
#define MAX_NAME 20
#define MAX_SEX 5
#define MAX_TELE 12
#define Max_ADDR 30

enum OPTION
{
	EXIT,
	ADD,
	DLE,
	SEARCH,
	MODIFY,
	SHOW,
	SORT
};


typedef struct PeoInfo
{
	char name[MAX_NAME];
	int age;
	char sex[MAX_SEX];
	char tele[MAX_TELE];
	char addr[Max_ADDR];
}PeoInfo;


typedef struct Contact
{
	PeoInfo data[MAX];
	int sz;
}Contact;


//初始化联系人
void InitContact(Contact* pc);


//添加联系人+
void AddContact(Contact* pc);


//显示联系人
void ShowContact(Contact* pc);


//删除指定联系人(name)
void DelContact(Contact* pc);

//查找一个人
void SearchContact(Contact* pc);


//修改指定联系人信息
void ModifyContact(Contact* pc);


//排序
void SortContact(Contact* pc);

test.c

#define _CRT_SECURE_NO_WARNINGS 1
#include"contact.h"
void menu()
{
	printf("**********************************\n");
	printf("****1.增加              2.删除****\n");
	printf("****3.查找              4.修改****\n");
	printf("****5.展示              6.排序****\n");
	printf("****0.退出                    ****\n");
	printf("**********************************\n");
}
void test()
{
	Contact con;//通讯录
    InitContact(&con);//初始化
	int input;
	do {
		menu();
		printf("请输入你的选则:");
		scanf("%d", &input);
		switch (input)
		{
		case ADD:
			AddContact(&con);
			break;
		case DLE:
			DelContact(&con);
			break;
		case SEARCH:
			SearchContact(&con);
			break;
		case MODIFY:
			ModifyContact(&con);
			break;
		case SHOW:
			ShowContact(&con);
			break;
		case SORT:
			SortContact(&con);
			break;
		case EXIT:
			printf("退出通讯录!!\n");
			break;
		default:printf("选择错误,请重新输入\n"); break;
		}
	} while (input);
}
	
int main()
{
	test();
	return 0;
}

contact.c

#define _CRT_SECURE_NO_WARNINGS 1
#include "contact.h"
//初始化联系人
void InitContact(Contact* pc)
{
	assert(pc);
	memset(pc->data, 0, sizeof(pc->data));
	pc->sz = 0;
}

//添加联系人+
void AddContact(Contact* pc)
{
	assert(pc);
	//判断
	if (pc->sz == MAX)
	{
		printf("通讯录已满,无法添加!");
		return;
	}
	//添加
	printf("请输入姓名:");
	scanf("%s", pc->data[pc->sz].name);
	printf("请输入年龄:");
	scanf("%d", &pc->data[pc->sz].age);
	printf("请输入性别:");
	scanf("%s", pc->data[pc->sz].sex);
	printf("请输入电话:");
	scanf("%s", pc->data[pc->sz].tele);
	printf("请输入住址:");
	scanf("%s", pc->data[pc->sz].addr);
	pc->sz++;
	printf("添加成功");
}

//显示联系人
void ShowContact(const Contact* pc)//const修饰,不让其通过pc指针改变其指向内容。
{
	assert(pc);
	int i = 0;
	//打印表头
	printf("%-20s\t %2s\t %-5s\t %-12s\t %-20s\n", "名字", "年龄", "性别", "电话", "住址");
	//打印内容
	for (i = 0; i < pc->sz; i++)
	{
		printf("%-20s\t %2d\t %-5s\t %-12s\t %-20s\n",
			pc->data[i].name,
			pc->data[i].age,
			pc->data[i].sex,
			pc->data[i].tele,
			pc->data[i].addr);
	}
}


//查找
int FindByName(Contact* pc, char name[])
{
	int i = 0;
	//找到要删除的下标
	for (i = 0; i < pc->sz; i++)
	{
		if (strcmp(pc->data[i].name, name) == 0)
		{
			//记下找到的下标值
			return i;
		}
	}
	return -1;
}

//删除指定联系人(name)
void DelContact(Contact* pc)
{
	char name[MAX_NAME];
	assert(pc);
	printf("请输入要删除的名字\n");
	scanf("%s", name);
	int i = 0;

	//如果为空,不删
	if (pc->sz == 0) {
		printf("通讯录为空\n");
		return;
	}

	int del = FindByName(pc, name);

	if (del == -1) {
		printf("没找到\n");
		return;
	}

	for (i = del; i < pc->sz - 1; i++) {
		pc->data[i] = pc->data[i + 1];
	}
	pc->sz--;
	printf("删除成功!\n");
}


//查找一个人
void SearchContact(const Contact* pc)
{
	assert(pc);
	char name[MAX_NAME];
	printf("请输入要删除的名字\n");
	scanf("%s", name);
	int find = FindByName(pc, name);
	if (find == -1)
	{
		printf("没有这个人\n");
		return;
	}
	//打印找到人的信息
	printf("%-20s\t %2d\t %-5s\t %-12s\t %-20s\n", "名字", "年龄", "性别", "电话", "住址");
	//打印内容

	printf("%-20s\t %2d\t %-5s\t %-12s\t %-20s\n",
		pc->data[find].name,
		pc->data[find].age,
		pc->data[find].sex,
		pc->data[find].tele,
		pc->data[find].addr);

}





//修改指定联系人信息
void ModifyContact(Contact* pc)
{
	assert(pc);
	printf("请输入要修改联系人的姓名:\n");
	char name[MAX_NAME];
	scanf("%s", name);
	int find = FindByName(pc, name);
	if (find == -1)
	{
		printf("没有这个人\n");
		return;
	}
	printf("请输入要修改的内容:\n");
	printf("请输入姓名:");
	scanf("%s", pc->data[find].name);
	printf("请输入年龄:");
	scanf("%d", &pc->data[find].age);
	printf("请输入性别:");
	scanf("%s", pc->data[find].sex);
	printf("请输入电话:");
	scanf("%s", pc->data[find].tele);
	printf("请输入住址:");
	scanf("%s", pc->data[find].addr);
	printf("修改成功!!!!\n");
}


//排序
//名字排序
int comper_name(const void* e1, const void* e2)
{
	return strcmp(((Contact*)e1)->data->name, ((Contact*)e2)->data->name);
}
//年龄排序
int comper_age(const void* e1, const void* e2)
{
	return ((Contact*)e1)->data->age - ((Contact*)e2)->data->age;
}
//性别排序
int comper_sex(const void* e1, const void* e2)
{
	return strcmp(((Contact*)e1)->data->sex, ((Contact*)e2)->data->sex);
}
//排序
void SortContact(Contact* pc)
{
	printf("***************************\n");
	printf("1. 名字排序   2. 年龄排序\n");
	printf("3. 性别排序   \n");
	printf("***************************\n");
	printf("请选择排序方法:");
	int input = 0;
	scanf("%d", &input);
	switch (input)
	{
	case 1:
		qsort(pc->data, pc->sz, sizeof(PeoInfo), comper_name);
		ShowContact(pc);
		printf("排序成功\n");
		break;
	case 2:
		qsort(pc->data, pc->sz, sizeof(PeoInfo), comper_age);
		ShowContact(pc);
		printf("排序完成\n");
		break;
	case 3:
		qsort(pc->data, pc->sz, sizeof(PeoInfo), comper_sex);
		ShowContact(pc);
		printf("排序完成\n");
		break;
	default:
		printf("选择错误\n");
		break;
	}
}

🌺二、动态扩容版本

Contact.h

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
#include<assert.h>
#include<stdlib.h>

#define MAX_NAME 20
#define MAX_SEX 5
#define MAX_TELE 12
#define Max_ADDR 30
#define INT_SZ 2

enum OPTION
{
	EXIT,
	ADD,
	DLE,
	SEARCH,
	MODIFY,
	SHOW,
	SORT
};


typedef struct PeoInfo
{
	char name[MAX_NAME];
	int age;
	char sex[MAX_SEX];
	char tele[MAX_TELE];
	char addr[Max_ADDR];
}PeoInfo;


typedef struct Contact
{
	PeoInfo* data;//指向存储数据的空间
	int sz;//记录当前存放有效数据
	int capacity;//记录当前的最大容量
}Contact;


//初始化联系人
void InitContact(Contact* pc);


//添加联系人+
void AddContact(Contact* pc);


//显示联系人
void ShowContact(Contact* pc);


//删除指定联系人(name)
void DelContact(Contact* pc);

//查找一个人
void SearchContact(Contact* pc);


//修改指定联系人信息
void ModifyContact(Contact* pc);


//排序
void SortContact(Contact* pc);


//释放空间
void DestroyContact(Contact* pc);	

Contact.c

#define _CRT_SECURE_NO_WARNINGS 1
#include "contact.h"
//初始化联系人
void InitContact(Contact* pc)
{
	assert(pc);
	pc->data = (PeoInfo*)malloc(sizeof(PeoInfo));
	pc->sz = 0;
}


//扩容
int CheckCapacity(Contact* pc)
{
	if (pc->sz == pc->capacity)
	{
		PeoInfo* ptr = (PeoInfo*)realloc(pc->data, (pc->capacity + INT_SZ) * sizeof(PeoInfo));
		if (ptr == NULL)
		{
			printf("扩容失败!");
			perror("CheckCapacity");
			return 0;
		}
		else
		{
			pc->data = ptr;
			pc->capacity += INT_SZ;
			printf("扩容成功!");
			return 1;
		}
	}
	return 1;
}
//添加联系人+
void AddContact(Contact* pc)
{
	assert(pc);
	//判断
	if (CheckCapacity(pc) == 0)
	{
		printf("添加失败,空间不足!");
		return;
	}
	if (CheckCapacity(pc) == 1)
	{
		printf("扩容成功\n");
		//添加
		printf("请输入姓名:");
		scanf("%s", pc->data[pc->sz].name);
		printf("请输入年龄:");
		scanf("%d", &pc->data[pc->sz].age);
		printf("请输入性别:");
		scanf("%s", pc->data[pc->sz].sex);
		printf("请输入电话:");
		scanf("%s", pc->data[pc->sz].tele);
		printf("请输入住址:");
		scanf("%s", pc->data[pc->sz].addr);
		pc->sz++;
		printf("添加成功\n");
	}
}

//显示联系人
void ShowContact(const Contact* pc)//const修饰,不让其通过pc指针改变其指向内容。
{
	assert(pc);
	int i = 0;
	//打印表头
	printf("%-20s\t %2s\t %-5s\t %-12s\t %-20s\n", "名字", "年龄", "性别", "电话", "住址");
	//打印内容
	for (i = 0; i < pc->sz; i++)
	{
		printf("%-20s\t %2d\t %-5s\t %-12s\t %-20s\n",
			pc->data[i].name,
			pc->data[i].age,
			pc->data[i].sex,
			pc->data[i].tele,
			pc->data[i].addr);
	}
}


//查找
int FindByName(Contact* pc, char name[])
{
	int i = 0;
	//找到要删除的下标
	for (i = 0; i < pc->sz; i++)
	{
		if (strcmp(pc->data[i].name, name) == 0)
		{
			//记下找到的下标值
			return i;
		}
	}
	return -1;
}

//删除指定联系人(name)
void DelContact(Contact* pc)
{
	char name[MAX_NAME];
	assert(pc);
	printf("请输入要删除的名字\n");
	scanf("%s", name);
	int i = 0;

	//如果为空,不删
	if (pc->sz == 0) {
		printf("通讯录为空\n");
		return;
	}

	int del = FindByName(pc, name);

	if (del == -1) {
		printf("没找到\n");
		return;
	}

	for (i = del; i < pc->sz - 1; i++) {
		pc->data[i] = pc->data[i + 1];
	}
	pc->sz--;
	printf("删除成功!\n");
}


//查找一个人
void SearchContact(const Contact* pc)
{
	assert(pc);
	char name[MAX_NAME];
	printf("请输入要删除的名字\n");
	scanf("%s", name);
	int find = FindByName(pc, name);
	if (find == -1)
	{
		printf("没有这个人\n");
		return;
	}
	//打印找到人的信息
	printf("%-20s\t %-2s\t %-5s\t %-12s\t %-20s\n", "名字", "年龄", "性别", "电话", "住址");
	//打印内容

	printf("%-20s\t %-2d\t %-5s\t %-12s\t %-20s\n",
		pc->data[find].name,
		pc->data[find].age,
		pc->data[find].sex,
		pc->data[find].tele,
		pc->data[find].addr);

}





//修改指定联系人信息
void ModifyContact(Contact* pc)
{
	assert(pc);
	printf("请输入要修改联系人的姓名:\n");
	char name[MAX_NAME];
	scanf("%s", name);
	int find = FindByName(pc, name);
	if (find == -1)
	{
		printf("没有这个人\n");
		return;
	}
	printf("请输入要修改的内容:\n");
	printf("请输入姓名:");
	scanf("%s", pc->data[find].name);
	printf("请输入年龄:");
	scanf("%d", &pc->data[find].age);
	printf("请输入性别:");
	scanf("%s", pc->data[find].sex);
	printf("请输入电话:");
	scanf("%s", pc->data[find].tele);
	printf("请输入住址:");
	scanf("%s", pc->data[find].addr);
	printf("修改成功!!!!\n");
}





  //排序联系人信息
void SortContact(struct Contact* pc)
{
	if (pc->sz == 0)
	{
		printf("通讯录为空,无法排序!!!\n");
		return;
	}
	int i = 0;
	int j = 0;
	struct PeoInfo tmp;
	for (i = 0; i < pc->sz - 1; i++)
	{
		int flag = 1;
		for (j = 0; j < pc->sz - i - 1; j++)
		{
			if (strcmp(pc->data[j].name, pc->data[j + 1].name) < 0)
			{
				tmp = pc->data[j];
				pc->data[j] = pc->data[j + 1];
				pc->data[j + 1] = tmp;
				flag = 0;
			}
		}
		if (flag == 1)
		{
			return;
		}
	}
	printf("排序成功\n");
}


//释放
void DestroyContact(Contact* pc)
{
	free(pc->data);
	pc->data = NULL;
	pc->capacity = 0;
	pc->sz = 0;
}

Teat.c文章来源地址https://www.toymoban.com/news/detail-612820.html

#define _CRT_SECURE_NO_WARNINGS 1
#include"contact.h"
void menu()
{
	printf("**********************************\n");
	printf("****1.增加              2.删除****\n");
	printf("****3.查找              4.修改****\n");
	printf("****5.展示              6.排序****\n");
	printf("****0.退出                    ****\n");
	printf("**********************************\n");
}
void test()
{
	Contact con;//通讯录
    InitContact(&con);//初始化
	int input;
	do {
		menu();
		printf("请输入你的选则:");
		scanf("%d", &input);
		switch (input)
		{
		case ADD:
			AddContact(&con);
			break;
		case DLE:
			DelContact(&con);
			break;
		case SEARCH:
			SearchContact(&con);
			break;
		case MODIFY:
			ModifyContact(&con);
			break;
		case SHOW:
			ShowContact(&con);
			break;
		case SORT:
			SortContact(&con);
			break;
		case EXIT:
			DestroyContact(&con);
			break;
		default:printf("选择错误,请重新输入\n"); break;
		}
	} while (input);
}
	
int main()
{
	test();
	return 0;
}

🌵三、文件版(可长期保存数据)

Contact.h

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
#include<assert.h>
#include<stdlib.h>

#define MAX_NAME 20
#define MAX_SEX 5
#define MAX_TELE 12
#define Max_ADDR 30
#define INT_SZ 2

enum OPTION
{
	EXIT,
	ADD,
	DLE,
	SEARCH,
	MODIFY,
	SHOW,
	SORT
};


typedef struct PeoInfo
{
	char name[MAX_NAME];
	int age;
	char sex[MAX_SEX];
	char tele[MAX_TELE];
	char addr[Max_ADDR];
}PeoInfo;


typedef struct Contact
{
	PeoInfo* data;//指向存储数据的空间
	int sz;//记录当前存放有效数据
	int capacity;//记录当前的最大容量
}Contact;


//初始化联系人
void InitContact(Contact* pc);


//添加联系人+
void AddContact(Contact* pc);


//显示联系人
void ShowContact(Contact* pc);


//删除指定联系人(name)
void DelContact(Contact* pc);

//查找一个人
void SearchContact(Contact* pc);


//修改指定联系人信息
void ModifyContact(Contact* pc);


//排序
void SortContact(Contact* pc);


//释放空间
void DestroyContact(Contact* pc);	


//保存联系人
void SaveContact(Contact* pc);

//扩容
int CheckCapacity(Contact* pc);

Contact.c

#define _CRT_SECURE_NO_WARNINGS 1
#include "contact.h"


//从文件中加载数据

void LoadContact(Contact* pc)
{
	FILE* pf = fopen("ContactData.text", "rb");
	if (pf == NULL)
	{
		perror("LoadContact");
		return;
	}
	PeoInfo temp = { 0 };
	while (fread(&temp, sizeof(PeoInfo), 1, pf))
	{
		if (CheckCapacity(pc) == 0)
			return;
			pc->data[pc->sz] = temp;
			pc->sz++;
	}

	//关闭
	fclose(pf);
	pf = NULL;
	
}

//初始化联系人
void InitContact(Contact* pc)
{
	assert(pc);
	pc->data = (PeoInfo*)malloc(INT_SZ*sizeof(PeoInfo));
	if (pc->data == NULL)
	{
		perror("InitContact");
		return;
	}
	pc->sz = 0;
	pc->capacity = INT_SZ;
	//加载联系人
	LoadContact(pc);
}


//扩容
int CheckCapacity(Contact* pc)
{
	if (pc->sz == pc->capacity)
	{
		PeoInfo* ptr = (PeoInfo*)realloc(pc->data, (pc->capacity + INT_SZ) * sizeof(PeoInfo));
		if (ptr == NULL)
		{
			printf("扩容失败!");
			perror("CheckCapacity");
			return 0;
		}
		else
		{
			pc->data = ptr;
			pc->capacity += INT_SZ;
			printf("扩容成功!");
			return 1;
		}
	}
	return 1;
}
//添加联系人+
void AddContact(Contact* pc)
{
	assert(pc);
	//判断
	if (CheckCapacity(pc) == 0)
	{
		printf("添加失败,空间不足!");
		return;
	}
	if (CheckCapacity(pc) == 1)
	{
		printf("扩容成功\n");
		//添加
		printf("请输入姓名:");
		scanf("%s", pc->data[pc->sz].name);
		printf("请输入年龄:");
		scanf("%d", &pc->data[pc->sz].age);
		printf("请输入性别:");
		scanf("%s", pc->data[pc->sz].sex);
		printf("请输入电话:");
		scanf("%s", pc->data[pc->sz].tele);
		printf("请输入住址:");
		scanf("%s", pc->data[pc->sz].addr);
		pc->sz++;
		printf("添加成功\n");
	}
}

//显示联系人
void ShowContact(const Contact* pc)//const修饰,不让其通过pc指针改变其指向内容。
{
	assert(pc);
	int i = 0;
	//打印表头
	printf("%-20s\t %2s\t %-5s\t %-12s\t %-20s\n", "名字", "年龄", "性别", "电话", "住址");
	//打印内容
	for (i = 0; i < pc->sz; i++)
	{
		printf("%-20s\t %2d\t %-5s\t %-12s\t %-20s\n",
			pc->data[i].name,
			pc->data[i].age,
			pc->data[i].sex,
			pc->data[i].tele,
			pc->data[i].addr);
	}
}


//查找
int FindByName(Contact* pc, char name[])
{
	int i = 0;
	//找到要删除的下标
	for (i = 0; i < pc->sz; i++)
	{
		if (strcmp(pc->data[i].name, name) == 0)
		{
			//记下找到的下标值
			return i;
		}
	}
	return -1;
}

//删除指定联系人(name)
void DelContact(Contact* pc)
{
	char name[MAX_NAME];
	assert(pc);
	printf("请输入要删除的名字\n");
	scanf("%s", name);
	int i = 0;

	//如果为空,不删
	if (pc->sz == 0) {
		printf("通讯录为空\n");
		return;
	}

	int del = FindByName(pc, name);

	if (del == -1) {
		printf("没找到\n");
		return;
	}

	for (i = del; i < pc->sz - 1; i++) {
		pc->data[i] = pc->data[i + 1];
	}
	pc->sz--;
	printf("删除成功!\n");
}


//查找一个人
void SearchContact(const Contact* pc)
{
	assert(pc);
	char name[MAX_NAME];
	printf("请输入要删除的名字\n");
	scanf("%s", name);
	int find = FindByName(pc, name);
	if (find == -1)
	{
		printf("没有这个人\n");
		return;
	}
	//打印找到人的信息
	printf("%-20s\t %-2s\t %-5s\t %-12s\t %-20s\n", "名字", "年龄", "性别", "电话", "住址");
	//打印内容

	printf("%-20s\t %-2d\t %-5s\t %-12s\t %-20s\n",
		pc->data[find].name,
		pc->data[find].age,
		pc->data[find].sex,
		pc->data[find].tele,
		pc->data[find].addr);

}





//修改指定联系人信息
void ModifyContact(Contact* pc)
{
	assert(pc);
	printf("请输入要修改联系人的姓名:\n");
	char name[MAX_NAME];
	scanf("%s", name);
	int find = FindByName(pc, name);
	if (find == -1)
	{
		printf("没有这个人\n");
		return;
	}
	printf("请输入要修改的内容:\n");
	printf("请输入姓名:");
	scanf("%s", pc->data[find].name);
	printf("请输入年龄:");
	scanf("%d", &pc->data[find].age);
	printf("请输入性别:");
	scanf("%s", pc->data[find].sex);
	printf("请输入电话:");
	scanf("%s", pc->data[find].tele);
	printf("请输入住址:");
	scanf("%s", pc->data[find].addr);
	printf("修改成功!!!!\n");
}





  //排序联系人信息
void SortContact(struct Contact* pc)
{
	if (pc->sz == 0)
	{
		printf("通讯录为空,无法排序!!!\n");
		return;
	}
	int i = 0;
	int j = 0;
	struct PeoInfo tmp;
	for (i = 0; i < pc->sz - 1; i++)
	{
		int flag = 1;
		for (j = 0; j < pc->sz - i - 1; j++)
		{
			if (strcmp(pc->data[j].name, pc->data[j + 1].name) < 0)
			{
				tmp = pc->data[j];
				pc->data[j] = pc->data[j + 1];
				pc->data[j + 1] = tmp;
				flag = 0;
			}
		}
		if (flag == 1)
		{
			return;
		}
	}
	printf("排序成功\n");
}

//释放
void DestroyContact(Contact* pc)
{
	free(pc->data);
	pc->data = NULL;
	pc->capacity = 0;
	pc->sz = 0;
}




//保存联系人
void SaveContact(Contact* pc)
{
	FILE* pf = fopen("ContactData.text", "wb");
	if (pf == NULL)
	{
		perror("SaveContact");
		return;
	}

	//写文件
	int i = 0;
	for (i = 0; i < pc->sz; i++)
	{
		fwrite(pc->data,sizeof(PeoInfo),1,pf);
	}

	//关闭文件
	fclose(pf);
	pf == NULL;

}

test.c

#define _CRT_SECURE_NO_WARNINGS 1
#include"contact.h"
void menu()
{
	printf("**********************************\n");
	printf("****1.增加              2.删除****\n");
	printf("****3.查找              4.修改****\n");
	printf("****5.展示              6.排序****\n");
	printf("****0.退出                    ****\n");
	printf("**********************************\n");
}
void test()
{
	Contact con;//通讯录
    InitContact(&con);//初始化
	int input;
	do {
		menu();
		printf("请输入你的选则:");
		scanf("%d", &input);
		switch (input)
		{
		case ADD:
			AddContact(&con);
			break;
		case DLE:
			DelContact(&con);
			break;
		case SEARCH:
			SearchContact(&con);
			break;
		case MODIFY:
			ModifyContact(&con);
			break;
		case SHOW:
			ShowContact(&con);
			break;
		case SORT:
			SortContact(&con);
			break;
		case EXIT:
			SaveContact(&con);
			printf("保存成功!!");
			DestroyContact(&con);
			printf("空间以释放!!");
			break;
		default:printf("选择错误,请重新输入\n"); break;
		}
	} while (input);
}
	
int main()
{
	test();
	return 0;
}

到了这里,关于【通讯录】--C语言的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C语言—通讯录

    通讯录中是存放人的信息的,人的信息包括:姓名、年龄、性别、电话、住址。可以把人的信息定义成结构体,因为每个联系人的信息都有这几个要素。 注:用#define定义的标识符常量,使用修改时可以降低维护成本。如联系人的信息中名字的宽度为20,以便之后需要修改时只

    2024年02月05日
    浏览(69)
  • 【通讯录】--C语言

    💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃 个人主页 :阿然成长日记 👈点击可跳转 📆 个人专栏: 🔹数据结构与算法🔹C语言进阶 🚩 不能则学,不知则问,耻于问人,决无长进 🍭 🍯 🍎 🍏 🍊 🍋 🍒 🍇 🍉 🍓 🍑 🍈 🍌 🍐 🍍 用c语言实现一个通讯

    2024年02月15日
    浏览(53)
  • 【C语言】通讯录

    目录 一、关于通讯录 二、代码逻辑 三、通讯录实现 1.菜单设计 2.逻辑主要功能设计 3.增加联系人功能实现 4.显示全部联系人信息   5.删除联系人 6.查找联系人 7.修改联系人信息 8.对联系人进行排序  9.一键清空所有联系人 四、完整源码 test.c contact.c contact.h 在通讯录中,我

    2024年02月08日
    浏览(58)
  • C语言通讯录

            在本博客中,我们将介绍如何使用C语言构建一个基本的通讯录。主要涉及C语言的指针、结构体、动态内存管理、文件操作等方面的知识。我们还将学习如何使用C语言的各种功能和技巧来实现通讯录的各种操作,如添加联系人、编辑联系人、删除联系人和搜索联系

    2024年02月16日
    浏览(52)
  • C语言——通讯录

    相信大家都有过通讯录,今天我来带大家实现以下最简单的通讯录,通过本篇文章,相信可以让大家对C语言有进一步的认识。 话不多说,我们先放函数的实现  是不是看到这里会感到很害怕??不用怕,跟着我的思路,你也可以实现它,我带着你一步一步实现每一个功能  

    2024年02月13日
    浏览(47)
  • C语言---认识动态内存管理并实现一个动态通讯录:静态通讯录别来沾边

    👧个人主页:@小沈熬夜秃头中୧⍤⃝❅ 😚小编介绍:欢迎来到我的乱七八糟小星球🌝 📋专栏:C语言学习 🔑本章内容:动态内存管理 送给各位💌:当你的能力还驾驭不了你的目标时那你就应该沉下心来历练 记得 评论📝 +点赞👍 +收藏😽 +关注💞哦~ 提示:以下是本篇

    2024年02月08日
    浏览(85)
  • 【c语言】通讯录(静态)

    小张刚学习完结构体,枚举,联合相关的知识,实践实践,写一个通讯录呗! 通讯录的功能 1.通讯录可存放100的信息 2.信息的内容姓名,性别,年龄,电话,地址 3.支持增加联系人 4.支持删除联系人 5.支持查找联系人 6.支持修改联系人 7.支持排序联系人 8.打印数据 文件类型

    2024年02月13日
    浏览(40)
  • 通讯录实现【C语言】

    目录 前言 一、整体逻辑分析 二、实现步骤 1、创建菜单和多次操作问题 2、创建通讯录 3、初始化通讯录 4、添加联系人 5、显示联系人 6、删除指定联系人 ​7、查找指定联系人 8、修改联系人信息 9、排序联系人信息 三、全部源码 我们上期已经详细的介绍了自定义类型,本

    2024年02月11日
    浏览(56)
  • 【C语言】动态通讯录 -- 详解

    前面详细介绍了静态版通讯录【C语言】静态通讯录 -- 详解_炫酷的伊莉娜的博客-CSDN博客,但是静态版通讯录的空间是无法被改变的,而且空间利用率也不高。为了解决静态通讯录这一缺点,这时就要有一个能够随着存入联系人数量的增加而增大空间的通讯录。接下来我们将

    2024年02月12日
    浏览(41)
  • 【C语言】实战项目——通讯录

    学会创建一个通讯录,对过往知识进行加深和巩固。 文章很长,要耐心学完哦!                ✨  猪巴戒 :个人主页✨                 所属专栏 :《C语言进阶》         🎈 跟着猪巴戒 ,一起学习C语言🎈 目录 引言 实战 建立文件 包含头文件 结构体的使用 

    2024年02月04日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包