#include <stdio.h>
#include <string.h>
#define N 20
int i,j,n,m,lll=0,renshu=6;
double zcj[N]={0};struct stu{ char num[10]; //学号char name[10]; //姓名char sex; //姓别double score[3]; //3 门课的成绩double sum; //3 门课的总分double aver; //3 门课的平均分
}temp,STU[N]={{"115101", "LiMin", 'M', {76,78,82}},{"115102", "WangRui", 'F', {80,85,89}},{"115103", "ZhaoQin", 'F', {65,75,80}},{"115104", "ZhouYu", 'M', {95,92,88}},{"115105", "GuoHui", 'M', {70,73,74}},{"115106", "ZengPin", 'F', {87,90,94}}};;
char num1[7]={'1','2','3','a','b','c','\0'};
char zum[7];
void xhcz(){//按学号查找学生printf("**************************************************************\n");printf("\t\t 按学号查找学生记录\n");printf("**************************************************************\n");
for(i=0;i<renshu;i++){for(j=0;j<3;j++){zcj[i]+=STU[i].score[j];}}
char xx[N];
printf("请输入待查找的学生学号:");
scanf("%s",xx);
int sss=0;printf("学号\t姓名\t性别\t3门课成绩\t\t\t\t\t总分\t\t平均分\n"); for(i=0;i<renshu;i++){if(strcmp(xx,STU[i].num)==0){printf("%s\t",STU[i].num);printf("%s\t",STU[i].name);printf("%c\t",STU[i].sex);for(j=0;j<3;j++){printf("%lf\t",STU[i].score[j]);}printf("%lf\t%lf\n\n",zcj[i],zcj[i]/3);sss=1;break;}}if(sss==0)printf("查找失败,没有指定学号的学生\n\n");return; }
void xmcz(){//按姓名查找学生for(i=0;i<renshu;i++){for(j=0;j<3;j++){zcj[i]+=STU[i].score[j];}}printf("**************************************************************\n");printf("\t\t 按姓名查找学生记录\n");printf("**************************************************************\n");char xx[N];printf("请输入待查找的学生姓名:");scanf("%s",xx); int sss=0;printf("学号\t姓名\t性别\t3门课成绩\t\t\t\t\t总分\t\t平均分\n"); for(i=0;i<renshu;i++){if(strcmp(xx,STU[i].name)==0){printf("%s\t",STU[i].num);printf("%s\t",STU[i].name);printf("%c\t",STU[i].sex);for(j=0;j<3;j++){printf("%lf\t",STU[i].score[j]);}printf("%lf\t%lf\n\n",zcj[i],zcj[i]/3);sss=1;break;}}if(sss==0)printf("查找失败,没有指定姓名的学生\n\n");return ;
}
void pjfj(){//按平均分降序排序printf("**************************************************************\n");printf("\t\t按平均分降序排序的学生记录\n");printf("**************************************************************\n");printf("学号\t姓名\t性别\t3门课成绩\t\t\t\t\t总分\t\t平均分\n");
for(i=0;i<renshu;i++){for(j=0;j<3;j++){zcj[i]+=STU[i].score[j];}}for(i=0;i<renshu-1;i++){for(j=i+1;j<renshu;j++){if(zcj[i]<zcj[j]){double l=zcj[i];zcj[i]=zcj[j];zcj[j]=l;temp=STU[j];STU[j]=STU[i];STU[i]=temp;}}}for(i=0;i<renshu;i++){printf("%s\t",STU[i].num);printf("%s\t",STU[i].name);printf("%c\t",STU[i].sex);for(j=0;j<3;j++){printf("%lf\t",STU[i].score[j]);}printf("%lf\t%lf\n",zcj[i],zcj[i]/3);}return ;
}
void lzzg(){//出总分最高的学生记录printf("**************************************************************\n");printf("\t\t 总分最高的学生记录\n");printf("**************************************************************\n");printf("学号\t姓名\t性别\t3门课成绩\t\t\t\t\t总分\t\t平均分\n"); for(i=0;i<renshu;i++){for(j=0;j<3;j++){zcj[i]+=STU[i].score[j];}}int x=0;for(i=0;i<renshu;i++){if(zcj[i]>zcj[x])x=i;//x为最高 }printf("%s\t",STU[x].num);printf("%s\t",STU[x].name);printf("%c\t",STU[x].sex);for(j=0;j<3;j++){printf("%lf\t",STU[x].score[j]);}printf("%lf\t%lf\n",zcj[x],zcj[x]/3);return; }
void xsjl(){//列出所以学生记录printf("**************************************************************\n");printf("\t\t\t所以学生记录\n");printf("**************************************************************\n");printf("学号\t姓名\t性别\t3门课成绩\t\t\t\t\t总分\t\t平均分\n"); for(i=0;i<renshu;i++){double ssum=0;printf("%s\t",STU[i].num);printf("%s\t",STU[i].name);printf("%c\t",STU[i].sex);for(j=0;j<3;j++){printf("%lf\t",STU[i].score[j]);ssum+=STU[i].score[j];}printf("%lf\t%lf\n",ssum,ssum/3);}return ;
}
void gaimima(){//改密码 printf("请输入原来的密码:");for(i=0;i<6;i++){scanf("%c",&zum[i]);}putchar('\n');printf("请输入新密码:");for(i=0;i<6;i++){scanf("%c",&num1[i]);}printf("修改密码成功\n\n");return;
}
void dayin(){//打印标识选择 printf("密码正确,进入系统\n\n\n"); printf("******************************\n");printf("\t学生成绩管理系统\n");printf("******************************\n");printf("1.修改密码\n");printf("2.列出所以学生记录\n");printf("3.列出总分最高的学生记录\n");printf("4.按平均分降序排序\n");printf("5.按姓名查找学生\n");printf("6.按学号查找学生\n");printf("7.退出学生成绩管理系统\n");printf("******************************\n\n");
}
void czxx(){//操作选项 while(1){printf("请输入选项值:");scanf("%d",&j);switch(j){case 1:gaimima();break;//修改密码case 2:xsjl();break;//列出所以学生记录case 3:lzzg();break;//出总分最高的学生记录case 4:pjfj();break;//按平均分降序排序case 5:xmcz();break;//按姓名查找学生case 6:xhcz();break;//按学号查找学生
// case 7:exit(0);break;//退出学生成绩管理系统}}
}
int main(){printf("进入学生成绩管理系统,请输入6位密码:\n");for(i=2;i>=0;i--){gets(zum);if(strcmp(num1,zum)==0){dayin();//打印标识选择czxx();//操作选项}else{printf("密码错误,还剩%d次机会\n\n",i);}}return 0;
}