建通讯录要求:第一个模块——主函数main()的功能是:根据选单的选项调用各函数,并完成相应的功能。第二个模块——Menu()的功能是:显示英文提示选单。第三个模块——Quit()的功能是:退出选单。第四个模块——Create()的功能是:创建新的通讯录。第五个模块——Add()的功能是:在通讯录的末尾,写入新的信息,并返回选单。第六个模块——Find()的功能是:查询某人的信息,如果找到了,则显示该人的信息,如果未找到,则提示通讯录中没有此人的信息,并返回选单。第七个模块——Alter()的功能是:修改某人的信息,如果未找到要修改的人,则提示通讯录中没有此人的信息,并返回选单。第八个模块——Delete()的功能是:删除某人的信息,如果未找到要删除的人,则提示通讯录中没有此人的信息,并返回选单。第九个模块——List()的功能是:显示通讯录中的所有记录。人数:2人要求:实用目录第一章课程设计目的和要求……………………………………………………………11.1课程设计的目的…………………………………………………………………11.2课程设计实现的要求……………………………………………………………1第二章课程设计任务内容……………………………………………………………2第三章详细设计说明…………………………………………………………………33.1模块……………………………………………………………………………33.2性能……………………………………………………………………………43.3算法说明………………………………………………………………………53.4函数说明………………………………………………………………………53.5系统程序流程图………………………………………………………………15第四章软件使用说明…………………………………………………………………174.1软件使用说明及出现的问题………………………………………………174.2运行结果……………………………………………………………………17第五章课程设计心得与体会…………………………………………………………21附录一:参考文献……………………………………………………………………22附录二:程序清单……………………………………………………………………23通讯录系统第一章课程设计目的和要求1.1课程设计的目的进一步巩固《C++程序设计》所学的知识,特别加强数组,指针,结构体,文件数据类型的应用,熟悉面向过程的结构化和面向对象可视化程序设计方法,培养结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解,锻炼程序设计的能力,以及用C/C++语言解决实际问题的能力,为以后后续课程的学习打好基础。此课程设计着眼于知识的运用,把平常学的知识运用到课程实践中来,本身就是考察我们知识运用能力。要求熟悉运用一些编程软件(如:MicrosoftVisualC++6.0),对我们所学的理论知识进一步的深化。1.2课程设计实现的要求设计一个实用的小型通讯录程序,具有添加,查询和删除功能。由姓名,籍贯,电话号码1,电话号码2,电子邮箱组成,姓名可以由字符和数字混合编码。电话号码可由字符和数字组成。实现功能:(1)系统以菜单方式工作(2)信息录入功能(3)信息浏览功能(4)信息查询功能(5)信息修改功能(6)系统退出功能第二章课程设计任务内容用C/C++语言实现一个通讯录系统,该系统主要应用在手机通讯录,涉及到添加联系人信息,删除联系人信息,修改联系人信息,显示所有联系人信息,查询某联系人信息以及关闭通讯录等功能。在本程序中,我主要负责添加,删除,修改,查询,显示联系人信息的功能。这主要是将联系人的信息输入,由系统自动把信息保存。而且可以对已保存的某个联系人的信息进行查询,修改,或删除,并保存其修改过的结果。第三章详细设计说明3.1模块3.1.1模块描述定义一个结构体,在其中声明结构变量,然后定义字符串,来存放要用到的变量。然后定义此程序的其他功能模块的原型。主函数调用各个功能子函数,定义各个功能子函数,通过classperson创建一个联系人信息函数。通过add_person做一个添加的函数,实现联系人信息的录入。通过del_person做一个删除的函数,实现联系人信息的删除。通过show_all做一个显示的函数,显示所有联系人的信息。通过select做一个查询信息的函数,实现查询某联系人的信息。通过alter做一个修改信息的函数,实现修改某联系人的信息。在程序中需要输入的内容包括:(1)联系人的录入实现过程:根据提示选择“1”进入添加联系人信息界面,按步骤输入要添加的信息,以“Enter”键结束,然后由系统自动调用信息录入函数,联系人的信息保存在事先定义的文件中。(2)联系人的删除实现过程:根据提示选择”2”进入删除联系人信息界面,按步骤输入要删除的联系人姓名或号码,以”Enter”键结束,然后由系统自动调用信息删除函数,删除联系人后保存在事先定义的数据库中。(3)显示所有联系人实现过程:根据提示选择”3”进入现显示所有联系人信息界面,由系统自动调用显示联系人信息函数。(4)联系人的修改实现过程:根据提示选择“4”进入联系人信息的修改界面,按步骤输入要修改的联系人姓名或号码,以“Enter”键结束,此时所有的基本信息都被要求重新输入。(5)联系人的查询实现过程:根据提示选择“5”进入联系人信息的查询界面,按步骤输入要查询的联系人姓名或号码,以“Enter”键结束,由系统自动调出所需要查询的信息。3.1.2功能模块图此系统的功能模块图如图3-1所示。图3-1函数功能模块图3.2性能该模块性能要求:(1)灵活性要求输出的数据能准确的按照操作代码输出。(2)时间特性要求输入的各项操作代码能及时反应其运行结果。3.3算法说明该程序先采用了一个嵌套在do—while循环语句中的switch语句来控制要执行操作的编号,用户可以有多种选择,根据不同的需要选择不同的操作。其中具体的操作主要采用的是一个链表的结构,涉及到了链表的插入,链表的查找,以及链表的删除等知识点。链表的插入解决了各联系人信息的输入问题,通讯录系统联系人信息的添加查询某联系人信息联系人信息的删除显示所有联系人信息修改某联系人信息关闭通讯录具体为:建立一个头结点,若有要存的联系人,建立一个新的结点来存储该联系人的信息,并将其插到链表的最后一个结点后面。链表的查找解决了联系人信息的查询,以及后面的联系人信息的输出、删除都要用到链表的查找,查找时先将头结点的地址赋给查找函数,根据查找的条件依次与每个结点中相应的比较,若相等则输出所需要的信息,否则返回“查找的元素不存在”信息。而信息的删除,先查找到其所在的结点,然后将该结点前后结点相连,再删除该结点;信息的修改要先查找到其所在的结点,然后再重新录入数据;至于联系人信息的输出,将联系人所在的头结点的地址赋给控制输出的函数,利用指针的移动依次将各联系人信息输出。3.4函数说明3.4.1联系人录入函数(1)原型:voidperson::add_person()(2)功能:该函数用来录入联系人信息,name是姓名,number是号码,mail是电子邮箱,address是籍贯。(3)流程图:如图3-2所示。图3-2联系人录入函数的流程图开始输入联系人姓名输入联系人电话号码输入联系人电子邮箱输入联系人的籍贯结束(4)对应代码voidperson::add_person(){coutendl根据下面提示输入新联系人信息endlendl;cout姓名:;cinname;cout电话号码:;cinnumber;cout电子邮箱:;cinmail;cout籍贯:;cinaddress;save_new();coutendlendl新联系人信息已经保存好!endlendl;}3.4.2联系人查询函数(1)原型:voidperson::select()(2)功能:该函数用来查找指定的联系人的基本信息(包括姓名,号码,电子邮箱,籍贯)。(3)流程图:如图3-3所示。图3-3信息查询函数的程序流程图(4)对应代码voidperson::select(){ifstreaminData(pperson.txt,ios::in);if(!inData){coutendl对不起!!!!文件找不到!!!!endl;system(pause);return;}stringsign;coutendl输入你想查找的联系人的姓名或电话号码:;cinsign;fflush(stdin);stringstr1;boolflag=true;stringstr;while(inDatanamenumber)是否输入要查找的联系人姓名或号码判断是否存在输出该联系人信息结束开始{getline(inData,str);if((name==sign)||(number==sign)){coutendl你要查找的联系人是:endlendl;coutstr1endl;coutsetiosflags(ios::left)setw(17)namenumberstrendl;flag=false;system(pause);break;}}}voidperson::save_new(){ofstreamoutData(pperson.txt,ios::app);if(!outData){coutendl对不起!!!打开文件失败!!!!endlendl;system(pause);return;}outDatasetiosflags(ios::left)setw(17)namesetw(16)numbersetw(14)mailsetw(20)addressendl;outData.close();}3.4.3联系人信息修改函数(1)原型:voidperson::alter()(2)功能:该函数用来修改联系人信息。(3)流程图:如图3-4所示。图3-4联系人修改函数的程序流程图(4)对应代码voidperson::alter(){ofstreamoutData(temp.txt,ios::out);ifstreaminData(pperson.txt,ios::in);//否是开始输入要修改的联系人姓名或号码判断是否存在输入联系人姓名输入联系人号码输入联系人籍贯输入联系人电子邮箱结束if(!outData||!inData){coutendl对不起!找不到文件!endl;system(pause);return;}stringsign;coutendl你要修改输入姓名或电话号:;cinsign;stringstr1;boolflag=true;stringstr;while(inDatanamenumber){getline(inData,str);if((sign==name)||(sign==number)){coutendl你想修改的联系人:endlendl;coutstr1endl;coutsetiosflags(ios::left)setw(17)namenumberstrendl;coutendl请根据下面提示修改信息:endl;cout姓名:;cinname;fflush(stdin);cout电话号码:;cinnumber;fflush(stdin);fflush(stdin);cout电子邮箱:;cinmail;fflush(stdin);cout籍贯:;cinaddress;fflush(stdin);save_new();flag=false;break;}outDatasetiosflags