C语言课程设计报告通讯录设计报告说明 下载本文

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\