#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(" 学生成绩查询系统 \n"); printf(" ************************************************************************\n"); printf(" 1. : 新建学生信息\n 2 : 查询学生信息\n 3 : 修改学生信息\n 4 : 删除学生信息\n 5 : 输出学生信息,并按平均成绩排序\n 0 : 退出\n"); printf(" ************************************************************************\n"); scanf("%d",&i); if(i==1) { printf("新建学生信息:\n"); new_student(); } else if(i==2) { printf("输入要查询的学生的学号:\n"); scanf("%d",&num); search_student(num); } else if(i==3) { printf("输入要修改的学生的学号:\n"); scanf("%d",&num); printf("选择修改的科目:1.数学 2.英语 3.电脑\n"); scanf("%d",&course); printf("输入新的成绩:\n"); scanf("%d",&score); update_student(num,course,score); } else if(i==4) { printf("输入要删除的学生的学号:\n"); scanf("%d",&num); delete_student(num); } else if(i==5) { printf("根据学生平均分进行排序:\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("输入学号、姓名、数学成绩、英语成绩、电脑成绩:\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学生成绩录入成功!\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("学 号:%d \n姓 名:%s \n数 学:%d \n英 语:%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("无信息\n"); return; } for(i=0; i<n; i++) { printf("输入第%d个学生成绩 学号 姓名 电脑成绩 英语成绩 数学成绩\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("无信息\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); } }
|
|