#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct student {
char num;
char name[10];
int s1,s2,s3;
double avg;
} stu[50],t;
int count=0;
void new_student();
void search_student(int num);
void update_student(int num,int course,int score);
void delete_student(int num);
void output_student();
void sort_student ();
int main(void) {
int i,num,course,score;
while(1) {
printf(" 學(xué)生成績(jì)查詢(xún)系統 \n");
printf(" ************************************************************************\n");
printf(" 1. : 新建學(xué)生信息\n 2 : 查詢(xún)學(xué)生信息\n 3 : 修改學(xué)生信息\n 4 : 刪除學(xué)生信息\n 5 : 輸出學(xué)生信息,并按平均成績(jì)排序\n 0 : 退出\n");
printf(" ************************************************************************\n");
scanf("%d",&i);
if(i==1) {
printf("新建學(xué)生信息:\n");
new_student();
} else if(i==2) {
printf("輸入要查詢(xún)的學(xué)生的學(xué)號:\n");
scanf("%d",&num);
search_student(num);
} else if(i==3) {
printf("輸入要修改的學(xué)生的學(xué)號:\n");
scanf("%d",&num);
printf("選擇修改的科目:1.數學(xué) 2.英語(yǔ) 3.電腦\n");
scanf("%d",&course);
printf("輸入新的成績(jì):\n");
scanf("%d",&score);
update_student(num,course,score);
} else if(i==4) {
printf("輸入要刪除的學(xué)生的學(xué)號:\n");
scanf("%d",&num);
delete_student(num);
} else if(i==5) {
printf("根據學(xué)生平均分進(jìn)行排序:\n");
sort_student ();
}
if(i!=1&&i!=2&&i!=3&&i!=4&&i!=5&&i!=0) {
printf("輸入錯誤,請重新輸入!\n");
}
if(i==0) break;
}
return 0;
}
void new_student() {
int i,n;
printf("輸入要統計的人數:\n");
scanf("%d",&n);
printf("輸入學(xué)號、姓名、數學(xué)成績(jì)、英語(yǔ)成績(jì)、電腦成績(jì):\n");
if(count==50) {
printf("error!\n");
return;
}
for(i=0; i<n; i++) {
scanf("%d%s%d%d%d",&stu[i].num,stu[i].name,&stu[i].s1,&stu[i].s2,&stu[i].s3);
stu[i].avg=(stu[i].s1+stu[i].s2+stu[i].s3)/3.0;
count++;
}
printf("\n學(xué)生成績(jì)錄入成功!\n\n");
}
void search_student(int num) {
int i;
if(count==0) {
printf("error\n");
return;
}
for(i=0; i<count; i++) {
if(stu[i].num==num) {
printf("學(xué) 號:%d \n姓 名:%s \n數 學(xué):%d \n英 語(yǔ):%d \n電 腦:%d \n平均分:%.2lf \n",stu[i].num,stu[i].name,stu[i].s1,stu[i].s2,stu[i].s3,stu[i].avg);
break;
} else {
}
}
}
void update_student(int num,int course,int score) {
int i;
for(i=0; i<count; i++) {
if(stu[i].num==num) {
break;
}
}
if(i<count) {
switch(course) {
case 1:
stu[i].s1=score;
break;
case 2:
stu[i].s2=score;
break;
case 3:
stu[i].s3=score;
break;
}
stu[i].avg=(stu[i].s1+stu[i].s2+stu[i].s3)/3.0;
}
}
void delete_student(int num) {
int i,j;
for(i=0; i<count; i++) {
if(stu[i].num==num) {
for(j=i; j<count; j++) {
stu[j]=stu[j+1];
}
count=count-1;
}
}
}
void output_student() {
int i,n;
if(count==0) {
printf("無(wú)信息\n");
return;
}
for(i=0; i<n; i++) {
printf("輸入第%d個(gè)學(xué)生成績(jì) 學(xué)號 姓名 電腦成績(jì) 英語(yǔ)成績(jì) 數學(xué)成績(jì)\n");
scanf("%s %s %s %s %s %s %s ",&stu[i].num,&stu[i].name,&stu[i].s1,&stu[i].s2,&stu[i].s3);
}
}
void sort_student () {
int i,index,j;
if(count==0) {
printf("無(wú)信息\n");
return;
}
for(i=0; i<count-1; i++) {
index=i;
for(j=i+1; j<count; j++) {
if(stu[j].avg<stu[index].avg) {
index=j;
}
}
t=stu[index];
stu[index]=stu[i];
stu[i]=t;
}
for(i=0; i<count; i++) {
printf("%d %s %d %d %d %.2lf\n",stu[i].num,stu[i].name,stu[i].s1 ,stu[i].s2,stu[i].s3,stu[i].avg);
}
}