Linuxc基础 十六

今天我写了一个简易的通讯录。
代码

#include <stdio.h>
#include <string.h>
struct Data
{
	int id;
	char name[10];
	long phone;
	char a[100];
	char b[50];


};
int  my_rand(struct Data te[] )//产生随机数
{

	int sum1;
	srand(time(NULL));
	int i;
	
	for (i = 0; i < 5; i++)
    {
        te[i].id= rand()%10; 
		
		
	}
	
	sum1=te[0].id;
	
	for(i = 1 ;i < 5; i++)
	{
		if(te[i].id!=te[i+1].id)
		{
			sum1=sum1*10+te[i].id;//将数组转为整形
			//printf("%d\n",sum1);
		}
		else
		{
			break;
		}
	}
	
	return sum1;
}

void my_add(struct Data te[],int *length)//添加联系人函数
{
	int i;
	int hg=my_rand(te);//调用随机数
	int p1=*length;
	printf("1.请添加联系人\n");
	printf("2.输入ID:%d\n",hg);	
	
	printf("3.请输入号码: \n");
	scanf("%lu",&te[p1].phone);
	
	printf("4.请输入姓名: \n");
	scanf("%s",te[p1].name);
	
	p1 ++;
	for(i=0;i<p1;i++)
	{
		te[i].id=hg;//将随机数存储到te数组中
	
	}
	*length=p1;

}
void my_show(struct Data te[],int *length)//显示联系人
{
	int p2=*length;
	int i;
	
	for(i=0;i<p2;i++)
	{
			
		printf("%d\t",te[i].id);
		printf("%s\t",te[i].name);
		printf("%lu\n",te[i].phone);
		printf("------------------\n");
		printf("联系人数:%d\n",p2);
		printf("------------------\n");
		
		*length=p2;		
	}	

}
void my_delete(struct Data te[],int *length)//删除联系人函数
{
	int i;
	int p3=*length;
	int cd=0;
	
	printf("进入选项\n");
	printf("请输入1或0\n");
	
	scanf("%d",&cd);

	if(cd == 1 )//输入1时进行下面的操作
	{
		printf("请输入你要删除的姓名:\n");
		scanf("%s",te[i].name);
					
		for(i=0;i<p3;i++)
		{			
			strcpy(te[i].a,te[i].name);//将name数组的内容复制到a数组			
		}
			p3 --;
	}
	else if(cd == 0)
	{
		printf("请输入你要删除的号码:\n");
		scanf("%lu",&te[i].phone);
		for(i=0;i<p3;i++)
		{
						
			sprintf(te[i].b,"%lu",te[i].phone);//将长整型转换成字符串数组
			strcpy(te[i].a,te[i].b);//将b数组的内容复制到a数组
						
		}
		p3 --;
	}
	*length=p3;
			


}
int my_find(struct Data te[],int *length)//查找函数
{
	
	int i;
	int p4=*length;
	int fd=0;
	char ret[20];
	long gp;
	
	printf("进入选项\n");
	printf("请输入1或0\n");
	
	scanf("%d",&fd);
	
	if(fd == 1)
	{
		printf("请输入你要查找的姓名\n");
		scanf("%s",ret);
						
		for(i=0;i<p4;i++)
		{
					
								
			if(strcmp(ret,te[i].name)==0)//比交数组ret与数组name的内容,如果是0则相等,如果是小于0则数组ret小于数组name,如果是大于0则数组ret大于数组name
			{
				printf("%d\t",te[i].id);
				printf("%s\t",te[i].name);
				printf("%lu\n",te[i].phone);
				return i;
			}
						
		}
	}
				
	else if(fd == 0)
	{
		printf("请输入你要查找的号码\n");
		scanf("%lu",&gp);
						
		for(i=0;i<p4;i++)
		{
						
			if(gp==te[i].phone)
			{
				printf("%d\t",te[i].id);
				printf("%s\t",te[i].name);
				printf("%lu\n",te[i].phone);

				return i;		
			}
					
		}
					
					
	}
	*length=p4;
	return -1;

}
int my_change(struct Data te[],int *length)//修改函数
{
	int p5=*length;
	int ret=my_find(te,&p5);
	if(ret !=-1)
	{	
		printf("%d\t",te[ret].id);
			
		printf("请修改姓名\n");
		scanf("%s",te[ret].name);
		printf("%s\t",te[ret].name);//修改后的名字
			
		printf("请修改号码\n");
		scanf("%lu",&te[ret].phone);
		printf("%lu\n",te[ret].phone);//修改后的号码
	}
	
	else
	{
		printf("error\n");
	}
	*length=p5;
	return 0;
}
int main()
{
	int i;
	struct Data te[10]={0};
	int count=0;
	int length=0;
	
	
	while(1)
	{	
		printf("1.请输入\n");
		printf("2.请显示\n");
		printf("3.请删除\n");
		printf("4.请查找\n");
		printf("5.请修改\n");
		scanf("%d",&count);
	
		switch(count)
		{	
			case 1:				
				my_add(te,&length);	//调用输入函数
				break;
			case 2:	
				my_show(te,&length);//调用显示函数
				break;
			case 3:
				my_delete(te,&length);//调用删除函数
				break;
			case 4:
				my_find(te,&length);//调用查找函数		
				break;
			
			case 5:
				 my_change(te,&length);//调用修改函数
				 break;
			default:
				printf("error\n");
				break;
		}		
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_41936758/article/details/84646825