parent
3c9bd2291f
commit
6f464bd275
@ -0,0 +1,159 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
typedef struct Student
|
||||
{
|
||||
char *id;
|
||||
int cl;
|
||||
char *name;
|
||||
float score1;
|
||||
float score2;
|
||||
float score3;
|
||||
float total_score;
|
||||
}Student;
|
||||
void mainmenu()
|
||||
{
|
||||
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");
|
||||
}
|
||||
void inputStudentinfo(Student *students,int *size)
|
||||
{
|
||||
printf("Id ");
|
||||
students[*size].id=(char *)malloc(sizeof(char)*10);
|
||||
scanf("%s",students[*size].id);
|
||||
printf("class ");
|
||||
scanf("%d",&students[*size].cl);
|
||||
printf("name ");
|
||||
students[*size].name=(char *)malloc(sizeof(char)*10);
|
||||
scanf("%s",students[*size].name);
|
||||
printf("score1 ");
|
||||
scanf("%f",&students[*size].score1);
|
||||
printf("score2 ");
|
||||
scanf("%f",&students[*size].score2);
|
||||
printf("score3 ");
|
||||
scanf("%f",&students[*size].score3);
|
||||
(*size)++;
|
||||
}
|
||||
void deleteinfo(Student* students, int* size)
|
||||
{
|
||||
char id[10];
|
||||
scanf("%s",id);
|
||||
int i;
|
||||
for (i=0;i<*size;++i) {
|
||||
if (strcmp(students[i].id,id) == 0) {
|
||||
free(students[i].id);
|
||||
free(students[i].name);
|
||||
students[i]=students[--(*size)];
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
void select(Student* students,int size)
|
||||
{
|
||||
char input[10];
|
||||
int i,index=0;
|
||||
scanf("%s",input);
|
||||
if(strlen(input)<=2){
|
||||
int cl=atoi(input);
|
||||
for(i=0;i<size;i++){
|
||||
if(students[i].cl==cl){
|
||||
printf("%s %d %s %.2f %.2f %.2f\n",students[i].id,students[i].cl,students[i].name,students[i].score1,students[i].score2,students[i].score3);
|
||||
index=1;
|
||||
}
|
||||
}
|
||||
}
|
||||
else{
|
||||
for(i=0;i<size;i++){
|
||||
if(strcmp(students[i].id,input)==0){
|
||||
printf("%s %d %s %.2f %.2f %.2f\n",students[i].id,students[i].cl,students[i].name,students[i].score1,students[i].score2,students[i].score3);
|
||||
index=1;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(!index){
|
||||
printf("There is no eligible student.\n");
|
||||
}
|
||||
}
|
||||
void sort(Student* students,int size)
|
||||
{
|
||||
int i,j;
|
||||
for(i=0;i<size - 1;++i) {
|
||||
for(j=0;j<size-1-i;++j) {
|
||||
if(students[j].cl>students[j + 1].cl){
|
||||
Student temp=students[j];
|
||||
students[j]=students[j + 1];
|
||||
students[j + 1]=temp;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
void output(Student* students,int size)
|
||||
{
|
||||
int i;
|
||||
for(i=0;i<size;++i) {
|
||||
printf("%s %d %s %.2f %.2f %.2f\n", students[i].id, students[i].cl, students[i].name, students[i].score1, students[i].score2, students[i].score3);
|
||||
}
|
||||
}
|
||||
int main()
|
||||
{
|
||||
Student students[100];
|
||||
int size=0;
|
||||
int option;
|
||||
int lastop=-1;
|
||||
char continueFlag[10];
|
||||
int runflag=1;
|
||||
while(runflag){
|
||||
mainmenu();
|
||||
if(lastop==-1){
|
||||
scanf("%d",&option);
|
||||
}
|
||||
else{
|
||||
option=lastop;
|
||||
}
|
||||
do
|
||||
{
|
||||
switch (option) {
|
||||
case 1:
|
||||
inputStudentinfo(students,&size);
|
||||
break;
|
||||
case 2:
|
||||
deleteinfo(students,&size);
|
||||
output(students,size);
|
||||
break;
|
||||
case 3:
|
||||
select(students,size);
|
||||
|
||||
break;
|
||||
case 4:
|
||||
sort(students,size);
|
||||
output(students,size);
|
||||
mainmenu();
|
||||
break;
|
||||
case 5:
|
||||
output(students,size);
|
||||
mainmenu();
|
||||
break;
|
||||
case 6:
|
||||
runflag=0;
|
||||
break;
|
||||
}
|
||||
if(runflag){
|
||||
printf("continue?\n");
|
||||
scanf(" %s", continueFlag);
|
||||
if(strcmp(continueFlag,"yes")==0){
|
||||
lastop=option;
|
||||
}else if(strcmp(continueFlag,"no")==0){
|
||||
lastop=-1;
|
||||
}else{
|
||||
lastop=atoi(continueFlag);
|
||||
}
|
||||
}
|
||||
}while(strcmp(continueFlag,"yes")==0&&runflag);
|
||||
}
|
||||
return 0;
|
||||
}
|
Loading…
Reference in new issue