#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;
}