/*五.编写程序,设计一个电话簿管理程序。
(源程序名:LJOB6.C 演示程序:TELBOOK.EXE)
要求:
每条程序包括:姓名,班级,电话号码,E-MAIL地址;
在main函数种设计并利用字符菜单进行管理项目的选择,
程序一次运行可根据选择完成一项或多项操作,
通过选择菜单的退出(或结束)项来结束程序的运行。
管理功能包括:加入一条新的电话记录,删除一条电话记录,显示保存的所有电话记录?
修改某条记录,查询,排序显示。
查询功能包括:按人名查询电话号码,
按电话号码查询人名(如宿舍电话一个号码对应多人)。
排序显示功能包括:按照电话号码排序显示,按照姓名字母排序显示,并且
当一页显示不下时可分页显示;
数据结构采用结构体,数据采用文本文件?*/
#include
#include
#define null 0
struct iombile
{char name[15];
char classes[15];
long int number;
char email[20];
struct iombile *next;
}tel[10];
struct iombile *tj(struct iombile *head,struct iombile *tel) /*添加新联系人*/
{struct iombile *p0,*p1;
p1=head;
p0=tel;
if(head==null)
{head=p0;p0->next=null;}
else
{ while(p1->next==null)
{p1=p1->next;
}
if(p1->next==null)
{p1->next=p0;p0->next=null;
}
}
return(head);
}
struct iombile *del(struct iombile *head,char name[15]) /*删除联系人*/
{struct iombile *p1,*p2;
if(head==null){printf(\"\\n没有任何联系人!\\n\");goto end;}
p1=head;
while(strcmp(p1->name,name)!=0&&p1->next!=null)
{p2=p1;p1=p1->next;}
if(strcmp(p1->name,name)==0
{if(p1==head)head=p1->next;
else p2->next=p1->next;
printf(\"操作成功!!\");
}
else printf(\"找不到该名字的联系人\");
end:return(head);
}
void print(struct iombile *head) /*输出链表*/
{ struct iombile *p;
p=head;
if(head!=null)
do
{printf(\"\\t姓名\\t班级\\t电话号码\\temail\\n\");
printf(\"%s %s %ld %s\",p->name,p->classes,p->number,p->email);
p=p->next;
}while(p!=mull);
}
struct iombile *bj(struct iombile *head,char name[15]) /*编辑联系人*/
{ struct iombile *p1;
if(head==null){printf(\"\\n没有任何联系人!\\n\");goto end;}
p1=hend;
while(strcmp(p1->name,name)!=0&&p1->next!=null)
{p1=p1->next;}
if(strcmp(p1->name,name)==0)
{printf(\"要修改的联系人\\n\");
printf(\"\\t姓名\\t班级\\t电话号码\\temail\\n\");
printf(\"%s %s %ld %s\",p1->name,p1->classes,p1->number,p1->email);
printf(\"请输入要修改后联系人的名字:\");scanf(\"%s\",p1->name);
printf(\"请输入要修改后联系人的班级:\");scanf(\"%s\",p1->classes);
printf(\"请输入要修改后联系人的电话号码:\");scanf(\"%ld\",&p1->number);
printf(\"请输入要修改后联系人的email:\");scanf(\"%s\",p1->email);
}
else printf(\"找不到要修改的联系人\\n\");
end:return(head);
struct iombule *ten(struct iombile *head) /*按电话排序*/
{ struct iombile *p,*p1;
for(p=head;p!=null;p=p->next)
for(p1=head->next;p1!=
if(p1->next
}
man /*按姓名排序,写不下去了~越写越难写~都不知道写什么的好~*/
{
}
tt /*查找电话号码*/
{
}
dd /*要查找的姓名*/
main()
{struct iombile *head,*p1,*p2,*p;
FILE *fp;
int i;
char d[5];
fp=fopen(\"pp\",\"rb\");
printf(\"\\t\\t欢迎使用电话本管理软件~~\\n\");
KA:printf(\"\\t1,添加新联系人\\t2,删除一个联系人\\t3,显示电话本所有的联系人\\n\\n\\t4,编辑电话本\\t5,查询联系人\\t6,退出本系统\");
scanf(\"%s\",d);
switch(d)
{ case \'1\': {printf(\"请输入新联系人的姓名:\");scanf(\"%s\",tel.name);
printf(\"请输入新联系人的班级: \");scanf(\"%s\",tel.classes);
printf(\"请输入新联系人的电话号码:\");scanf(\"%ld\",&tel.number);
printf(\"请输入新联系人的email:\"):scanf(\"%s\",tel.email);
head=tj(head,&tel);
printf(\"\\t添加成功!!\\n\");goto KA;
}
case \'2\': {printf(\"请输入要删除的联系人:\");scanf(\"%s\" ,tel.name);
head=del(head,tel.name);
goto KA;
}
case \'3\': {print(head);printf(\"\\n\\t1,按照电话排序\\t2,按照姓名排列\\t3,返回上一级菜单\");
scanf(\"%s\",d);goto KB;
}
case \'4\': {printf(\"请输入要编辑的联系人的名字:\");scanf(\"%s\",tel.name);
head=bj(head,tel.name);printf(\"编辑成功!!\");
goto KA;
}
case \'5\': {printf(\"\\t1,按电话号码查询\\t2,按照姓名查询\\t3,返回上一级菜单\");
scanf(\"%s\",d);goto KC;
}
case \'6\': {goto KD;}
default : {printf(\"输入错误,请重新输入\");goto KA;
}
}
KB:switch(d)
{ case \'1\': {head=ten(head);print(head);goto KA;
}
case \'2\': {head=man(head);print(head);goto KA;
}
case \'3\': {goto KA;
}
default : {printf(\"输入错误,请重新输入\");goto KB;
}
}
KC:switch(d)
{ case \'1\': {printf(\"请输入要查询的电话号码:\");scanf(\"%ld\",&tel.number);
tt(head,&tel);goto KA;
}
case \'2\': {printf(\"请输入要查询的姓名:\");scanf(\"%s\",tel.name);
dd(head,&tel);goto KA;
}
case \'3\': {goto KA;
}
default : {printf(\"输入错误,请重新输入\");goto KC;
}
}
KD:for(p=head;p!=null;p=p->next)
fwrite(p,sizeof(struct iombile),1,fp);
fclose(fp);
exit(0);
}