酷代码 AI
菜单
全部AI  /  热门  /  AI写代码神器
服务商

实验任务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点数解答]

相关提问