parent
593dbf5dad
commit
b67593715f
@ -0,0 +1,144 @@
|
|||||||
|
#define _CRT_SECURE_NO_WARNINGS
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#define MAX_STUDENTS 100
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
char id[10];
|
||||||
|
char class[10];
|
||||||
|
char name[20];
|
||||||
|
double score1;
|
||||||
|
double score2;
|
||||||
|
double score3;
|
||||||
|
double score;
|
||||||
|
} Student;
|
||||||
|
|
||||||
|
Student students[MAX_STUDENTS];
|
||||||
|
int studentCount = 0;
|
||||||
|
|
||||||
|
void inputStudent() {
|
||||||
|
while (1) {
|
||||||
|
Student newStudent;
|
||||||
|
char option[10];
|
||||||
|
printf("Id ");
|
||||||
|
scanf("%s", newStudent.id);
|
||||||
|
printf("class ");
|
||||||
|
scanf("%s", newStudent.class);
|
||||||
|
printf("name ");
|
||||||
|
scanf("%s", newStudent.name);
|
||||||
|
printf("score1 ");
|
||||||
|
scanf("%lf", &newStudent.score1);
|
||||||
|
printf("score2 ");
|
||||||
|
scanf("%lf", &newStudent.score2);
|
||||||
|
printf("score3 ");
|
||||||
|
scanf("%lf", &newStudent.score3);
|
||||||
|
newStudent.score = (newStudent.score1 + newStudent.score2 + newStudent.score3);
|
||||||
|
|
||||||
|
students[studentCount++] = newStudent;
|
||||||
|
|
||||||
|
printf("continue?\n");
|
||||||
|
scanf("%s", &option);
|
||||||
|
if (strcmp(option, "no") == 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void outputStudents() {
|
||||||
|
for (int i = 0; i < studentCount; i++) {
|
||||||
|
printf("%s, %s, %s, %.1f, %.1f, %.1f, %.1f\n",
|
||||||
|
students[i].id, students[i].class, students[i].name,
|
||||||
|
students[i].score1, students[i].score2, students[i].score3,
|
||||||
|
students[i].score);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void deleteStudent() {
|
||||||
|
while (studentCount > 1) {
|
||||||
|
char id[10];
|
||||||
|
scanf("%s", id);
|
||||||
|
char option[10];
|
||||||
|
for (int i = 0; i < studentCount; i++) {
|
||||||
|
if (strcmp(students[i].id, id) == 0 || strcmp(students[i].name, id) == 0) {
|
||||||
|
for (int j = i; j < studentCount - 1; j++) {
|
||||||
|
students[j] = students[j + 1];
|
||||||
|
}
|
||||||
|
studentCount--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
outputStudents();
|
||||||
|
printf("continue?\n");
|
||||||
|
scanf("%s", &option);
|
||||||
|
if (strcmp(option, "no") == 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void selectStudent() {
|
||||||
|
while (1) {
|
||||||
|
char id[10];
|
||||||
|
scanf("%s", id);
|
||||||
|
int flag = 0;
|
||||||
|
char option[10];
|
||||||
|
|
||||||
|
for (int i = 0; i < studentCount; i++) {
|
||||||
|
if (strcmp(students[i].id, id) == 0 || strcmp(students[i].class, id) == 0) {
|
||||||
|
printf("%s, %s, %s, %.1f, %.1f, %.1f, %.1f\n",
|
||||||
|
students[i].id, students[i].class, students[i].name,
|
||||||
|
students[i].score1, students[i].score2, students[i].score3,
|
||||||
|
students[i].score);
|
||||||
|
flag = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (flag == 0) {
|
||||||
|
printf("there is no eligible student\n");
|
||||||
|
}
|
||||||
|
printf("continue?\n");
|
||||||
|
scanf("%s", &option);
|
||||||
|
if (strcmp(option, "no") == 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int compare(const void* a, const void* b) {
|
||||||
|
Student* studentA = (Student*)a;
|
||||||
|
Student* studentB = (Student*)b;
|
||||||
|
if (strcmp(studentA->class, studentB->class) == 0) {
|
||||||
|
return (studentB->score - studentA->score > 0) ? 1 : -1;
|
||||||
|
}
|
||||||
|
return strcmp(studentA->class, studentB->class);
|
||||||
|
}
|
||||||
|
|
||||||
|
void orderStudents() {
|
||||||
|
qsort(students, studentCount, sizeof(Student), compare);
|
||||||
|
outputStudents();
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
int option;
|
||||||
|
do {
|
||||||
|
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\n");
|
||||||
|
scanf("%d", &option);
|
||||||
|
|
||||||
|
switch (option) {
|
||||||
|
case 1: inputStudent(); break;
|
||||||
|
case 2: deleteStudent(); break;
|
||||||
|
case 3: selectStudent(); break;
|
||||||
|
case 4: orderStudents(); break;
|
||||||
|
case 5: outputStudents(); break;
|
||||||
|
case 6: break;
|
||||||
|
}
|
||||||
|
} while (option != 6);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in new issue