通讯录管理系统应具备以下功能.docx
- 文档编号:8273967
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:38
- 大小:45KB
通讯录管理系统应具备以下功能.docx
《通讯录管理系统应具备以下功能.docx》由会员分享,可在线阅读,更多相关《通讯录管理系统应具备以下功能.docx(38页珍藏版)》请在冰豆网上搜索。
通讯录管理系统应具备以下功能
通讯录管理系统应具备以下功能:
①系统初始化:
显示欢迎语:
“欢迎使用通讯录管理系统!
”和“按任意键系统开始初始化,显示通讯录!
”,完成将从数据文件address.dat中读出的记录送入结构体数组temp(如果该文件中不存在记录,要求用户输入),以便程序运行过程中由其他函数使用;显示通讯录;返回通讯录含记录的条数;
②添加记录:
向通讯录添加新记录;
③修改记录:
修改通讯录中的记录;
④删除记录:
删除通讯录中的记录;
⑤按姓名排序:
显示通讯录中按姓名排序的记录;
⑥按姓名查询:
显示通讯录中按姓名查询得到的记录;
⑦快速查询:
显示通讯录中按姓名通过快速查询得到的记录;
⑧退出系统:
将记录数据写入磁盘文件,显示结束语,退出系统。
⒁主菜单函数intmenuselect(void):
制作含有8个功能项的菜单,如下:
********************菜单********************
*0.显示通讯录*
*1.添加记录*
*2.修改记录*
*3.删除记录*
*4.按姓名排序*
*5.按姓名查询*
*6.快速查询*
*7.退出*
*********************************************
提示用户进行选择(编号),如果选择错误要求重新选择,选择正确提示确认,如果用户确认选错了,再重新选择,如果用户确认是选该项,返回主函数,去执行相应的功能,仅由主函数调用;
⒂退出系统函数voidquit(void):
将记录数据写入磁盘文件,显示结束语:
“欢迎再次使用通讯录管理系统,再见!
”,等待用户按键(用户按键不显示)退出系统;
/*HELLO.C--Hello,world*/
#include
structperson
{
charname[8];
chartel[15];
charaddr[50];
};
charfilename[20]="E:
\\txl.txt";
FILE*fp;
voidcreat();
voidoutput();
voidsearch();
voidappend();
voidmodify();
voiddelete();
main()
{
intm;
creat();
while
(1)
{
printf("\n\t\t*********欢迎使用通讯录信息管理系统*********\n\n");
printf("\n\t\t
添加,请按
1");
printf("\n\t\t
查找,请按
2");
printf("\n\t\t
修改,请按
3");
printf("\n\t\t
删除,请按
4");
printf("\n\t\t
输出,请按
5");
printf("\n\t\t
退出,请按
0\n");
printf("\n\t\t********************************************\n\n");
printf("Pleaseselect(0--5):
");
scanf("%d",&m);
if(m>=0&&m<=5)
{
switch(m)
{
case1:
append();
break;
case2:
search();
break;
case3:
modify();
break;
case4:
delete();
break;
case5:
output();
break;
case0:
exit();
}
printf("\n\n操作完毕,请再次选择!
");
}
else
printf("\n\n选择错误,请再次选择!
");
}
}
/*输入模块creat():
创建通讯录的子函数。
*/voidcreat()
{
structpersonone;
longs1;
/*printf("\n请输入通讯录文件名:
");scanf("%s",filename);*/
if((fp=fopen(filename,"at+"))==NULL)
{
printf("\n不能建立通讯录!
");exit();
}
fprintf(fp,"%-10s%-20s%-50s\n","姓名","电话号码","住址");printf("\n请输入姓名、电话号码及住址(以0结束)\n");scanf("%s",one.name);
while(strcmp(one.name,"0"))
{
scanf("%s%s",one.tel,one.addr);
fprintf(fp,"%-10s%-20s%-50s\n",one.name,one.tel,one.addr);
scanf("%s",one.name);
}
fclose(fp);
}
/*输出模块output():
输出通讯录中联系人通讯信息的子函数*/voidoutput()
{
structpersonone;
if((fp=fopen(filename,"r"))==NULL)
{
printf("\n不能打开通讯录!
");exit();
}
printf("\n\n%20s\n","通讯录");while(!
feof(fp))
{
fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);
printf("%-10s%-20s%-50s",one.name,one.tel,one.addr);
}
fclose(fp);
}
/*添加模块append():
向通讯录中添加某人通讯信息的子函数*/voidappend()
{
structpersonone;
if((fp=fopen(filename,"a"))==NULL)
{
printf("\n不能打开通讯录!
");exit();
}
printf("\n请输入添加的姓名、电话号码及住址\n");scanf("%s%s%s",one.name,one.tel,one.addr);
fprintf(fp,"%-10s%-20s%-50s\n",one.name,one.tel,one.addr);
fclose(fp);
}
/*查找模块search():
在通讯录中查找某人通讯信息的子函数*/voidsearch()
{
intk=0;
charnamekey[8];
structpersonone;
printf("\n请输入姓名:
");scanf("%s",namekey);
if((fp=fopen(filename,"rb"))==NULL)
{
printf("\n不能打开通讯录!
");exit();
}
while(!
feof(fp))
{
fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);
if(!
strcmp(namekey,one.name))
{
printf("\n\n已查到,记录为:
");
printf("\n%-10s%-18s%-50s",one.name,one.tel,one.addr);
k=1;
}
}
if(!
k)
printf("\n\n对不起,通讯簿中没有此人的记录。
");fclose(fp);
}
/*修改模块modify():
在通讯录中修改某人通讯信息的子函数*/voidmodify()
{
intm,k=0;
longoffset;
charnamekey[8];
structpersonone;
printf("\n请输入姓名:
");scanf("%s",namekey);if((fp=fopen(filename,"r+"))==NULL)
{
printf("\n不能打开通讯录!
");exit();
}
while(!
feof(fp))
{
offset=ftell(fp);
fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);
if(!
strcmp(namekey,one.name))
{
k=1;
break;
}
}
if(k)
{
printf("\n已查到,记录为:
");
printf("\n%-10s%-18s%-50s",one.name,one.tel,one.addr);
printf("\n请输入新姓名、电话号码及住址:
");scanf("%s%s%s",one.name,one.tel,one.addr);fseek(fp,offset,SEEK_SET);
printf("%ld",ftell(fp));
fprintf(fp,"%-10s%-20s%-50s\n",one.name,one.tel,one.addr);
}
else
printf("\n对不起,通讯录中没有此人的记录。
");fclose(fp);
}
/*删除模块delete():
在通讯录中删除某人通讯信息的子函数*/voiddelete()
{
intm,k=0,flag;
longoffset1,offset2;
charnamekey[8],valid[4];
structpersonone;
printf("\n请输入姓名:
");scanf("%s",namekey);if((fp=fopen(filename,"r+"))==NULL)
{
printf("\n不能打开通讯录!
");exit();
}
while(!
feof(fp))
{
offset1=ftell(fp);
fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);
if(!
strcmp(namekey,one.name))
{
k=1;
break;
if(k)
{
printf("\n已查到,记录为");
printf("\n%-10s%-18s%-50s",one.name,one.tel,one.addr);
printf("\n确实要删除,按1;不删除,按0:
");scanf("%d",&m);
if(m)
{
fseek(fp,offset1,SEEK_SET);
fprintf(fp,"%-10s%-20s%-50s\n","","","");
}
else
printf("\n对不起,通讯录中没有此人的记录。
");fclose(fp);
}
}
}
}
#######
程序包括
(1)学生基本信息的添加;
(2)学生基本信息的修改;
(3)学生基本信息的删除;
(4)学生基本信息的查询;
(5)退出其中查询菜单:
(1)按姓名查询;
(2)按号码查询;
(3)退出菜单;
学生基本信息:
姓名。
电话、家庭住址。
不知怎么搞的,现在只能悬赏100分,看来只有最后追加了!
问题补充:
pswgwn给的程序是很好,但不符合我们老师的要求呀,还是要谢谢你!
我只会下面这一点点,请高手给完整
#include
#include
#include
structtelephone
{charname[20];
charadd[30];
chartele[15];
};
voidinput();
.
while(choice!
=6)
{system("cls");
printf("\n电话本管理系统");printf("\n1.添加");
.
printf("\n请选择:
");scanf("%d",choice);switch(choice)
{case1:
input();
break;
.
}}
#include
#include
#include
typedefstruct{
charnum[6];
charname[10];
charunit[20];
charphone[13];
charaddr[30];
}datatype;
typedefstructnode{
datatypedata;
structnode*next;
}listnode;
typedeflistnode*linklist;
linklisthead;
listnode*p;
intmenu_select();
linklistcreatelist(void);
voidinsertnode(linklisthead,listnode*p);
listnode*listfind(linklisthead);
voiddelnode(linklisthead);
voidprintlist(linklisthead);
voidmain()
{
for(;;){
switch(menu_select())
{
case1:
printf("***********************************************\n");
printf("**************通讯录链表的建立***************\n");printf("***********************************************\n");
head=createlist();
break;
case2:
printf("***********************************************\n");
printf("**************通讯录信息添加*****************\n");printf("***********************************************\n");
printf("**编号(4)姓名(8)单位(20)电话(11)地址(30)**\n");printf("***********************************************\n");
p=(listnode*)malloc(sizeof(listnode));
scanf("%s%s%s%s%s",p->data.num,p->data.name,p->data.unit,p->data.phone,p->data.addr);
insertnode(head,p);
break;
case3:
printf("******************************\n");
printf("*******通讯录信息查询*******\n");printf("******************************\n");
p=listfind(head);
if(p!
=NULL){
printf("**编号姓名单位电话地址**\n");printf("\n");
printf("%s,%s,%s,%s,%s\n",p->data.num,p->data.name,p->data.unit,p->data.phone,p->data.addr);
printf("\n");
}
else
printf("没有你要找的人!
\n");break;
case4:
printf("***********************************\n");
printf("**********通讯信息的删除***********\n");
printf("***********************************\n");
delnode(head);
break;
case5:
printf("***********************************\n");
printf("**********通讯录链表的输出*********\n");printf("***********************************\n");
printlist(head);
break;
case0:
printf("\t谢谢您的使用!
\n");return;
}
}
}
intmenu_select()
{
intsn;
printf("\n");
printf("\n");
printf("\n");
printf("通讯录管理系统\n");
printf("\n");
printf("======================\n");
printf("1.通讯录链表的建立\n");
printf("2.通讯者结点的插入\n");
printf("3.通讯录链表的查询\n");
printf("4.通讯者结点的删除\n");
printf("5.通讯录链表的输出\n");
printf("0.退出通讯录管理系统\n");
printf("======================\n");
printf("请选择操作0-5\n\n");
for(;;)
{
scanf("%d",&sn);
if(sn<0||sn>5)
printf("\t输入错误\n");else
break;
}
returnsn;
}
linklistcreatelist(void)
{
linklisthead=(listnode*)malloc(sizeof(listnode));
listnode*p,*rear;
intflag=1;
rear=head;
while(flag==1)
{
p=(listnode*)malloc(sizeof(listnode));
printf("编号(4)姓名(8)单位(20)电话(11)地址(31)\n");printf("\n");
scanf("%s%s%s%s%s",p->data.num,p->data.name,p->data.unit,p->data.phone,p->data.addr);
rear->next=p;
rear=p;
printf("继续建表吗?
(1.是/0.不):
");scanf("%d",&flag);
}
if(flag==1)
printf("创建成功!
\n");rear->next=NULL;returnhead;
}
voidinsertnode(linklisthead,listnode*p)
{
listnode*p1,*p2;
p1=head;
p2=p1->next;
while(p2!
=NULL&&strcmp(p2->data.num,p->data.num)<0)
{
p1=p2;
p2=p2->next;
}
p1->next=p;
p->next=p2;
printf("插入成功!
\n");
}
listnode*listfind(linklisthead)
{
listnode*p;
charnum[6];
charname[10];
intxz;
printf("\n");
printf("1.编号查询\n");
printf("2.姓名查询\n");printf("\n");
printf("请选择:
\n");p=head->next;scanf("%d",&xz);
if(xz==1){
printf("请输入要查找的编号:
");scanf("%s",num);
while(p&&strcmp(p->data.num,num)<0)
p=p->next;
if(p==NULL||strcmp(p->data.num,num)>0)
p=NULL;
}
else
if(xz=2){
printf("请输入要查询者的姓名:
");scanf("%s",name);
while(p&&strcmp(p
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通讯录 管理 系统 具备 以下 功能