数据结构实验报告之通讯录的实现
- 格式:docx
- 大小:15.63 KB
- 文档页数:14
c语言通讯录实验报告C语言通讯录实验报告一、实验目的通讯录是我们日常生活中常用的工具,可以帮助我们管理联系人信息。
本次实验旨在通过使用C语言编写一个简单的通讯录程序,加深对C语言的理解和运用。
二、实验环境本次实验使用的开发环境是Visual Studio Code,编程语言为C语言。
三、实验过程1. 通讯录数据结构设计在开始编写程序之前,我们需要先设计好通讯录的数据结构。
通讯录的基本信息包括姓名、电话号码和电子邮件地址。
我们可以使用结构体来表示一个联系人的信息,然后使用数组来存储多个联系人的信息。
2. 程序主体框架设计接下来,我们需要设计程序的主体框架。
首先,我们可以定义一个数组来存储通讯录中的联系人信息。
然后,我们可以使用一个循环来提供用户操作的选项,比如添加联系人、查找联系人、删除联系人等。
用户可以通过输入相应的数字来选择不同的操作。
3. 添加联系人功能在程序中添加联系人的功能可以通过用户输入联系人的姓名、电话号码和电子邮件地址来实现。
我们可以通过循环遍历通讯录数组,找到第一个空闲的位置,将新的联系人信息存储到该位置。
4. 查找联系人功能查找联系人的功能可以通过用户输入联系人的姓名来实现。
我们可以通过遍历通讯录数组,逐个比较联系人的姓名,找到匹配的联系人并输出其详细信息。
5. 删除联系人功能删除联系人的功能可以通过用户输入联系人的姓名来实现。
我们可以通过遍历通讯录数组,找到匹配的联系人并将其从数组中删除。
6. 修改联系人功能修改联系人的功能可以通过用户输入联系人的姓名来实现。
我们可以通过遍历通讯录数组,找到匹配的联系人,并允许用户修改其电话号码和电子邮件地址。
7. 显示通讯录功能显示通讯录的功能可以通过遍历通讯录数组,逐个输出联系人的详细信息来实现。
四、实验结果经过编写和调试,我们成功实现了一个简单的C语言通讯录程序。
用户可以通过输入相应的数字来选择不同的操作,包括添加联系人、查找联系人、删除联系人、修改联系人和显示通讯录。
数据结构课程设计报告---通讯录## 一、项目背景随着信息科技的发展,现代社会通讯录的应用越来越普遍,满足了人们信息的获取和管理的需求。
本项目的设计目的在于使用面向对象的程序思想,以面向对象的方式它来实现对通讯录信息的管理,进而提高信息的管理效率,提升信息的可靠性和安全性,最终达到为社会实施科学管理的目的。
## 二、系统需求1. 界面美观、格式明确,有良好的友好提示。
2. 系统稳定性强,能承受短时间的高并发量使用。
3. 提供友好的系统操作界面,对用户操作进行一定的约束,方便用户操作。
4.提供有效的联系人信息管理功能,能够实现增删改查等操作。
5.支持联系人信息备份和恢复,以及密码设置。
6.能够防止任何人未经授权而访问系统,或者磁盘信息的泄露。
此系统的设计主要分为三大部分,即界面层、业务逻辑层和数据存储层。
界面层通过展示信息给用户,实现数据的输入及输出;业务逻辑层主要处理用户请求,实现对数据的操作;数据存储层通过文件存储数据,实现对联系人信息的永久保存。
本项目采用C++语言,以链表数据结构为基础,将用户的联系人存储在链表中,充分利用其动态性,实现联系人的增删改查操作.同时,为了提供更进一步的使用,增加了密码功能,对未授权访问进行防止,以及数据备份和恢复功能。
## 四、功能实现1. 界面设计:首先,根据系统所需要的功能,采用控制台方式,以文字提示形式,配以整齐美观的各项参数和信息,实现各项功能。
2. 加密控制:本系统实现授权登陆加密功能,使系统对未经授权的用户隐藏信息,以确保系统的安全性。
3. 测试功能:功能的测试旨在确保程序的完整性和正确性。
4. 管理功能:本系统实现联系人信息的增删改查操作,在这几项功能的实现过程中,使用链表数据结构,更好的实现程序的功能。
5. 修改密码功能:此功能实现用户可以修改自己的密码,以确保用户自己可以比较安全的使用系统,不会受到他人的侵犯。
6. 加载和存储数据:通过使用文件存储,实现数据的存储和读取,以及备份功能,实现对数据永久保存。
通讯录系统实验报告通讯录系统实验报告一、引言通讯录系统是一种方便管理联系人信息的工具。
随着社会的发展和科技的进步,人们的联系方式越来越多样化,传统的纸质通讯录已经无法满足人们的需求。
因此,设计和开发一个高效、便捷的通讯录系统成为了一个重要的课题。
二、实验目的本次实验的目的是设计和实现一个通讯录系统,使用户能够方便地存储、查找和管理联系人信息。
通过这个实验,我们可以学习和掌握数据库的基本操作,提高我们的编程能力和实践能力。
三、实验过程1.需求分析在设计通讯录系统之前,我们首先需要进行需求分析。
通过调研和访谈,我们了解到用户对通讯录系统的需求主要包括以下几点:- 用户可以添加、编辑和删除联系人信息;- 用户可以按照姓名、电话号码等字段进行快速查找;- 用户可以导入和导出联系人信息,方便备份和共享;- 界面简洁明了,操作简单易用。
2.数据库设计在进行数据库设计时,我们需要确定通讯录系统的数据结构。
通讯录系统的主要数据包括联系人的姓名、电话号码、邮箱等信息。
我们可以使用关系型数据库来存储这些数据,并通过SQL语句进行操作。
3.界面设计为了提高用户体验,我们需要设计一个简洁明了的界面。
界面设计应该符合用户的使用习惯,操作简单易懂。
在设计界面时,我们可以考虑使用图形化界面或者命令行界面。
4.编码实现在编码实现过程中,我们需要根据需求分析和数据库设计来进行编码。
编码实现的重点是实现用户的各项操作功能,包括添加联系人、编辑联系人、删除联系人、查找联系人等。
5.测试和优化在编码实现完成后,我们需要进行测试和优化。
通过测试,我们可以发现和修复潜在的bug,优化系统的性能和稳定性。
四、实验结果经过几天的努力,我们成功地设计和实现了一个通讯录系统。
该系统具有以下特点:- 界面简洁明了,操作简单易用;- 用户可以方便地添加、编辑和删除联系人信息;- 用户可以按照姓名、电话号码等字段进行快速查找;- 用户可以导入和导出联系人信息,方便备份和共享。
数据结构通讯录管理系统课程设计实验报告背景随着信息化的快速发展,通讯录管理系统成为了每个人生活中必备的工具之一。
传统的纸质通讯录已经无法满足人们对于信息管理的需求,因此开发一个高效、便捷、用户友好的通讯录管理系统显得尤为重要。
本次课程设计实验的目标是设计一个基于数据结构的通讯录管理系统,实现通讯录的创建、查找、修改、删除等功能。
通过本次实验,我们可以学习和掌握数据结构中的链表、哈希表等基础概念和算法,并将其应用到实际项目中。
分析通讯录管理系统主要有以下几个功能:1.创建通讯录:通讯录是一个存储联系人信息的数据结构,可以存储联系人的姓名、电话号码、邮箱地址等信息。
2.添加联系人:可以向通讯录中添加新的联系人,包括姓名、电话号码、邮箱地址等信息。
3.查找联系人:可以根据姓名或电话号码查找通讯录中的联系人,并显示其详细信息。
4.修改联系人:可以根据姓名或电话号码修改通讯录中的联系人信息。
5.删除联系人:可以根据姓名或电话号码删除通讯录中的联系人。
为了实现上述功能,我们可以使用链表来实现通讯录的存储,每个节点表示一个联系人。
每个节点包含姓名、电话号码、邮箱地址等信息,并且有指向下一个节点的指针。
为了提高查找联系人的效率,我们还可以使用哈希表来实现联系人的快速查找。
哈希表采用键值对的方式存储数据,通讯录中的联系人可以以姓名为键,联系人节点为值存储在哈希表中。
结果实验的最终结果是一个完善的通讯录管理系统,能够实现创建通讯录、添加联系人、查找联系人、修改联系人和删除联系人等功能。
在实现过程中,我们遵循了以下步骤:1.首先,我们设计了联系人节点的数据结构,包括姓名、电话号码、邮箱地址等字段,并定义了节点的操作方法。
2.接着,我们设计了通讯录的数据结构,使用链表来存储联系人节点,并实现了通用的链表操作方法,如插入节点、删除节点等。
3.然后,我们设计了哈希表的数据结构,使用哈希函数将联系人节点存储在哈希表中,并实现了查找联系人的快速算法。
数据结构——通讯录实验报告
《数据结构课程设计》实验报告
编号实验一实验项目名称通讯录管理
班学姓08计科(1)班学时数 6 指导教师冯韵 5 黄媛级号名
成实验日期 2010年9月7日绩
一、实验目的:使用有关单链表的操作来实现通讯录信息系统的管理二、内容与设计思想:(设计思想、主要数据结构、主要代码结构、主要代码段分析) 设计思想:利用单链表的建立、查询、插入、删除、输出实现通讯录管理。
主要数据结构:单链表的建立、查询、插入、删除。
主要代码结构和分析:
void main( )主函数
for循环实现菜单循环。
int menu_select( ) 菜单选择函数
首先输出菜单选项,将输入的选项赋给sn,用sn判断输入值是否合理。
利用for循环实现重复选择,利用switch调用建立、查询、插入、删除和输出函数。
LinkList CreateList(void)建立带头结点链表
首先利用malloc申请头结点,置结束标志为0.通过0、1选择来结束建表。
三、调试过程(测试数据设计与测试结果分析) 四、总结
1、设计中遇到的问题及解决过程
2、设计中产生的错误及原因分析
3、设计体会和收获
五、评阅意见:。
计算机专业教研室实验报告(数据结构)课程设计手机通讯录小组成员系别班级学号实验日期指导教师实验成绩一、实验内容功能要求:(1)将联系人的信息可以存放在文件中,从文件中也可以读出联系人的信息。
(2)可以添加一个新联系人的信息。
(3)可以删除一个联系人的信息,删除条件为电话号码或姓名。
(4)可以查询一个联系人的信息,查询条件为电话号码或姓名。
(5)可以对联系人的信息进行排序,排序条件为联系人的姓名。
二、实验过程1、整个程序包含三个文件。
手机通讯录.cpp、delong.h 、menu.h(点击产看代码)手机通讯录.cpp [主程序]delong.h [各种函数]menu.h [菜单目录]2、联系人信息包括编号、姓名、手机号码、家庭住址、E-mail、QQ、类别信息。
其中编号分配4位、姓名10位、手机号码13位、地址14位、E-mail 14位、QQ和类别都为12位。
但实际上存储的时候所占位数都要少一位。
因为存储的时候是以字符形式存储,读取的时候以字符串形式读取,需要用最后一位填写字符串结束标志’\0’。
3、函数列表:void AddSpace(int n); /*添加空格*/void Save(FILE *fp,int n,int j); /*将person[MAXSIZE]中的内容放到通讯录.txt*/j==0; 追加方式写入,适用于增加联系人的情况。
j==1; 重新方式写入,适用于修改、删除情况。
三、总结:1、还是有小BUG。
Eg:删除最后一个联系人的时候再输出全部信息时还是能输出一个联系人。
2、代码冗长:Eg:增加操作及存储,得到联系人信息增添空格的时候没有写AddSpace()函数。
在修改操作中得到修改后的联系人信息那里才用AddSpace()函数。
某些地方重复代码较多。
3、函数归编混乱,不利于读看。
四、实验具体实验程序代码(要有注释)、测试结果(最好截图)和实验总结1、开始界面2、创建通讯录,若存在则无须再次创建。
数据结构课程设计通讯录管理系统报告前言通讯录管理系统是一种常见的应用程序,用于帮助用户有效地组织和管理他们的联系人信息。
本报告旨在介绍和分析一个基于数据结构设计的通讯录管理系统,其中实现了基本的通讯录功能,并且通过合适的数据结构和算法进行优化。
功能需求通讯录管理系统需要实现以下基本功能: - 添加联系人信息 - 查找联系人信息 - 删除联系人信息 - 更新联系人信息 - 显示所有联系人信息数据结构选择为了实现通讯录管理系统的功能,我们选择使用链表作为数据结构。
链表是一种简单而灵活的数据结构,可以动态地添加或删除节点,非常适合存储联系人信息这种动态的数据。
在这里,我们采用双向链表,使得查找、插入和删除操作更加高效。
算法设计添加联系人信息添加联系人信息时,我们需要遍历链表找到合适的位置插入新节点,这里的算法复杂度为O(n),其中n表示链表的长度。
查找联系人信息查找联系人信息时,我们需要遍历链表查找目标节点,这里的算法复杂度为O(n)。
删除联系人信息删除联系人信息时,我们同样需要遍历链表找到目标节点并删除,其算法复杂度为O(n)。
更新联系人信息更新联系人信息时,我们首先需要查找到目标节点,然后进行更新操作,其算法复杂度也为O(n)。
系统优化为了提高系统的性能,我们可以通过以下几种方式进行优化: - 使用哈希表索引联系人信息,减少查找联系人的时间复杂度; - 引入缓存机制,减少频繁的IO 操作。
总结通过本报告的介绍和分析,我们了解了一个基于数据结构设计的通讯录管理系统的实现原理和优化方法。
在实际应用中,针对具体需求和场景,我们可以进一步优化系统性能,提升用户体验。
通讯录管理系统作为一种简单而实用的应用程序,将在日常生活中发挥重要作用。
数据结构课程设计通讯录的制作一、引言二、需求分析1. 功能需求2. 性能需求3. 安全需求三、设计思路1. 数据结构选择2. 界面设计四、系统功能模块设计与实现1. 添加联系人模块2. 删除联系人模块3. 修改联系人模块4. 查询联系人模块五、系统性能测试与优化六、安全性测试与优化七、总结一、引言通讯录是我们日常生活中必不可少的工具之一,它可以帮助我们轻松地管理和查找联系人的信息。
本次课程设计旨在通过数据结构的应用,实现一个简单易用的通讯录管理系统。
二、需求分析1. 功能需求本系统需要实现以下功能:(1)添加联系人:可添加新的联系人信息,包括姓名、电话号码等;(2)删除联系人:可删除已有的联系人信息;(3)修改联系人:可修改已有的联系人信息;(4)查询联系人:可根据姓名或电话号码等关键字查询已有的联系人信息。
2. 性能需求本系统需要满足以下性能需求:(1)快速响应:用户操作时,系统需要快速响应,避免出现卡顿等情况;(2)稳定性:系统需要保持稳定,避免出现崩溃等情况;(3)易用性:系统需要易于使用,用户可以轻松地完成各项操作。
3. 安全需求本系统需要满足以下安全需求:(1)用户身份验证:用户在登录时需要进行身份验证,确保只有授权用户才能使用该系统;(2)数据隐私保护:系统需要对用户的数据进行加密处理,确保用户的隐私得到保护。
三、设计思路1. 数据结构选择本系统采用链表作为主要的数据结构。
链表具有插入、删除等操作效率高的优点,可以很好地满足通讯录管理中添加、删除联系人等操作的需求。
2. 界面设计本系统采用图形界面设计,界面简洁明了,易于操作。
主要界面包括登录界面、主界面和添加/修改联系人界面等。
四、系统功能模块设计与实现1. 添加联系人模块(1)输入联系人信息;(2)将新联系人信息插入链表中。
2. 删除联系人模块(1)输入待删除联系人姓名或电话号码等关键字;(2)查找并删除相应节点。
3. 修改联系人模块(1)输入待修改联系人姓名或电话号码等关键字;(2)查找相应节点;(3)修改节点信息。
山东理工大学计算机学院课程设计(数据结构)班级姓名学号指导教师二○一一年一月二十日课程设计任务书及成绩评定课题名称数据结构Ⅰ、题目的目的和要求:1、设计目的巩固和加深对数据结构的理解,通过上机实验、调试程序,加深对课本知识的理解,最终使学生能够熟练应用数据结构的知识写程序。
(1)通过本课程的学习,能熟练掌握几种基本数据结构的基本操作。
(2)能针对给定题目,选择相应的数据结构,分析并设计算法,进而给出问题的正确求解过程并编写代码实现。
2、设计题目要求:通讯录的制作设计目的:用〈〈数据结构〉〉中的双向链表作数据结构,结合C/C++语言基本知识。
编写一个通讯录管理系统。
以把所学数据结构知识应用到实际软件开发中去。
设计内容:本系统应完成一下几方面的功能:输入信息——enter();显示信息———display( );查找以姓名作为关键字———search( );删除信息———delete( );存盘———save ( );装入———load( ) ;设计要求:1) 每条信息至包含:姓名(NAME )街道(STREET)城市(CITY)邮编(ZIP)国家(STATE)几项。
2) 作为一个完整的系统,应具有友好的界面和较强的容错能力。
3) 上机能正常运行,并写出课程设计报告。
Ⅱ、设计进度及完成情况Ⅲ、主要参考文献及资料[1] 严蔚敏数据结构(C语言版)清华大学出版社 1999[2] 严蔚敏数据结构题集(C语言版)清华大学出版社 1999[3] 谭浩强 C语言程序设计清华大学出版社[4] 与所用编程环境相配套的C语言或C++相关的资料Ⅳ、成绩评定:设计成绩:(教师填写)指导老师:(签字)二○一一年一月二十一日目录第一章概述 (1)第二章系统分析 (2)第三章概要设计 (2)第四章详细设计 (5)第五章运行与测试 (16)第六章总结与心得 (22)参考文献 (24)第一章概述课程设计是实践性教学中的一个重要环节,它以某一课程为基础,可以涉及和课程相关的各个方面,是一门独立于课程之外的特殊课程。
实验报告实验名称单链表通讯录一、实验目的1.熟练掌握线性表的类型定义方法、存储方法及其基本运算(元素的插入、删除等)的实现方法,培养综合运用所学知识,根据具体问题进行数据结构设计和算法设计的能力。
二、实验内容1.用带头结点的单链表作存储结构,实现通讯录单链表的建立、查询、修改、排序、合并、统计、结点的查找、移动以及通讯录链表的输出功能。
三、实验要求设计要求:为了实现通讯录管理的操作功能,首先设计一个含有多个菜单项的主控菜单程序,然后再为这些菜单项配上相应的功能。
主控菜单设计要求:菜单内容程序运行后,给出9个菜单项的内容和输入提示:1.创建通讯录链表;2.将姓名为Name的好友的手机号改为MTel;3.输出通讯录;4.插入姓名为Name、手机号为MTel的好友信息,将链表中姓名≤Name的结点放到该结点的前面,将姓名>Name的结点放到该结点后面5.将通讯录按照好友姓名进行非递减排序;6.将两个按姓名非递减排序的通讯录合并为一个,姓名相同且手机号相同的好友记录在结果中只保留一个;7.统计籍贯是“大连”的好友人数;8.将通讯录中倒数第k个结点之后的所有结点移到头结点后面(保持结点间的先后顺序);9.将通讯录的正中间位置结点之后的全部结点倒置;0.退出管理系统请选择0—9:菜单设计要求:使用数字0—9来选择菜单项,其它输入则不起作用。
四、实验概要设计1)功能框图五. 使用说明1.运行环境:VC6.02.首先选择主控菜单中的操作1,即建表,然后进行其它操作.六.实验截图(见下页)七实验体会附源程序代码:#include<stdio.h>#include<stdlib.h>#include<string.h>#define Newsp (TxlList *)malloc(sizeof(struct TxlList))typedef struct TxlList{char Name[16]; //姓名char MTel[11]; //手机号char Tel[9]; //固定电话char EMail[16]; //邮箱地址char BornAddr[20]; //籍贯(值域:"北京"、"上海"、"大连"等等,只写城市名称)char BroadN[50]; //博客名struct TxlList *next; //指针域}TxlList, *TxlLink;void Lbuild1(TxlLink &T){//创建文件FILE *fp;TxlLink q;q=Newsp;q=T;int NUM;char filename[20];printf("\n*请输入要创建的通讯录名:\n");gets(filename);if ((fp=fopen(filename, "wb"))==NULL) { /*以写方式在当前目录打开(新建)文件*/printf("can't open file!!!\n");exit(0); //如果文件无法打开,关闭已经打开的其它文件,结束程序。
数据结构课程设计通讯录查询系统的设计与实现一、需求分析1、问题描述为某个单位建立一个员工通讯录管理系统,能够方便查询每一个员工的电话与地址。
设计散列表存储,设计并实现通讯录查找系统。
2、基本要求a.每个记录有下列数据项:电话号码、用户名、地址;b.从键盘输入各记录,分别以电话号码为关键字建立散列表;c.采用二次探测再散列法解决冲突;d.查找并显示给定电话号码的记录;e.通讯录信息文件保存。
二、概要设计1.数据结构本程序需要用到两个结构体,分别为通讯录 message以及哈希表HxList2.程序模块本程序包含两个模块,一个是实现功能的函数的模块,另一个是主函数模块。
系统子程序及功能设计本系统共有三个子程序,分别是:int Hx(long long key,int data)//哈希函数void BulidHx(HxList &L)//建立通讯录int Search(HxList &L)//查找3. 各模块之间的调用关系以及算法设计主函数调用BulidHx以及Search函数。
函数BulidHx调用函数Hx。
三、详细设计1.数据类型定义typedef struct{char *name;char *add;long long phonenumber;}message;typedef struct{message *list;int number;//记录数}HxList;2.系统主要子程序详细设计a. 建立通讯录void BulidHx(HxList &L)//建立通讯录{FILE *f = fopen("E:\\tongxunlu.txt", "w");char buf[20]={0},str[20]={0};long long key;cout<<"输入要建立的记录数:";cin>>L.number;L.number+=1;L.list=new message[L.number];//分配哈希表的存储空间for(int i=0;i<L.number;i++){L.list[i].phonenumber=-1;}L.list[L.number-1].name=NULL;L.list[L.number-1].add=NULL;cout<<"输入记录信息(电话号码用户名地址)"<<endl;for(int i=0;i<L.number-1;i++){cin>>key>>buf>>str;int pose=Hx(key,L.number);//获取理论上的存储位置if(L.list[pose].phonenumber==-1){}else{//用二次探测再散列法解决冲突//1^2 -1^2 2^2 -2^2int di,count=1;xunhuan: if(count%2==0)di=-(count/2)*(count/2);elsedi=((count/2)+1)*((count/2)+1);int site=Hx(key+di,L.number);if(site>=0){if(L.list[site].phonenumber==-1){pose=site;}else{count++;goto xunhuan;}}else{site=L.number-abs(site);if(L.list[site].phonenumber==-1){pose=site;}else{count++;goto xunhuan;}}}L.list[pose].phonenumber=key;fprintf(f,"%lld",key);fprintf(f," ");L.list[pose].name=new char[strlen(buf)+1];strcpy(L.list[pose].name,buf);fprintf(f,"%s",buf);fprintf(f," ");L.list[pose].add=new char[strlen(str)+1];strcpy(L.list[pose].add,str);fprintf(f,"%s",str);fprintf(f,"\n");}}b.查找int Search(HxList &L)//查找{long long key;cout<<"输入要查找记录的关键字(电话号码):";cin>>key;int pose=Hx(key,L.number);//计算理论上的位置if(L.list[pose].phonenumber==key){}else{int count=1,di;//二次探测再散列,查找xunhuan: if(count%2==0){di=-(count/2)*(count/2);}else{di=((count/2)+1)*((count/2)+1);}int site=Hx(key+di,L.number);if(site>=0){if(L.list[site].phonenumber==key){pose=site;}else{count++;if(L.list[site].phonenumber==-1){cout<<"没有找到"<<endl; return -1;//没有找到}goto xunhuan;}}else{site=L.number-abs(site);if(L.list[site].phonenumber==key){pose=site;}else{count++;if(L.list[site].phonenumber==-1){cout<<"没有找到"<<endl;return -1;//没有找到}goto xunhuan;}}}if(L.list[pose].phonenumber==key){cout<<"电话号码\t"<<"用户名\t"<<"地址"<<endl;cout<<L.list[pose].phonenumber<<"\t"<<L.list[pose].name<< "\t"<<L.list[pose].add<<endl;return pose;}}四、测试与分析1.显示主菜单,运行程序能够显示出如下界面。
数据结构上机实验报告通讯录陈冠豪20102105010101015二O一O年5月26号实验目的通讯录内容有:姓名、通讯地址、电话号码。
要求:(1)建立通信录(2)插入一个人员信息。
(3)删除指定的人员信息。
(4)按姓名项的字母顺序递增排列;(5)能查找通讯录中某人的信息;实现代码://////////By Lea////////////// ////////2010210501//////////// //用链式存储结构的通讯录//By Lea.(2010210501)#include <stdio.h>#include <string.h>#include <stdlib.h>//#include "system.h"#define maxsize 100/*通讯信息的结构类型定义*/typedef struct{char num[10];char name[10];char phone[12];char addres[12];}DataType;struct persons{ char num[10];char name[10];char phone[12];char addres[12];}psn[maxsize];typedef struct node{DataType data;struct node *next;}ListNode,*LinkList;void InsertList(LinkList head){LinkList p;p=(LinkList)malloc(sizeof(ListNode));p->next=NULL;printf("\nInput the new node\n");printf("number:\n");gets(p->data.num);printf("name:\n");gets(p->);printf("phone:\n");gets(p->data.phone);printf("addres:\n");gets(p->data.addres);p->next=head->next;head->next=p;}/*查询函数:可以按编号或姓名在链表中查找出对应的记录。
一、实验目的1、能够利用单链表的基本运算进行单链表的相关操作。
2、加深对链式存储数据结构的理解,逐步培养解决实际问题的编程能力。
3、熟练掌握线性表的类型定义方法、存储方法及其基本运算(元素的建立、查找、删除等)的实现方法,培养综合运用所学知识,根据具体问题进行数据结构设计和算法设计的能力。
二、实验环境具有Windows XP或2003的计算机、V istual C++ 6.0、网络环境。
三、实验内容设计一个班级同学的通讯录,要求如下:✓通讯录中每个同学的信息包含以下内容:学号(id)、姓名(name)、电话号码(tel)。
如果需要更多其他信息,请自行添加。
✓程序主菜单包含以下几个功能:(1)添加记录:通过键盘输入信息,添加一条通讯录记录。
(2)删除记录:通过键盘输入学号,删除该学号的记录。
(3)输出记录:输出通讯录全部记录。
(4)按姓名查找:通过键盘输入姓名,输出该同学的所有信息。
(5)按电话号排序:按电话号码从小到大排序并输出排序后的信息。
(6)清空记录:删除通讯录中的全部记录,并删除文件。
(7)退出。
程序清单#include<stdio.h>#include<stdlib.h>#include<string.h>#define N 20typedef struct student{char tel[N];char name[N];char id[N];struct student *next;}linklist;//创建信息void createlist(linklist *&l){int ch;linklist *s,*p;printf("***********创建通讯录***********\n");printf("----请输入通讯者信息-----:\n请输入非零整数,输入0则退出:\n");scanf("%d",&ch);l=(linklist *)malloc(sizeof(linklist));s=l;while(ch!=0){p=(linklist *)malloc(sizeof(linklist));printf("请输入通讯者姓名:");scanf("%s",p->name);printf("请输入通讯者电话号:");scanf("%s",p->tel);printf("请输入通讯者身份证号:");scanf("%s",p->id);s->next=p;s=p;printf("请输入通讯者信息:\n请输入非零整数,输入0则退出:\n");scanf("%d",&ch);}s->next=NULL;}//删除信息void listdelete(linklist *&l,int t ){int j=0;linklist *p,*q;p=l;while(p!=NULL&&j<t-1){j++;p=p->next;}if(p==NULL)exit(0);else{q=p->next;if(q==NULL)exit(0);p->next=q->next;printf("***************删除系统**************\n");printf("-------你将删除的联系人的信息为-------:\n");printf("通讯者姓名:%s\n",q->name);printf("通讯者电话号:%s\n",q->tel);printf("通讯者身份证号:%s\n",q->id);printf("******-------******删除成功******------*******\n");free(q);}}//输出信息void output(linklist *l){linklist *p;p=l->next;printf("----***----输出所有联系者信息----***----:\n");while(p!=NULL){printf("通讯者姓名:%s\n",p->name);printf("通讯者电话号:%s\n",p->tel);printf("通讯者身份证号:%s\n",p->id);printf("*****************************\n");p=p->next;}}//按姓名查找void findname(linklist *l){char n[N];linklist *p=l->next;printf("***************查找系统*************\n");printf("----------请输入要查找的姓名---------:\n");scanf("%s",n);while(p!=NULL){if(strcmp(p->name,n)){printf("-----***--你要查找的资料为--***----:\n");printf("通讯者姓名:%s\n",p->name);printf("通讯者电话号:%s\n",p->tel);printf("通讯者身份证号:%s\n",p->id);printf("*****************************");break;}elsep=p->next;}}//按电话号排序void sorttel(linklist *&l){linklist *p,*q,*s;q=l;p=q->next->next;q->next->next=NULL;while(p){while(q->next&&(strcmp(p->tel,q->next->tel)>0))q=q->next;s=p->next;p->next=q->next;q->next=p;p=s;q=l;}}//清空void release(linklist *&l){linklist *p,*q;p=l;q=p->next;while(q!=NULL){free(p);p=q;q=p->next;}free(p);printf("--------数据已全部被清空----------\n,*****内存回收*****\n"); }//主函数void main(){int i,t;linklist *l;while(1){printf("通讯录功能如下:\n1.建立通讯录信息\n2.删除信息\n3.输出信息\n4.按姓名查找信息\n5.按电话号排序信息\n6.清空信息\n7.退出");scanf("%d",&i);if(i<=0||i>7)break;switch(i){case 1:createlist(l);break;case 2:printf("---------请输入第t个要删除的信息---------:\n");scanf("%d",&t);listdelete(l,t);break;case 3:output(l);break;case 4:findname(l);break;case 5:sorttel(l);printf("-----***---&&&--这是按电话号排序后的信息列表--&&&---***-----\n");output(l);break;case 6:release(l);break;case 7:break;}}}运行结果:建立通讯录信息运行结果截图:输入零后通讯录信息输出结果截面图:查询通讯录信息运行结果截图:通讯录信息排序运行结果截图:删除通讯录信息运行结果截图:删除通讯录信息后的输出结果截面图:清空通讯录信息的运行结果截面图:四、实验心得与小结通过这次的上机实验,使我学到了一些回顾了以前学过的知识,使我对数据结构程序设计有了更深层次的认识和理解,懂得了灵活运用。
数据结构-通讯录管理系统的设计与实现汇总简介本篇文档介绍了如何使用数据结构实现一个简单的通讯录管理系统。
包括系统的需求分析、数据结构选择、程序设计与实现等方面。
需求分析通讯录管理系统的核心功能是记录联系人信息,包括姓名、电话号码、电子邮件地址等。
该系统需要支持以下操作:1.添加联系人2.删除联系人3.查找联系人4.修改联系人信息5.显示所有联系人除了核心功能以外,通讯录管理系统还需要具有以下扩展功能:1.根据姓名或电话号码排序2.将联系人信息导入/导出文件3.显示某个分组的联系人数据结构选择为了支持以上功能,我们需要选择合适的数据结构来存储联系人信息。
常见的数据结构有数组、链表、栈、队列、哈希表等。
对于通讯录管理系统,我们可以使用链表来存储联系人信息。
每个节点包含一个指向下一节点的指针和联系人信息。
这种方式可以方便地插入、删除联系人信息,同时节省存储空间。
排序可以使用快速排序(QSort)、归并排序等算法实现。
导入/导出文件可以使用文件读写操作实现。
分组显示则可以使用多个链表来分别存储不同分组的联系人信息。
程序设计与实现以下是通讯录管理系统的程序设计与实现的主要流程:1.定义联系人结构体,包含姓名、手机号、邮箱等字段。
2.定义联系人节点结构体,包含指向下一节点的指针和联系人信息结构体。
3.实现通讯录管理系统功能函数,包括添加联系人、删除联系人、查找联系人、修改联系人信息、显示所有联系人等。
4.实现排序算法,如快速排序和归并排序。
5.实现文件读写操作,包括将联系人信息导入/导出文件。
6.实现分组显示功能,使用不同链表存储不同分组的联系人信息。
以上是通讯录管理系统的设计与实现汇总。
在数据结构的选择上,我们选择了链表作为存储通讯录联系人信息的数据结构,使用排序算法进行排序,使用文件读写操作进行导入/导出操作,使用多个链表实现分组显示功能。
在功能实现上,分别实现了添加联系人、删除联系人、查找联系人、修改联系人信息、显示所有联系人等核心功能以及排序、导入/导出、分组显示等扩展功能。
一、实训目的本次数据结构实训通讯录报告旨在通过实际操作,加深对数据结构理论知识的理解,提高编程能力,培养实际解决问题的能力。
通过设计、实现和维护一个通讯录管理系统,使学生掌握线性表、链表、树、图等基本数据结构的应用,同时熟悉数据库操作和前端界面设计。
二、实训环境1. 操作系统:Windows 102. 开发工具:Visual Studio 20193. 编程语言:C++4. 数据库:MySQL5. 前端界面设计:Qt三、实训内容1. 系统需求分析(1)功能需求① 添加:允许用户添加新的联系人信息,包括姓名、电话、邮箱、地址等。
② 查询:根据姓名、电话、邮箱等关键字进行模糊查询。
③ 修改:允许用户修改指定联系人的信息。
④ 删除:允许用户删除指定联系人信息。
⑤ 导出:将通讯录数据导出为Excel格式。
⑥ 导入:允许用户从Excel文件导入联系人信息。
(2)性能需求① 系统应具备良好的响应速度,用户操作时,系统应迅速给出反馈。
② 系统应具备较高的稳定性,避免因操作失误导致数据丢失。
2. 系统设计① 联系人信息采用结构体存储,包括姓名、电话、邮箱、地址等字段。
② 联系人信息存储在MySQL数据库中,使用线性表进行管理。
③ 查询操作采用二分查找算法,提高查询效率。
(2)功能模块设计① 添加模块:用户输入联系人信息,系统将其存储在数据库中。
② 查询模块:用户输入关键字,系统从数据库中查找匹配的联系人信息。
③ 修改模块:用户输入联系人信息,系统将其更新到数据库中。
④ 删除模块:用户输入联系人信息,系统将其从数据库中删除。
⑤ 导出模块:将数据库中的联系人信息导出为Excel格式。
⑥ 导入模块:用户上传Excel文件,系统将其中的联系人信息导入数据库中。
3. 系统实现(1)数据库设计① 创建联系人信息表(contact_info),包括姓名、电话、邮箱、地址等字段。
② 设计SQL语句,实现数据的增删改查操作。
(2)编程实现① 使用C++实现各个功能模块,包括添加、查询、修改、删除等。
数据结构通讯录管理系统课程设计实验报告心得数据结构通讯录管理系统课程设计实验报告心得一、引言在本次数据结构课程设计实验中,我们小组选择了通讯录管理系统作为项目。
通讯录管理系统是一种常见的应用程序,用于方便地存储和管理联系人信息。
本报告将对我们小组在实验过程中的设计思路、实现方法和心得体会进行详细介绍。
二、需求分析通讯录管理系统的基本功能包括添加联系人、删除联系人、修改联系人信息和查询联系人等。
除此之外,我们还希望能够支持批量导入和导出联系人信息,以及按照姓名、电话号码等字段进行排序和筛选。
三、设计思路1. 数据结构选择为了高效地存储和操作联系人信息,我们选择使用链表作为主要的数据结构。
链表可以动态地分配内存空间,并且插入和删除操作的时间复杂度较低。
2. 模块划分根据需求分析,我们将通讯录管理系统划分为以下几个模块:- 主菜单模块:显示系统功能选项,并根据用户输入调用相应模块。
- 添加联系人模块:向通讯录中添加新的联系人信息。
- 删除联系人模块:根据用户输入的姓名或电话号码删除对应的联系人信息。
- 修改联系人模块:根据用户输入的姓名或电话号码修改对应的联系人信息。
- 查询联系人模块:根据用户输入的姓名或电话号码查询对应的联系人信息,并显示在屏幕上。
- 导入导出模块:支持将通讯录中的联系人信息导出到文件,以及从文件中导入联系人信息。
四、实现方法1. 数据结构设计我们使用了一个结构体来表示每个联系人的信息,包括姓名、电话号码和电子邮件地址等字段。
同时,我们为每个节点添加了指向下一个节点的指针。
2. 功能实现- 添加联系人:通过用户输入,创建一个新节点,并将其插入到链表中合适的位置。
- 删除联系人:根据用户输入的姓名或电话号码,在链表中找到对应节点并删除。
- 修改联系人:根据用户输入的姓名或电话号码,在链表中找到对应节点并修改其字段值。
- 查询联系人:根据用户输入的姓名或电话号码,在链表中找到对应节点并显示其字段值。
题目二:通讯录的实现一,课题内容和要求基本要求:实现一个以带表头结点的单链表为存储结构的通讯录,其中通讯录的信息中包括姓名、电话、地址等数据项。
所设计的系统要有简单的DOS界面,方便用户进行操作,显示以下功能:(1)建立通讯录。
(2)插入、删除、修改通讯录记录(3)查询通讯录记录,要求可按姓名和电话号码查询(4)可按姓名或电话号码对讯录进行排序(5)输出通讯录到文本文件中。
提高要求:建立通讯录时,从文本文件中输入通讯录记录,从而建立通讯录。
分配该题目的学生学号:10001111-10001120二、需求分析(1)建立一个类,类中包含添加联系人函数void add_person();删除联系人void add_person();显示所有联系人void show_all();修改信息void alter();查询联系人void select();保存新增加的联系人void save_new();同时,通讯录中包含name姓名address地址number电话号码mail邮箱(2)系统总流程图三,概要设计定义一个结构体,在其中声明结构变量,然后定义字符串,来存放要用到的变量。
然后定义此程序的其他功能模块的原型。
主函数调用各个功能子函数,定义各个功能子函数,通过class person创建一个联系人信息函数。
通过add_person做一个添加的函数,实现联系人信息的录入。
通过del_person做一个删除的函数,实现联系人信息的删除。
通过show_all做一个显示的函数,显示所有联系人的信息。
通过select做一个查询信息的函数,实现查询某联系人的信息。
通过alter做一个修改信息的函数,实现修改某联系人的信息。
在程序中需要输入的内容包括:(1)联系人的录入实现过程:根据提示选择“1”进入添加联系人信息界面,按步骤输入要添加的信息,以“Enter”键结束,然后由系统自动调用信息录入函数,联系人的信息保存在事先定义的文件中。
数据结构实验报告之通讯录的实现一、实验题目利用线性表实现一个通讯录管理,通信录的数据格式如下:struct DataType{int ID; //编号char name[10]; //姓名char ch; //性别char phone[13]; //电话char addr[31]; //地址};要求:∙实现通讯录的建立、增加、删除、修改、查询等功能∙能够实现简单的菜单交互,即可以根据用户输入的命令,选择不同的操作。
∙能够保存每次更新的数据(选作)∙能够进行通讯录分类,比如班级类、好友类、黑名单等等(选作)∙编写测试main()函数测试线性表的正确性二、实验目的1、熟悉C++语言的基本编程方法,掌握集成编译环境的调试方法。
2、掌握线性表的操作的实现方法。
3、运用线性表解决实际问题。
三、实验内容通过编写一个C++程序完成一个简易的通讯录管理系统,能够实现建立,增加,删除,修改,查找,浏览,输出,菜单等基本功能。
管理系统中每个元素含有成员的ID、姓名、性别、电话、地址等信息。
程序是使用链表的功能,通过一些算法简单的实现。
四、算法思路与主要代码1. 通信录管理结构:建立,增加,删除,修改,查找,浏览,菜单。
2.建立通讯录构造函数,建立头节点PHONEBOOK::PHONEBOOK(){first = new DataType;first->next = first->prior = first;first->ID = 0;}头插法,添加联系人1:在堆中建立新结点2:将 a[i]写入到新结点的数据域3:修改新结点的指针域4:修改头结点的指针域,将新结点加入链表中即 1:Node <T> * s=new Node <T> 2:s->data=a[i] 3:s->next=front->next; 4:front->next=s代码实现void PHONEBOOK::Insert(){DataType *data = new DataType;data->next = first->next;data->prior = first;first->next = data;data->next->prior = data;m++;data->ID = m;3.查找联系人按姓名查找查找是指用户输入要查找的联系人的姓名,系统该函数内找到该联系人,返回该联系人数据域的指针,在主函数中输出该联系人的全部信息。
即1. 初始化工作指针p; 2. 循环以下操作直到p为空或找到用户 1. 如果p的数据等于i,则返回P的数据域指针; 2. P指针指向下一个节点; 3.若找不到返回空指针。
代码实现void PHONEBOOK::Search(){cout << "请输入要查找的联系人的姓名:";char aname[10];cin >> aname;DataType *p = first->next;while (p){//找到则输出信息if (strcmp(p->name aname) == 0){Print(p);system("pause");system("cls");break;}p = p->next;//找不到就输出"该用户不存在"if (p == first){cout << "该联系人不存在!" << endl;system("pause");system("cls");break;}}}4.删除联系人删除是指根据用户输入要删除联系人的姓名,找到该联系人结点,返回该联系人的数据域,删除此节点。
即要满足1. 从第一个节点开始,查找到要删用户的的前一个用户节点,设P指向该节点;2. 设q指向要删除的用户:q=p->next;3. 摘链:p->next=q->next;4. 保存q节点的数据域:x=q->data;5. 释放q节点:delete q;要指出的是若在整个通讯录找不到该ID,直接跳过删除步骤,输出查无此人。
代码实现void PHONEBOOK::Delete(){cout << "请输入要删除的联系人的姓名:";char aname[10];cin >> aname;DataType *p = first->next;while (p != first){//找到该联系人后确认删除if (strcmp(p->name aname) == 0){Print(p);cout << "确定删除该联系人?(Y or N)" << endl;flag2:char s;cin >> s;//确认则删除if (s == 'Y' || s == 'y'){DataType *q = p->prior;//之后的联系人编号减一while (q != first){q->ID = q->ID - 1;q = q->prior;}//删除节点p->next->prior = p->prior;p->prior->next = p->next;delete p;m--;cout << "删除完成!" << endl;system("pause");system("cls");break;}5.修改联系人用户需要修改联系人信息时,在主函数中输入用户姓名,先是调用查找模块,如果用户存在,系统就会获取该联系人的所有信息,然后重新调用输入信息模块,再次输入联系人的编号,姓名,性别,手机号,地址,输入信息后,原有信息被替换。
代码实现void PHONEBOOK::Revise(){cout << "请输入要修改的联系人的姓名:";char aname[10];cin >> aname;DataType *p = first->next;while (p){//找到后录入新信息if (strcmp(p->name aname) == 0)……………Else……6.浏览通讯录用户使用此功能时,即实现通讯录的遍历,系统会依次输出所有用户的信息。
输出的基本思想是:只要将表头的指针赋给一个指针变量p,然后用p向后扫描,直到表尾,p为空值。
代码实现oid PHONEBOOK::Show(){if (m == 0){cout << "通讯录空的呢,亲!" << endl;system("pause");system("cls");}//循环输出联系人信息else{DataType *p = first->prior;while (p){Print(p);cout << endl;p = p->prior;if (p == first){system("pause");system("cls");break;}}}}7.菜单利用switch case结构实现选择的功能,从而实现简易交互,启用通信录前面写好的多个功能。
//菜单(主界面)void PHONEBOOK::MENU(){bool exitFlag = false; //退出标识符do{cout << endl << endl << endl;cout << "***********************************************************************" << endl;cout << " 我的通讯录 " << endl;cout << " * * " << endl;cout << " * 1.添加我的联系人 * " << endl;cout << " * 2.删除我的联系人 * " << endl;cout << " * 3.修改我的联系人 * " << endl;cout << " * 4.查找我的联系人 * " << endl;cout << " * 5.浏览我的通讯录 * " << endl;cout << " 6.退出我的通讯录 " << endl;cout << " * * " << endl;cout << "***********************************************************************" << endl;cout << endl << "请输入您要完成的操作序号:";int k;flag4:cin >> k;switch (k){case 1:system("cls");Insert();break;case 2:system("cls");Delete();break;case 3:system("cls");Revise();break;case 4:system("cls");Search();break;case 5:system("cls");Show();break;case 6:exitFlag = true;break;default:cout << endl << "输入有误,请重新输入:";goto flag4;}} while (!exitFlag);cout << "谢谢使用!" << endl;}#include<iostream>#include<cstring>using namespace std;struct DataType{int ID; //编号char name[10]; //姓名char ch; //性别char phone[13]; //电话char addr[31]; //地址DataType *prior;DataType *next;};int m = 0; //全局变量,记录通讯录内数据个数class PHONEBOOK{DataType *first; //定义头结点public:PHONEBOOK(); //建立void Insert(); //增加void Delete(); //删除void Revise(); //修改void Search(); //查找void Show(); //浏览void Print(DataType *p); //输出void MENU(); //菜单~PHONEBOOK();};//构造函数,建立头结点PHONEBOOK::PHONEBOOK(){first = new DataType;first->next = first->prior = first;first->ID = 0;}//析构函数PHONEBOOK::~PHONEBOOK(){DataType *p = first->prior;DataType *q;if (p == first)delete p;{do{q = p;p = p->prior;delete q;} while (p != first);delete p;}}//添加联系人(头插法)void PHONEBOOK::Insert(){DataType *data = new DataType;data->next = first->next;data->prior = first;first->next = data;data->next->prior = data;m++;data->ID = m;//录入信息cout << "请输入联系人姓名:";cin >> data->name; cin.sync();flag1:cout << endl << "请输入联系人性别( M(男) or W(女)):";cin >> data->ch; cin.sync();if (data->ch != 'M'&&data->ch != 'W'&&data->ch != 'm'&&data->ch != 'w') {cout << "输入有误!" << endl;goto flag1;}cout << endl << "请输入联系人电话号码:";cin >> data->phone; cin.sync();cout << endl << "请输入联系人地址:";cin >> data->addr;cout << endl << "添加完成!" << endl;system("pause");system("cls");//输出单个联系人信息void PHONEBOOK::Print (DataType *p){cout << "编号:" << p->ID << endl;;cout << "姓名:" << p->name << endl;cout << "性别:";if (p->ch == 'm' || p->ch == 'M')cout << "男" << endl;elsecout << "女" << endl;cout << "号码:" << p->phone << endl; cout << "住址:" << p->addr << endl;}//查找联系人(按姓名)void PHONEBOOK::Search(){cout << "请输入要查找的联系人的姓名:"; char aname[10];cin >> aname;DataType *p = first->next;while (p){//找到则输出信息if (strcmp(p->name aname) == 0){Print(p);system("pause");system("cls");break;}p = p->next;//找不到就输出"该用户不存在"if (p == first){cout << "该联系人不存在!" << endl;system("pause");system("cls");break;}}}//删除联系人void PHONEBOOK::Delete(){cout << "请输入要删除的联系人的姓名:";char aname[10];cin >> aname;DataType *p = first->next;while (p != first){//找到该联系人后确认删除if (strcmp(p->name aname) == 0){Print(p);cout << "确定删除该联系人?(Y or N)" << endl; flag2:char s;cin >> s;//确认则删除if (s == 'Y' || s == 'y'){DataType *q = p->prior;//之后的联系人编号减一while (q != first){q->ID = q->ID - 1;q = q->prior;}//删除节点p->next->prior = p->prior;p->prior->next = p->next;delete p;m--;cout << "删除完成!" << endl;system("pause");system("cls");break;}//取消删除else if (s == 'N' || s == 'n'){system("cls");}else{cout << "输入有误,请重新输入:";goto flag2;}}elsep = p->next;//找不到该联系人if (p == first){cout << "该联系人不存在!" << endl; system("pause");system("cls");break;}}}//修改联系人void PHONEBOOK::Revise(){cout << "请输入要修改的联系人的姓名:"; char aname[10];cin >> aname;DataType *p = first->next;while (p){//找到后录入新信息if (strcmp(p->name aname) == 0){cout << "请输入联系人姓名:";cin >> p->name; cin.sync();flag3:cout << endl << "请输入联系人性别( M(男) or W(女)):"; cin >> p->ch; cin.sync();if (p->ch != 'M'&&p->ch != 'W'&&p->ch != 'm'&&p->ch != 'w'){cout << "输入有误!" << endl;goto flag3;}cout << endl << "请输入联系人电话号码:";cin >> p->phone; cin.sync();cout << endl << "请输入联系人地址:";cin >> p->addr;cout << "修改完成!" << endl;system("pause");system("cls");break;}p = p->next;//找不到联系人if (p == first){cout << "该联系人不存在" << endl;system("pause");system("cls");break;}}}//浏览通讯录void PHONEBOOK::Show(){if (m == 0){cout << "通讯录空的呢,亲!" << endl;system("pause");system("cls");}//循环输出联系人信息else{DataType *p = first->prior;while (p){Print(p);cout << endl;p = p->prior;if (p == first){system("pause");system("cls");break;}}}}//菜单(主界面)void PHONEBOOK::MENU(){bool exitFlag = false; //退出标识符do{cout << endl << endl << endl;cout << "***********************************************************************" << endl;cout << " 我的通讯录 " << endl;cout << " * * " << endl;cout << " * 1.添加我的联系人 * " << endl;cout << " * 2.删除我的联系人 * " << endl;cout << " * 3.修改我的联系人 * " << endl;cout << " * 4.查找我的联系人 * " << endl;cout << " * 5.浏览我的通讯录 * " << endl;cout << " 6.退出我的通讯录 " << endl;cout << " * * " << endl;cout << "***********************************************************************" << endl;cout << endl << "请输入您要完成的操作序号:";int k;flag4:cin >> k;switch (k){case 1:system("cls");Insert();break;case 2:system("cls");Delete();break;case 3:system("cls");Revise();break;case 4:system("cls");Search();break;case 5:system("cls");Show();break;case 6:exitFlag = true;break;default:cout << endl << "输入有误,请重新输入:";goto flag4;}} while (!exitFlag);cout << "谢谢使用!" << endl;}//主函数(测试)int main(){PHONEBOOK MyPHONEBOOK;MyPHONEBOOK.MENU();}五、参考资料数据结构与算法。