C语言之简单的通讯录实现

内容:

通讯录可以用来存储1000个人的信息,每个人的信息包括:
姓名、性别、年龄、电话、住址

提供方法:
1. 添加联系人信息
2. 删除指定联系人信息
3. 查找指定联系人信息
4. 修改指定联系人信息
5. 显示所有联系人信息
6. 清空所有联系人

7. 以名字排序所有联系人

实现:

将变量定义在结构体中:

typedef struct person     
{
	char name[20];    //姓名
	char sex[10];     //性别
	int age;          //年龄
	int tel;          //电话
	char addr[30];    //住址
}Person;
typedef struct people
{
	Person p[1000];    //定义一个结构体数组存放成员信息
	int num;           //人数
}People;

对联系人进行的操作:

void add_person(People *people);    //添加联系人
void dele_person(People *people);   //删除联系人
void find_person(People *people);   //查找联系人
void alter_person(People *people);  //修改联系人
void print_person(People *people);  //显示联系人
void clear_person(People *people);  //清空联系人列表
void sort_person(People *people);   //对联系人进行排序

方法实现:

//添加联系人
void add_person(People *people)
{
	int i = 0;
	while (i < people->num){
		printf("请输入姓名:");
		scanf("%s", &(people->p[i].name));
		printf("请输入性别:");
		scanf("%s", &(people->p[i].sex));
		printf("请输入年龄:");
		scanf("%d", &(people->p[i].age));
		printf("请输入电话:");
		scanf("%d", &(people->p[i].tel));
		printf("请输入住址:");
		scanf("%s", &(people->p[i].addr));
		i++;
	}
}

//删除联系人
void dele_person(People *people)
{
	if (people == NULL){
		printf("空通讯录!");
		return;
	}
	int i = 0;
	char name1[20];
	printf("请输入要删联系人姓名:");
	scanf("%s", &name1);
	while (strcmp(people->p[i].name, name1) != 0 && i < people->num){
		i++;
	}
	if (i ==people->num)
		printf("列表中没有此联系人!!!\n");
	int j = i;
	while (j < people->num){
		people->p[j] = people->p[j + 1];
		j++;
	}
}
//查找联系人
void find_person(People *people)
{     //通过姓名查找
	if (people == NULL){
		printf("空通讯录!");
		return;
	}
	int i = 0;
	char name1[20];
	printf("请输入要查找的联系人:");
	scanf("%s", &name1);
	while (strcmp(people->p[i].name, name1) != 0 && i <people->num-1){
		i++;
	}
	if (i == people->num)
		printf("列表中没有此联系人!!!\n");
	else
	{
		printf("性别:%s\n",people->p[i].sex);
		printf("年龄:%d\n", people->p[i].age);
		printf("电话:%d\n", people->p[i].tel);
		printf("住址:%s\n", people->p[i].addr);
	}
}

//修改联系人
void alter_person(People *people)
{
	if (people == NULL){
		printf("空通讯录!");
		return;
	}
	int i = 0;
	char name1[20];
	printf("请输入要查找的联系人:");
	scanf("%s", &name1);
	while (strcmp(people->p[i].name, name1) != 0 && i < people->num){
		i++;
	}
	if (i == people->num)
		printf("列表中没有此联系人!!!\n");
	else
	{
		printf("修改性别:");
		scanf("%s", &people->p[i].sex);
		printf("修改年龄:");
		scanf("%d", &people->p[i].age);
		printf("修改电话:");
		scanf("%d", &people->p[i].tel);
		printf("修改住址:people");
		scanf("%s", &people->p[i].addr);
	}
}
//显示联系人
void print_person(People *people)
{
	if (people == NULL){
		printf("空通讯录!");
		return;
	}
	int i = 0;
	while (i < (people->num)){
		printf("姓名:%s", people->p[i].name);
		printf("性别:%s", people->p[i].sex);
		printf("年龄: %d", people->p[i].age);
		printf("电话: %d", people->p[i].tel);
		printf("住址: %s", people->p[i].addr);
		i++;
	}
}
//清空联系人列表
void clear_person(People *people)
{
	people->num = 0;
}
//对联系人进行排序
void sort_person(People *people)
{
	if (people == NULL)
	{
		printf("空通讯录!");
		return;
	}
	int i = 0;
	for (; i < people->num; i++)
	{
		int flag = 0;
		int j = 0;
		for (; j < people->num - i - 1; j++)
		{
			if (strcmp(people->p[j].name, people->p[j + 1].name)>0)
			{
				flag = 1;
				char tem[20];
				strcpy(tem, people->p[j].name);
				strcpy(people->p[j].name, people->p[j + 1].name);
				strcpy(people->p[j + 1].name, tem);
			}
		}
		if (flag == 0)
		break;
	}
	
}

菜单界面:

void menu()
{
	printf("*************通讯录*********************\n");
	printf("*********1  增加成员*********************\n");
	printf("*********2  删除成员*********************\n");
	printf("*********3  查找成员*********************\n");
	printf("*********4  修改成员*********************\n");
	printf("*********5  显示成员*********************\n");
	printf("*********6  清空成员*********************\n");
	printf("*********7  排序*************************\n");
	printf("*********8  退出*************************\n");
}

main函数实现:

main(){
	People people;
	people.num = 1000;
	while (1)
	{
		menu();
		int input = 0;
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			add_person(&people);
			break;
		case 2:
			dele_person(&people);
			break;
		case 3:
			find_person(&people);
			break;
		case 4:
			alter_person(&people);
			break;
		case 5:
			print_person(&people);
			break;
		case 6:
			clear_person(&people);
			break;
		case 7:
			sort_person(&people);
			break;
		case 8:
			exit(0);
		default:
		{
				   printf("输入错误,请重新输入<1~8>");
				   break;
		}
			system("pause");
			return 0;

		}
	}
}







猜你喜欢

转载自blog.csdn.net/qq_41889292/article/details/80520231
今日推荐