通讯录管理设计.docx
《通讯录管理设计.docx》由会员分享,可在线阅读,更多相关《通讯录管理设计.docx(30页珍藏版)》请在冰豆网上搜索。
通讯录管理设计
通讯录管理系统
需求分析
具有数据的插入、修改、删除、显示和查询功能的电话簿管理程序。
(1) 数据包括:
人名、工作单位、电话号码和E-MAIL地址。
(2) 可对记录中的姓名和电话号码进行修改。
(3) 可增加和删除记录。
(4) 可显示所有的保存记录。
(5) 可按人名或电话号码进行查询。
[提示]
建议采用结构体数组和文件系统实现。
结构体成员包括人名、工作单位、电话号码和E-MAIL地址。
根据题目的要求程序应该采用结构体数组和文件系统实现。
应该有文件的操作功能;在程序中应该包括输入、显示、删除、查询、添加、修改、保存、加载和退出的功能。
详细设计
根据上面的分析,可以将程序系统的设计分为如下几个模块:
插入、显示、删除、查询、修改、保存和退出。
1、 主函数;
主函数一般设计得比较简洁,只提供输入,处理和输出部分的函数调用。
其中各功能模块用菜单方式选择。
【程序】
intmain() //主函数
{
Manman[500],*pman=man;;
charcontrol;
intsize;
printf("\t\t**********************************************\n"); //窗口初始化
printf("\t\t**********欢迎使用通讯录管理系统!
***********\n");
printf("\t\t*--------------------------------------------*\n");
printf("\t\t* 请按回车键继续!
*\n");
printf("\t\t**********************************************\n");
scanf("%c",&control);
if(control)
size=Scan(pman); //判断文件是否存在
printf("\t\t\t请输入相应操作数操作\n");
for(;;) //菜单生成
printf("\t\t* 1--插入信息 *\n");
printf("\t\t* 2--按姓名查找 *\n");
printf("\t\t* 3--按电话查找 *\n");
printf("\t\t* 4--删除信息 *\n");
printf("\t\t* 5--显示信息 *\n");
printf("\t\t* 6--修改信息 *\n");
printf("\t\t* 0--退出系统 *\n");
scanf("%s",&control);
switch(control)
case'1':
size=Insert(pman,size);break; //插入新的通讯录
case'2':
S_asname(pman,size);break; //按姓名查找
case'3':
S_astel(pman,size);break; //按电话查找
case'4':
Delete(pman,size);break; //删除信息
case'5':
Display(pman,size);break; //显示所有信息
case'6':
Modify(pman,size);break; //修改信息
case'0':
printf("**************谢谢使用!
再见!
**************\n"); //退出系统
return0;
default:
printf("**********输入数字有误,请重新输入**********\n");break;
}
2、 插入模块
此模块为插入信息模块,插入后再调用保存函数来保存所插入的数据,支持多条信息的插入。
流程图
intInsert(Man*pMan,intSize) //插入模块
inti,n;
printf("\t\t***********请输入要插入数据的个数.************\n");
scanf("%d",&n);
for(i=0;i { printf("您将要录入第%d条记录(共有%d条)\n",i+1,n); printf("请输入姓名:\n"); scanf("%s",&pMan[Size+i].Name); printf("请输入工作单位:\n"); scanf("%s",&pMan[Size+i].Depart); printf("请输入电话号码:\n"); scanf("%s",&pMan[Size+i].TEL); printf("请输入Email地址:\n"); scanf("%s",&pMan[Size+i].Email); } if(Save(pMan,Size+n)) { printf("\t\t*********** 恭喜!数据插入成功! ***********\n"); } else { printf("\t\t*********** 操作失败,请稍后再试!***********\n"); } returnSize+n;}3、 显示模块程序 voidDisplay(Man*pMan,intSize) //显示所有记录{ inti; printf("\t人名\t 工作单位\t 电话号码\t E-mail地址\n"); printf("\t************************************************************\n"); for(i=0;i<=Size;i++,pMan++)//依次输出文件中的信息 { printf("\t%s\t\t%s\t%s\t%s\n",pMan->Name,pMan->Depart,pMan->TEL,pMan->Email); printf("\t-----------------------------------------------------------\n"); }} 4、 查找模块本模块分为按姓名查找和按电话查找两个子模块。4.1按姓名查找模块【程序】voidS_asname(Man*pMan,intSize) //查找信息{ inti=0; charname[8]; printf("\t\t***********请输入要查询信息的姓名:***********\n"); printf("\t\t**********************************************\n"); scanf("%s",name); while(iName,name))//查找 { pMan++; i++; } if(!strcmp(pMan->Name,name))//找到后输出 { printf("\t\t***************查到的信息为: ***************\n"); printf("\t*************************************************************\n"); printf("\t人名\t 工作单位\t 电话号码\t E-mail地址\n"); printf("\t*************************************************************\n"); printf("\t%s\t\t%s\t%s\t%s\n",pMan->Name,pMan->Depart,pMan->TEL,pMan->Email); printf("\t*************************************************************\n"); } else { printf("\t\t***********抱歉,没有找到相关数据 ************\n"); printf("\t\t**********************************************\n"); }}4.2按电话查找模块,此模块与按姓名查找模块相似,流程图略。程序 voidS_astel(Man*pMan,intSize) //按电话查找模块{ inti=0; chartel[12]; printf("\t\t***********请输入要查询信息的电话:************\n"); printf("\t\t**********************************************\n"); scanf("%s",tel); while(iTEL,tel)) //查找信息 { pMan++; i++; } if(!strcmp(pMan->TEL,tel)) //输出找到的信息 { printf("\t\t****************查到的信息为:****************\n"); printf("\t*******************************************************\n"); printf("\t人名\t 工作单位\t 电话号码\t E-mail地址\n"); printf("\t*******************************************************\n"); printf("\t%s\t\t%s\t%s\t%s\n",pMan->Name,pMan->Depart,pMan->TEL,pMan->Email); printf("\t*******************************************************\n"); } else { printf("\t\t************抱歉,没有找到相关数据************\n"); printf("\t\t**********************************************\n"); }}5、 删除模块此模块先利用查找模块找到所要删除的信息,然后根据用户的选择来确定是否删除信息,此种调用到Save函数。其流程图如下:程序voidDelete(Man*pMan,intSize)//删除信息{ charname[8],control; inti=0; printf("\t\t***********请输入要删除信息的姓名:***********\n"); printf("\t\t**********************************************\n"); scanf("%s",name); while(iName,name))//同查找,找到后跳出 { pMan++; i++; } if(!strcmp(pMan->Name,name))//找到了,删除信息!做出判断. { printf("您要删除的信息为:\n"); printf("%s\t\t%s\t%s\t%s\n",pMan->Name,pMan->Depart,pMan->TEL,pMan->Email); printf("是否确认删除?(Y/N)\n"); scanf("%s",&control); switch(control) { case'y': pMan->Name[0]='\0'; pMan->Depart[0]='\0'; pMan->TEL[0]='\0'; pMan->Email[0]='\0'; if(Save(pMan,Size))//将新信息写入文件 { printf("\t\t**************恭喜!信息删除成功!**************\n");; printf("\t\t**********************************************\n");break; } else { printf("\t\t************操作失败,请稍后再试!*************\n"); printf("\t\t**********************************************\n");break; } case'n':printf("信息未删除!\n");break; default:printf("选择有误!\n");break; } } else { printf("\t\t*********抱歉,没有找到相关信息!*********\n"); printf("\t\t******************************************\n"); }}6、 修改模块此模块先调用查找函数查找到所要修改的信息,然后用户根据需要来修改信息。流程图如下:程序voidModify(Man*pMan,intSize) //修改模块{ voidDisplay(); inti=0; charname[8]; chardepart[20]; chartel[12]; charemail[30]; printf("\t\t************输入要修改信息的姓名:************\n"); printf("\t\t**********************************************\n"); scanf("%s",name); while(iName,name))//遍历数组,查找数据,若查到跳出循环 { pMan++; i++; } if(!strcmp(pMan->Name,name))//如果找到,则开始修改 { printf("请输入修改后的姓名:\n"); scanf("%s",name); strcpy(pMan->Name,name); printf("请输入修改后的工作单位:\n"); scanf("%s",depart); strcpy(pMan->Depart,depart); printf("请输入修改后的电话号码:\n"); scanf("%s",tel); strcpy(pMan->TEL,tel); printf("请输入修改后的E-mail地址:\n"); scanf("%s",email); strcpy(pMan->Email,email); if(Save(pMan,Size)) //将修改信息写入文件,并判断是否写入成功 { printf("\t\t**************恭喜!信息修改成功!**************\n");; printf("\t\t**********************************************\n"); } else { printf("\t\t*************操作失败,请稍后再试!*************\n"); printf("\t\t**********************************************\n"); } } else { printf("\t\t************抱歉,没有找到相关信息!************\n"); printf("\t\t***********************************
{ printf("您将要录入第%d条记录(共有%d条)\n",i+1,n);
printf("请输入姓名:
\n");
scanf("%s",&pMan[Size+i].Name);
printf("请输入工作单位:
scanf("%s",&pMan[Size+i].Depart);
printf("请输入电话号码:
scanf("%s",&pMan[Size+i].TEL);
printf("请输入Email地址:
scanf("%s",&pMan[Size+i].Email);
if(Save(pMan,Size+n))
printf("\t\t*********** 恭喜!
数据插入成功!
else
printf("\t\t*********** 操作失败,请稍后再试!
returnSize+n;
3、 显示模块
程序
voidDisplay(Man*pMan,intSize) //显示所有记录
inti;
printf("\t人名\t 工作单位\t 电话号码\t E-mail地址\n");
printf("\t************************************************************\n");
for(i=0;i<=Size;i++,pMan++)//依次输出文件中的信息
printf("\t%s\t\t%s\t%s\t%s\n",pMan->Name,pMan->Depart,pMan->TEL,pMan->Email);
printf("\t-----------------------------------------------------------\n");
4、 查找模块
本模块分为按姓名查找和按电话查找两个子模块。
4.1按姓名查找模块
voidS_asname(Man*pMan,intSize) //查找信息
inti=0;
charname[8];
printf("\t\t***********请输入要查询信息的姓名:
scanf("%s",name);
while(iName,name))//查找
pMan++;
i++;
if(!
strcmp(pMan->Name,name))//找到后输出
printf("\t\t***************查到的信息为:
***************\n");
printf("\t*************************************************************\n");
printf("\t\t***********抱歉,没有找到相关数据 ************\n");
4.2按电话查找模块,此模块与按姓名查找模块相似,流程图略。
voidS_astel(Man*pMan,intSize) //按电话查找模块
chartel[12];
printf("\t\t***********请输入要查询信息的电话:
************\n");
scanf("%s",tel);
while(iTEL,tel)) //查找信息
strcmp(pMan->TEL,tel)) //输出找到的信息
printf("\t\t****************查到的信息为:
****************\n");
printf("\t*******************************************************\n");
printf("\t\t************抱歉,没有找到相关数据************\n");
5、 删除模块
此模块先利用查找模块找到所要删除的信息,然后根据用户的选择来确定是否删除信息,此种调用到Save函数。
其流程图如下:
voidDelete(Man*pMan,intSize)//删除信息
charname[8],control;
printf("\t\t***********请输入要删除信息的姓名:
while(iName,name))//同查找,找到后跳出
strcmp(pMan->Name,name))//找到了,删除信息!
做出判断.
printf("您要删除的信息为:
printf("%s\t\t%s\t%s\t%s\n",pMan->Name,pMan->Depart,pMan->TEL,pMan->Email);
printf("是否确认删除?
(Y/N)\n");
case'y':
pMan->Name[0]='\0';
pMan->Depart[0]='\0';
pMan->TEL[0]='\0';
pMan->Email[0]='\0';
if(Save(pMan,Size))//将新信息写入文件
printf("\t\t**************恭喜!
信息删除成功!
**************\n");;
printf("\t\t**********************************************\n");break;
printf("\t\t************操作失败,请稍后再试!
*************\n");
case'n':
printf("信息未删除!
\n");break;
printf("选择有误!
printf("\t\t*********抱歉,没有找到相关信息!
*********\n");
printf("\t\t******************************************\n");
6、 修改模块
此模块先调用查找函数查找到所要修改的信息,然后用户根据需要来修改信息。
流程图如下:
voidModify(Man*pMan,intSize) //修改模块
voidDisplay();
chardepart[20];
charemail[30];
printf("\t\t************输入要修改信息的姓名:
while(iName,name))//遍历数组,查找数据,若查到跳出循环
strcmp(pMan->Name,name))//如果找到,则开始修改
printf("请输入修改后的姓名:
strcpy(pMan->Name,name);
printf("请输入修改后的工作单位:
scanf("%s",depart);
strcpy(pMan->Depart,depart);
printf("请输入修改后的电话号码:
strcpy(pMan->TEL,tel);
printf("请输入修改后的E-mail地址:
scanf("%s",email);
strcpy(pMan->Email,email);
if(Save(pMan,Size)) //将修改信息写入文件,并判断是否写入成功
信息修改成功!
printf("\t\t*************操作失败,请稍后再试!
printf("\t\t************抱歉,没有找到相关信息!
printf("\t\t***********************************
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1