|
|
|
@ -17,8 +17,9 @@ typedef struct
|
|
|
|
|
lm linkman,lkm;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int *offset;
|
|
|
|
|
|
|
|
|
|
int flag2,p,flag3;
|
|
|
|
|
char e_num;
|
|
|
|
|
|
|
|
|
|
void add();
|
|
|
|
|
void view();
|
|
|
|
|
void search();
|
|
|
|
@ -30,6 +31,15 @@ void whattodo();
|
|
|
|
|
int passwd();
|
|
|
|
|
int addpw();
|
|
|
|
|
int changepw();
|
|
|
|
|
void color(short x) //自定义函根据参数改变颜色
|
|
|
|
|
{
|
|
|
|
|
if(x>=0 && x<=15)//参数在0-15的范围颜色
|
|
|
|
|
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), x); //只有一个参数,改变字体颜色
|
|
|
|
|
else//默认的颜色白色
|
|
|
|
|
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int passwd()
|
|
|
|
|
{
|
|
|
|
@ -156,6 +166,7 @@ main()
|
|
|
|
|
void add()
|
|
|
|
|
{
|
|
|
|
|
int i=0,flag;
|
|
|
|
|
char kind;
|
|
|
|
|
ptr1=fopen("storage.sto","rb+");
|
|
|
|
|
if(ptr1==NULL)
|
|
|
|
|
{
|
|
|
|
@ -190,6 +201,20 @@ void add()
|
|
|
|
|
pos_1:
|
|
|
|
|
printf("姓名:");
|
|
|
|
|
gets(lkm.name);
|
|
|
|
|
if(strlen(lkm.name)==0)
|
|
|
|
|
{
|
|
|
|
|
printf("请输入合法的");
|
|
|
|
|
goto pos_1;
|
|
|
|
|
}
|
|
|
|
|
for(p=0;p<strlen(lkm.name);p++)
|
|
|
|
|
{
|
|
|
|
|
if(lkm.name[p]==' ')
|
|
|
|
|
{
|
|
|
|
|
printf("请输入合法的");
|
|
|
|
|
goto pos_1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
rewind(ptr1);
|
|
|
|
|
flag=0;
|
|
|
|
|
while(!feof(ptr1))
|
|
|
|
@ -203,8 +228,36 @@ void add()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
pos_2:
|
|
|
|
|
fflush(stdin);
|
|
|
|
|
printf("电话号码:");
|
|
|
|
|
gets(lkm.phonenum);
|
|
|
|
|
if(strlen(lkm.phonenum)==0)
|
|
|
|
|
{
|
|
|
|
|
printf("请输入合法的");
|
|
|
|
|
goto pos_2;
|
|
|
|
|
}
|
|
|
|
|
for(p=0;p<strlen(lkm.phonenum);p++)
|
|
|
|
|
{
|
|
|
|
|
if(lkm.phonenum[p]==' ')
|
|
|
|
|
{
|
|
|
|
|
printf("请输入合法的");
|
|
|
|
|
goto pos_2;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for(p=0,flag2=0;p<strlen(lkm.phonenum);p++)
|
|
|
|
|
{
|
|
|
|
|
if(lkm.phonenum[p]<'0'||lkm.phonenum[p]>'9')
|
|
|
|
|
{
|
|
|
|
|
flag2=1;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if(flag2)
|
|
|
|
|
{
|
|
|
|
|
printf("请输入合法的");
|
|
|
|
|
goto pos_2;
|
|
|
|
|
}
|
|
|
|
|
rewind(ptr1);
|
|
|
|
|
while(!feof(ptr1))
|
|
|
|
|
{
|
|
|
|
@ -216,16 +269,39 @@ void add()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
printf("分类(1 办公类 2 个人类 3 商务类):");
|
|
|
|
|
scanf("%d",&lkm.kind);
|
|
|
|
|
while(lkm.kind<0||lkm.kind>3)
|
|
|
|
|
fflush(stdin);
|
|
|
|
|
kind=getchar();
|
|
|
|
|
while(kind<'0'||kind>'3')
|
|
|
|
|
{
|
|
|
|
|
printf("请输入1-3内的数字:");
|
|
|
|
|
scanf("%d",&lkm.kind);
|
|
|
|
|
fflush(stdin);
|
|
|
|
|
kind=getchar();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(kind=='1')lkm.kind=1;
|
|
|
|
|
if(kind=='2')lkm.kind=2;
|
|
|
|
|
if(kind=='3')lkm.kind=3;
|
|
|
|
|
|
|
|
|
|
pos_7:
|
|
|
|
|
fflush(stdin);
|
|
|
|
|
printf("电子邮箱:");
|
|
|
|
|
gets(lkm.email);
|
|
|
|
|
fprintf(ptr1, "%20s%20s%5d%50s",lkm.name,lkm.phonenum,lkm.kind,lkm.email);
|
|
|
|
|
|
|
|
|
|
for(p=0,flag2=1;p<strlen(lkm.email);p++)
|
|
|
|
|
{
|
|
|
|
|
if(lkm.email[p]=='@')
|
|
|
|
|
{
|
|
|
|
|
flag2=0;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if(flag2)
|
|
|
|
|
{
|
|
|
|
|
printf("请输入合法的");
|
|
|
|
|
goto pos_7;
|
|
|
|
|
}
|
|
|
|
|
fseek(ptr1,0,2);
|
|
|
|
|
fprintf(ptr1, "%20s%20s%5d%50s\n",lkm.name,lkm.phonenum,lkm.kind,lkm.email);
|
|
|
|
|
if(i<15)
|
|
|
|
|
printf("\n这是您的第%d条联系人,您可以继续新增%d条联系人(y/n)",i,15-i);
|
|
|
|
|
else
|
|
|
|
@ -261,11 +337,17 @@ void view()
|
|
|
|
|
printf("【2】办公联系人\n");
|
|
|
|
|
printf("【3】个人联系人\n");
|
|
|
|
|
printf("【4】商务联系人\n");
|
|
|
|
|
while(x<1||x>4)
|
|
|
|
|
e_num=getchar();
|
|
|
|
|
while(e_num<'1'||e_num>'4')
|
|
|
|
|
{
|
|
|
|
|
printf("请输入1-4内的数字:");
|
|
|
|
|
scanf("%d",&x);
|
|
|
|
|
fflush(stdin);
|
|
|
|
|
e_num=getchar();
|
|
|
|
|
}
|
|
|
|
|
if(e_num=='1')x=1;
|
|
|
|
|
if(e_num=='2')x=2;
|
|
|
|
|
if(e_num=='3')x=3;
|
|
|
|
|
if(e_num=='4')x=4;
|
|
|
|
|
|
|
|
|
|
head();//输出表头
|
|
|
|
|
|
|
|
|
@ -456,7 +538,7 @@ void amend()
|
|
|
|
|
}
|
|
|
|
|
printf("请从(1-%d)选择要修改/删除的序号:",i);
|
|
|
|
|
scanf("%d",&x);
|
|
|
|
|
while(x<0||x>i)
|
|
|
|
|
while(x<=0||x>i)
|
|
|
|
|
{
|
|
|
|
|
fflush(stdin);
|
|
|
|
|
printf("请从(1-%d)选择要修改/删除的序号:",i);
|
|
|
|
@ -482,18 +564,80 @@ void amend()
|
|
|
|
|
fflush(stdin);
|
|
|
|
|
if(ch=='y'||ch=='Y')
|
|
|
|
|
{
|
|
|
|
|
pos_10:
|
|
|
|
|
printf("姓名:");
|
|
|
|
|
fflush(stdin);
|
|
|
|
|
gets(array[x-1].name);
|
|
|
|
|
if(strlen(array[x-1].name)==0)
|
|
|
|
|
{
|
|
|
|
|
printf("请输入合法的");
|
|
|
|
|
goto pos_10;
|
|
|
|
|
}
|
|
|
|
|
for(p=0;p<strlen(array[x-1].name);p++)
|
|
|
|
|
{
|
|
|
|
|
if(array[x-1].name[p]==' ')
|
|
|
|
|
{
|
|
|
|
|
printf("请输入合法的");
|
|
|
|
|
goto pos_10;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
rewind(ptr1);
|
|
|
|
|
while(!feof(ptr1))
|
|
|
|
|
{
|
|
|
|
|
fscanf(ptr1, "%s%s%d%s",linkman.name,linkman.phonenum,&linkman.kind,linkman.email);
|
|
|
|
|
if(strcmp(linkman.name,array[x-1].name)==0)
|
|
|
|
|
{
|
|
|
|
|
printf("您输入的姓名和已有的记录相同,请重新输入\n");
|
|
|
|
|
goto pos_10;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
printf("更改 %s 的电话号码 %s (y/n)",array[x-1].name,array[x-1].phonenum);
|
|
|
|
|
fflush(stdin);
|
|
|
|
|
ch=getchar();
|
|
|
|
|
if(ch=='y'||ch=='Y')
|
|
|
|
|
{
|
|
|
|
|
pos_9:
|
|
|
|
|
printf("电话号码:");
|
|
|
|
|
fflush(stdin);
|
|
|
|
|
gets(array[x-1].phonenum);
|
|
|
|
|
if(strlen(array[x-1].phonenum)==0)
|
|
|
|
|
{
|
|
|
|
|
printf("请输入合法的");
|
|
|
|
|
goto pos_9;
|
|
|
|
|
}
|
|
|
|
|
for(p=0;p<strlen(array[x-1].phonenum);p++)
|
|
|
|
|
{
|
|
|
|
|
if(array[x-1].phonenum[p]==' ')
|
|
|
|
|
{
|
|
|
|
|
printf("请输入合法的");
|
|
|
|
|
goto pos_9;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for(p=0,flag3=0;p<strlen(array[x-1].phonenum);p++)
|
|
|
|
|
{
|
|
|
|
|
if(array[x-1].phonenum[p]<'0'||array[x-1].phonenum[p]>'9')
|
|
|
|
|
{
|
|
|
|
|
flag3=1;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if(flag3)
|
|
|
|
|
{
|
|
|
|
|
printf("请输入合法的");
|
|
|
|
|
goto pos_9;
|
|
|
|
|
}
|
|
|
|
|
rewind(ptr1);
|
|
|
|
|
while(!feof(ptr1))
|
|
|
|
|
{
|
|
|
|
|
fscanf(ptr1, "%s%s%d%s",linkman.name,linkman.phonenum,&linkman.kind,linkman.email);
|
|
|
|
|
if(strcmp(linkman.phonenum,array[x-1].phonenum)==0)
|
|
|
|
|
{
|
|
|
|
|
printf("您输入的电话号码和已有的记录相同,请重新输入\n");
|
|
|
|
|
goto pos_9;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
fflush(stdin);
|
|
|
|
@ -523,10 +667,24 @@ void amend()
|
|
|
|
|
fflush(stdin);
|
|
|
|
|
ch=getchar();
|
|
|
|
|
if(ch=='y'||ch=='Y')
|
|
|
|
|
{
|
|
|
|
|
{
|
|
|
|
|
pos_8:
|
|
|
|
|
printf("电子邮箱:");
|
|
|
|
|
fflush(stdin);
|
|
|
|
|
gets(array[x-1].email);
|
|
|
|
|
for(p=0,flag3=1;p<strlen(array[x-1].email);p++)
|
|
|
|
|
{
|
|
|
|
|
if(array[x-1].email[p]=='@')
|
|
|
|
|
{
|
|
|
|
|
flag3=0;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if(flag3)
|
|
|
|
|
{
|
|
|
|
|
printf("请输入合法的");
|
|
|
|
|
goto pos_8;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
pos_3:
|
|
|
|
|
i=0;
|
|
|
|
@ -541,7 +699,7 @@ void amend()
|
|
|
|
|
{
|
|
|
|
|
i++;continue;
|
|
|
|
|
}
|
|
|
|
|
fprintf(ptr1, "%20s%20s%5d%50s",array[i].name,array[i].phonenum,array[i].kind,array[i].email);
|
|
|
|
|
fprintf(ptr1, "%20s%20s%5d%50s\n",array[i].name,array[i].phonenum,array[i].kind,array[i].email);
|
|
|
|
|
//printf("%20s%20s%5d%50s",array[i].name,array[i].phonenum,array[i].kind,array[i].email);
|
|
|
|
|
i++;
|
|
|
|
|
}
|
|
|
|
@ -671,18 +829,33 @@ void dial()
|
|
|
|
|
}
|
|
|
|
|
printf("请从(1-%d)选择要拨打的序号:",i);
|
|
|
|
|
scanf("%d",&x);
|
|
|
|
|
while(x<0||x>i)
|
|
|
|
|
while(x<=0||x>i)
|
|
|
|
|
{
|
|
|
|
|
fflush(stdin);
|
|
|
|
|
printf("请从(1-%d)选择要拨打的序号:",i);
|
|
|
|
|
scanf("%d",&x);
|
|
|
|
|
}
|
|
|
|
|
printf("正");Sleep(200);
|
|
|
|
|
printf("在");Sleep(200);
|
|
|
|
|
printf("拨");Sleep(200);
|
|
|
|
|
printf("打\t");Sleep(200);
|
|
|
|
|
for(q=0;q<strlen(array[x-1].phonenum);q++)
|
|
|
|
|
{
|
|
|
|
|
printf("%c",array[x-1].phonenum[q]);
|
|
|
|
|
Sleep(600);
|
|
|
|
|
Sleep(300);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Sleep(1500);
|
|
|
|
|
printf("\t");
|
|
|
|
|
for(q=0;q<50-strlen(array[x-1].phonenum);q++)
|
|
|
|
|
{
|
|
|
|
|
printf("*");
|
|
|
|
|
Sleep(20);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Sleep(1500);
|
|
|
|
|
color(10);
|
|
|
|
|
printf("[完成]\n");
|
|
|
|
|
color(16);
|
|
|
|
|
system("pause");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|