#include #include #include #define MAX_STUDENTS 100 typedef struct { int id; char name[50]; float gaoshu; float wuli; float yingyu; int banji; } Student; Student students[MAX_STUDENTS]; int studentCount = 0; void addStudent() { char panduan; printf("You are trying to Input info\n"); if (studentCount >= MAX_STUDENTS) { printf("Cannot add more students. Maximum limit reached.\n"); return; } Student newStudent; printf("Enter ID: "); scanf("%d", &newStudent.id); printf("Enter Name: "); scanf("%s", newStudent.name); printf("Enter Class: "); scanf("%d",&newStudent.banji); printf("Enter 高数成绩: "); scanf("%f", &newStudent.gaoshu); printf("Enter 物理成绩: "); scanf("%f", &newStudent.wuli); printf("Enter 英语成绩: "); scanf("%f", &newStudent.yingyu); students[studentCount++] = newStudent; printf("Student added successfully!\n"); printf("continue?"); } void deleteStudent() { int id; printf("You are trying to Output info\n"); printf("Enter ID of the student to delete: "); scanf("%d", &id); for (int i = 0; i < studentCount; i++) { if (students[i].id == id) { for (int j = i; j < studentCount - 1; j++) { students[j] = students[j + 1]; } studentCount--; printf("Student deleted successfully!\n"); return; } } printf("Student not found!\n"); } void selectStudent(){ int xuan; printf("Input Id or Class:"); scanf("%d",&xuan); for (int i = 0; i < studentCount; i++) { if(xuan==students[i].id||xuan==students[i].banji) { printf("%d\t%s\t%d\t%.2f\t%.2f\t%.2f\t%.2f\n", students[i].id, students[i].name, students[i].banji,students[i].gaoshu,students[i].wuli,students[i].yingyu,students[i].gaoshu+students[i].wuli+students[i].yingyu); } } printf("continue?"); } void orderStudents() { int i, j; Student temp; for (i = 0; i < studentCount - 1; i++) { for (j = i + 1; j < studentCount; j++) { if (students[i].banji > students[j].banji) { temp = students[i]; students[i] = students[j]; students[j] = temp; } else if (students[i].banji == students[j].banji) { float totalScoreI = students[i].gaoshu + students[i].wuli + students[i].yingyu; float totalScoreJ = students[j].gaoshu + students[j].wuli + students[j].yingyu; if (totalScoreI < totalScoreJ) { temp = students[i]; students[i] = students[j]; students[j] = temp; } } } } printf("ID\tName\t班级\t高数成绩\t物理成绩\t英语成绩\t总成绩\n"); for (int i = 0; i < studentCount; i++) { printf("%d\t%s\t%d\t%.2f\t\t%.2f\t\t%.2f\t\t%.2f\n", students[i].id, students[i].name, students[i].banji,students[i].gaoshu,students[i].wuli,students[i].yingyu,students[i].gaoshu+students[i].wuli+students[i].yingyu); } } void displayStudents() { printf("You are trying to Make things ordered\n"); if (studentCount == 0) { printf("No students to display.\n"); return; } printf("ID\tName\t班级\t高数成绩\t物理成绩\t英语成绩\t总成绩\n"); for (int i = 0; i < studentCount; i++) { printf("%d\t%s\t%d\t%.2f\t\t%.2f\t\t%.2f\t\t%.2f\n", students[i].id, students[i].name, students[i].banji,students[i].gaoshu,students[i].wuli,students[i].yingyu,students[i].gaoshu+students[i].wuli+students[i].yingyu); } } int main() { int choice; int running = 1; // 控制循环的变量 while (running) { printf("输入1,2,3,4, 5, 6使用对应功能\n"); printf(" 1. Input\n"); printf(" 2. Output\n"); printf(" 3. select\n"); printf(" 4. order\n"); printf(" 5. output\n"); printf(" 6. Quit\n"); printf("Enter your choice: "); scanf("%d", &choice); char panduan[3]; switch (choice) { case 1: addStudent(); loop: scanf("%s",panduan); if(strcmp(panduan,"yes")==0) { addStudent(); goto loop; } else break; case 2: deleteStudent(); scanf("%s",panduan); if(strcmp(panduan,"yes")==0) { deleteStudent(); } else break; case 3: selectStudent(); loop3: scanf("%s",panduan); if(strcmp(panduan,"yes")==0) { selectStudent(); goto loop3; } else break; case 4: orderStudents(); break; case 5: displayStudents(); break; case 6: running = 0; break; default: printf("Wrong input.\n"); } } return 0; } } } return 0; }