一、设计要求
选题三 通讯录管理程序(百行代码)
设计一个通讯录管理程序。该程序具有以下功能:1. 添加通讯录信息:输入通讯录信息并予以保存,通讯录信息包
括姓名、通信地址、邮政编码、电话号码;若电话号码已经存在,则不允许添加该信息。
2.查询通讯录信息:根据输入的姓名查询通讯录信息;若输入的姓名为空,则查询出所有的通讯录信息;若查询出多条信息,将这些信息按电话号码由小到大排序后再显示。
3.删除通讯录信息:根据输入的电话号码删除相应的通讯录信息
4.修改通讯录信息:用输入的通讯录信息替换电话号码与之相同的已有通讯录信息。
二、实现思路
本代码实现了一个简单的通讯录管理系统,主要功能包括添加联系人、查询联系人、删除联系人、修改联系人、排序联系人和显示所有联系人。以下是代码的详细实现思路分析:
1. 数据结构设计
数据结构:
- 使用结构体
Contact
来表示联系人,包含姓名、地址、邮政编码和电话号码四个字段。 - 使用一个
Contact
数组contacts
存储所有联系人,最大容量为MAX_ENTRIES
。 - 使用一个全局变量
contactCount
记录当前联系人数量。
2. 添加联系人
函数:void addContact()
- 检查通讯录是否已满,如果已满则提示用户并返回。
- 读取用户输入的联系人信息,创建一个新联系人。
- 检查新联系人的电话号码是否已存在,如果存在则提示用户并返回。
- 将新联系人添加到通讯录,并更新
contactCount
。 - 提示用户联系人已成功添加。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “通讯录” 获取。👈👈👈
3. 显示联系人信息
函数:void displayContact(Contact contact)
- 打印指定联系人的详细信息(姓名、地址、邮政编码、电话号码)。
4. 查询联系人
函数:void queryContact()
- 提供两种查询方式:按姓名查询和按电话号码查询。
- 根据用户选择,调用
queryByName()
或queryByPhoneNumber()
进行具体查询。
按姓名查询:
函数:void queryByName()
- 读取用户输入的姓名(允许用户按Enter键显示所有联系人)。
- 遍历通讯录,找到匹配的联系人,存储在结果数组中。
- 如果找到匹配的联系人,按电话号码排序并显示,否则提示未找到联系人。
按电话号码查询:
函数:void queryByPhoneNumber()
- 读取用户输入的电话号码。
- 遍历通讯录,找到匹配的联系人并显示,如果未找到则提示用户。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “通讯录” 获取。👈👈👈
5. 删除联系人
函数:void deleteContact()
- 读取用户输入的要删除的联系人电话号码。
- 遍历通讯录,找到匹配的联系人并将其删除(通过覆盖数组元素实现),更新
contactCount
。 - 提示用户联系人已删除,如果未找到则提示用户。
6. 修改联系人
函数:void modifyContact()
- 读取用户输入的要修改的联系人电话号码。
- 遍历通讯录,找到匹配的联系人并读取新的联系人信息,更新联系人数据。
- 提示用户联系人信息已更新,如果未找到则提示用户。
7. 排序联系人
函数:void sortContacts()
- 提供多种排序方式:冒泡排序、快速排序、堆排序、选择排序和归并排序。
- 根据用户选择,调用相应的排序函数对联系人数组进行排序。
- 提示用户联系人已排序并显示排序后的联系人信息。
排序算法实现:
- 冒泡排序:void bubbleSort(Contact arr[], int n)
- 快速排序:void quickSort(Contact arr[], int low, int high)
- 堆排序:void heapSort(Contact arr[], int n)
- 选择排序:void selectionSort(Contact arr[], int n)
- 归并排序:void mergeSort(Contact arr[], int l, int r)
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “通讯录” 获取。👈👈👈
8. 显示所有联系人
函数:void displayAllContacts()
- 检查通讯录是否为空,如果为空则提示用户。
- 遍历通讯录并显示每个联系人的详细信息。
9. 主函数
函数:int main()
- 提供一个循环菜单,允许用户选择不同的操作(添加、查询、删除、修改、排序、显示所有联系人、退出)。
- 根据用户选择调用相应的函数执行操作。
这段代码实现了一个功能齐全的通讯录管理系统,涵盖了联系人管理的基本操作。代码结构清晰,模块化设计使得每个功能单独实现,便于维护和扩展。通过使用不同的排序算法,代码展示了对联系人进行排序的多种实现方法,体现了算法的多样性和应用场景。通过这种设计,用户可以方便地管理通讯录中的联系人,提升了用户体验和系统的实用性。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “通讯录” 获取。👈👈👈
三、运行结果
添加通讯录信息
查询通讯录信息
修改通讯录信息
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “通讯录” 获取。👈👈👈
排序通讯录信息
显示通讯录信息
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “通讯录” 获取。👈👈👈
删除通讯录
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “通讯录” 获取。👈👈👈