数据结构实验报告之通讯录的实现

合集下载

c语言通讯录实验报告

c语言通讯录实验报告

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、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构实验报告之通讯录的实现一、实验题目利用线性表实现一个通讯录管理,通信录的数据格式如下: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();}五、参考资料数据结构与算法。

相关文档
最新文档