【通讯录】--C语言

💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤

📃个人主页 :阿然成长日记 👈点击可跳转

📆 个人专栏: 🔹数据结构与算法🔹C语言进阶

🚩 不能则学,不知则问,耻于问人,决无长进

🍭 🍯 🍎 🍏 🍊 🍋 🍒 🍇 🍉 🍓 🍑 🍈 🍌 🍐 🍍

通讯录--C语言

用c语言实现一个通讯录的系统,并且存储若干人的信息,每个人的信息包括:

姓名,性别,年龄,电话号码,住址。

此通讯录系统的功能包括:

1.增加联系人

2.删除对应的联系人

3.查找联系人

4.修改联系人的信息

5.排序此通讯录

6.打印出通讯录每个人的信息

设计

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

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

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

🎈 一、初始版本

contact.h

c 复制代码
#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

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

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

c 复制代码
#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

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

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:
			DestroyContact(&con);
			break;
		default:printf("选择错误,请重新输入\n"); break;
		}
	} while (input);
}
	
int main()
{
	test();
	return 0;
}

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

Contact.h

c 复制代码
#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

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

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;
}
相关推荐
百事老饼干9 分钟前
Java[面试题]-真实面试
java·开发语言·面试
杨荧1 小时前
【JAVA毕业设计】基于Vue和SpringBoot的服装商城系统学科竞赛管理系统
java·开发语言·vue.js·spring boot·spring cloud·java-ee·kafka
白子寰1 小时前
【C++打怪之路Lv14】- “多态“篇
开发语言·c++
王俊山IT1 小时前
C++学习笔记----10、模块、头文件及各种主题(一)---- 模块(5)
开发语言·c++·笔记·学习
为将者,自当识天晓地。1 小时前
c++多线程
java·开发语言
小政爱学习!1 小时前
封装axios、环境变量、api解耦、解决跨域、全局组件注入
开发语言·前端·javascript
k09331 小时前
sourceTree回滚版本到某次提交
开发语言·前端·javascript
神奇夜光杯2 小时前
Python酷库之旅-第三方库Pandas(202)
开发语言·人工智能·python·excel·pandas·标准库及第三方库·学习与成长
Themberfue2 小时前
Java多线程详解⑤(全程干货!!!)线程安全问题 || 锁 || synchronized
java·开发语言·线程·多线程·synchronized·
plmm烟酒僧2 小时前
Windows下QT调用MinGW编译的OpenCV
开发语言·windows·qt·opencv