C语言编程,简单通讯录的实现

里面有两个功能纯属娱乐,请勿当真!

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define NONE                 "\e[0m"
#define BLACK                "\e[0;30m"
#define L_BLACK              "\e[1;30m"
#define RED                  "\e[0;31m"
#define L_RED                "\e[1;31m"
#define GREEN                "\e[0;32m"
#define L_GREEN              "\e[1;32m"
#define BROWN                "\e[0;33m"
#define YELLOW               "\e[1;33m"
#define BLUE                 "\e[0;34m"
#define L_BLUE               "\e[1;34m"
#define PURPLE               "\e[0;35m"
#define L_PURPLE             "\e[1;35m"
#define CYAN                 "\e[0;36m"
#define L_CYAN               "\e[1;36m"
#define GRAY                 "\e[0;37m"
#define WHITE                "\e[1;37m"

#define SIZE 10000

struct student
{
	char name[20];
	int age;
	char sex;
	int id;
};

int person = 0;

void welcome();
void menu();
void addinfo(struct student *stu[]);
void showall(struct student *stu[]);
void seek(struct student *stu[]);
void chginfo(struct student *stu[]);
void delinfo(struct student *stu[]);

int main()
{
	int choice, m;
	struct student *stu[SIZE] = {0};
	
	welcome();

	while(1)
	{
		menu();

		printf("请输入功能选项:\n");
		printf("Please input:\n");

		scanf("%d", &choice);

		switch(choice)
		{
			case 1:
				addinfo(stu);
				break;
			case 2:
				showall(stu);
				break;
			case 3:
				seek(stu);
				break;
			case 4:
				delinfo(stu);
				break;
			case 5:
				printf("抱歉,请联系客服充值会员即可享受此服务!\n");
				sleep (3);
				break;
			case 6:
				printf("此服务只有内部员工才可获得的福利,你没希望了!\n");
				sleep(3);
				break;
			case 7:
				chginfo(stu);
				break;
			case 8:
				printf("山寨机就是牛!\n");
				printf("\n\n\n因为牛b所以信赖!\n\n\n欢迎下次使用!\n\n\n");
				sleep(1);
				exit(0);
				break;
		}
	}
	//printf("please input :\n");
	//	scanf("%s%d %c%d", stu[i].name, &stu[i].age, &stu[i].sex, &stu[i].id);
	//	printf("%s %d %c %d\n", stu[i].name, stu[i].age, stu[i].sex, stu[i].id);

	return 0;
}

void welcome()
{
	system("clear");

	printf(YELLOW"\n\n\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
	printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"NONE);
	printf(L_BLUE"**________**________**_______**____\n"NONE);
	printf(L_PURPLE"\n     欢迎来到菲利普专用山寨机!\n"NONE);
	printf(L_BLUE"**________**________**_______**____\n"NONE);
	printf(YELLOW"\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
	printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"NONE);
	
	sleep(3);
}

void menu()
{
	system("clear");
	
	printf(GREEN"\n\n\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n\n"NONE);
	printf(BLUE"        1、添加联系人                2、查看联系人信息\n"NONE);
	printf(PURPLE"        3、查找联系人                4、删除联系人信息\n"NONE);
	printf(L_GREEN"        5、GPS全球定位               6、一键导入联系人\n"NONE);
	printf(L_BLUE"        7、修改联系人                8、退出山寨菲利普\n"NONE);
	printf(GREEN"\n******************************************************************\n\n\n"NONE);
}
                                                                                                                                                                                                                                                                                                                                         
void addinfo(struct student *stu[])
{
	lop:printf(L_PURPLE"请输入添加联系人的信息(name、age、sex、id):\n"NONE);
	
	while(1)
	{
		stu[person] = (struct student *)malloc(sizeof(struct student));
		if(stu[person] == NULL)
		{
			printf("malloc error!\n");
			sleep(2);
			break;
		}
		
		scanf("%s", stu[person]->name);
		
		if(strcmp(stu[person]->name, "ok") == 0)
		{
			break;
		}
		scanf("%d", &stu[person]->age);
		getchar();
		scanf("%c", &stu[person]->sex);
		getchar();
		scanf("%d", &stu[person]->id);
		
		printf(L_CYAN"恭喜,存入成功!\n"NONE);

		person ++;
		
		if(person ==SIZE)
		{
			printf(YELLOW"警告:山寨机内存已存满!\n"NONE);
			sleep(2);
		}
	}
	printf(L_BLUE"请输入选项:\n"NONE);
	printf("\n\n1.添加结束               2.继续添加\n");
	sleep(2);

	int opt;
	scanf("%d", &opt);
	switch (opt)
	{
		case 1 :
			printf("正在返回主菜单,清稍后\n");
			sleep(2);
			break;
		case 2 :
			goto lop;
			break;
	}
}

void showall(struct student *stu[])
{
	int i, j;

	struct student *tmp[1];
	
	tmp[0] = (struct student *)malloc(sizeof(struct student));
	
	for (i = 0; i < person - 1; i++)
	{
	
		for (j = 0; j < person - i - 1; j++)
		{
			
			if(strcmp(stu[j+1]->name, stu[j]->name) > 0)
			{
				tmp[0] = stu[j+1];
				stu[j+1] = stu[j];
				stu[j] = tmp[0];
			}
		}
	}

	printf("联系人信息如下:\n");

	for (i = 0; i < person; i++ )
	{
		printf(L_BLUE"%s %d %c %d\n"NONE,stu[i]->name, stu[i]->age, stu[i]->sex, stu[i]->id);
	}
	
	sleep(3);
}

void seek(struct  student *stu[])
{
	char str[20] = {0};
	int i = 0;
	
	loop : printf("请输入联系人姓名:\n");
	
	scanf("%s", str);
	
	if(person == 0)
	{
		printf("通讯录是空的,暂无联系人!\n");
		
		sleep(2);
	}

	for (i = 0; i < person; i++)
	{
		
		if(strcmp(stu[i]->name, str) == 0)
		{
			printf("该联系人信息如下:\n");
			printf("%s %d %c %d\n", stu[i]->name, stu[i]->age, stu[i]->sex, stu[i]->id);
			
			sleep(3);
			break;
		}
		
		if((i+1) == person)
		{	
			printf("兄弟,查无此人!\n");
			
			sleep(2);
		}

	}
	printf("请输入选项:\n");
	printf("\n\n1.返回主菜单          2.再来一遍\n");

	int opt;

	scanf("%d", &opt);

	switch (opt)
	{
		case 1 :
			printf("正在返回主菜单,清稍后。。。\n");
			break;
		case 2 :
			goto loop;
			break;
	}
}

void chginfo(struct student *stu[])
{
	char str[20] = {0};
	int i;
	
	printf("请输入想要修改联系人的姓名:\n");
	
	scanf("%s", str);
	
	for (i = 0; i < person; i++)
	{
		if(strcmp(stu[i]->name, str) == 0)
	    {
	    	printf("该联系人原始信息如下:%s %d %c %d\n", stu[i]->name, stu[i]->age, stu[i]->sex, stu[i]->id);
			printf("请输入该联系人的新信息:\n");
			scanf("%s", stu[i]->name);
			getchar();
			scanf("%d", &stu[i]->age);
			getchar();
			scanf("%c", &stu[i]->sex);
			getchar();
			scanf("%d", &stu[i]->id);
			printf("恭喜!修改成功,奖你一个大西瓜!\n");
			sleep(2);
			break;
		}
	}
}

void delinfo(struct student *stu[])
{
	char str[20] = {0};
	int i, j;
	
	loop:printf("请输入想要删除联系人的姓名: \n");
	sleep (1);
	scanf("%s", str);
	
	for (i = 0; i < person; i++)
	{
		if(strcmp(stu[i]->name, str) == 0)
		{
			break;
		}
	}
	
	//free(stu[i]);
	
	for (j = i; j < person - 1; j++)
	{
		stu[j] = stu[j+1];
	}

	person--;

	int opt;
	printf("请输入选项:\n");
	printf("\n\n1.返回主菜单           2.继续删除联系人\n");
	printf("Please input :\n");
	scanf("%d", &opt);

	switch (opt)
	{
		case 1 :
			printf("正在返回主菜单,清稍后。。。\n");
			sleep(2);
			break;
		case 2 :
			goto loop;
			break;
	}
}

猜你喜欢

转载自blog.csdn.net/weixin_42720703/article/details/81367406
今日推荐