鱼C论坛

 找回密码
 立即注册
查看: 1046|回复: 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 | 显示全部楼层
当然可以帮你写一个通讯录管理系统。首先,我们需要定义一个结构体来表示每一条通讯录信息:
#include<stdio.h>#include<string.h>#define MAX_SIZE 100 // 定义通讯录最大容量typedef struct {    char name[20];       // 姓名    char company[30];    // 单位    char telephone[20];  // 固定电话    char mobile[20];     // 移动手机    char category[10];   // 分类    char email[30];      // EMAIL    char qq[20];         // QQ} AddressBook;
接下来,我们可以定义一个存储通讯录信息的数组,并定义一个变量count来表示通讯录当前的数量:
AddressBook contacts[MAX_SIZE]; // 存储通讯录信息的数组int count = 0;  // 当前通讯录数量
接下来,我们可以实现输入功能。可以使用一个循环来多次输入通讯录信息,直到用户输入结束。在循环内部,我们可以通过strcpy函数来将用户输入的信息复制到对应的成员中,然后将count加1。
void input() {    char choice = 'y';    while (choice == 'y' || choice == 'Y') {        printf("请输入姓名:");        scanf("%s", contacts[count].name);        // 输入其他信息...                count++;  // 当前通讯录数量加1                printf("是否继续输入(Y/N)?");        scanf(" %c", &choice);  // 注意空格的作用,防止读取上一个字符    }    printf("输入完成!\n");}
接下来,我们可以实现显示功能。遍历通讯录数组,逐个打印出每一条通讯录信息。
void display() {    if (count == 0) {        printf("通讯录为空!\n");        return;    }        for (int i = 0; i < count; i++) {        printf("姓名:%s\n", contacts[i].name);        // 显示其他信息...    }}
接下来,我们可以实现查找功能。用户可以选择按照姓名或其他信息进行查找,我们可以通过比较字符串是否相等来判断是否找到匹配的结果。
void search() {    char keyword[20];        printf("请输入要查找的关键字:");    scanf("%s", keyword);        int found = 0;    for (int i = 0; i < count; i++) {        if (strcmp(contacts[i].name, keyword) == 0) {            printf("找到匹配的结果:\n");            printf("姓名:%s\n", contacts[i].name);            // 显示其他信息...            found = 1;        }    }        if (!found) {        printf("未找到匹配的结果!\n");    }}
接下来,我们可以实现添加功能。在添加功能中,我们可以直接在数组的末尾增加一条通讯录信息,然后将count加1。
void add() {    if (count >= MAX_SIZE) {        printf("通讯录已满,无法添加!\n");        return;    }        printf("请输入姓名:");    scanf("%s", contacts[count].name);    // 输入其他信息...        count++;  // 当前通讯录数量加1        printf("添加成功!\n");}
接下来,我们可以实现删除功能。删除功能需要先找到要删除的通讯录信息,然后将后面的所有信息往前移动一个位置,并将count减1。
void remove() {    char keyword[20];        printf("请输入要删除的关键字:");    scanf("%s", keyword);        int found = 0;    for (int i = 0; i < count; i++) {        if (strcmp(contacts[i].name, keyword) == 0) {            found = 1;            // 将后面的所有信息往前移动一个位置            for (int j = i; j < count - 1; j++) {                contacts[j] = contacts[j + 1];            }            count--;  // 当前通讯录数量减1            printf("删除成功!\n");            break;        }    }        if (!found) {        printf("未找到匹配的结果!\n");    }}
最后,我们可以实现修改功能。修改功能需要先找到要修改的通讯录信息,然后用户可以输入新的信息进行替换。
void modify() {    char keyword[20];        printf("请输入要修改的关键字:");    scanf("%s", keyword);        int found = 0;    for (int i = 0; i < count; i++) {        if (strcmp(contacts[i].name, keyword) == 0) {            found = 1;                        printf("请输入新的姓名:");            scanf("%s", contacts[i].name);            // 输入其他信息...                        printf("修改成功!\n");            break;        }    }        if (!found) {        printf("未找到匹配的结果!\n");    }}
以上就是一个简单的通讯录管理系统的实现。你可以根据自己的需求进一步完善其中的功能,增加错误处理等。希望对你有帮助!

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

使用道具 举报

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

使用道具 举报

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

对不起,我在给出代码的时候忘记添加主函数了。下面是包含主函数的完整代码:
#include <stdio.h>#include <string.h>#define MAX_SIZE 100typedef struct {    char name[20];       // 姓名    char company[50];    // 单位    char telephone[12];  // 固定电话    char mobile[12];     // 移动手机    char category[10];   // 分类    char email[50];      // EMAIL    char qq[15];         // QQ} AddressBook;AddressBook contacts[MAX_SIZE]; // 存储通讯录信息的数组int count = 0;  // 当前通讯录数量void input() {    char choice = 'y';    while (choice == 'y' || choice == 'Y') {        printf("请输入姓名:");        scanf("%s", contacts[count].name);        printf("请输入单位:");        scanf("%s", contacts[count].company);        printf("请输入固定电话:");        scanf("%s", contacts[count].telephone);        printf("请输入移动手机:");        scanf("%s", contacts[count].mobile);        printf("请输入分类:");        scanf("%s", contacts[count].category);        printf("请输入EMAIL:");        scanf("%s", contacts[count].email);        printf("请输入QQ:");        scanf("%s", contacts[count].qq);                count++;  // 当前通讯录数量加1                printf("是否继续输入(Y/N)?");        scanf(" %c", &choice);  // 注意空格的作用,防止读取上一个字符    }    printf("输入完成!\n");}void display() {    if (count == 0) {        printf("通讯录为空!\n");        return;    }        for (int i = 0; i < count; i++) {        printf("姓名:%s\n", contacts[i].name);        printf("单位:%s\n", contacts[i].company);        printf("固定电话:%s\n", contacts[i].telephone);        printf("移动手机:%s\n", contacts[i].mobile);        printf("分类:%s\n", contacts[i].category);        printf("EMAIL:%s\n", contacts[i].email);        printf("QQ:%s\n", contacts[i].qq);        printf("\n");    }}void search() {    char keyword[20];        printf("请输入要查找的关键字:");    scanf("%s", keyword);        int found = 0;    for (int i = 0; i < count; i++) {        if (strcmp(contacts[i].name, keyword) == 0) {            printf("找到匹配的结果:\n");            printf("姓名:%s\n", contacts[i].name);            printf("单位:%s\n", contacts[i].company);            printf("固定电话:%s\n", contacts[i].telephone);            printf("移动手机:%s\n", contacts[i].mobile);            printf("分类:%s\n", contacts[i].category);            printf("EMAIL:%s\n", contacts[i].email);            printf("QQ:%s\n", contacts[i].qq);            printf("\n");            found = 1;        }    }        if (!found) {        printf("未找到匹配的结果!\n");    }}void add() {    if (count >= MAX_SIZE) {        printf("通讯录已满,无法添加!\n");        return;    }        printf("请输入姓名:");    scanf("%s", contacts[count].name);    printf("请输入单位:");    scanf("%s", contacts[count].company);    printf("请输入固定电话:");    scanf("%s", contacts[count].telephone);    printf("请输入移动手机:");    scanf("%s", contacts[count].mobile);    printf("请输入分类:");    scanf("%s", contacts[count].category);    printf("请输入EMAIL:");    scanf("%s", contacts[count].email);    printf("请输入QQ:");    scanf("%s", contacts[count].qq);        count++;  // 当前通讯录数量加1        printf("添加成功!\n");}void remove() {    char keyword[20];        printf("请输入要删除的关键字:");    scanf("%s", keyword);        int found = 0;    for (int i = 0; i < count; i++) {        if (strcmp(contacts[i].name, keyword) == 0) {            found = 1;                        // 将后面的所有信息往前移动一个位置            for (int j = i; j < count - 1; j++) {                strcpy(contacts[j].name, contacts[j+1].name);                strcpy(contacts[j].company, contacts[j+1].company);                strcpy(contacts[j].telephone, contacts[j+1].telephone);                strcpy(contacts[j].mobile, contacts[j+1].mobile);                strcpy(contacts[j].category, contacts[j+1].category);                strcpy(contacts[j].email, contacts[j+1].email);                strcpy(contacts[j].qq, contacts[j+1].qq);            }                        count--;  // 当前通讯录数量减1                        printf("删除成功!\n");            break;        }    }        if (!found) {        printf("未找到匹配的结果!\n");    }}void modify() {    char keyword[20];        printf("请输入要修改的关键字:");    scanf("%s", keyword);        int found = 0;    for (int i = 0; i < count; i++) {        if (strcmp(contacts[i].name, keyword) == 0) {            found = 1;                        printf("请输入新的姓名:");            scanf("%s", contacts[i].name);            printf("请输入新的单位:");            scanf("%s", contacts[i].company);            printf("请输入新的固定电话:");            scanf("%s", contacts[i].telephone);            printf("请输入新的移动手机:");            scanf("%s", contacts[i].mobile);            printf("请输入新的分类:");            scanf("%s", contacts[i].category);            printf("请输入新的EMAIL:");            scanf("%s", contacts[i].email);            printf("请输入新的QQ:");            scanf("%s", contacts[i].qq);                        printf("修改成功!\n");            break;        }    }        if (!found) {        printf("未找到匹配的结果!\n");    }}int main() {    int choice;        while (1) {        printf("请选择操作:\n");        printf("1. 输入通讯录信息\n");        printf("2. 显示通讯录信息\n");        printf("3. 查找通讯录信息\n");        printf("4. 添加通讯录信息\n");        printf("5. 删除通讯录信息\n");        printf("6. 修改通讯录信息\n");        printf("0. 退出程序\n");        printf("请输入选择:");        scanf("%d", &choice);                switch(choice) {            case 1:                input();                break;            case 2:                display();                break;            case 3:                search();                break;            case 4:                add();                break;            case 5:                remove();                break;            case 6:                modify();                break;            case 0:                printf("程序已退出。\n");                return 0;            default:                printf("无效的选择,请重新输入!\n");                break;        }                printf("\n");    }}
该代码包含了主函数,可以实现通讯录管理系统的各种功能。你可以根据需要进行测试和使用。希望能对你有所帮助!

以上回复来自 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的值来进行相应的操作,比如输出提示信息,或者执行特定的逻辑。

下面是一个简单的示例代码:
numbers = [5, 2, 7, 9, 1, 3]target = 7Found = Falsefor num in numbers:    if num == target:        Found = True        breakif Found:    print("找到了目标值!")else:    print("未找到目标值!")
在这个例子中,我们通过遍历列表numbers来查找目标值target。当找到目标值时,将Found设置为True,并使用break语句提前结束循环。最后,根据Found的值输出对应的提示信息。

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

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-23 00:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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