一、设计要求
(1) 系统名称
手机通讯录系统的设计
(2) 准备数据
- 新建一个文本文件,文件名为:“班名+序号_bk”,如电信01班的12号同学所建的文件名应为:DX0112.txt。将每个人的手机信息输入到该文件中,建议按如下形式存放:10≤M<100,下文以M=10为例。
姓名 办公电话 家庭电话 移动电话 性别 分组 张三 87168880001 87169980001 13987168801 男 个人 李四 87168880002 87169980002 13987168802 男 商务类 ... (注:请大家将该文本文件保存到自己的存储设备,运行程序前请保存相应的副本)
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 手机 ” 获取。👈👈👈
(3) 功能要求
- 实现查询显示功能:
- 按姓名查询
- 按分组查询
- 显示全部信息
- 将满足查询条件的记录显示在屏幕上
- 实现添加功能:
- 能录入新数据
- 当录入了新数据时,首先判断该号码是否存在,如果不存在,则提示可进行数据录入并可依次输入其他数据等信息
- 实现修改功能:
- 选中某个人的姓名后,可以对此人的相应数据进行修改
- 实现删除功能:
- 选中某个人的姓名时,可以将此人的相应数据进行删除
- 实现排序功能:
- 按姓名排序,将排序后的结果显示在屏幕上
以上内容详细描述了一个手机通讯录系统的设计和功能需求,包括准备数据的格式和具体功能实现的要求。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 手机 ” 获取。👈👈👈
三、可视化分析
按姓名查询
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 手机 ” 获取。👈👈👈
按分组查询
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 手机 ” 获取。👈👈👈
添加信息
删除信息
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 手机 ” 获取。👈👈👈
显示全部信息
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 手机 ” 获取。👈👈👈
排序功能
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 手机 ” 获取。👈👈👈
三、设计思路
本系统是一个简单的手机通讯录管理系统,用于存储和管理联系人信息。系统的主要功能包括按姓名查询、按分组查询、显示全部信息、添加信息、修改信息、删除信息和排序功能。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 手机 ” 获取。👈👈👈
3.1 文件读取
功能:从文件中读取联系人信息,并将其存储到 contacts
数组中。
实现:loadContacts
函数
void loadContacts(const char* filename) { FILE* file = fopen(filename, "r"); if (!file) { printf("无法打开文件 %s\n", filename); exit(1); } char line[MAX_LINE]; while (fgets(line, sizeof(line), file)) { // 略..... } } fclose(file); }
trimNewline
函数用于去除每行末尾的换行符:
void trimNewline(char *str) { char *pos; if ((pos = strchr(str, '\n')) != NULL) *pos = '\0'; }
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 手机 ” 获取。👈👈👈
3.2 查询功能
功能:按姓名或分组查询联系人信息。
实现:searchByName
和 searchByGroup
函数
void searchByName() { char name[20]; printf("输入姓名: "); scanf("%s", name); > 👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 手机 ” 获取。👈👈👈 } } printf("未找到联系人\n"); } void searchByGroup() { char group[20]; // 略。。。。 }
displayContact
函数用于显示联系人的详细信息:
void displayContact(int index) { printf("姓名: %s\n", contacts[index].name); > 👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 手机 ” 获取。👈👈👈 }
3.3 显示全部信息
功能:显示通讯录中所有联系人的信息。
实现:displayAllContacts
函数
void displayAllContacts() { > 👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 手机 ” 获取。👈👈👈 } }
3.4 添加联系人
功能:添加一个新的联系人。
实现:addContact
函数
void addContact() { if (contactCount >= MAX_CONTACTS) { printf("通讯录已满\n"); return; } > 👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 手机 ” 获取。👈👈👈 printf("输入性别: "); scanf("%s", newContact.gender); printf("输入分组: "); scanf("%s", newContact.group); }
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 手机 ” 获取。👈👈👈
3.5 修改联系人
功能:修改一个现有联系人的信息。
实现:modifyContact
函数
void modifyContact() { char name[20]; printf("输入要修改的联系人的姓名: "); scanf("%s", name); for (int i = 0; i < contactCount; i++) { if (strcmp(contacts[i].name, name) == 0) { printf("输入新的办公电话: "); scanf("%s", contacts[i].officePhone); printf("输入新的家庭电话: "); scanf("%s", contacts[i].homePhone); printf("输入新的移动电话: "); scanf("%s", contacts[i].mobilePhone); printf("输入新的性别: "); scanf("%s", contacts[i].gender); printf("输入新的分组: "); scanf("%s", contacts[i].group); return; } } printf("未找到联系人\n"); }
3.6 删除联系人
功能:删除一个联系人。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 手机 ” 获取。👈👈👈
实现:deleteContact
函数
void deleteContact() { char name[20]; > 👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 手机 ” 获取。👈👈👈 } contactCount--; return; } } printf("未找到联系人\n"); }
3.7 排序联系人
功能:按姓名排序联系人。
实现:sortContacts
函数
void sortContacts() { for (int i = 0; i < contactCount - 1; i++) { > 👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 手机 ” 获取。👈👈👈 } } } }
3.8 菜单显示及主函数
功能:显示菜单并处理用户输入。
实现:menu
和 main
函数
void menu() { printf("1. 按姓名查询\n"); printf("2. 按分组查询\n"); printf("3. 显示全部信息\n"); printf("4. 添加信息\n"); printf("5. 修改信息\n"); printf("6. 删除信息\n"); printf("7. 排序\n"); printf("8. 退出\n"); } int main() { loadContacts("通讯录.txt"); while (1) { // > 👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 手机 ” 获取。👈👈👈 case 5: modifyContact(); break; case 6: deleteContact(); break; case 7: sortContacts(); break; case 8: exit(0); default: printf("无效的选项\n"); } } return 0; }
该设计保证了手机通讯录系统能够有效地加载、存储和管理联系人信息,并通过菜单提供用户友好的操作界面。每个功能模块独立且易于维护和扩展,可以根据需要添加更多功能。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 手机 ” 获取。👈👈👈