通讯录

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

#define N 10

struct Data
{
	int id;
	char name[N];
	long long phone;	
};

void add(struct Data *pa, int *length)//增加联系人
{
	// printf("请输入ID:");
	// scanf("%d", &a[length].id);
	int tmp;
	srand((unsigned int)time(NULL));
	pa[*length].id = rand()%90000+10000;
	tmp = *length;
	while(tmp)
	{
		if(pa[*length].id == pa[tmp-1].id)
		{
			pa[*length].id = rand()%90000+10000;
		}
		tmp--;
	}
		
	printf("请输入姓名:");
	scanf("%s", pa[*length].name);
	printf("请输入手机号码:");
	scanf("%lld", &pa[*length].phone);
	printf("\n");
	length++;
}

void delete(struct Data *pa, int *length)//删除联系人
{
	int i, j;
	int way;
	char name1[N] = {0};
	long long phone1;
	printf("请输入删除方式: name 0/phone 1\n");
	scanf("%d", &way);
	switch (way)
	{
		case 0:
			printf("请输入要删除的姓名:");
			scanf("%s", name1);
			for (i = 0; i < *length; i++)
			{
				if (strcmp(pa[i].name, name1))
					continue;
				else 
					break;
			}
			for (j = i; j < *length; j++)
			{
				pa[j] = pa[j+1];
			}
			break;
		
		case 1:
			printf("请输入要删除的手机号码:");
			scanf("%lld", &phone1);
			for (i = 0; i < *length; i++)
			{
				if (pa[i].phone == phone1)
					break;
				else 
					continue;
			}
			for (j = i; j < *length; j++)
			{
				pa[j] = pa[j+1];
			}
			break;
		default:
			printf("删除方式有误,请重新输入");
			break;
	}
}

void research(struct Data *pa, int *length)//查找联系人
{
	int i;
	int way;
	char name1[N] = {0};
	long long phone1;
	printf("请输入查找方式: name 0/phone 1\n");
	scanf("%d", &way);
	switch (way)
	{
		case 0:
			printf("请输入要查找的姓名:");
			scanf("%s", name1);
			for (i = 0; i < *length; i++)
			{
				if (strcmp(pa[i].name, name1))
					continue;
				else 
					printf("%d\t%s\t%lld\n", pa[i].id, pa[i].name, pa[i].phone);
			}
			break;
		
		case 1:
			printf("请输入要查找的手机号码:");
			scanf("%lld", &phone1);
			for (i = 0; i < *length; i++)
			{
				if (pa[i].phone == phone1)
					printf("%d\t%s\t%lld\n", pa[i].id, pa[i].name, pa[i].phone);
				else 
					continue;
			}
			break;
		default:
			printf("查找方式有误,请重新输入");
			break;
	}

}

void modify(struct Data *pa, int *length)//修改联系人
{
	int i;
	int way;
	char name1[N] = {0};
	char name2[N] = {0};
	long long phone1;
	long long phone2;
	printf("请输入要修改的内容:name 0/phone 1\n");
	scanf("%d", &way);
	switch (way)
	{
		case 0:
			printf("请输入要修改的姓名:");
			scanf("%s", name1);
			printf("请输入修改后的姓名:");
			scanf("%s", name2);
			for (i = 0; i < *length; i++)
			{
				if (strcmp(pa[i].name, name1))
					continue;
				else 
				{
					strcpy(pa[i].name, name2);
					printf("修改完成\n");
				}
			}
			break;
		case 1:
			printf("请输入要修改的手机号码:");
			scanf("%lld", &phone1);
			printf("请输入修改后的手机号码:");
			scanf("%lld", &phone2);
			for (i = 0; i < *length; i++)
			{
				if (pa[i].phone == phone1)
				{
					pa[i].phone = phone2;
					printf("修改完成\n");
				}	
				else 
					continue;
			}
			break;
		default:
			printf("修改方式有误,请重新输入");
			break;
	}

}

void display(struct Data *pa, int *length)//显示联系人
{
	int i;
	printf("---------------\n");
	printf("联系人总共有:%d个\n", *length);
	printf("---------------\n");
	printf("编号\t姓名\t手机号码\n");
	for (i = 0; i < *length; ++i)
	{
		printf("%d\t%s\t%lld\n", pa[i].id, pa[i].name, pa[i].phone);

	}
}

void sort(struct Data *pa, int *length)//排列联系人
{
	int i, j, k;
	int way;
	struct Data tmp;
	printf("请选择排序方式:name 0/phone 1\n");
	scanf("%d", &way);
	switch (way)
	{
		case 0:
			for (i = 0;i < *length; i++)
			{
				for(j = i+1;j < *length; j++)          
				{
					while (1)
					{
						if (pa[i].name[k] > pa[j].name[k])    
						{
							tmp = pa[i];
							pa[i] = pa[j];
							pa[j] = tmp;
							break;
						}
						else if (pa[i].name[0] == pa[j].name[0])
							k++;
					}	
				}
			}
		
		case 1:
			for (i = 0;i < *length; i++)
			{
				for(j = i+1;j < *length; j++)          
				{
					if (pa[i].phone > pa[j].phone)    
					{
						tmp = pa[i];
						pa[i] = pa[j];
						pa[j] = tmp;      
					}                                
				}
			}
			break;
	}
}

int main()
{
	struct Data a[N] = {0};
	int cmd;
	int length = 0;
	
	while (1)
    {
        printf("---------------\n");
        printf("| 1.增加联系人 |\n");
        printf("| 2.删除联系人 |\n");
        printf("| 3.查找联系人 |\n");
		printf("| 4.修改联系人 |\n");
		printf("| 5.显示联系人 |\n");
		printf("| 6.排列联系人 |\n");
        printf("请输入指令:");
        scanf("%d", &cmd);

		switch (cmd)
		{
			case 1:						//增加联系人
				add(a, &length);
				break;
				
			case 2:						//删除联系人
				delete(a, &length);
				break;
			
			case 3:						//查找联系人
				research(a, &length);
				break;
			
			case 4:						//修改联系人
				modify(a, &length);
				break;
				
			case 5:						//显示联系人
                display(a, &length);
                break;	
			
			case 6:						//排列联系人
				sort(a, &length);
				break;
		}
	}	
	return 0;
}
	

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值