完成通讯录
This commit is contained in:
parent
88e46d90ec
commit
d307903e70
348
practice_code/idea/contact.c
Normal file
348
practice_code/idea/contact.c
Normal file
@ -0,0 +1,348 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
int contact_digit=0;//存入了多少位置
|
||||||
|
|
||||||
|
struct Contact
|
||||||
|
{
|
||||||
|
char name[50];//名字
|
||||||
|
char sex[20];//性别
|
||||||
|
char email[20];//电子邮箱
|
||||||
|
char number[11];//电话号码
|
||||||
|
struct Contact *next;//下一个联系人
|
||||||
|
};
|
||||||
|
struct Contact *con[99];//声明结构体
|
||||||
|
|
||||||
|
void view_contact(void)//查看联系人
|
||||||
|
{
|
||||||
|
int contact_number;//第几个联系人
|
||||||
|
struct Contact *tmp_con=con[1];//声明结构体
|
||||||
|
for(contact_number=1;contact_number<contact_digit;contact_number++)//查找非空联系人
|
||||||
|
{
|
||||||
|
tmp_con=con[contact_number];//复制结构体指针
|
||||||
|
if(tmp_con!=NULL)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(contact_digit==0 ||(contact_digit==contact_number && tmp_con==NULL))
|
||||||
|
{
|
||||||
|
printf("通讯录没有联系人\n");
|
||||||
|
while(getchar()!='\n');//删除缓存
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
while(1)
|
||||||
|
{
|
||||||
|
printf("\n姓名:%s ",tmp_con->name);
|
||||||
|
printf("性别:%s ",tmp_con->sex);
|
||||||
|
printf("电子号码:%s ",tmp_con->number);
|
||||||
|
printf("电子邮箱:%s",tmp_con->email);
|
||||||
|
if(tmp_con->next==NULL)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
tmp_con=tmp_con->next;//指向下一个联系人
|
||||||
|
}
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
while(getchar()!='\n');//清除缓存
|
||||||
|
}
|
||||||
|
|
||||||
|
int find_numbering(const char name[])//查找编号
|
||||||
|
{
|
||||||
|
int contact_number=1;//第几个联系人
|
||||||
|
struct Contact *tmp_con=con[1];//声明临时结构体
|
||||||
|
if(contact_digit==0)//如果查找到最后一个都没有
|
||||||
|
{
|
||||||
|
while(getchar()!='\n');//删除缓存
|
||||||
|
return 100;
|
||||||
|
}
|
||||||
|
while(1)
|
||||||
|
{
|
||||||
|
if(strcmp(tmp_con->name,name)==0)
|
||||||
|
{
|
||||||
|
return contact_number;
|
||||||
|
}
|
||||||
|
if(tmp_con->next==NULL)//如果下一个为NULL就退出
|
||||||
|
{
|
||||||
|
return 100;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
contact_number++;//增加联系人名次
|
||||||
|
tmp_con=tmp_con->next;//指向下一个联系人
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void remove_contact(int contact_number)//删除联系人
|
||||||
|
{
|
||||||
|
if(contact_number==100)
|
||||||
|
{
|
||||||
|
printf("\n查无此人\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
struct Contact *temp=con[contact_number];//声明临时储储存需要删除联系人的物理地址
|
||||||
|
for(int i=contact_number;i<contact_digit;i++)//将所有联系人向前移一位
|
||||||
|
{
|
||||||
|
con[i]=con[i+1];
|
||||||
|
con[i-1]->next=con[i];
|
||||||
|
}
|
||||||
|
printf("删除的联系人姓名是:%s\n", temp->name);
|
||||||
|
free(temp);//释放这个联系人内容
|
||||||
|
contact_digit--;//总数减一
|
||||||
|
if(contact_digit==contact_number)//如果是最后一位
|
||||||
|
{
|
||||||
|
con[contact_number]->next=NULL;
|
||||||
|
}
|
||||||
|
printf("删除成功\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
void revise_contact(const int contact_number)//修改信息
|
||||||
|
{
|
||||||
|
if(contact_number==100)
|
||||||
|
{
|
||||||
|
printf("\n查无此人\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
int pick=0;
|
||||||
|
start:
|
||||||
|
printf("\n1.修改名字\n");
|
||||||
|
printf("2.修改性别\n");
|
||||||
|
printf("3.修改电话号码\n");
|
||||||
|
printf("4.修改电子邮箱\n");
|
||||||
|
printf("5.返回主页\n");
|
||||||
|
printf("请输入:");
|
||||||
|
while((scanf("%d",&pick))!=1)
|
||||||
|
{
|
||||||
|
while(getchar()!='\n');//清除缓存
|
||||||
|
printf("请输入合法的数字:");
|
||||||
|
scanf("%d",&pick);
|
||||||
|
}
|
||||||
|
switch(pick)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
{
|
||||||
|
printf("请输入姓名:");
|
||||||
|
scanf("%50s",con[contact_number]->name);
|
||||||
|
printf("修改成功!\n当前姓名为:%s",con[contact_number]->name);
|
||||||
|
while(getchar()!='\n');//清除缓存
|
||||||
|
goto start;//回到主菜单
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 2:
|
||||||
|
{
|
||||||
|
printf("请输入性别:");
|
||||||
|
scanf("%20s",con[contact_number]->sex);
|
||||||
|
printf("修改成功!\n当前性别为:%s",con[contact_number]->sex);
|
||||||
|
while(getchar()!='\n');//清除缓存
|
||||||
|
goto start;//回到主菜单
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 3:
|
||||||
|
{
|
||||||
|
printf("请输入电话号码:");
|
||||||
|
number_tab:
|
||||||
|
scanf("%11s",con[contact_number]->number);
|
||||||
|
for(int i=0;i<11;i++)
|
||||||
|
{
|
||||||
|
if(strlen(con[contact_number]->number)!=11||con[contact_number]->number[i]<'0'||con[contact_number]->number[i]>'9')
|
||||||
|
{
|
||||||
|
printf("请输入11位数字:");
|
||||||
|
while(getchar()!='\n');//清除缓存
|
||||||
|
goto number_tab;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
printf("修改成功!\n当前电话号码为:%s",con[contact_number]->number);
|
||||||
|
while(getchar()!='\n');//清除缓存
|
||||||
|
goto start;//回到主菜单
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 4:
|
||||||
|
{
|
||||||
|
printf("请输入电子邮箱:");
|
||||||
|
email_tab:
|
||||||
|
scanf("%20s",con[contact_number]->email);
|
||||||
|
for(int i=0;i<=strlen(con[contact_number]->email);i++)
|
||||||
|
{
|
||||||
|
if(con[contact_number]->email[i]=='@')
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else if(i==strlen(con[contact_number]->email))
|
||||||
|
{
|
||||||
|
while(getchar()!='\n');
|
||||||
|
printf("请输入正确格式的邮箱:");
|
||||||
|
goto email_tab;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
printf("修改成功!\n当前电子邮箱为:%s",con[contact_number]->email);
|
||||||
|
while(getchar()!='\n');//清除缓存
|
||||||
|
goto start;//回到主菜单
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 5:
|
||||||
|
{
|
||||||
|
while(getchar()!='\n');//清除缓存
|
||||||
|
return;//结束程序
|
||||||
|
}
|
||||||
|
default :
|
||||||
|
{
|
||||||
|
while(getchar()!='\n');//清除缓存
|
||||||
|
printf("请输入对应的模式\n");
|
||||||
|
goto start;//回到主菜单
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void see_contact(const int contact_number)//查看单个联系人
|
||||||
|
{
|
||||||
|
if(contact_number==100)
|
||||||
|
{
|
||||||
|
printf("\n查无此人\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
printf("\n姓名:%s ",con[contact_number]->name);
|
||||||
|
printf("性别:%s ",con[contact_number]->sex);
|
||||||
|
printf("电子号码:%s ",con[contact_number]->number);
|
||||||
|
printf("电子邮箱:%s\n",con[contact_number]->email);
|
||||||
|
}
|
||||||
|
|
||||||
|
void add_contact(void)//新增联系人
|
||||||
|
{
|
||||||
|
contact_digit++;
|
||||||
|
//分配内存
|
||||||
|
con[contact_digit]=(struct Contact *)malloc(sizeof(struct Contact));//给新联系人分配内存
|
||||||
|
//姓名
|
||||||
|
printf("请输入姓名:");
|
||||||
|
scanf("%50s",con[contact_digit]->name);
|
||||||
|
//性别
|
||||||
|
printf("请输入性别:");
|
||||||
|
scanf("%20s",con[contact_digit]->sex);
|
||||||
|
//电话号码
|
||||||
|
printf("请输入电话号码:");
|
||||||
|
number_tab:
|
||||||
|
scanf("%11s",con[contact_digit]->number);
|
||||||
|
for(int i=0;i<11;i++)
|
||||||
|
{
|
||||||
|
if(strlen(con[contact_digit]->number)!=11||con[contact_digit]->number[i]<'0'||con[contact_digit]->number[i]>'9')
|
||||||
|
{
|
||||||
|
printf("请输入11位数字:");
|
||||||
|
while(getchar()!='\n');//清除缓存
|
||||||
|
goto number_tab;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//电子邮箱
|
||||||
|
printf("请输入电子邮箱:");
|
||||||
|
email_tab:
|
||||||
|
scanf("%20s",con[contact_digit]->email);
|
||||||
|
for(int i=0;i<=strlen(con[contact_digit]->email);i++)
|
||||||
|
{
|
||||||
|
if(con[contact_digit]->email[i]=='@')
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else if(i==strlen(con[contact_digit]->email))
|
||||||
|
{
|
||||||
|
while(getchar()!='\n');
|
||||||
|
printf("请输入正确格式的邮箱:");
|
||||||
|
goto email_tab;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//下一个地址
|
||||||
|
if(contact_digit>1)
|
||||||
|
{
|
||||||
|
con[contact_digit-1]->next=con[contact_digit];//与上一个连接
|
||||||
|
}
|
||||||
|
con[contact_digit]->next=NULL;//将下一个设置为空
|
||||||
|
while(getchar()!='\n');//清除缓存
|
||||||
|
printf("\n新建成功");
|
||||||
|
see_contact(contact_digit);//输出单个信息
|
||||||
|
}
|
||||||
|
|
||||||
|
int homepage(void)//主页
|
||||||
|
{
|
||||||
|
printf("————通讯录————\n");
|
||||||
|
printf("1.查看联系人\n");
|
||||||
|
printf("2.查找联系人\n");
|
||||||
|
printf("3.修改联系人\n");
|
||||||
|
printf("4.删除联系人\n");
|
||||||
|
printf("5.新建联系人\n");
|
||||||
|
printf("6.退出通讯录\n");
|
||||||
|
int accept = 0;//接受用户输入的模式
|
||||||
|
printf("请输入:");
|
||||||
|
accept_tab://接受输入标签
|
||||||
|
while( ( scanf("%d",&accept) ) != 1)
|
||||||
|
{
|
||||||
|
while(getchar() != '\n');//清楚缓存
|
||||||
|
printf("请输入合法数字:");
|
||||||
|
scanf("%d",&accept);
|
||||||
|
}
|
||||||
|
if(accept>0&&accept<6)
|
||||||
|
{
|
||||||
|
return accept;
|
||||||
|
}
|
||||||
|
else if(accept==6)
|
||||||
|
{
|
||||||
|
printf("欢迎下次使用\n");
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
while(getchar() != '\n');//清楚缓存
|
||||||
|
printf("请输入正确的模式:");
|
||||||
|
goto accept_tab;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
char name[10];//要接受用户输入的名字
|
||||||
|
int contact_number;//查找名字所在的结构体返回值
|
||||||
|
int homepage_pick=0;//主页选择变量
|
||||||
|
while(1)
|
||||||
|
{
|
||||||
|
homepage_pick=homepage();//接收主页选择
|
||||||
|
switch(homepage_pick)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
{
|
||||||
|
view_contact();//输出所有联系人
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 2:
|
||||||
|
{
|
||||||
|
printf("\n请输入需要查找联系人的姓名:");
|
||||||
|
scanf("%s",name);
|
||||||
|
contact_number= find_numbering(name);//查找名字所在的结构体
|
||||||
|
see_contact(contact_number);//输出单个信息
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 3:
|
||||||
|
{
|
||||||
|
printf("\n请输入需要修改联系人的姓名:");
|
||||||
|
scanf("%s",name);
|
||||||
|
contact_number= find_numbering(name);//查找名字所在的结构体
|
||||||
|
revise_contact(contact_number);//修改联系人
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 4:
|
||||||
|
{
|
||||||
|
printf("\n请输入需要删除联系人的姓名:");
|
||||||
|
scanf("%s",name);
|
||||||
|
contact_number= find_numbering(name);//查找名字所在的结构体
|
||||||
|
remove_contact(contact_number);//删除联系人
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 5:
|
||||||
|
{
|
||||||
|
add_contact();//进行增加
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
@ -6,7 +6,7 @@ int contact_digit=0;//存入了多少位置
|
|||||||
|
|
||||||
struct Contact
|
struct Contact
|
||||||
{
|
{
|
||||||
char name[20];//名字
|
char name[50];//名字
|
||||||
char sex[20];//性别
|
char sex[20];//性别
|
||||||
char email[20];//电子邮箱
|
char email[20];//电子邮箱
|
||||||
char number[11];//电话号码
|
char number[11];//电话号码
|
||||||
@ -17,14 +17,16 @@ struct Contact *con[99];//声明结构体
|
|||||||
void view_contact(void)//查看联系人
|
void view_contact(void)//查看联系人
|
||||||
{
|
{
|
||||||
int contact_number;//第几个联系人
|
int contact_number;//第几个联系人
|
||||||
|
struct Contact *tmp_con=con[1];//声明结构体
|
||||||
for(contact_number=1;contact_number<contact_digit;contact_number++)//查找非空联系人
|
for(contact_number=1;contact_number<contact_digit;contact_number++)//查找非空联系人
|
||||||
{
|
{
|
||||||
if(con[contact_number]!=NULL)
|
tmp_con=con[contact_number];//复制结构体指针
|
||||||
|
if(tmp_con!=NULL)
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(contact_digit==0 ||(contact_digit==contact_number && con[contact_number]==NULL))
|
if(contact_digit==0 ||(contact_digit==contact_number && tmp_con==NULL))
|
||||||
{
|
{
|
||||||
printf("通讯录没有联系人\n");
|
printf("通讯录没有联系人\n");
|
||||||
while(getchar()!='\n');//删除缓存
|
while(getchar()!='\n');//删除缓存
|
||||||
@ -32,17 +34,17 @@ void view_contact(void)//查看联系人
|
|||||||
}
|
}
|
||||||
while(1)
|
while(1)
|
||||||
{
|
{
|
||||||
printf("\n姓名:%s ",con[contact_number]->name);
|
printf("\n姓名:%s ",tmp_con->name);
|
||||||
printf("性别:%s ",con[contact_number]->sex);
|
printf("性别:%s ",tmp_con->sex);
|
||||||
printf("电子号码:%s ",con[contact_number]->number);
|
printf("电子号码:%s ",tmp_con->number);
|
||||||
printf("电子邮箱:%s",con[contact_number]->email);
|
printf("电子邮箱:%s",tmp_con->email);
|
||||||
if(con[contact_number]->next==NULL)
|
if(tmp_con->next==NULL)
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
con[contact_number]=con[contact_number]->next;//指向下一个联系人
|
tmp_con=tmp_con->next;//指向下一个联系人
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
printf("\n");
|
printf("\n");
|
||||||
@ -51,41 +53,27 @@ void view_contact(void)//查看联系人
|
|||||||
|
|
||||||
int find_numbering(const char name[])//查找编号
|
int find_numbering(const char name[])//查找编号
|
||||||
{
|
{
|
||||||
int i=0;//查看的次数
|
int contact_number=1;//第几个联系人
|
||||||
int contact_number;//第几个联系人
|
struct Contact *tmp_con=con[1];//声明临时结构体
|
||||||
const int length=strlen(name);//需要查找的名字长度
|
if(contact_digit==0)//如果查找到最后一个都没有
|
||||||
for(contact_number=1;contact_number<contact_digit;contact_number++)//查找非空联系人
|
|
||||||
{
|
|
||||||
if(con[contact_number]!=NULL)
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(contact_digit==0 ||(contact_digit==contact_number && con[contact_number]==NULL))
|
|
||||||
{
|
{
|
||||||
while(getchar()!='\n');//删除缓存
|
while(getchar()!='\n');//删除缓存
|
||||||
return 100;
|
return 100;
|
||||||
}
|
}
|
||||||
while(1)
|
while(1)
|
||||||
{
|
{
|
||||||
for(i=0;i<length;i++)
|
if(strcmp(tmp_con->name,name)==0)
|
||||||
{
|
{
|
||||||
if(name[i]!=con[contact_number]->name[i])
|
return contact_number;
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if(length==i)
|
if(tmp_con->next==NULL)//如果下一个为NULL就退出
|
||||||
{
|
|
||||||
return contact_number;
|
|
||||||
}
|
|
||||||
else if(con[contact_number]->next==NULL)
|
|
||||||
{
|
{
|
||||||
return 100;
|
return 100;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
con[contact_number]=con[contact_number]->next;//指向下一个联系人
|
contact_number++;//增加联系人名次
|
||||||
|
tmp_con=tmp_con->next;//指向下一个联系人
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -97,28 +85,18 @@ void remove_contact(int contact_number)//删除联系人
|
|||||||
printf("\n查无此人\n");
|
printf("\n查无此人\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
free(con[contact_number]);//释放这个联系人内容
|
struct Contact *temp=con[contact_number];//声明临时储储存需要删除联系人的物理地址
|
||||||
con[contact_number]=NULL;//将它指向空
|
for(int i=contact_number;i<contact_digit;i++)//将所有联系人向前移一位
|
||||||
for(contact_number--;contact_number>0;contact_number--)//查找前一个有效地址
|
|
||||||
{
|
{
|
||||||
if(con[contact_number]!=NULL)
|
con[i]=con[i+1];
|
||||||
{
|
con[i-1]->next=con[i];
|
||||||
int i=0;//后面一位的有效值
|
}
|
||||||
if(i==contact_digit&&con[i]==NULL)//如果没有找到后一个就标记空
|
printf("删除的联系人姓名是:%s\n", temp->name);
|
||||||
{
|
free(temp);//释放这个联系人内容
|
||||||
con[contact_number]->next=NULL;
|
contact_digit--;//总数减一
|
||||||
break;
|
if(contact_digit==contact_number)//如果是最后一位
|
||||||
}
|
{
|
||||||
for(i=contact_number+1;i<=contact_digit;i++)//查找后一位有效值
|
con[contact_number]->next=NULL;
|
||||||
{
|
|
||||||
if(con[i]!=NULL)//如果查找到后一位就将前一位链接到最后一位
|
|
||||||
{
|
|
||||||
con[contact_number]->next=con[i];
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
printf("删除成功\n");
|
printf("删除成功\n");
|
||||||
}
|
}
|
||||||
@ -149,7 +127,7 @@ void revise_contact(const int contact_number)//修改信息
|
|||||||
case 1:
|
case 1:
|
||||||
{
|
{
|
||||||
printf("请输入姓名:");
|
printf("请输入姓名:");
|
||||||
scanf("%s",con[contact_number]->name);
|
scanf("%50s",con[contact_number]->name);
|
||||||
printf("修改成功!\n当前姓名为:%s",con[contact_number]->name);
|
printf("修改成功!\n当前姓名为:%s",con[contact_number]->name);
|
||||||
while(getchar()!='\n');//清除缓存
|
while(getchar()!='\n');//清除缓存
|
||||||
goto start;//回到主菜单
|
goto start;//回到主菜单
|
||||||
@ -158,7 +136,7 @@ void revise_contact(const int contact_number)//修改信息
|
|||||||
case 2:
|
case 2:
|
||||||
{
|
{
|
||||||
printf("请输入性别:");
|
printf("请输入性别:");
|
||||||
scanf("%s",con[contact_number]->sex);
|
scanf("%20s",con[contact_number]->sex);
|
||||||
printf("修改成功!\n当前性别为:%s",con[contact_number]->sex);
|
printf("修改成功!\n当前性别为:%s",con[contact_number]->sex);
|
||||||
while(getchar()!='\n');//清除缓存
|
while(getchar()!='\n');//清除缓存
|
||||||
goto start;//回到主菜单
|
goto start;//回到主菜单
|
||||||
@ -168,7 +146,7 @@ void revise_contact(const int contact_number)//修改信息
|
|||||||
{
|
{
|
||||||
printf("请输入电话号码:");
|
printf("请输入电话号码:");
|
||||||
number_tab:
|
number_tab:
|
||||||
scanf("%s",con[contact_number]->number);
|
scanf("%11s",con[contact_number]->number);
|
||||||
for(int i=0;i<11;i++)
|
for(int i=0;i<11;i++)
|
||||||
{
|
{
|
||||||
if(strlen(con[contact_number]->number)!=11||con[contact_number]->number[i]<'0'||con[contact_number]->number[i]>'9')
|
if(strlen(con[contact_number]->number)!=11||con[contact_number]->number[i]<'0'||con[contact_number]->number[i]>'9')
|
||||||
@ -187,7 +165,7 @@ void revise_contact(const int contact_number)//修改信息
|
|||||||
{
|
{
|
||||||
printf("请输入电子邮箱:");
|
printf("请输入电子邮箱:");
|
||||||
email_tab:
|
email_tab:
|
||||||
scanf("%s",con[contact_number]->email);
|
scanf("%20s",con[contact_number]->email);
|
||||||
for(int i=0;i<=strlen(con[contact_number]->email);i++)
|
for(int i=0;i<=strlen(con[contact_number]->email);i++)
|
||||||
{
|
{
|
||||||
if(con[contact_number]->email[i]=='@')
|
if(con[contact_number]->email[i]=='@')
|
||||||
@ -235,36 +213,22 @@ void see_contact(const int contact_number)//查看单个联系人
|
|||||||
|
|
||||||
void add_contact(void)//新增联系人
|
void add_contact(void)//新增联系人
|
||||||
{
|
{
|
||||||
int contact_number=1;//增加位置变量
|
contact_digit++;
|
||||||
//判断增加的位置
|
|
||||||
for(contact_number=1;contact_number<=contact_digit;contact_number++)
|
|
||||||
{
|
|
||||||
if(con[contact_number]==NULL)//查找有无空位
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
else if(contact_number==contact_digit)//需要新增的话
|
|
||||||
{
|
|
||||||
contact_number++;//设置本次的位置
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
//分配内存
|
//分配内存
|
||||||
con[contact_number]=(struct Contact *)malloc(sizeof(struct Contact));//给新联系人分配内存
|
con[contact_digit]=(struct Contact *)malloc(sizeof(struct Contact));//给新联系人分配内存
|
||||||
//姓名
|
//姓名
|
||||||
printf("请输入姓名:");
|
printf("请输入姓名:");
|
||||||
scanf("%s",con[contact_number]->name);
|
scanf("%50s",con[contact_digit]->name);
|
||||||
//性别
|
//性别
|
||||||
printf("请输入性别:");
|
printf("请输入性别:");
|
||||||
scanf("%s",con[contact_number]->sex);
|
scanf("%20s",con[contact_digit]->sex);
|
||||||
//电话号码
|
//电话号码
|
||||||
printf("请输入电话号码:");
|
printf("请输入电话号码:");
|
||||||
number_tab:
|
number_tab:
|
||||||
scanf("%s",con[contact_number]->number);
|
scanf("%11s",con[contact_digit]->number);
|
||||||
for(int i=0;i<11;i++)
|
for(int i=0;i<11;i++)
|
||||||
{
|
{
|
||||||
if(strlen(con[contact_number]->number)!=11||con[contact_number]->number[i]<'0'||con[contact_number]->number[i]>'9')
|
if(strlen(con[contact_digit]->number)!=11||con[contact_digit]->number[i]<'0'||con[contact_digit]->number[i]>'9')
|
||||||
{
|
{
|
||||||
printf("请输入11位数字:");
|
printf("请输入11位数字:");
|
||||||
while(getchar()!='\n');//清除缓存
|
while(getchar()!='\n');//清除缓存
|
||||||
@ -274,14 +238,14 @@ void add_contact(void)//新增联系人
|
|||||||
//电子邮箱
|
//电子邮箱
|
||||||
printf("请输入电子邮箱:");
|
printf("请输入电子邮箱:");
|
||||||
email_tab:
|
email_tab:
|
||||||
scanf("%s",con[contact_number]->email);
|
scanf("%20s",con[contact_digit]->email);
|
||||||
for(int i=0;i<=strlen(con[contact_number]->email);i++)
|
for(int i=0;i<=strlen(con[contact_digit]->email);i++)
|
||||||
{
|
{
|
||||||
if(con[contact_number]->email[i]=='@')
|
if(con[contact_digit]->email[i]=='@')
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else if(i==strlen(con[contact_number]->email))
|
else if(i==strlen(con[contact_digit]->email))
|
||||||
{
|
{
|
||||||
while(getchar()!='\n');
|
while(getchar()!='\n');
|
||||||
printf("请输入正确格式的邮箱:");
|
printf("请输入正确格式的邮箱:");
|
||||||
@ -289,43 +253,14 @@ void add_contact(void)//新增联系人
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
//下一个地址
|
//下一个地址
|
||||||
if(contact_number==contact_digit)//最后一个
|
if(contact_digit>1)
|
||||||
{
|
{
|
||||||
for(int i=contact_number-1;i>0;i--)//查找前一个有效地址
|
con[contact_digit-1]->next=con[contact_digit];//与上一个连接
|
||||||
{
|
|
||||||
if(con[i]!=NULL)
|
|
||||||
{
|
|
||||||
|
|
||||||
con[i]->next=con[contact_number];
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
con[contact_number]->next=NULL;
|
|
||||||
}
|
|
||||||
else//从中间新增
|
|
||||||
{
|
|
||||||
for(int i=contact_number-1;i>0;i--)//查找前一个有效地址
|
|
||||||
{
|
|
||||||
if(con[i]!=NULL)
|
|
||||||
{
|
|
||||||
|
|
||||||
con[i]->next=con[contact_number];
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for(int i=contact_number+1;i<=contact_digit;i++)//查找后一位有效值
|
|
||||||
{
|
|
||||||
if(con[i]!=NULL)
|
|
||||||
{
|
|
||||||
con[contact_number]->next=con[i];
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
con[contact_digit]->next=NULL;//将下一个设置为空
|
||||||
while(getchar()!='\n');//清除缓存
|
while(getchar()!='\n');//清除缓存
|
||||||
contact_digit++;//增加总数量
|
|
||||||
printf("\n新建成功");
|
printf("\n新建成功");
|
||||||
see_contact(contact_number);//输出单个信息
|
see_contact(contact_digit);//输出单个信息
|
||||||
}
|
}
|
||||||
|
|
||||||
int homepage(void)//主页
|
int homepage(void)//主页
|
||||||
|
Loading…
Reference in New Issue
Block a user