通讯录管理系统设计1对人员信息(姓名,电话号码,e-mail地址,QQ号)录入(人员姓名可以相同,但同一人可以有多个电话号码)显示,保存,删除,修改,增加,查询(按姓名或者学号查询)退出系统。执行完一个具体功能后,程序将重新显示菜单。将通讯录信息保存到文件中。C语言代码加流程图(必须使用链表结构)

1个回答
展开全部
摘要 以下是使用C语言编写的通讯录管理系统代码示例:```c#include #include #include // 定义节点结构typedef struct Node { char name[20]; char phone[12]; char email[30]; char qq[15]; struct Node* next;} Node;// 全局变量,指向链表的头节点Node* head = NULL;// 函数声明void displayMenu();void addPerson();void displayAll();void saveToFile();void deletePerson();void modifyPerson();void searchByName();void searchByNumber();// 创建新节点Node* createNode() { Node* newNode = (Node*)mallo
咨询记录 · 回答于2023-07-05
通讯录管理系统设计1对人员信息(姓名,电话号码,e-mail地址,QQ号)录入(人员姓名可以相同,但同一人可以有多个电话号码)显示,保存,删除,修改,增加,查询(按姓名或者学号查询)退出系统。执行完一个具体功能后,程序将重新显示菜单。将通讯录信息保存到文件中。C语言代码加流程图(必须使用链表结构)
以下是使用C语言编写的通讯录管理系统代码示例:```c#include #include #include // 定义节点结构typedef struct Node { char name[20]; char phone[12]; char email[30]; char qq[15]; struct Node* next;} Node;// 全局变量,指向链表的头节点Node* head = NULL;// 函数声明void displayMenu();void addPerson();void displayAll();void saveToFile();void deletePerson();void modifyPerson();void searchByName();void searchByNumber();// 创建新节点Node* createNode() { Node* newNode = (Node*)mallo
#include #include #include // 定义节点结构typedef struct Node { char name[20]; char phone[12]; char email[30]; char qq[15]; struct Node* next;} Node;// 全局变量,指向链表的头节点Node* head = NULL;// 函数声明void displayMenu();void addPerson();void displayAll();void saveToFile();void deletePerson();void modifyPerson();void searchByName();void searchByNumber();
// 创建新节点Node* createNode() { Node* newNode = (Node*)malloc(sizeof(Node)); newNode->next = NULL; return newNode;}// 插入节点到链表末尾void insertAtEnd(Node* newNode) { if (head == NULL) { head = newNode; } else { Node* temp = head; while (temp->next != NULL) { temp = temp->next; } temp->next = newNode; }}// 显示菜单选项void displayMenu() { printf("********** 通讯录管理系统 **********\n"); printf("1. 录入人员信息\n"); printf("2.
// 创建新节点Node* createNode() { Node* newNode = (Node*)malloc(sizeof(Node)); newNode->next = NULL; return newNode;}// 插入节点到链表末尾void insertAtEnd(Node* newNode) { if (head == NULL) { head = newNode; } else { Node* temp = head; while (temp->next != NULL) { temp = temp->next; } temp->next = newNode; }}
// 显示菜单选项void displayMenu() { printf("********** 通讯录管理系统 **********\n"); printf("1. 录入人员信息\n"); printf("2. 显示所有人员信息\n"); printf("3. 保存通讯录信息到文件\n"); printf("4. 删除人员信息\n"); printf("5. 修改人员信息\n"); printf("6. 按姓名查询人员信息\n"); printf("7. 按电话号码查询人员信息\n"); printf("8. 退出系统\n"); printf("************************************\n");}
// 录入人员信息void addPerson() { printf("请输入姓名:"); char name[20]; scanf("%s", name); Node* newNode = createNode(); strcpy(newNode->name, name); printf("请输入电话号码:"); scanf("%s", newNode->phone); printf("请输入e-mail地址:"); scanf("%s", newNode->email); printf("请输入QQ号码:"); scanf("%s", newNode->qq); insertAtEnd(newNode); printf("人员信息录入成功!\n");}
// 显示所有人员信息void displayAll() { if (head == NULL) { printf("通讯录为空!\n"); } else { Node* temp = head; printf("姓名\t电话号码\te-mail地址\tQQ号码\n"); while (temp != NULL) { printf("%s\t%s\t%s\t%s\n", temp->name, temp->phone, temp->email, temp->qq); temp = temp->next; } }}
// 保存通讯录信息到文件void saveToFile() { if (head == NULL) { printf("通讯录为空!\n"); } else { FILE* file = fopen("contacts.txt", "w"); Node* temp = head; while (temp != NULL) { fprintf(file, "%s %s %s %s\n", temp->name, temp->phone, temp->email, temp->qq); temp = temp->next; } fclose(file); printf("通讯录信息保存成功!\n"); }}
// 删除人员信息void deletePerson() { if (head == NULL) { printf("通讯录为空!\n"); return; } printf("请输入要删除的人员姓名:"); char name[20]; scanf("%s", name); Node* prev = NULL; Node* curr = head; while (curr != NULL) { if (strcmp(curr->name, name) == 0) { if (prev == NULL) { // 删除头节点 head = curr->next; } else { prev->next = curr->next; } free(curr); p
字数超限制了,最后一行p指的是printf函数
printf("人员信息删除成功!\n"); return; } prev = curr; curr = curr->next; } printf("未找到该人员信息!\n");}
以下两个信息在同一个函数体里
// 修改人员信息void modifyPerson() { if (head == NULL) { printf("通讯录为空!\n"); return; } printf("请输入要修改的人员姓名:"); char name[20]; scanf("%s", name); Node* curr = head; while (curr != NULL) { if (strcmp(curr->name, name) == 0) { printf("请输入新的电话号码:"); scanf("%s", curr->phone);
printf("请输入新的e-mail地址:"); scanf("%s", curr->email); printf("请输入新的QQ号码:"); scanf("%s", curr->qq); printf("人员信息修改成功!\n"); return; } curr = curr->next; } printf("未找到该人员信息!\n");}
// 按姓名查询人员信息void searchByName() { if (head == NULL) { printf("通讯录为空!\n"); return; } printf("请输入要查询的人员姓名:"); char name[20]; scanf("%s", name); Node* curr = head; while (curr != NULL) { if (strcmp(curr->name, name) == 0) { printf("姓名\t电话号码\te-mail地址\tQQ号码\n"); printf("%s\t%s\t%s\t%s\n", curr->name, curr->phone, curr->email, curr->qq); return; } curr = curr->next; } printf("未找到该人员信息!\n
上面的printf函数显示不全,少了右双引号跟有括号跟分号以及右大括号
// 按电话号码查询人员信息void searchByNumber() { if (head == NULL) { printf("通讯录为空!\n"); return; } printf("请输入要查询的人员电话号码:"); char phone[12]; scanf("%s", phone); Node* curr = head; while (curr != NULL) { if (strcmp(curr->phone, phone) == 0) { printf("姓名\t电话号码\te-mail地址\tQQ号码\n"); printf("%s\t%s\t%s\t%s\n", curr->name, curr->phone, curr->email, curr->qq); return; } curr = curr->next; }
printf("未找到该人员信息!\n");}
// 主函数int main() { int choice; do { displayMenu(); printf("请输入你的选择:"); scanf("%d", &choice); switch (choice) { case 1: addPerson(); break; case 2: displayAll(); break; case 3: saveToFile(); break; case 4: deletePerson(); break; case 5: modifyPerson();
break; case 6: searchByName(); break; case 7: searchByNumber(); break; case 8: printf("感谢使用通讯录管理系统!\n"); break; default: printf("无效的选择!\n"); break; } } while (choice != 8);
// 释放链表内存 Node* temp; while (head != NULL) { temp = head; head = head->next; free(temp); } return 0;}
以下是该通讯录管理系统的流程图:
``+------------+| 开始 |+------------+ | V+----------------------+| 显示菜单选项 |+----------------------+ | V+-------------------------+| 根据用户选择执行相应操作 |+-------------------------+ | V+----------------------------+| 执行完一个具体功能后重新显示菜单 |+----------------------------+ | V+--------------+| 退出系统 |+--------------+ | V+-------------+| 结束 |+-------------+```
这个菜单没有增加功能
好了吗
addPerson函数
菜单里第一个就是增加功能
这个代码运行不了
好的
发了吗
发了
有点延迟
在哪里看
私信
百度网盘下载下来就可以
应该没哈问题哈
下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消