/*************************************************************************
> File Name: addresslist.c
> Author: ma6174
> Mail: ma6174@163.com
> 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);