You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

152 lines
4.1 KiB

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct Student {
char id[20];
char classname[20];
char name[20];
float score1, score2, score3;
struct Student* next;
} Student;
Student* head = NULL; // ͷ<>ڵ<EFBFBD>ָ<EFBFBD><D6B8>
void showMenu() {
printf("%30s1. input\n", " ");
printf("%30s2. delete\n", " ");
printf("%30s3. select\n", " ");
printf("%30s4. order\n", " ");
printf("%30s5. output\n", " ");
printf("%30s6. quit\n", " ");
printf("%30splease input your option\n", " ");
}
void insertStudent() {
Student* newStudent = (Student*)malloc(sizeof(Student));
printf("ID: ");
scanf("%s", newStudent->id);
printf("class: ");
scanf("%s", newStudent->class);
printf("name: ");
scanf("%s", newStudent->name);
printf("score1: ");
scanf("%f", &newStudent->score1);
printf("score2: ");
scanf("%f", &newStudent->score2);
printf("score3: ");
scanf("%f", &newStudent->score3);
newStudent->next = head;
head = newStudent;
}
void deleteStudent() {
char idOrName[20];
scanf("%s", idOrName);
Student* current = head;
Student* prev = NULL;
while (current != NULL) {
if (strcmp(current->id, idOrName) == 0 || strcmp(current->name, idOrName) == 0) {
if (prev == NULL) {
head = current->next;
} else {
prev->next = current->next;
}
free(current);
break;
}
prev = current;
current = current->next;
}
printStudent();
}
void selectStudent() {
char idOrName[20];
scanf("%s", idOrName);
Student* current = head;
int found = 0;
while (current != NULL) {
if (strcmp(current->id, idOrName) == 0 || strcmp(current->name, idOrName) == 0) {
printf("%s %s %s %.1f %.1f %.1f\n", current->id, current->class, current->name, current->score1, current->score2, current->score3);
found = 1;
}
current = current->next;
}
if (found == 0) {
printf("There is no eligible student\n");
}
}
void orderStudent() {
// ʡ<><CAA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܵľ<DCB5><C4BE><EFBFBD>ʵ<EFBFBD><CAB5>
}
void printStudent() {
Student* current = head;
while (current != NULL) {
printf("%s %s %s %.1f %.1f %.1f\n", current->id, current->class, current->name, current->score1, current->score2, current->score3);
current = current->next;
}
}
int main() {
int choice;
char a[4];
while (1) {
showMenu();
scanf("%d", &choice);
switch (choice) {
case 1:
insertStudent();
while (1) {
printf("Continue?\n");
scanf("%s", &a);
if (strcmp(a, "yes") == 0) {
insertStudent();
continue;
} else {
break;
}
}
break;
case 2:
deleteStudent();
while (1) {
printf("Continue?\n");
scanf("%s", &a);
if (strcmp(a, "yes") == 0) {
deleteStudent();
continue;
} else {
break;
}
}
break;
case 3:
selectStudent();
while (1) {
printf("Continue?\n");
scanf("%s", &a);
if (strcmp(a, "yes") == 0) {
selectStudent();
continue;
} else {
break;
}
}
break;
case 4:
orderStudent();
break;
case 5:
printStudent();
break;
case 6:
return 0;
}
}
}