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.
167 lines
5.5 KiB
167 lines
5.5 KiB
20 hours ago
|
#include <stdio.h>
|
||
|
#include <string.h>
|
||
|
#include <stdlib.h>
|
||
|
|
||
|
int studentMember = 0;
|
||
|
|
||
|
typedef struct storeInformation
|
||
|
{
|
||
|
char stus[10];
|
||
|
int classes;
|
||
|
char names[10];
|
||
|
double mathGrade;
|
||
|
double physicsGrade;
|
||
|
double englishGrade;
|
||
|
int boolNew;
|
||
|
} stu;
|
||
|
|
||
|
stu studentInformation[10];
|
||
|
|
||
|
void input(int i) {
|
||
|
scanf("%s", studentInformation[i].stus);
|
||
|
scanf("%d", &studentInformation[i].classes);
|
||
|
scanf("%s", studentInformation[i].names);
|
||
|
scanf("%lf", &studentInformation[i].mathGrade);
|
||
|
scanf("%lf", &studentInformation[i].physicsGrade);
|
||
|
scanf("%lf", &studentInformation[i].englishGrade);
|
||
|
}
|
||
|
|
||
|
void inputStudentInformation(int n) {
|
||
|
for (int i = 0; i < n; i++) {
|
||
|
input(i);
|
||
|
studentMember++;
|
||
|
studentInformation[i].boolNew = 0;
|
||
|
printf("One student has been input!\n");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void insertedNew() {
|
||
|
int i = studentMember;
|
||
|
input(i);
|
||
|
studentMember++;
|
||
|
studentInformation[i].boolNew = 1;
|
||
|
printf("One student has been input!\n");
|
||
|
}
|
||
|
|
||
|
void informationClear(char a[100]) {
|
||
|
int i = 0;
|
||
|
for (i = 0; i < studentMember; i++) {
|
||
|
if (strcmp(a, studentInformation[i].stus) == 0 || strcmp(a, studentInformation[i].names) == 0) {
|
||
|
memset(&studentInformation[i], 0, sizeof(studentInformation[i]));
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void sortStudents() {
|
||
|
for (int i = 0; i < studentMember - 1; i++) {
|
||
|
for (int j = 0; j < studentMember - i - 1; j++) {
|
||
|
double totalScoreJ = studentInformation[j].mathGrade + studentInformation[j].physicsGrade + studentInformation[j].englishGrade;
|
||
|
double totalScoreJ1 = studentInformation[j + 1].mathGrade + studentInformation[j + 1].physicsGrade + studentInformation[j + 1].englishGrade;
|
||
|
|
||
|
if (studentInformation[j].classes > studentInformation[j + 1].classes ||
|
||
|
(studentInformation[j].classes == studentInformation[j + 1].classes && totalScoreJ < totalScoreJ1)) {
|
||
|
stu temp = studentInformation[j];
|
||
|
studentInformation[j] = studentInformation[j + 1];
|
||
|
studentInformation[j + 1] = temp;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
printf("Students have been sorted!\n");
|
||
|
}
|
||
|
|
||
|
void printStudentOriginalScore() {
|
||
|
sortStudents();
|
||
|
int classs = 0;
|
||
|
for (int i = 0; i < studentMember; i++) {
|
||
|
if (studentInformation[i].classes != 0) {
|
||
|
if (studentInformation[i].classes == classs) {
|
||
|
printf("%d %s %s %.1f %.1f %.1f %s\n",
|
||
|
studentInformation[i].classes,
|
||
|
studentInformation[i].stus,
|
||
|
studentInformation[i].names,
|
||
|
studentInformation[i].mathGrade,
|
||
|
studentInformation[i].physicsGrade,
|
||
|
studentInformation[i].englishGrade,
|
||
|
studentInformation[i].boolNew == 0 ? "" : studentInformation[i].boolNew == 1 ? "inserted" : "modified");
|
||
|
}
|
||
|
else {
|
||
|
printf(" %s %s %.1f %.1f %.1f %s\n",
|
||
|
studentInformation[i].stus,
|
||
|
studentInformation[i].names,
|
||
|
studentInformation[i].mathGrade,
|
||
|
studentInformation[i].physicsGrade,
|
||
|
studentInformation[i].englishGrade,
|
||
|
studentInformation[i].boolNew == 0 ? "" : studentInformation[i].boolNew == 1 ? "inserted" : "modified");
|
||
|
}
|
||
|
classs = studentInformation[i].classes;
|
||
|
studentInformation[i].boolNew = 0;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
void modifyStudent() {
|
||
|
char a[10];
|
||
|
printf("Are you sure(yes/no)");
|
||
|
scanf("%s", &a);
|
||
|
if ((strcmp(a, "yes")) == 0) {
|
||
|
char stusToModify[10];
|
||
|
printf("Enter the student number to modify, followed by new data ( 10001 2 Kobe 59 59 59):\n");
|
||
|
scanf("%s", stusToModify);
|
||
|
|
||
|
int found = 0;
|
||
|
for (int i = 0; i < studentMember; i++) {
|
||
|
if (strcmp(studentInformation[i].stus, stusToModify) == 0) {
|
||
|
found = 1;
|
||
|
scanf("%d %s %lf %lf %lf",
|
||
|
&studentInformation[i].classes,
|
||
|
studentInformation[i].names,
|
||
|
&studentInformation[i].mathGrade,
|
||
|
&studentInformation[i].physicsGrade,
|
||
|
&studentInformation[i].englishGrade);
|
||
|
studentInformation[i].boolNew = 2;
|
||
|
printf("Student data modified successfully!\n");
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
if (!found) {
|
||
|
printf("Student with number %s not found.\n", stusToModify);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void manage() {
|
||
|
printf(" 1.Input\n");
|
||
|
printf(" 2.Output\n");
|
||
|
printf(" 3.Order\n");
|
||
|
printf(" 4.Quit\n");
|
||
|
char keywords;
|
||
|
keywords = getchar();
|
||
|
switch (keywords) {
|
||
|
case 'i':
|
||
|
printf("Please input info of the three students\n");
|
||
|
inputStudentInformation(3);
|
||
|
break;
|
||
|
case 'o':
|
||
|
printf("You are trying to Output info\n");
|
||
|
break;
|
||
|
case 'm':
|
||
|
printf("You are trying to Make things ordered\n");
|
||
|
break;
|
||
|
case 'q':
|
||
|
printf("You are about to Quit\n");
|
||
|
break;
|
||
|
default:
|
||
|
printf("Wrong input\n");
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
int main() {
|
||
|
char a[100];
|
||
|
manage();
|
||
|
modifyStudent();
|
||
|
printStudentOriginalScore();
|
||
|
return 0;
|
||
|
}
|