Node *r;
if(strcmp(nameornum,\按编号查询*/
{
r=l->next; while(r) } { } { }
r=l->next; { }
if(strcmp(r->data.address,findness)==0) /*若找到 return r; r=r->next;
while(r)
r=l->next; { }
if(strcmp(r->data.name,findness)==0) /*若找到 return r; r=r->next;
while(r)
{ }
if(strcmp(r->data.num,findness)==0) /*若找到findmess return r; r=r->next;
值的学号*/
else if(strcmp(nameornum,\ /*按姓名查询*/
findmess值的联系人姓名*/
else if(strcmp(nameornum,\ /*按地址查询*/
findmess值的联系人地址*/
return 0; /*若未找到,返回一个空指针*/
}
/*输入字符串*/
void stringinput(char *t,int lengths,char *attention) {
char n[255]; do{
printf(attention); /*显示提示信息*/ scanf(\ /*输入字符串*/
if(strlen(n) > lengths)printf(\超过设定长度! \\n\进行长度校验,超过lengths值重新输入*/ }while(strlen(n) > lengths);
strcpy(t,n); /*将输入的字符串拷贝到字符串t中*/ }
/*输入age中的数字*/ int numberinput(char *attention) { }
/*增加联系人记录*/ void Add(Link l) {
Disp(l); /*先打印出已有的联系人信息*/ while(r->next!=NULL)
Node *p,*r,*s; /*实现添加操作的临时的结构体指针变量*/ char flag=0,num[6]; r=l; s=l->next; int t=0;
printf(attention); scanf(\return t;
r=r->next; /*将指针移至于链表最末尾,准备添加记录*/
while(l) /*一次可输入多条记录,直至输入学号为0的记录结点添加操作*/
{
while(l) /*输入学编号,保证该编号没有被使用,若输入编号为0,
{
则退出添加记录操作*/
stringinput(num,6,\输入编号(按'0'返回主菜单):\/*格式化输入
if(strcmp(num,\/*输入为0,则退出添加操作,返
编号并检验*/
flag=0;
回主界面*/
{return;} }
s=l->next;
while(s) /*查询该编号是否已经存在,若存在则要求重新输
{
if(strcmp(s->data.num,num)==0)
{ }
flag=1; break;
入一个未被占用的学号*/
s=s->next;
}
if(flag==1) /*提示用户是否重新输入*/ { }
{break;}
printf(\编号 %s 已经存在,是否重试?\
else
p=(Node *)malloc(sizeof(Node)); /*申请内存空间*/ if(!p)
}
{
strcpy(p->data.num,num); /*将字符串num拷贝到p->data.num stringinput(p->data.name,15,\
printf(\申请内存空间失败 \/*如没有申请到,打印提示信
息*/
return ; /*返回主界面*/ }
中*/
stringinput(p->data.phone,12,\
p->data.age=numberinput(\ } return ;
stringinput(p->data.address,10,\ stringinput(p->data.email,20,\ p->next=NULL; /*表明这是链表的尾部结点*/ r->next=p; /*将新建的结点加入链表尾部中*/ save=1;
r=p;
/*查询记录*/
void Find(Link l) /*按编号或姓名,查询电话记录*/ {
int select; /*1:按编号查,2:按姓名查,3:按地址查找,其他:返回主界面char searchinput[20]; /*保存用户输入的查询内容*/ Node *p;
if(!l->next) /*若链表为空*/
{ }
printf(\无!\\n\ return;
(菜单)*/
printf(\ =====>1 按编号查询 =====>2 按姓名查询 =====>3
按地址查询\\n\
printf(\ 请选择[1,2,3]:\scanf(\if(select==1) /*按编号查询*/ {
stringinput(searchinput,6,\请输入已存在的编号:\
p=Locate(l,searchinput,\在l中查找学号为searchinput值
if(p) /*若p!=NULL*/ {
printhead(); printdata(p); printf(END);
printf(\按任意键返回\} else
printf(\找不到此人!\\n\}
的节点,并返回节点的指针*/
else
if(select==2) /*按姓名查询*/ { }
if(select==3) /*按地址查询*/ {
stringinput(searchinput,15,\请输入已存在的姓名:\p=Locate(l,searchinput,\if(p) {
printhead(); printdata(p); printf(END);
printf(\按任意键返回\
}
else
printf(\找不到此人!\\n\