实验任务1:选修课学生信息管理 用 c 语言来完成 问题描述选修课初期涉及学生的选修和退修,后期涉及成绩的报送和查询。此题模拟实现简单的选修管理。学生信息包括:学号、姓名、学院、平时成绩、期末成绩、总评成绩,编写程序实现对学生和成绩的管理。要求完成以下功能:1)初始学生信息的录入,学生按学院输入,各项成绩初始为0;2)补充新到学生的信息,要求增加后仍保持按学院有序;3)删除退修的学生信息;4)录入平时成绩和期末成绩,计算总评成绩(平时成绩和期末成绩各占50%);5) 生成按学院排列的成绩单文件;6)按学号查询输出学生的完整信息。2.2 输入形式101 zs dxxy201 ls jdxy205 wxe jdxy405 ww ttxy407 ze ttxy-10 2051 104 lw dxxy-1101 zs dxxy 80 90104 lw dxxy 70 80201 ls jdxy 60 70405 ww ttxy 90 90407 ze ttxy 50 90-12012.3 输出形式终端打印输出:201 ls jdxy 60 70 65输出的文本last.txt保存文本:101


以下是使用 C 语言实现选修课学生信息管理的代码示例: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> // 定义学生结构体 typedef struct { int id; char name[50]; char college[50]; float usualScore; float finalScore; float totalScore; } Student; // 比较函数,用于按学院排序 int compareByCollege(const void *a, const void *b) { Student *studentA = (Student *)a; Student *studentB = (Student *)b; return strcmp(studentA->college, studentB->college); } // 初始化学生信息 void initStudents(Student *students, int *numStudents) { printf("请输入学生信息(格式:学号 姓名 学院,输入-1结束):\n"); int id; char name[50], college[50]; *numStudents = 0; while (1) { scanf("%d", &id); if (id == -1) { break; } scanf("%s %s", name, college); students[*numStudents].id = id; strcpy(students[*numStudents].name, name); strcpy(students[*numStudents].college, college); students[*numStudents].usualScore = 0; students[*numStudents].finalScore = 0; students[*numStudents].totalScore = 0; (*numStudents)++; } qsort(students, *numStudents, sizeof(Student), compareByCollege); } // 补充新学生信息 void addStudent(Student *students, int *numStudents) { Student newStudent; printf("请输入新学生信息(格式:学号 姓名 学院):\n"); scanf("%d %s %s", &newStudent.id, newStudent.name, newStudent.college); newStudent.usualScore = 0; newStudent.finalScore = 0; newStudent.totalScore = 0; int i; for (i = 0; i < *numStudents; i++) { if (strcmp(newStudent.college, students[i].college) < 0) { break; } } for (int j = *numStudents; j > i; j--) { students[j] = students[j - 1]; } students[i] = newStudent; (*numStudents)++; } // 删除学生信息 void deleteStudent(Student *students, int *numStudents) { int id; printf("请输入要删除的学生学号:\n"); scanf("%d", &id); int found = 0; for (int i = 0; i < *numStudents; i++) { if (students[i].id == id) { found = 1; for (int j = i; j < *numStudents - 1; j++) { students[j] = students[j + 1]; } (*numStudents)--; break; } } if (!found) { printf("未找到该学生!\n"); } } // 录入成绩并计算总评成绩 void inputScores(Student *students, int numStudents) { int id; printf("请输入学生学号:\n"); scanf("%d", &id); int found = 0; for (int i = 0; i < numStudents; i++) { if (students[i].id == id) { found = 1; printf("请输入平时成绩和期末成绩:\n"); scanf("%f %f", &students[i].usualScore, &students[i].finalScore); students[i].totalScore = (students[i].usualScore + students[i].finalScore) / 2; break; } } if (!found) { printf("未找到该学生!\n"); } } // 生成成绩单文件 void generateReportFile(Student *students, int numStudents) { FILE *fp = fopen("last.txt", "w"); if (fp == NULL) { printf("文件创建失败!\n"); return; } for (int i = 0; i < numStudents; i++) { fprintf(fp, "%d %s %s %.2f %.2f %.2f\n", students[i].id, students[i].name, students[i].college, students[i].usualScore, students[i].finalScore, students[i].totalScore); } fclose(fp); } // 按学号查询学生信息 void queryStudent(Student *students, int numStudents) { int id; printf("请输入要查询的学生学号:\n"); scanf("%d", &id); int found = 0; for (int i = 0; i < numStudents; i++) { if (students[i].id == id) { found = 1; printf("%d %s %s %.2f %.2f %.2f\n", students[i].id, students[i].name, students[i].college, students[i].usualScore, students[i].finalScore, students[i].totalScore); break; } } if (!found) { printf("未找到该学生!\n"); } } int main() { Student students[100]; int numStudents = 0; initStudents(students, &numStudents); int choice; while (1) { printf("1. 补充新学生\n"); printf("2. 删除学生\n"); printf("3. 录入成绩\n"); printf("4. 生成成绩单文件\n"); printf("5. 按学号查询\n"); printf("6. 退出\n"); printf("请选择操作:"); scanf("%d", &choice); switch (choice) { case 1: addStudent(students, &numStudents); break; case 2: deleteStudent(students, &numStudents); break; case 3: inputScores(students, numStudents); break; case 4: generateReportFile(students, numStudents); break; case 5: queryStudent(students, numStudents); break; case 6: return 0; default: printf("无效的选择,请重新输入!\n"); } } return 0; } ``` [2024-09-26 08:04:58 | AI写代码神器 | 1583点数解答]
- 实验任务1:选修课学生信息管理2.1 问题描述选修课初期涉及学生的选修和退修,后期涉及成绩的报送和查询。此题模拟实现简单的选修管理。学生信息包括:学号、姓名、学院、平时成绩、期末成绩、总评成绩,编写程序实现对学生和成绩的管理。要求完成以下功能:1)初始学生信息的录入,学生按学院输入,各项成绩初始为0;2)补充新到学生的信息,要求增加后仍保持按学院有序;3)删除退修的学生信息;4)录入平时成绩和期末成绩,计算总评成绩(平时成绩和期末成绩各占50%);5) 生成按学院排列的成绩单文件;6)按学号查询输出学生的完整信息。2.2 输入形式101 zs dxxy201 ls jdxy205 wxe jdxy405 ww ttxy407 ze ttxy-10 2051 104 lw dxxy-1101 zs dxxy 80 90104 lw dxxy 70 80201 ls jdxy 60 70405 ww ttxy 90 90407 ze ttxy 50 90-12012.3 输出形式终端打印输出:201 ls jdxy 60 70 65输出的文本last.txt保存文本:101 zs dxx(638点数解答 | 2024-09-26 08:03:43)203
- 实验任务1:选修课学生信息管理 用 c 语言来完成 问题描述选修课初期涉及学生的选修和退修,后期涉及成绩的报送和查询。此题模拟实现简单的选修管理。学生信息包括:学号、姓名、学院、平时成绩、期末成绩、总评成绩,编写程序实现对学生和成绩的管理。要求完成以下功能:1)初始学生信息的录入,学生按学院输入,各项成绩初始为0;2)补充新到学生的信息,要求增加后仍保持按学院有序;3)删除退修的学生信息;4)录入平时成绩和期末成绩,计算总评成绩(平时成绩和期末成绩各占50%);5) 生成按学院排列的成绩单文件;6)按学号查询输出学生的完整信息。2.2 输入形式101 zs dxxy201 ls jdxy205 wxe jdxy405 ww ttxy407 ze ttxy-10 2051 104 lw dxxy-1101 zs dxxy 80 90104 lw dxxy 70 80201 ls jdxy 60 70405 ww ttxy 90 90407 ze ttxy 50 90-12012.3 输出形式终端打印输出:201 ls jdxy 60 70 65输出的文本last.txt保存文本:101(1583点数解答 | 2024-09-26 08:04:58)150
- 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语音 定义一个结构体student,其中包含的成员为char no[10];char name[10];float score。设有5个学生,从键盘输入其信息,按成绩的升序排序。并输出这5个学生排序后的信息。 输入格式: "%s%s%f" 输出格式: "请输入第%d位同学的信息:姓名 学号 成绩\n" "%s,%s,%.0f\n" 输入样例: 张三 10001 98↙ 李四 10002 100↙ 王五 10003 95↙ 赵六 10004 99↙ 钱七 10005 93↙ 输出样例: 请输入第1位同学的信息:姓名 学号 成绩↙ 请输入第2位同学的信息:姓名 学号 成绩↙ 请输入第3位同学的信息:姓名 学号 成绩↙ 请输入第4位同学的信息:姓名 学号 成绩↙ 请输入第5位同学的信息:姓名 学号 成绩↙ 钱七,10005,93↙ 王五,10003,95↙ 张三,10001,98↙ 赵六,10004,99↙ 李四,10002,100↙(373点数解答 | 2024-10-30 00:37:20)293
- 定义一个结构体student,其中包含的成员为char no[10];char name[10];float score。设有5个学生,从键盘输入其信息,按成绩的升序排序。并输出这5个学生排序后的信息。 输入格式: "%s%s%f" 输出格式: "请输入第%d位同学的信息:姓名 学号 成绩\n" "%s,%s,%.0f\n" 输入样例: 张三 10001 98 李四 10002 100 王五 10003 95 赵六 10004 99 钱七 10005 93 输出样例: 请输入第1位同学的信息:姓名 学号 成绩 请输入第2位同学的信息:姓名 学号 成绩 请输入第3位同学的信息:姓名 学号 成绩 请输入第4位同学的信息:姓名 学号 成绩 请输入第5位同学的信息:姓名 学号 成绩 钱七,10005,93 王五,10003,95 张三,10001,98 赵六,10004,99 李四,10002,100(354点数解答 | 2024-10-30 18:45:58)229
- c语言定义一个结构体student,其中包含的成员为char no[10];char name[10];float score。设有5个学生,从键盘输入其信息,按成绩的升序排序。并输出这5个学生排序后的信息。 输入格式: "%s%s%f" 输出格式: "请输入第%d位同学的信息:姓名 学号 成绩\n" "%s,%s,%.0f\n" 输入样例: 张三 10001 98↙ 李四 10002 100↙ 王五 10003 95↙ 赵六 10004 99↙ 钱七 10005 93↙ 输出样例: 请输入第1位同学的信息:姓名 学号 成绩↙ 请输入第2位同学的信息:姓名 学号 成绩↙ 请输入第3位同学的信息:姓名 学号 成绩↙ 请输入第4位同学的信息:姓名 学号 成绩↙ 请输入第5位同学的信息:姓名 学号 成绩↙ 钱七,10005,93↙ 王五,10003,95↙ 张三,10001,98↙ 赵六,10004,99↙ 李四,10002,100↙(373点数解答 | 2024-10-31 19:49:58)219
- c语音定义一个结构体student,其中包含的成员为char no[10];char name[10];float score。设有5个学生,从键盘输入其信息,按成绩的升序排序。并输出这5个学生排序后的信息。 输入格式: "%s%s%f" 输出格式: "请输入第%d位同学的信息:姓名 学号 成绩\n" "%s,%s,%.0f\n" 输入样例: 张三 10001 98↙ 李四 10002 100↙ 王五 10003 95↙ 赵六 10004 99↙ 钱七 10005 93↙ 输出样例: 请输入第1位同学的信息:姓名 学号 成绩↙ 请输入第2位同学的信息:姓名 学号 成绩↙ 请输入第3位同学的信息:姓名 学号 成绩↙ 请输入第4位同学的信息:姓名 学号 成绩↙ 请输入第5位同学的信息:姓名 学号 成绩↙ 钱七,10005,93↙ 王五,10003,95↙ 张三,10001,98↙ 赵六,10004,99↙ 李四,10002,100↙(326点数解答 | 2025-01-01 20:11:47)204
- c++程序编写: 实现一个单门课程成绩管理系统。进入系统时,用户可选择身份:1.教师;2学生。 以教师身份进入后,如果上次已保存了数据,可将文件中数据读取出来,并允许修改部分数据。如果未保存数据,则允许教师录入新的数据。具体功能包括: 可录入或修改课程信息,包括:课程编号、课程名称; 可录入或修改课程的评分项目 (数量任意,不低于3项),包括:项目名称、所占分比例(需进行合法性检测,各项目比例之和为100%);示例如下: 项目名称 所占比例 实验 30% 作业 20% 期中考试 20% 期末考试 30% 注: 一旦录入学生成绩后,评分项目不允许修改;未录入成绩数据时,允许进行修改。 3.可录入、修改、刑除学生(学生数量不限)读门课程的各项成绩,并按照其比例自动算出总成绩;学生基本信息包括学号、姓名;示例如下: 学号:201901 姓名:张三 实验:60 作业:70 期中考试:60 期未考试:80 信息显示功能。可显示课程信息、评分项目信息、所有学生的成绩单。 5.能够将上述数据保存在文件中,二进制、文本文件均可。(课程信息和评 分项目信息可保存一个文件,成绩单可保存一个文件;也可全部保(68点数解答 | 2024-05-24 10:17:09)238
- c++程序: 实现一个单门课程成绩管理系统。进入系统时,用户可选择身份:1.教师;2学生。 以教师身份进入后,如果上次已保存了数据,可将文件中数据读取出来,并允许修改部分数据。如果未保存数据,则允许教师录入新的数据。具体功能包括: 可录入或修改课程信息,包括:课程编号、课程名称; 可录入或修改课程的评分项目 (数量任意,不低于3项),包括:项目名称、所占分比例(需进行合法性检测,各项目比例之和为100%);示例如下: 项目名称 所占比例 实验 30% 作业 20% 期中考试 20% 期末考试 30% 注: 一旦录入学生成绩后,评分项目不允许修改;未录入成绩数据时,允许进行修改。 3.可录入、修改、刑除学生(学生数量不限)读门课程的各项成绩,并按照其比例自动算出总成绩;学生基本信息包括学号、姓名;示例如下: 学号:201901 姓名:张三 实验:60 作业:70 期中考试:60 期未考试:80 信息显示功能。可显示课程信息、评分项目信息、所有学生的成绩单。 5.能够将上述数据保存在文件中,二进制、文本文件均可。(课程信息和评 分项目信息可保存一个文件,成绩单可保存一个文件;也可全部保存为(4293点数解答 | 2024-05-24 10:20:03)284
- 帮我写一个批处理文件,内容如下: 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)256
- 帮我写一个批处理文件,内容如下: 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
- 帮我写一个批处理文件,内容如下: 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(495点数解答 | 2024-12-05 13:22:26)228