1课程设计报告课程名称面向对象程序设计C++课题名称通讯录管理系统专业计算机网络工程班级10级1班小组成员XXXXXXXXXXXXXXXXXXXXXXXX指导教师XXXX2012年1月5日2组员信息和任务分配组员信息:组号:第二组组员:XXXX、XXXX、XXXX、XXXX分工情况:XXXX,信息修改模块、信息查询模块XXXX,信息添加模块、信息删除模块、文件保存模块XXXX,信息显示模块XXXX,拨号模块3目录1.系统需求分析........................................................................................................................11.1查看功能........................................................................................................................11.2增加功能........................................................................................................................11.3拔号功能........................................................................................................................11.4修改功能........................................................................................................................11.5删除功能........................................................................................................................12.总体设计................................................................................................................................22.1系统设计总模块............................................................................................................22.2主函数流程图................................................................................................................23.详细设计................................................................................................................................33.1信息显示模块................................................................................................................33.2信息输入(增加信息)模块..............................................................................................43.3信息删除模块................................................................................................................53.4信息修改模板................................................................................................................73.5信息查询模块................................................................................................................93.6拨号模块......................................................................................................................144.系统调试..............................................................................................................................155.结果分析..............................................................................................................................156.总结......................................................................................................................................1511.系统需求分析该项目设计出模拟手机通信录管理系统,实现对手机中的通信录进行管理。具体实现的功能如下:1.1查看功能选择此功能时,列出下列三类选择。A办公类B个人类C商务类,当选中某类时,显示出此类所有数据中的姓名和电话号码)1.2增加功能能录入新数据(一个结点包括:姓名、电话号码、分类(可选项有:A办公类B个人类C商务类)、电子邮件)。例如杨春13589664454商务类chuny@126.com当录入了重复的姓名和电话号码时,则提示数据录入重复并取消录入;当通信录中超过15条信息时,存储空间已满,不能再录入新数据;录入的新数据能按递增的顺序自动进行条目编号。1.3拔号功能能显示出通信录中所有人的姓名,当选中某个姓名时,屏幕上模拟打字机的效果依次显示出此人的电话号码中的数字,并伴随相应的拔号声音。1.4修改功能选中某个人的姓名时,可对此人的相应数据进行修改1.5删除功能选中某个人的姓名时,可对此人的相应数据进行删除,并自动调整后续条目的编号。22.总体设计2.1系统设计总模块图1总设计模块2.2主函数流程图Switch结构a=0a=1a=2a=3a=4a=5a=6ABCC图2基本流程图通讯录管理系统显示增加拨号修改删除查询开始系统菜单选择显示增加删除修改查询清空退出拨号个人类办公类商务类33.详细设计3.1信息显示模块主要功能:显示出所有联系人的信息。实现方法:利用while语句进行链表的遍历输出关键代码:voidTraverseBook(){Book*p=Head;Book*temp=Head;intnum=1;while(temp!=NULL){temp-No=num;num++;temp=temp-next;}while(p!=NULL){cout[编号]p-No[姓名]p-name[电话号码]p-telnumendl;p=p-next;}coutendl;}代码解释:定义二个结构体p和temp,一个用来编号,一个用来遍历查找。temp指针通过while循环不断的后移来进行编号,p指针每经过一次循环输出一条信息。43.2信息输入(增加信息)模块主要功能:输入新联系人的信息,并且对于已存在的信息,具备一定的判断功能。实现方法:利用流提取运算符来输入新信息,while循环用来查找,if结构来做判断。关键代码:Book*new1;//定义新结点new1=newBook;//------------------输入新对象的姓名------------------------cout-----------endl;cout请输入姓名:;cinnew1-name;cout-----------endl;//------------------输入新对象的电话号码--------------------coutendl;cout----------------endl;cout请输入电话号码:;cinnew1-telnum;cout----------------endl;//-----------------判断输入对象是否与表中其他对象重复------boolFlag=false;Book*p=Head;while(p!=NULL){if(strcmp(p-name,new1-name)==0&&strcmp(p-telnum,new1-telnum)==0){//判断姓名与电话号码是否有一起重复的Flag=true;break;}p=p-next;}p=NULL;5//----------------若输入重复,提示重新输入-----------------if(Flag){cout---------------------endl;cout(系统提示)输入重复!\n;cout---------------------endl;deletenew1;return;}coutendl;代码解释:首先分配一个新节点new1,用基本的流提取运算符进行各项数据的输入。输入完成后设置一个标志位Flag,并置其为假,进入while循环判断输入信息是否已经存在。如果存在,置Flag为真。循环结束后判断Flag的值,如果为真,提示输入重复。否则录入成功。3.3信息删除模块主要功能:通过姓名删除联系人的信息。实现方法:主要用一系列的判断和循环进行操作。关键代码:voidDeleteBook(){charch;cout----------------------------------------endl;cout确定要删除吗?确认请按(y)撤消请按(n);GetChar(&ch);cout----------------------------------------endl;if(ch=='y'||ch=='Y')//用条件语句询问用户是否真的要删除{if(Head==NULL){cout--------endl;cout没有资料endl;cout--------endl;6}else{charx[8];cout------------------------endl;cout请输入要删除的人的姓名:;cinx;cout------------------------endl;Book*p=Head,*q=NULL;while(p!=NULL)//查找要删除的人if(strcmp(p-name,x)==0)break;else{q=p;p=p-next;}if(p==NUL