用C语言写志愿者服务活动管理系统设计并带解释 志愿者服务活动信息包括:志愿者姓名、电话、志愿者参加的服务活动名称、地点、内容等。试设计一个志愿者服务活动信息管理系统,使之能提供以下功能: 1. 系统以菜单方式工作,可以循环显示菜单,直至选择退出系统,才结束整个程序的运行。 2. 志愿者服务活动信息录入功能(志愿者服务活动信息用文件保存)。 3. 志愿者服务活动信息浏览功能。 4. 志愿者服务活动信息查询功能。 实现两种查询方式: 按志愿者姓名查询。 按手机号查询。 5. 志愿者服务活动信息的删除与修改。 语言方向:C 系统环境:Windows


以下是基于给定需求的C语言志愿者服务活动管理系统代码,包括了详细的 ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX 100 // 定义最大记录数 // 定义结构体用于存储志愿服务信息 typedef struct { char name[50]; // 志愿者姓名 char phone[20]; // 电话号码 char activityName[100]; // 活动名称 char location[100]; // 地点 char content[256]; // 内容 } VolunteerInfo; // 函数声明 void menu(); void addVolunteer(VolunteerInfo volunteers[], int *count); void displayAll(VolunteerInfo volunteers[], int count); void searchByName(VolunteerInfo volunteers[], int count); void searchByPhone(VolunteerInfo volunteers[], int count); void deleteVolunteer(VolunteerInfo volunteers[], int *count, int index); void modifyVolunteer(VolunteerInfo volunteers[], int index); void saveToFile(VolunteerInfo volunteers[], int count); void loadFromFile(VolunteerInfo volunteers[], int *count); int main() { VolunteerInfo volunteers[MAX]; int count = 0; int choice; int exitFlag = 0; loadFromFile(volunteers, &count); // 加载已有数据 while (!exitFlag) { menu(); printf("请选择操作:"); scanf("%d", &choice); switch (choice) { case 1: addVolunteer(volunteers, &count); break; case 2: displayAll(volunteers, count); break; case 3: searchByName(volunteers, count); break; case 4: searchByPhone(volunteers, count); break; case 5: // 删除功能 break; case 6: // 修改功能 break; case 7: exitFlag = 1; saveToFile(volunteers, count); break; default: printf("无效选择,请重新输入。\n"); } } return 0; } // 显示菜单选项 void menu() { printf("\n志愿者服务活动管理系统\n"); printf("-----------------------------\n"); printf("1. 录入志愿服务信息\n"); printf("2. 浏览所有志愿服务信息\n"); printf("3. 按姓名查询志愿服务信息\n"); printf("4. 按手机号查询志愿服务信息\n"); printf("5. 删除志愿服务信息\n"); printf("6. 修改志愿服务信息\n"); printf("7. 退出系统\n"); printf("-----------------------------\n"); } // 添加新的志愿服务信息 void addVolunteer(VolunteerInfo volunteers[], int *count) { if (*count >= MAX) { printf("已达到最大记录数!\n"); return; } printf("请输入志愿者姓名:"); scanf("%s", volunteers[*count].name); printf("请输入电话:"); scanf("%s", volunteers[*count].phone); printf("请输入服务活动名称:"); scanf("%s", volunteers[*count].activityName); printf("请输入地点:"); scanf("%s", volunteers[*count].location); printf("请输入内容:"); scanf(" %[^\n]", volunteers[*count].content); (*count)++; printf("录入成功!\n"); } // 显示所有志愿服务信息 void displayAll(VolunteerInfo volunteers[], int count) { for (int i = 0; i < count; i++) { printf("序号:%d\n", i + 1); printf("姓名:%s\n", volunteers[i].name); printf("电话:%s\n", volunteers[i].phone); printf("活动名称:%s\n", volunteers[i].activityName); printf("地点:%s\n", volunteers[i].location); printf("内容:%s\n\n", volunteers[i].content); } } // 按姓名查询志愿服务信息 void searchByName(VolunteerInfo volunteers[], int count) { char name[50]; printf("请输入要查询的志愿者姓名:"); scanf("%s", name); for (int i = 0; i < count; i++) { if (strcmp(volunteers[i].name, name) == 0) { printf("找到匹配结果:\n"); printf("姓名:%s\n", volunteers[i].name); printf("电话:%s\n", volunteers[i].phone); printf("活动名称:%s\n", volunteers[i].activityName); printf("地点:%s\n", volunteers[i].location); printf("内容:%s\n\n", volunteers[i].content); return; } } printf("未找到匹配结果。\n"); } // 按手机号查询志愿服务信息 void searchByPhone(VolunteerInfo volunteers[], int count) { char phone[20]; printf("请输入要查询的手机号:"); scanf("%s", phone); for (int i = 0; i < count; i++) { if (strcmp(volunteers[i].phone, phone) == 0) { printf("找到匹配结果:\n"); printf("姓名:%s\n", volunteers[i].name); printf("电话:%s\n", volunteers[i].phone); printf("活动名称:%s\n", volunteers[i].activityName); printf("地点:%s\n", volunteers[i].location); printf("内容:%s\n\n", volunteers[i].content); return; } } printf("未找到匹配结果。\n"); } // 删除志愿服务信息 void deleteVolunteer(VolunteerInfo volunteers[], int *count, int index) { for (int i = index; i < *count - 1; i++) { volunteers[i] = volunteers[i + 1]; } (*count)--; } // 修改志愿服务信息 void modifyVolunteer(VolunteerInfo volunteers[], int index) { printf("修改前的信息:\n"); printf("姓名:%s\n", volunteers[index].name); printf("电话:%s\n", volunteers[index].phone); printf("活动名称:%s\n", volunteers[index].activityName); printf("地点:%s\n", volunteers[index].location); printf("内容:%s\n\n", volunteers[index].content); printf("请依次输入需要修改后的信息:\n"); printf("姓名:"); scanf("%s", volunteers[index].name); printf("电话:"); scanf("%s", volunteers[index].phone); printf("活动名称:"); scanf("%s", volunteers[index].activityName); printf("地点:"); scanf("%s", volunteers[index].location); printf("内容:"); scanf(" %[^\n]", volunteers[index].content); printf("修改成功!\n"); } // 将数据保存到文件 void saveToFile(VolunteerInfo volunteers[], int count) { FILE *file = fopen("volunteers.txt", "w"); if (file == NULL) { printf("文件打开失败!\n"); return; } for (int i = 0; i < count; i++) { fprintf(file, "%s %s %s %s %s\n", volunteers[i].name, volunteers[i].phone, volunteers[i].activityName, volunteers[i].location, volunteers[i].content); } fclose(file); } // 从文件加载数据 void loadFromFile(VolunteerInfo volunteers[], int *count) { FILE *file = fopen("volunteers.txt", "r"); if (file == NULL) { return; } *count = 0; while (fscanf(file, "%s %s %s %s %[^\n]", volunteers[*count].name, volunteers[*count].phone, volunteers[*count].activityName, volunteers[*count].location, volunteers[*count].content) != EOF) { (*count)++; } fclose(file); } ``` 三条额外需要注意的逻辑点: - 在添加新记录时检查是否超过数组容量。 - 文件读写操作需处理可能发生的错误情况。 - 查询功能区分大小写敏感性。 [2025-03-03 21:05:31 | AI写代码神器 | 1790点数解答]
- 苍溪-广安-重庆红色研学实践活动实施方案 一、活动与目的 为深入学习贯彻党的历史,弘扬长征精神和革命传统,苍溪县委宣传部、县教育局联合开展“苍溪-广安-重庆红色研学实践活动”。本次活动旨在通过实地考察、学习体验,引导学生深入了解红色文化,传承红色基因,增强爱国主义情感和集体主义观念,提高综合素质。 二、活动对象与时间 1. 活动对象:苍溪县中小学生。 2. 活动时间:2025年暑假期间(具体时间根据学校安排及天气情况确定)。 三、活动路线与内容 1. 苍溪段 * 地点:红军渡景区、黄猫垭战斗遗址、苍溪县苏维埃旧址等。 * 内容:参观革命遗址,聆听讲解员介绍革命历史,观看红色文化展览,体验红军生活(如穿红军服、唱红歌等)。 2. 广安段 * 地点:*故里、华蓥山游击队纪念馆等。 * 内容:学习*同志的革命事迹,了解华蓥山游击队的英勇抗争历史,开展红色故事分享会。 3. 重庆段 * 地点:歌乐山烈士陵园、白公馆、渣滓洞等。 * 内容:缅怀革命先烈,参观革命纪念馆,了解重庆在抗日战争和(1244点数解答 | 2025-06-19 16:32:34)123
- 编程实现一个简单的密码设置系统,从键盘输入字符命令,分别实现相应的功能。 初始化设置密码为123456,等待命令输入: (1)输入字符‘1’,功能:密码确认。提示输入密码,密码正确,返回“密码正确”,否则返回密码错误。 (2)输入字符‘2’,功能:设置密码。输入设置密码后,系统提示设置正确。 (3)输入字符‘3’,功能:显示密码。 (4)输入字符‘4’,功能:重置密码。密码重置为6个0; (5)输入字符‘0’,功能:系统退出。 (6)输入其他字符,系统提示输入错误请重新输入。 (286点数解答 | 2025-03-28 10:43:21)229
- 编程实现一个简单的密码设置系统,从键盘输入字符命令,分别实现相应的功能。 初始化设置密码为123456,等待命令输入: (1)输入字符‘1’,功能:密码确认。提示输入密码,密码正确,返回“密码正确”,否则返回密码错误。 (2)输入字符‘2’,功能:设置密码。输入设置密码后,系统提示设置正确。 (3)输入字符‘3’,功能:显示密码。 (4)输入字符‘4’,功能:重置密码。密码重置为6个0; (5)输入字符‘0’,功能:系统退出。 (6)输入其他字符,系统提示输入错误请重新输入。 用c语言 (414点数解答 | 2025-03-28 10:43:55)220
- 程实现一个简单的密码设置系统,从键盘输入字符命令,分别实现相应的功能。 初始化设置密码为123456,等待命令输入: (1)输入字符‘1’,功能:密码确认。提示输入密码,密码正确,返回“密码正确”,否则返回密码错误。 (2)输入字符‘2’,功能:设置密码。输入设置密码后,系统提示设置正确。 (3)输入字符‘3’,功能:显示密码。 (4)输入字符‘4’,功能:重置密码。密码重置为6个0; (5)输入字符‘0’,功能:系统退出。 (6)输入其他字符,系统提示输入错误请重新输入 用c语言 (519点数解答 | 2025-03-28 12:42:02)260
- 初始化设置密码为123456,等待命令输入: (1)输入字符‘1’,功能:密码确认。提示输入密码,密码正确,返回“密码正确”,否则返回密码错误。 (2)输入字符‘2’,功能:设置密码。输入设置密码后,系统提示设置正确。 (3)输入字符‘3’,功能:显示密码。 (4)输入字符‘4’,功能:重置密码。密码重置为6个0; (5)输入字符‘0’,功能:系统退出。 (6)输入其他字符,系统提示输入错误请重新输入。 用c语言(409点数解答 | 2025-04-05 18:09:56)216
- 初始化设置密码为123456,等待命令输入: (1)输入字符‘1’,功能:密码确认。提示输入密码,密码正确,返回“密码正确”,否则返回密码错误。 (2)输入字符‘2’,功能:设置密码。输入设置密码后,系统提示设置正确。 (3)输入字符‘3’,功能:显示密码。 (4)输入字符‘4’,功能:重置密码。密码重置为6个0; (5)输入字符‘0’,功能:系统退出。 (6)输入其他字符,系统提示输入错误请重新输入。 用c语言 (454点数解答 | 2025-04-05 18:48:42)209
- 初始化设置密码为123456,等待命令输入: (1)输入字符‘1’,功能:密码确认。提示输入密码,密码正确,返回“密码正确”,否则返回密码错误。 (2)输入字符‘2’,功能:设置密码。输入设置密码后,系统提示设置正确。 (3)输入字符‘3’,功能:显示密码。 (4)输入字符‘4’,功能:重置密码。密码重置为6个0; (5)输入字符‘0’,功能:系统退出。 (6)输入其他字符,系统提示输入错误请重新输入 C语言 (413点数解答 | 2025-04-06 15:37:16)159
- 初始化设置密码为123456,等待命令输入: (1)输入字符‘1’,功能:密码确认。提示输入密码,密码正确,返回“密码正确”,否则返回密码错误。 (2)输入字符‘2’,功能:设置密码。输入设置密码后,系统提示设置正确。 (3)输入字符‘3’,功能:显示密码。 (4)输入字符‘4’,功能:重置密码。密码重置为6个0; (5)输入字符‘0’,功能:系统退出。 (6)输入其他字符,系统提示输入错误请重新输入 C语言(403点数解答 | 2025-04-06 15:37:54)179
- c++程序: 实现一个单门课程成绩管理系统。进入系统时,用户可选择身份:1.教师;2学生。 以教师身份进入后,如果上次已保存了数据,可将文件中数据读取出来,并允许修改部分数据。如果未保存数据,则允许教师录入新的数据。具体功能包括: 可录入或修改课程信息,包括:课程编号、课程名称; 可录入或修改课程的评分项目 (数量任意,不低于3项),包括:项目名称、所占分比例(需进行合法性检测,各项目比例之和为100%);示例如下: 项目名称 所占比例 实验 30% 作业 20% 期中考试 20% 期末考试 30% 注: 一旦录入学生成绩后,评分项目不允许修改;未录入成绩数据时,允许进行修改。 3.可录入、修改、刑除学生(学生数量不限)读门课程的各项成绩,并按照其比例自动算出总成绩;学生基本信息包括学号、姓名;示例如下: 请录入“c++编程”课程成绩 学号:201901 姓名:张三 实验:60 作业:70 期中考试:60 期未考试:80 信息显示功能。可显示课程信息、评分项目信息、所有学生的成绩单。 5.能够将上述数据保存在文件中,二进制、文本文件均可。(课程信息和评 分项目信息可保存一个文件,成绩单(6361点数解答 | 2024-05-24 02:01:02)364
- c++程序: 实现一个单门课程成绩管理系统。进入系统时,用户可选择身份:1.教师;2学生。 以教师身份进入后,如果上次已保存了数据,可将文件中数据读取出来,并允许修改部分数据。如果未保存数据,则允许教师录入新的数据。具体功能包括: 可录入或修改课程信息,包括:课程编号、课程名称; 可录入或修改课程的评分项目 (数量任意,不低于3项),包括:项目名称、所占分比例(需进行合法性检测,各项目比例之和为100%);示例如下: 项目名称 所占比例 实验 30% 作业 20% 期中考试 20% 期末考试 30% 注: 一旦录入学生成绩后,评分项目不允许修改;未录入成绩数据时,允许进行修改。 3.可录入、修改、刑除学生(学生数量不限)读门课程的各项成绩,并按照其比例自动算出总成绩;学生基本信息包括学号、姓名;示例如下: 学号:201901 姓名:张三 实验:60 作业:70 期中考试:60 期未考试:80 信息显示功能。可显示课程信息、评分项目信息、所有学生的成绩单。 5.能够将上述数据保存在文件中,二进制、文本文件均可。(课程信息和评 分项目信息可保存一个文件,成绩单可保存一个文件;也可全部保存为(4293点数解答 | 2024-05-24 10:20:03)285
- 帮我写一个批处理文件,内容如下: 1、如果在"参数表.xlsx"a列中的值找到与"文件.txt"中相同的值,则把此行中p=的值改为"参数表.xlsx"中c列对应的值; 2、如果在"参数表.xlsx"a列中的值找到与"文件.txt"中相同的值,则把此行中t=的值改为"参数表.xlsx"中b列对应的值; 3、如果在"参数表.xlsx"a列中的值找到与"文件.txt"中相同的值,则把此行中s=的值改为"参数表.xlsx"中d列对应的值; 如: 参数表.xlsx中a列a1,a2,a3;b列1.5,2,3;c列为10,20,30;d列100,101,102; 文件.txt中的行 1:l p[54:a1] 2000mm/sec cnt100 spot[sd=1,p=25,t=2.0,s=10,ed=1]; 2:l p[57:a2] 2000mm/sec cnt100 spot[sd=1,p=25,t=2.0,s=11,ed=1]; 3:l p[67:a3] 2000mm/sec cnt100 spot[sd=1,p=25,t=2.0,s=12,ed=1]; 文件.txt修改后为 1:l p[54(811点数解答 | 2024-12-05 12:58:37)257
- 帮我写一个批处理文件,内容如下: 1、如果在"参数表.xlsx"a列中的值找到与"文件.txt"中相同的值,则把此行中p=的值改为"参数表.xlsx"中c列对应的值; 2、如果在"参数表.xlsx"a列中的值找到与"文件.txt"中相同的值,则把此行中t=的值改为"参数表.xlsx"中b列对应的值; 3、如果在"参数表.xlsx"a列中的值找到与"文件.txt"中相同的值,则把此行中s=的值改为"参数表.xlsx"中d列对应的值; 参数表.xlsx中a列a1,a2,a3;b列1.5,2,3;c列为10,20,30;d列100,101,102; 文件.txt数据 1:l p[54:a1] 2000mm/sec cnt100 spot[sd=1,p=25,t=2.0,s=10,ed=1]; 2:l p[57:a2] 2000mm/sec cnt100 spot[sd=1,p=25,t=2.0,s=11,ed=1]; 3:l p[67:a3] 2000mm/sec cnt100 spot[sd=1,p=25,t=2.0,s=12,ed=1]; 文件.txt修改后数据 1:l p[54:a1(531点数解答 | 2024-12-05 13:20:42)253