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.

177 lines
4.6 KiB

#include <stdio.h>
#include <string.h>
#define MAX_STUDENTS 100
typedef struct
{
char id[20];
char class[20];
char name[20];
float score1, score2, score3;
} Student;
int numStudents=0; // ¼Ç¼µ±Ç°Ñ§ÉúµÄÊýÁ¿
Student students[MAX_STUDENTS];
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()
{
printf("ID ");
scanf("%s", students[numStudents].id);
printf("class: ");
scanf("%s", &(students[numStudents].class));
printf("name: ");
scanf("%s", students[numStudents].name);
printf("score1: ");
scanf("%f", &(students[numStudents].score1));
printf("score2: ");
scanf("%f", &(students[numStudents].score2));
printf("score3: ");
scanf("%f", &(students[numStudents].score3));
numStudents++;
}
void deleteStudent()
{
char idOrName[20];
scanf("%s", idOrName);
int i, j;
int found = 0;
for (i = 0; i < numStudents; i++)
{
if (strcmp(students[i].id, idOrName) == 0 || strcmp(students[i].name, idOrName) == 0)
{
found = 1;
for (j = i; j < numStudents - 1; j++)
{
students[j] = students[j + 1];
}
numStudents--;
break;
}
}
for ( i = 0; i < numStudents; i++)
{
printf("%s %s %s %.1f %.1f %.1f\n", students[i].id, students[i].class, students[i].name, students[i].score1, students[i].score2, students[i].score3);
}
}
void selectStudent()
{
char idOrName[20];
scanf("%s", idOrName);
int i,j;
int f=0;
for (i = 0; i < numStudents; i++)
{
if (strcmp(students[i].id, idOrName) == 0 || strcmp(students[i].name, idOrName) == 0)
{
f=1;
printf("%s %s %s %.1f %.1f %.1f\n", students[i].id, students[i].class, students[i].name, students[i].score1, students[i].score2, students[i].score3);
}
}
if(f==0) printf("there is no eligible student\n");
}
void orderStudent()
{
int i,j;
for (i = 0; i < numStudents; i++)
{
for (j=i+1;j<numStudents;j++)
{
if (students[i].class > students[j].class || (students[i].class == students[j].class && students[i].score1 + students[i].score2 + students[i].score3 < students[j].score1 + students[j].score2 + students[j].score3))
{
Student temp = students[j];
students[j] = students[i];
students[i] = temp;
}
}
}
for ( i = 0; i < numStudents; i++)
{
printf("%s %s %s %.1f %.1f %.1f\n", students[i].id, students[i].class, students[i].name, students[i].score1, students[i].score2, students[i].score3);
}
}
void printStudent()
{
int i=0;
for (i = 0; i < numStudents; i++)
{
printf("%s %s %s %.1f %.1f %.1f\n", students[i].id, students[i].class, students[i].name, students[i].score1, students[i].score2, students[i].score3);
}
}
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;
}
//showMenu();
}
}