diff --git a/作业2.8.c b/作业2.8.c deleted file mode 100644 index 61e156e..0000000 --- a/作业2.8.c +++ /dev/null @@ -1,154 +0,0 @@ -#include -#include -#include - -// ¶¨ÒåѧÉú½á¹¹Ìå -struct Student { - char id[20]; - char clas[20]; - char name[20]; - double score1; - double score2; - double score3; - double score; -}; - -// È«¾ÖѧÉúÊý×é -struct Student* students[100]; -int studentCount = 0; - -// ²Ëµ¥º¯Êý -void printMenu() { - printf("1. Input\n"); - printf("2. Delete\n"); - printf("3. Select\n"); - printf("4. Order\n"); - printf("5. Output\n"); - printf("6. Quit\n"); - printf("Please input your option: "); -} - -// ѧÉúÐÅϢ¼È뺯Êý -void inputStudent() { - if (studentCount < 100) { - struct Student* student = (struct Student*)malloc(sizeof(struct Student)); - printf("Id: "); - scanf("%s", student->id); - printf("Class: "); - scanf("%s", student->clas); - printf("Name: "); - scanf("%s", student->name); - printf("Score1: "); - scanf("%lf", &student->score1); - printf("Score2: "); - scanf("%lf", &student->score2); - printf("Score3: "); - scanf("%lf", &student->score3); - student->score = student->score1 + student->score2 + student->score3; - students[studentCount++] = student; - } else { - printf("Student database is full!\n"); - } -} - -// ѧÉúÐÅϢɾ³ýº¯Êý -void deleteStudent() { - char deleteId[20]; - printf("Enter student ID or name to delete: "); - scanf("%s", deleteId); - - int deleted = 0; - for (int i = 0; i < studentCount; i++) { - if (strcmp(students[i]->id, deleteId) == 0 || strcmp(students[i]->name, deleteId) == 0) { - free(students[i]); - for (int j = i; j < studentCount - 1; j++) { - students[j] = students[j + 1]; - } - studentCount--; - deleted = 1; - i--; - } - } - - if (deleted == 0) { - printf("Student not found.\n"); - } -} - -// ѧÉúÐÅÏ¢²éѯº¯Êý -void selectStudent() { - char query[20]; - printf("Enter student ID or class to select: "); - scanf("%s", query); - - int found = 0; - for (int i = 0; i < studentCount; i++) { - if (strcmp(students[i]->id, query) == 0 || strcmp(students[i]->clas, query) == 0) { - printf("%s, %s, %s, %.1lf, %.1lf, %.1lf, %.1lf\n", students[i]->id, students[i]->clas, students[i]->name, students[i]->score1, students[i]->score2, students[i]->score3, students[i]->score); - found = 1; - } - } - - if (found == 0) { - printf("There is no eligible student.\n"); - } -} - -// ѧÉúÐÅÏ¢ÅÅÐòº¯Êý -void orderStudents() { - for (int i = 0; i < studentCount; i++) { - for (int j = i + 1; j < studentCount; j++) { - if (strcmp(students[i]->clas, students[j]->clas) > 0 || (strcmp(students[i]->clas, students[j]->clas) == 0 && students[i]->score < students[j]->score)) { - struct Student* temp = students[i]; - students[i] = students[j]; - students[j] = temp; - } - } - } -} - -// ѧÉúÐÅÏ¢Êä³öº¯Êý -void outputStudents() { - for (int i = 0; i < studentCount; i++) { - printf("%s, %s, %s, %.1lf, %.1lf, %.1lf, %.1lf\n", students[i]->id, students[i]->clas, students[i]->name, students[i]->score1, students[i]->score2, students[i]->score3, students[i]->score); - } -} - -int main() { - int option; - do { - printMenu(); - scanf("%d", &option); - switch (option) { - case 1: - inputStudent(); - break; - case 2: - deleteStudent(); - break; - case 3: - selectStudent(); - break; - case 4: - orderStudents(); - outputStudents(); - break; - case 5: - outputStudents(); - break; - case 6: - // Í˳ö³ÌÐò - break; - default: - printf("Invalid option. Please try again.\n"); - } - } while (option != 6); - - // ÊÍ·ÅÄÚ´æ - for (int i = 0; i < studentCount; i++) { - free(students[i]); - } - - return 0; -} -