【通讯录】--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语言

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    2024年02月04日
    浏览(51)
  • 【C语言】通讯录(文件) -- 详解

    前面介绍了 【C语言】静态通讯录 -- 详解_炫酷的伊莉娜的博客-CSDN博客 和 【C语言】动态通讯录 -- 详解_炫酷的伊莉娜的博客-CSDN博客 。当通讯录运行起来时,可以对通讯录中的数据进行增加、删除或修改等。此时数据是存放在内存中,当程序退出时,通讯录中的数据自然就

    2024年02月12日
    浏览(41)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包