18.7.26通讯录V1.0版(还在调试)

/*************************************************************************
    > File Name: addresslist.c
    > Author: ma6174
    > Mail: [email protected] 
    > Created Time: 2018年07月26日 星期四 10时37分40秒
 ************************************************************************/

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define Num_Mem 12
int T = 0;
int Main_Screen();

struct list
{
	int num;
	char name[30];
	char tel[30];
	char address[30];
};
struct list stu[Num_Mem];

void func1()  //显示联系人
{
	int a = 0;
	printf("*****按 序号 显示联系人******\n");
	for(a = 0; a < T; a++)
	{
		printf("第%d位:\n",stu[a].num);
		printf("姓名:%s\n",stu[a].name);
		printf("电话:%s\n",stu[a].tel);
		printf("地址: %s\n",stu[a].address);
	}
	Main_Screen();	
}

void func2() //增加联系人
{
	int a = 0, b = 0;
	for(a = 0; a < Num_Mem ;a++)
	{
Sign1:	printf("请输入联系人姓名:\n");
		scanf("%s",stu[a].name);
		printf("请输入联系人电话号码:\n");
		scanf("%s",stu[a].tel);
		printf("请输入联系人地址:\n");
		scanf("%s",stu[a].address);
		printf("成功输入!\n");
		T ++;
//        printf("**继续输入键入:1**\n**退出输入键入:2**\n");
		if( T == Num_Mem )
		{
			printf("通讯录已满\n");
			break;
		}
/*		printf("请键入:");
		scanf("%d",&b);
		if( 1 == b)
		{
			goto Sign1;
		}
		else if( 2 == b)
		{
			break;
		}*/
		
	}
	Main_Screen();
}

void func3()  //查找联系人
{
/*		int a,b,c;
		char d;
		char search[30]={0};
Sign2:	printf("按姓名搜索请键入1:\n按电话搜索请键入2:\n");
		scanf("%d",&c);
		if( 1 == c)
		{	
			printf("请输入要查找的联系人姓名:\n");
			scanf("%s",search);
			for( a = 0;a < Num_Mem; a++)
			{
				if( strcmp( search,stu[a].name ) == 0 )
				{
					printf("*已找到此联系人*\n");
					printf("%d\n",stu[a].num);
					printf("%s\n",stu[a].name);
					printf("%s\n",stu[a].tel);
					printf("%s\n",stu[a].address);
					break;
				}
				else if( (Num_Mem -1) == a)
				{	
			        printf("查无此人\n重新查找请输入y,退出请按任意键\n");
				    scanf("%c",&d);
					if( 'y'== d )
					{
						goto Sign2;
					}
				}
			}
		}
		
		else if( 0 == c )
		{	
			printf("请输入联系人的电话号码:\n");
			scanf("%s",search);
			for( b = 0; b < Num_Mem; b++)
			{
				if( strcmp( search,stu[b].tel) == 0 )
				{
					printf("*已找到此联系人*\n");
					printf("%d\n",stu[b].num);
					printf("%s\n",stu[b].name);
					printf("%s\n",stu[b].tel);
					printf("%s\n",stu[b].address);
					break;
				}
			    else if( (Num_Mem -1) == b)
				{	
			        printf("查无此人\n重新查找请输入y,退出请按任意键\n");
				    scanf("%c",&d);
					if( 'y'== d )
					{
						goto Sign2;
					}
				}
			}
		} */
	Main_Screen();
}		

void func4() //修改联系人信息
{
/*	int  H,S,a,b;
	char fix[30]={0};
	for( H = 0; H < T; H++)
	{
		printf("%d\n",stu[H].num);
		printf("%s\n",stu[H].name);
		printf("%s\n",stu[H].tel);
		printf("%s\n",stu[H].address);
		printf("\n");
	}
	
	printf("*请输入需要修改信息的序号:\n*");
	scanf("%d",&S);
	printf("第%d号联系人信息如下:\n",S);
	printf("%s",stu[S-1].name);
	printf("%s",stu[S-1].tel);
	printf("%s",stu[S-1].address);
	
Sign3:	printf("*请输入你要修改的选项:1.姓名,2.电话号码,3.地址.\n*");
		scanf("%d",&a);
		
		if( 1 == a)
		{
			b=0;
	Sign4:	printf("*请输入新的姓名:\n*");
			scanf("%s",fix);
		    strcpy( stu[S-1].name , fix );
			printf("第%d号联系人信息已更改如下:\n",S);
			printf("%s",stu[S-1].name);
			printf("%s",stu[S-1].tel);
			printf("%s",stu[S-1].address);
			printf("是否继续更改?继续请按 1 ,退出请按任意键\n");
			scanf("%d",&b);
			if( 1 == b)
			{
				goto Sign3;
			}	
		}
		
		else if( 2 == a)
		{
			b=0;
	Sign5:	printf("*请输入新的电话号码:\n*");
			scanf("%s",fix);
		    strcpy( stu[S-1].tel , fix );
			printf("第%d号联系人信息已更改如下:\n",S);
			printf("%s",stu[S-1].name);
			printf("%s",stu[S-1].tel);
			printf("%s",stu[S-1].address);
			printf("是否继续更改?继续请按 1 ,退出请按任意键\n");
			scanf("%d",&b);
			if( 1 == b)
			{
				goto Sign3;
			}	
		}
	
		else if( 3 == a)
		{
			b=0;
	Sign6:	printf("*请输入新的电话号码:\n*");
			scanf("%s",fix);
		    strcpy( stu[S-1].tel , fix );
			printf("第%d号联系人信息已更改如下:\n",S);
			printf("%s",stu[S-1].name);
			printf("%s",stu[S-1].tel);
			printf("%s",stu[S-1].address);
			printf("是否继续更改?继续请按 1 ,退出请按任意键\n");
			scanf("%d",&b);
			if( 1 == b)
			{
				goto Sign3;
			}	
		}*/
	Main_Screen();	
}

void func5()  //删除联系人
{
/*	int a = 0, b = 0;
	printf("请选择你要删除的联系人序号:\n");
	scanf("%d",&a);
	for(b = a;b < T; b++)
	{
		strcpy( stu[b-1].name,stu[b].name);//将后一个赋给前一个。
		strcpy( stu[b-1].tel,stu[b].tel);
		strcpy( stu[b-1].address,stu[b].address);
	}
	strcpy( stu[T].name,"");//将最后一个空出来的 删除。
	strcpy( stu[T].tel,"");
	strcpy( stu[T].address,"");
	T -= 1;  //总个数减1
	printf("成功删除!\n");*/
	Main_Screen();
}


int Main_Screen()
{
    printf("*********通讯录v1.0*********\n");
	printf("1.*******显示联系人*********\n");
	printf("2.******增加新联系人********\n");
	printf("3.*******查找联系人*********\n");
	printf("4.*****修改联系人信息*******\n");
	printf("5.*******删除联系人*********\n");
	int i,in = 1;
	printf("请输入想要进入的功能页:\n");
	scanf("%d",&i);
	switch(i)
	{
			case 1:
				func1();
				break;
			case 2:
				func2();
				break;
			case 3:
				func3();
				break;
			case 4:
				func4();
				break;
			case 5:
				func5();
				break;
			default :
				printf("输入有误,请重新输入:\n");
				break;
	}
	return in;
}

int main()
{
	int a = 0;
	int count = 1;
	FILE *stream;
	stream = fopen("addresslist.txt","r+");
	if (stream == NULL)
	{
		stream = fopen("addresslist","w");
		fclose(stream);
	}
	
    fread(&T,sizeof(int),1,stream);
    printf("总数为:%d",T);
    fread(stu,sizeof(struct list),T,stream);
    fclose(stream);
    for(a = 0;a < 10;a++)
    {
        stu[a].num=a + 1;
	}
	
	while (count)
		count = Main_Screen();
	
    fwrite(&T,sizeof(int),1,stream);
    fwrite(stu,sizeof(struct list),15,stream);
    fclose(stream);
	
	return 0;
}

注释了许多功能,首先在功能1和功能2中查找bug

当前为解决的问题是:在功能2全部录入之后,但是按照功能1显示各个联系人时,他们的序号到了第10个之后的序号就都是0了

(序号为0);

猜你喜欢

转载自blog.csdn.net/qq_41481342/article/details/81227304
今日推荐