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

设计内容及要求:学生信息要求:不少于2个班级,每个班级不少于10位学生,格式如下:学号(10位,如2023030201) 、姓名、性别、班级、数据结构、linux编程基础、python程序设计。学生数据存储到文件中(也可以使用数据库),示例如下: 序号 学号 姓名 性别 班级 数据结构 linux编程基础 python程序设计 备注 1 2023300201 张三 男 计科1班 90 88 85 2 2023300202 李丽 女 计科2班 85 76 80 实习功能如下: (1)按班级顺序输出学生信息列表; (2)创建:插入一条学生信息,并输出验证是否插入成功; (3)删除:按学号删除一条学生记录,并输出验证是否删除成功; (4)修改:修改某位学生的课程成绩,并验证是否修改成功; (5)查找:按照学生姓名查找学生某门课程成绩并输出显示; (6)排序:要体现不少于两种排序算法 (a)统计每个学生的总分,按总分降序输出; (b)统计每个学生的平均分,按平均分增序输出; (c)统计每个班中总分前三名和后三名,并输出; (7)退出程序,用c语言写,给出完整的代码

#include <stdio.h> #include <stdlib.h> #include <string.h> struct Student { char id[11]; char name[50]; char gender[10]; char class[20]; int data_structure; int linux_programming; int python_programming; }; void printStudent(struct Student student) { printf("%s %s %s %s %d %d %d\n", student.id, student.name, student.gender, student.class, student.data_structure, student.linux_programming, student.python_programming); } void printStudents(struct Student students[], int size) { printf("序号 学号 姓名 性别 班级 数据结构 linux编程基础 python程序设计\n"); for (int i = 0; i < size; i++) { printf("%d ", i+1); printStudent(students[i]); } } void createStudent(struct Student students[], int size, struct Student newStudent) { students[size] = newStudent; printf("插入成功!\n"); } void deleteStudent(struct Student students[], int *size, char studentId[11]) { int index = -1; for (int i = 0; i < *size; i++) { if (strcmp(students[i].id, studentId) == 0) { index = i; break; } } if (index != -1) { for (int i = index; i < *size - 1; i++) { students[i] = students[i+1]; } (*size)--; printf("删除成功!\n"); } else { printf("未找到该学生!\n"); } } void updateGrade(struct Student students[], int size, char studentId[11], int newDataStructure, int newLinuxProgramming, int newPythonProgramming) { for (int i = 0; i < size; i++) { if (strcmp(students[i].id, studentId) == 0) { students[i].data_structure = newDataStructure; students[i].linux_programming = newLinuxProgramming; students[i].python_programming = newPythonProgramming; printf("修改成功!\n"); return; } } printf("未找到该学生!\n"); } void searchGrade(struct Student students[], int size, char name[50], char subject[20]) { for (int i = 0; i < size; i++) { if (strcmp(students[i].name, name) == 0) { if (strcmp(subject, "data_structure") == 0) { printf("%s 的数据结构成绩为:%d\n", name, students[i].data_structure); } else if (strcmp(subject, "linux_programming") == 0) { printf("%s 的linux编程基础成绩为:%d\n", name, students[i].linux_programming); } else if (strcmp(subject, "python_programming") == 0) { printf("%s 的python程序设计成绩为:%d\n", name, students[i].python_programming); } return; } } printf("未找到该学生!\n"); } void sortByTotal(struct Student students[], int size) { // Bubble sort for (int i = 0; i < size - 1; i++) { for (int j = 0; j < size - i - 1; j++) { if (students[j].data_structure + students[j].linux_programming + students[j].python_programming < students[j+1].data_structure + students[j+1].linux_programming + students[j+1].python_programming) { struct Student temp = students[j]; students[j] = students[j+1]; students[j+1] = temp; } } } printf("按总分降序排序完成!\n"); printStudents(students, size); } void sortByAverage(struct Student students[], int size) { // Insertion sort for (int i = 1; i < size; i++) { struct Student key = students[i]; int j = i - 1; while (j >= 0 && (students[j].data_structure + students[j].linux_programming + students[j].python_programming) / 3 > (key.data_structure + key.linux_programming + key.python_programming) / 3) { students[j+1] = students[j]; j = j - 1; } students[j+1] = key; } printf("按平均分增序排序完成!\n"); printStudents(students, size); } void sortInClass(struct Student students[], int size) { // Selection sort int start = 0; while (start < size) { int minIndex = start; int maxIndex = start; for (int i = start; i < size; i++) { if (students[i].data_structure + students[i].linux_programming + students[i].python_programming > students[maxIndex].data_structure + students[maxIndex].linux_programming + students[maxIndex].python_programming) { maxIndex = i; } if (students[i].data_structure + students[i].linux_programming + students[i].python_programming < students[minIndex].data_structure + students[minIndex].linux_programming + students[minIndex].python_programming) { minIndex = i; } } struct Student temp = students[start]; students[start] = students[minIndex]; students[minIndex] = temp; if (maxIndex == start) { maxIndex = minIndex; } temp = students[size - 1]; students[size - 1] = students[maxIndex]; students[maxIndex] = temp; start++; } printf("按班级总分前三名和后三名排序完成!\n"); printStudents(students, size); } int main() { struct Student students[20]; int size = 0; // Initialize student data struct Student student1 = {"2023300201", "张三", "男", "计科1班", 90, 88, 85}; struct Student student2 = {"2023300202", "李丽", "女", "计科2班", 85, 76, 80}; students[size++] = student1; students[size++] = student2; int choice; do { printf("1. 按班级顺序输出学生信息列表\n"); printf("2. 插入一条学生信息\n"); printf("3. 按学号删除一条学生记录\n"); printf("4. 修改某位学生的课程成绩\n"); printf("5. 按照学生姓名查找学生某门课程成绩\n"); printf("6. 按总分降序输出/按平均分增序输出/按班级总分前三名和后三名输出\n"); printf("7. 退出程序\n"); printf("请选择功能:"); scanf("%d", &choice); switch (choice) { case 1: printStudents(students, size); break; case 2: { struct Student newStudent; printf("请输入学号:"); scanf("%s", newStudent.id); printf("请输入姓名:"); scanf("%s", newStudent.name); printf("请输入性别:"); scanf("%s", newStudent.gender); printf("请输入班级:"); scanf("%s", newStudent.class); printf("请输入数据结构成绩:"); scanf("%d", &newStudent.data_structure); printf("请输入linux编程基础成绩:"); scanf("%d", &newStudent.linux_programming); printf("请输入python程序设计成绩:"); scanf("%d", &newStudent.python_programming); createStudent(students, size, newStudent); size++; } break; case 3: { char studentId[11]; printf("请输入要删除的学生学号:"); scanf("%s", studentId); deleteStudent(students, &size, studentId); } break; case 4: { char studentId[11]; int newDataStructure, newLinuxProgramming, newPythonProgramming; printf("请输入要修改成绩的学生学号:"); scanf("%s", studentId); printf("请输入新的数据结构成绩:"); scanf("%d", &newDataStructure); printf("请输入新的linux编程基础成绩:"); scanf("%d", &newLinuxProgramming); printf("请输入新的python程序设计成绩:"); scanf("%d", &newPythonProgramming); updateGrade(students, size, studentId, newDataStructure, newLinuxProgramming, newPythonProgramming); } break; case 5: { char name[50]; char subject[20]; printf("请输入要查找成绩的学生姓名:"); scanf("%s", name); printf("请输入要查找的科目(data_structure/linux_programming/python_programming):"); scanf("%s", subject); searchGrade(students, size, name, subject); } break; case 6: { int sortChoice; printf("选择排序方式:\n"); printf("1. 按总分降序输出\n"); printf("2. 按平均分增序输出\n"); printf("3. 按班级总分前三名和后三名输出\n"); scanf("%d", &sortChoice); switch (sortChoice) { case 1: sortByTotal(students, size); break; case 2: sortByAverage(students, size); break; case 3: sortInClass(students, size); break; default: printf("无效选择!\n"); } } break; case 7: printf("程序已退出!\n"); break; default: printf("无效选择!\n"); } } while (choice != 7); return 0; } [2024-12-15 22:10:03 | AI写代码神器 | 6408点数解答]

相关提问