鱼C论坛

 找回密码
 立即注册
查看: 574|回复: 8

求助

[复制链接]
发表于 2023-12-18 21:32:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
@FishC
用c语言写一个个人通讯录管理系统
建立一个通讯录,输入姓名、电话号码、住址等信息,然后对通信簿进行显示、查找、添加、修改及删除。
功能要求
(1) 通讯录的每一条信息包括姓名、单位、固定电话、移动手机、分类(如同事、朋友、同学、家人等)、EMAIL、QQ等。
(2) 输入功能:可以一次完成若干条信息的输入。
(3) 显示功能:完成全部通讯录信息的显示
(4) 查找功能:可以按姓名等多种方式查找通讯信息
(5) 增加、删除、修改功能:完成通讯录信息的多种更新
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-18 21:33:41 | 显示全部楼层
当然可以帮你写一个通讯录管理系统。首先,我们需要定义一个结构体来表示每一条通讯录信息:
  1. #include<stdio.h>
  2. #include<string.h>
  3. #define MAX_SIZE 100 // 定义通讯录最大容量
  4. typedef struct {
  5.     char name[20];       // 姓名
  6.     char company[30];    // 单位
  7.     char telephone[20];  // 固定电话
  8.     char mobile[20];     // 移动手机
  9.     char category[10];   // 分类
  10.     char email[30];      // EMAIL
  11.     char qq[20];         // QQ
  12. } AddressBook;
复制代码

接下来,我们可以定义一个存储通讯录信息的数组,并定义一个变量count来表示通讯录当前的数量:
  1. AddressBook contacts[MAX_SIZE]; // 存储通讯录信息的数组
  2. int count = 0;  // 当前通讯录数量
复制代码

接下来,我们可以实现输入功能。可以使用一个循环来多次输入通讯录信息,直到用户输入结束。在循环内部,我们可以通过strcpy函数来将用户输入的信息复制到对应的成员中,然后将count加1。
  1. void input() {
  2.     char choice = 'y';
  3.     while (choice == 'y' || choice == 'Y') {
  4.         printf("请输入姓名:");
  5.         scanf("%s", contacts[count].name);
  6.         // 输入其他信息...
  7.         
  8.         count++;  // 当前通讯录数量加1
  9.         
  10.         printf("是否继续输入(Y/N)?");
  11.         scanf(" %c", &choice);  // 注意空格的作用,防止读取上一个字符
  12.     }
  13.     printf("输入完成!\n");
  14. }
复制代码

接下来,我们可以实现显示功能。遍历通讯录数组,逐个打印出每一条通讯录信息。
  1. void display() {
  2.     if (count == 0) {
  3.         printf("通讯录为空!\n");
  4.         return;
  5.     }
  6.    
  7.     for (int i = 0; i < count; i++) {
  8.         printf("姓名:%s\n", contacts[i].name);
  9.         // 显示其他信息...
  10.     }
  11. }
复制代码

接下来,我们可以实现查找功能。用户可以选择按照姓名或其他信息进行查找,我们可以通过比较字符串是否相等来判断是否找到匹配的结果。
  1. void search() {
  2.     char keyword[20];
  3.    
  4.     printf("请输入要查找的关键字:");
  5.     scanf("%s", keyword);
  6.    
  7.     int found = 0;
  8.     for (int i = 0; i < count; i++) {
  9.         if (strcmp(contacts[i].name, keyword) == 0) {
  10.             printf("找到匹配的结果:\n");
  11.             printf("姓名:%s\n", contacts[i].name);
  12.             // 显示其他信息...
  13.             found = 1;
  14.         }
  15.     }
  16.    
  17.     if (!found) {
  18.         printf("未找到匹配的结果!\n");
  19.     }
  20. }
复制代码

接下来,我们可以实现添加功能。在添加功能中,我们可以直接在数组的末尾增加一条通讯录信息,然后将count加1。
  1. void add() {
  2.     if (count >= MAX_SIZE) {
  3.         printf("通讯录已满,无法添加!\n");
  4.         return;
  5.     }
  6.    
  7.     printf("请输入姓名:");
  8.     scanf("%s", contacts[count].name);
  9.     // 输入其他信息...
  10.    
  11.     count++;  // 当前通讯录数量加1
  12.    
  13.     printf("添加成功!\n");
  14. }
复制代码

接下来,我们可以实现删除功能。删除功能需要先找到要删除的通讯录信息,然后将后面的所有信息往前移动一个位置,并将count减1。
  1. void remove() {
  2.     char keyword[20];
  3.    
  4.     printf("请输入要删除的关键字:");
  5.     scanf("%s", keyword);
  6.    
  7.     int found = 0;
  8.     for (int i = 0; i < count; i++) {
  9.         if (strcmp(contacts[i].name, keyword) == 0) {
  10.             found = 1;
  11.             // 将后面的所有信息往前移动一个位置
  12.             for (int j = i; j < count - 1; j++) {
  13.                 contacts[j] = contacts[j + 1];
  14.             }
  15.             count--;  // 当前通讯录数量减1
  16.             printf("删除成功!\n");
  17.             break;
  18.         }
  19.     }
  20.    
  21.     if (!found) {
  22.         printf("未找到匹配的结果!\n");
  23.     }
  24. }
复制代码

最后,我们可以实现修改功能。修改功能需要先找到要修改的通讯录信息,然后用户可以输入新的信息进行替换。
  1. void modify() {
  2.     char keyword[20];
  3.    
  4.     printf("请输入要修改的关键字:");
  5.     scanf("%s", keyword);
  6.    
  7.     int found = 0;
  8.     for (int i = 0; i < count; i++) {
  9.         if (strcmp(contacts[i].name, keyword) == 0) {
  10.             found = 1;
  11.             
  12.             printf("请输入新的姓名:");
  13.             scanf("%s", contacts[i].name);
  14.             // 输入其他信息...
  15.             
  16.             printf("修改成功!\n");
  17.             break;
  18.         }
  19.     }
  20.    
  21.     if (!found) {
  22.         printf("未找到匹配的结果!\n");
  23.     }
  24. }
复制代码

以上就是一个简单的通讯录管理系统的实现。你可以根据自己的需求进一步完善其中的功能,增加错误处理等。希望对你有帮助!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-12-18 21:50:21 | 显示全部楼层
这段代码没有定义主函数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-18 21:50:45 | 显示全部楼层
coder20020723 发表于 2023-12-18 21:50
这段代码没有定义主函数

对不起,我在给出代码的时候忘记添加主函数了。下面是包含主函数的完整代码:
  1. #include <stdio.h>
  2. #include <string.h>
  3. #define MAX_SIZE 100
  4. typedef struct {
  5.     char name[20];       // 姓名
  6.     char company[50];    // 单位
  7.     char telephone[12];  // 固定电话
  8.     char mobile[12];     // 移动手机
  9.     char category[10];   // 分类
  10.     char email[50];      // EMAIL
  11.     char qq[15];         // QQ
  12. } AddressBook;
  13. AddressBook contacts[MAX_SIZE]; // 存储通讯录信息的数组
  14. int count = 0;  // 当前通讯录数量
  15. void input() {
  16.     char choice = 'y';
  17.     while (choice == 'y' || choice == 'Y') {
  18.         printf("请输入姓名:");
  19.         scanf("%s", contacts[count].name);
  20.         printf("请输入单位:");
  21.         scanf("%s", contacts[count].company);
  22.         printf("请输入固定电话:");
  23.         scanf("%s", contacts[count].telephone);
  24.         printf("请输入移动手机:");
  25.         scanf("%s", contacts[count].mobile);
  26.         printf("请输入分类:");
  27.         scanf("%s", contacts[count].category);
  28.         printf("请输入EMAIL:");
  29.         scanf("%s", contacts[count].email);
  30.         printf("请输入QQ:");
  31.         scanf("%s", contacts[count].qq);
  32.         
  33.         count++;  // 当前通讯录数量加1
  34.         
  35.         printf("是否继续输入(Y/N)?");
  36.         scanf(" %c", &choice);  // 注意空格的作用,防止读取上一个字符
  37.     }
  38.     printf("输入完成!\n");
  39. }
  40. void display() {
  41.     if (count == 0) {
  42.         printf("通讯录为空!\n");
  43.         return;
  44.     }
  45.    
  46.     for (int i = 0; i < count; i++) {
  47.         printf("姓名:%s\n", contacts[i].name);
  48.         printf("单位:%s\n", contacts[i].company);
  49.         printf("固定电话:%s\n", contacts[i].telephone);
  50.         printf("移动手机:%s\n", contacts[i].mobile);
  51.         printf("分类:%s\n", contacts[i].category);
  52.         printf("EMAIL:%s\n", contacts[i].email);
  53.         printf("QQ:%s\n", contacts[i].qq);
  54.         printf("\n");
  55.     }
  56. }
  57. void search() {
  58.     char keyword[20];
  59.    
  60.     printf("请输入要查找的关键字:");
  61.     scanf("%s", keyword);
  62.    
  63.     int found = 0;
  64.     for (int i = 0; i < count; i++) {
  65.         if (strcmp(contacts[i].name, keyword) == 0) {
  66.             printf("找到匹配的结果:\n");
  67.             printf("姓名:%s\n", contacts[i].name);
  68.             printf("单位:%s\n", contacts[i].company);
  69.             printf("固定电话:%s\n", contacts[i].telephone);
  70.             printf("移动手机:%s\n", contacts[i].mobile);
  71.             printf("分类:%s\n", contacts[i].category);
  72.             printf("EMAIL:%s\n", contacts[i].email);
  73.             printf("QQ:%s\n", contacts[i].qq);
  74.             printf("\n");
  75.             found = 1;
  76.         }
  77.     }
  78.    
  79.     if (!found) {
  80.         printf("未找到匹配的结果!\n");
  81.     }
  82. }
  83. void add() {
  84.     if (count >= MAX_SIZE) {
  85.         printf("通讯录已满,无法添加!\n");
  86.         return;
  87.     }
  88.    
  89.     printf("请输入姓名:");
  90.     scanf("%s", contacts[count].name);
  91.     printf("请输入单位:");
  92.     scanf("%s", contacts[count].company);
  93.     printf("请输入固定电话:");
  94.     scanf("%s", contacts[count].telephone);
  95.     printf("请输入移动手机:");
  96.     scanf("%s", contacts[count].mobile);
  97.     printf("请输入分类:");
  98.     scanf("%s", contacts[count].category);
  99.     printf("请输入EMAIL:");
  100.     scanf("%s", contacts[count].email);
  101.     printf("请输入QQ:");
  102.     scanf("%s", contacts[count].qq);
  103.    
  104.     count++;  // 当前通讯录数量加1
  105.    
  106.     printf("添加成功!\n");
  107. }
  108. void remove() {
  109.     char keyword[20];
  110.    
  111.     printf("请输入要删除的关键字:");
  112.     scanf("%s", keyword);
  113.    
  114.     int found = 0;
  115.     for (int i = 0; i < count; i++) {
  116.         if (strcmp(contacts[i].name, keyword) == 0) {
  117.             found = 1;
  118.             
  119.             // 将后面的所有信息往前移动一个位置
  120.             for (int j = i; j < count - 1; j++) {
  121.                 strcpy(contacts[j].name, contacts[j+1].name);
  122.                 strcpy(contacts[j].company, contacts[j+1].company);
  123.                 strcpy(contacts[j].telephone, contacts[j+1].telephone);
  124.                 strcpy(contacts[j].mobile, contacts[j+1].mobile);
  125.                 strcpy(contacts[j].category, contacts[j+1].category);
  126.                 strcpy(contacts[j].email, contacts[j+1].email);
  127.                 strcpy(contacts[j].qq, contacts[j+1].qq);
  128.             }
  129.             
  130.             count--;  // 当前通讯录数量减1
  131.             
  132.             printf("删除成功!\n");
  133.             break;
  134.         }
  135.     }
  136.    
  137.     if (!found) {
  138.         printf("未找到匹配的结果!\n");
  139.     }
  140. }
  141. void modify() {
  142.     char keyword[20];
  143.    
  144.     printf("请输入要修改的关键字:");
  145.     scanf("%s", keyword);
  146.    
  147.     int found = 0;
  148.     for (int i = 0; i < count; i++) {
  149.         if (strcmp(contacts[i].name, keyword) == 0) {
  150.             found = 1;
  151.             
  152.             printf("请输入新的姓名:");
  153.             scanf("%s", contacts[i].name);
  154.             printf("请输入新的单位:");
  155.             scanf("%s", contacts[i].company);
  156.             printf("请输入新的固定电话:");
  157.             scanf("%s", contacts[i].telephone);
  158.             printf("请输入新的移动手机:");
  159.             scanf("%s", contacts[i].mobile);
  160.             printf("请输入新的分类:");
  161.             scanf("%s", contacts[i].category);
  162.             printf("请输入新的EMAIL:");
  163.             scanf("%s", contacts[i].email);
  164.             printf("请输入新的QQ:");
  165.             scanf("%s", contacts[i].qq);
  166.             
  167.             printf("修改成功!\n");
  168.             break;
  169.         }
  170.     }
  171.    
  172.     if (!found) {
  173.         printf("未找到匹配的结果!\n");
  174.     }
  175. }
  176. int main() {
  177.     int choice;
  178.    
  179.     while (1) {
  180.         printf("请选择操作:\n");
  181.         printf("1. 输入通讯录信息\n");
  182.         printf("2. 显示通讯录信息\n");
  183.         printf("3. 查找通讯录信息\n");
  184.         printf("4. 添加通讯录信息\n");
  185.         printf("5. 删除通讯录信息\n");
  186.         printf("6. 修改通讯录信息\n");
  187.         printf("0. 退出程序\n");
  188.         printf("请输入选择:");
  189.         scanf("%d", &choice);
  190.         
  191.         switch(choice) {
  192.             case 1:
  193.                 input();
  194.                 break;
  195.             case 2:
  196.                 display();
  197.                 break;
  198.             case 3:
  199.                 search();
  200.                 break;
  201.             case 4:
  202.                 add();
  203.                 break;
  204.             case 5:
  205.                 remove();
  206.                 break;
  207.             case 6:
  208.                 modify();
  209.                 break;
  210.             case 0:
  211.                 printf("程序已退出。\n");
  212.                 return 0;
  213.             default:
  214.                 printf("无效的选择,请重新输入!\n");
  215.                 break;
  216.         }
  217.         
  218.         printf("\n");
  219.     }
  220. }
复制代码

该代码包含了主函数,可以实现通讯录管理系统的各种功能。你可以根据需要进行测试和使用。希望能对你有所帮助!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-18 23:00:13 | 显示全部楼层
本帖最后由 高级程序猿 于 2023-12-18 23:02 编辑

1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-18 23:00:28 | 显示全部楼层
高级程序猿 发表于 2023-12-18 23:00
@FishC
各位学委,大家好,关于心理健康教育课程作业 ...

嗨,同学们!听说你们有一个关于个人成长的作业,我来给你们一些提示吧。

首先,题目是可以自己选的,所以要挑一个和你个人成长有关的话题。比如说,你可以选择回顾你的学习历程、感受家庭的变化、或者是探讨你在某个重要事件中的成长经历。

在写报告的时候,要注重内省,也就是从内心深处去体验和分析。例如,你可以描述你在某个阶段的心理状态、遇到的困扰和困难,以及你是如何逐渐克服它们的。记住,不要只是简单罗列事实,而是要展示你的思考和感受。

另外,要注意的是不要进行价值判断。这意味着不要去评论或评价你的家人、教育方式或其他人。你的报告应该关注于自己的成长和反思,通过了解自己来提出自我完善的方案。

在写作格式上,记得按照老师要求的字数、字体和格式来进行排版。标题要用黑体三号字,正文要用宋体小四号字,行间距设置为1.25倍。尽量使用电子word版,最后在文末标注清楚年级、专业、班级、姓名和学号,并且将文件名命名为“姓名学号+成长报告”。

最后,记得要保护隐私,不要将他人的信息私传给别人。尊重别人也是尊重自己,这一点很重要。

希望我的回答对你有帮助,祝你顺利完成作业!如果还有其他问题,随时来问我哦!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-18 23:01:42 | 显示全部楼层
高级程序猿 发表于 2023-12-18 23:00
@FishC
各位学委,大家好,关于心理健康教育课程作业,辛苦大家通知本班同学们。
个人成长报告(15%)

?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-12-19 20:17:45 | 显示全部楼层
这段代码中整型Found的作用是什么?@FishC
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-19 20:17:56 | 显示全部楼层
coder20020723 发表于 2023-12-19 20:17
这段代码中整型Found的作用是什么?@FishC

嗨!感谢你的提问。

在你提到的代码中,整型变量Found的作用是用来表示是否找到了目标值。通常,在需要确定某个条件是否满足时,我们会使用一个变量来表示这个条件的状态。如果条件满足,则将这个变量设置为True(或1),否则设置为False(或0)。

在代码中,Found的值初始设置为False,表示没有找到目标值。当找到目标值时,将Found设置为True,以表明已经找到了。这样,代码可以根据Found的值来进行相应的操作,比如输出提示信息,或者执行特定的逻辑。

下面是一个简单的示例代码:
  1. numbers = [5, 2, 7, 9, 1, 3]
  2. target = 7
  3. Found = False
  4. for num in numbers:
  5.     if num == target:
  6.         Found = True
  7.         break
  8. if Found:
  9.     print("找到了目标值!")
  10. else:
  11.     print("未找到目标值!")
复制代码

在这个例子中,我们通过遍历列表numbers来查找目标值target。当找到目标值时,将Found设置为True,并使用break语句提前结束循环。最后,根据Found的值输出对应的提示信息。

希望这个解答能帮到你!如有任何问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-20 13:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表