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