#include<stdio.h>
#include<stdlib.h>
#include<string.h>
/*包含必要的头文件*/
void menu();/*显示菜单函数*/
void addnew();/*增加学生信息*/
void display();/*显示全部信息*/
void find();/*查找学生*/
void sortmenu();/*排序菜单*/
void bjpx(int);/*按班级排序*/
void selec();/*选择排序的班级号码*/
void qnz();/*全年组排序*/
void total();/*统计菜单*/
void jige();/*统计及格人数*/
void yxl();/*统计优秀率*/
void pjf();/*统计平均分*/
void my_max();/*统计最大值 max函数是库函数重名 所以加了my_区别不同*/
/*函数声明*/
struct student
{
int bj;//班级
int xh;//学号
int gs;//高数
int yy;//英语
int C;//C语言
int sx;//思修
int jds;//近代史
int zf; //总分
}stu[5][20];
int NUM[5];/*记录班级人数*/
/*主函数*/
int main()
{
int n;
do
{
system("cls");
//清除屏幕
menu();
scanf("%d",&n);
switch(n)
{
case 0:break;
case 1:addnew();break;
case 2:display();break;
case 3:sortmenu();break;
case 4:find();break;
case 5:total();break;
}
}while(n!=0);
//死循环获取菜单选择进入相应函数
return 0;
}
/*菜单 让用户观看*/
void menu()
{
printf("1:输入学生信息\n");
printf("2:输出学生信息\n");
printf("3:排序学生信息\n");
printf("4:查询学生信息\n");
printf("5:分数统计\n");
printf("0:退出\n");
printf("请输入选项:");
}
/*添加新学生信息*/
void addnew()
{
int num;
system("cls");
printf("请输入班级:\n");
scanf("%d",&num);
num--;//如果输入1,则实际保存在0,数组下标0开始
stu[num][NUM[num]].bj=num;
printf("请输入学号:\n");
scanf("%d",&stu[num][NUM[num]].xh);
printf("请输入高数成绩:\n");
scanf("%d",&stu[num][NUM[num]].gs);
printf("请输入英语成绩:\n");
scanf("%d",&stu[num][NUM[num]].yy);
printf("请输入C语言成绩:\n");
scanf("%d",&stu[num][NUM[num]].C);
printf("请输入思修成绩:\n");
scanf("%d",&stu[num][NUM[num]].sx);
printf("请输入近代史成绩:\n");
scanf("%d",&stu[num][NUM[num]].jds);
stu[num][NUM[num]].zf=stu[num][NUM[num]].gs+stu[num][NUM[num]].C+stu[num][NUM[num]].jds+stu[num][NUM[num]].sx+stu[num][NUM[num]].yy;
//总分需要各项相加
NUM[num]++;//这个班级人数+1
printf("输入成功!\n");
system("pause");
}
/*显示全部学生信息*/
void display()
{
int i,j;
system("cls");
printf("班级\t学号\t高数\t英语\tC语言\t思修\t近代史\n");
for(i=0;i<5;i++)
{
for(j=0;j<NUM[i];j++)
{
printf("%d\t",i+1);
printf("%d\t",stu[i][j].xh);
printf("%d\t",stu[i][j].gs);
printf("%d\t",stu[i][j].yy);
printf("%d\t",stu[i][j].C);
printf("%d\t",stu[i][j].sx);
printf("%d\n",stu[i][j].jds);
}
}
system("pause");
/*暂停屏幕函数*/
}
/*查找函数*/
void find()
{
int i,j,num,flag=0;
system("cls");
printf("请输入要查询的学号:\n");
scanf("%d",&num);
printf("班级\t学号\t高数\t英语\tC语言\t思修\t近代史\n");
for(i=0;i<5;i++)
{
for(j=0;j<NUM[i];j++)
{
if(stu[i][j].xh==num)
{
printf("%d\t",i+1);
printf("%d\t",stu[i][j].xh);
printf("%d\t",stu[i][j].gs);
printf("%d\t",stu[i][j].yy);
printf("%d\t",stu[i][j].C);
printf("%d\t",stu[i][j].sx);
printf("%d\n",stu[i][j].jds);
flag++;//如果查找到 输出学生信息,并且flag++
}
}
}
if(flag==0)
{
printf("查不到该学号!\n");
//如果一次都没找到 flag没有++过 为0 就显示找不到
}
system("pause");
}
/*排序菜单*/
void sortmenu()
{
int n;
system("cls");
printf("1:班级内部\n");
printf("2:全年组\n");
printf("请选择排序方式\n");
scanf("%d",&n);
switch(n)
{
case 1:selec();break;
case 2:qnz();break;
}
}
/*班级选择菜单*/
void selec()
{
int n;
printf("请选择班级\n");
printf("请输入1-5\n");
scanf("%d",&n);
bjpx(n-1);
//数组下标是0-4 输入的时候是1-5所以-1
}
/*参数b代表要排序的班级*/
void bjpx(int b)
{
int n;
int i,j;
struct student temp;
printf("1:按高数排名输出\n");
printf("2:按英语排名输出\n");
printf("3:按C语言排名输出\n");
printf("4:按思修排名输出\n");
printf("5:按近代史排名输出\n");
printf("6:按总分排名输出\n");
printf("请选择排序方式\n");
scanf("%d",&n);
switch(n)
{
case 1:
for (i=0;i<NUM[b];i++)
{
if(stu[b][i].gs<stu[b][i+1].gs)
{
temp=stu[b][i];
stu[b][i]=stu[b][i+1];
stu[b][i+1]=temp;
}
}
//利用选择排序 对数据进行排序处理
break;
case 2:
for (i=0;i<NUM[b];i++)
{
if(stu[b][i].yy<stu[b][i+1].yy)
{
temp=stu[b][i];
stu[b][i]=stu[b][i+1];
stu[b][i+1]=temp;
}
}
break;
case 3:
for (i=0;i<NUM[b];i++)
{
if(stu[b][i].C<stu[b][i+1].C)
{
temp=stu[b][i];
stu[b][i]=stu[b][i+1];
stu[b][i+1]=temp;
}
}
break;
case 4:
for (i=0;i<NUM[b];i++)
{
if(stu[b][i].sx<stu[b][i+1].sx)
{
temp=stu[b][i];
stu[b][i]=stu[b][i+1];
stu[b][i+1]=temp;
}
}
break;
case 5:
for (i=0;i<NUM[b];i++)
{
if(stu[b][i].jds<stu[b][i+1].jds)
{
temp=stu[b][i];
stu[b][i]=stu[b][i+1];
stu[b][i+1]=temp;
}
}
break;
case 6:
for (i=0;i<NUM[b];i++)
{
if(stu[b][i].zf<stu[b][i+1].zf)
{
temp=stu[b][i];
stu[b][i]=stu[b][i+1];
stu[b][i+1]=temp;
}
}
break;
}
printf("班级\t学号\t高数\t英语\tC语言\t思修\t近代史\n");
for(j=0;j<NUM[b];j++)
{
printf("%d\t",stu[b][j].bj+1);
printf("%d\t",stu[b][j].xh);
printf("%d\t",stu[b][j].gs);
printf("%d\t",stu[b][j].yy);
printf("%d\t",stu[b][j].C);
printf("%d\t",stu[b][j].sx);
printf("%d\n",stu[b][j].jds);
}
//输出排序后的信息
system("pause");
}
void qnz()
{
int n;
int i,j,k,m;
struct student temp;
printf("1:按高数排名输出\n");
printf("2:按英语排名输出\n");
printf("3:按C语言排名输出\n");
printf("4:按思修排名输出\n");
printf("5:按近代史排名输出\n");
printf("6:按总分排名输出\n");
printf("请选择排序方式\n");
scanf("%d",&n);
switch(n)
{
case 1:
for(j=0;j<5;j++)
for (i=0;i<NUM[j];i++)
{
for(k=0;k<5;k++)
for(m=0;m<NUM[k];k++)
if(stu[j][i].gs<stu[k][m].gs)
{
temp=stu[j][i];
stu[j][i]=stu[k][m];
stu[k][m]=temp;
}
}
//用四重循环遍历全校学生信息进行排序
break;
case 2:
for(j=0;j<5;j++)
for (i=0;i<NUM[j];i++)
{
for(k=0;k<5;k++)
for(m=0;m<NUM[k];k++)
if(stu[j][i].yy<stu[k][m].yy)
{
temp=stu[j][i];
stu[j][i]=stu[k][m];
stu[k][m]=temp;
}
}
break;
case 3:
for(j=0;j<5;j++)
for (i=0;i<NUM[j];i++)
{
for(k=0;k<5;k++)
for(m=0;m<NUM[k];k++)
if(stu[j][i].C<stu[k][m].C)
{
temp=stu[j][i];
stu[j][i]=stu[k][m];
stu[k][m]=temp;
}
}
break;
case 4:
for(j=0;j<5;j++)
for (i=0;i<NUM[j];i++)
{
for(k=0;k<5;k++)
for(m=0;m<NUM[k];k++)
if(stu[j][i].sx<stu[k][m].sx)
{
temp=stu[j][i];
stu[j][i]=stu[k][m];
stu[k][m]=temp;
}
}
break;
case 5:
for(j=0;j<5;j++)
for (i=0;i<NUM[j];i++)
{
for(k=0;k<5;k++)
for(m=0;m<NUM[k];k++)
if(stu[j][i].jds<stu[k][m].jds)
{
temp=stu[j][i];
stu[j][i]=stu[k][m];
stu[k][m]=temp;
}
}
break;
case 6:
for(j=0;j<5;j++)
for (i=0;i<NUM[j];i++)
{
for(k=0;k<5;k++)
for(m=0;m<NUM[k];k++)
if(stu[j][i].zf<stu[k][m].zf)
{
temp=stu[j][i];
stu[j][i]=stu[k][m];
stu[k][m]=temp;
}
}
break;
}
printf("班级\t学号\t高数\t英语\tC语言\t思修\t近代史\n");
for(i=0;i<5;i++)
for(j=0;j<NUM[i];j++)
{
printf("%d\t",stu[i][j].bj+1);
printf("%d\t",stu[i][j].xh);
printf("%d\t",stu[i][j].gs);
printf("%d\t",stu[i][j].yy);
printf("%d\t",stu[i][j].C);
printf("%d\t",stu[i][j].sx);
printf("%d\n",stu[i][j].jds);
}
//输出排序后的信息
system("pause");
}
/*统计主菜单 */
void total()
{
int m;
printf("1:统计及格人数\n");
printf("2:统计优秀率\n");
printf("3:统计平均分\n");
printf("4:统计最高分\n");
printf("请输入选择:\n");
scanf("%d",&m);
switch(m)
{
case 1:
jige();
break;
case 2:
yxl();
break;
case 3:
pjf();
break;
case 4:
my_max();
break;
}
}
/*统计及格人数*/
void jige()
{
int n,i,j,sum=0;
printf("1:统计高数及格人数\n");
printf("2:统计英语及格人数\n");
printf("3:统计C语言及格人数\n");
printf("4:统计思修及格人数\n");
printf("5:统计近代史及格人数\n");
scanf("%d",&n);
switch(n)
{
case 1:
for(j=0;j<5;j++)
for (i=0;i<NUM[j];i++)
{
if(stu[j][i].gs<60)
{
sum++;
}
}//遍历全部学生,如果分数<60说明不及格 sum+1
printf("高数及格人数为%d\n",sum);
break;
case 2:
for(j=0;j<5;j++)
for (i=0;i<NUM[j];i++)
{
if(stu[j][i].yy<60)
{
sum++;
}
}
printf("英语及格人数为%d\n",sum);
break;
case 3:
for(j=0;j<5;j++)
for (i=0;i<NUM[j];i++)
{
if(stu[j][i].C<60)
{
sum++;
}
}
printf("C语言及格人数为%d\n",sum);
break;
case 4:
for(j=0;j<5;j++)
for (i=0;i<NUM[j];i++)
{
if(stu[j][i].sx<60)
{
sum++;
}
}
printf("思修及格人数为%d\n",sum);
break;
case 5:
for(j=0;j<5;j++)
for (i=0;i<NUM[j];i++)
{
if(stu[j][i].jds<60)
{
sum++;
}
}
printf("近代史及格人数为%d\n",sum);
break;
}
system("pause");
}
void yxl()
{
int n,i,j,sum=0,rs=0;
printf("1:统计高数优秀率\n");
printf("2:统计英语优秀率\n");
printf("3:统计C语言优秀率\n");
printf("4:统计思修优秀率\n");
printf("5:统计近代史优秀率\n");
scanf("%d",&n);
switch(n)
{
case 1:
for(j=0;j<5;j++)
{
for (i=0;i<NUM[j];i++)
{
if(stu[j][i].gs>=90)
{
sum++;
}
}
rs+=NUM[j];
}
//rs用来记录每个班人数之和
printf("高数优秀率为%g\n",sum*1.0/rs);
break;
case 2:
for(j=0;j<5;j++)
{
for (i=0;i<NUM[j];i++)
{
if(stu[j][i].yy>=90)
{
sum++;
}
}
rs+=NUM[j];
}
printf("英语优秀率为%g\n",sum*1.0/rs);
break;
case 3:
for(j=0;j<5;j++)
{
for (i=0;i<NUM[j];i++)
{
if(stu[j][i].C>=90)
{
sum++;
}
}
rs+=NUM[j];
}
printf("C语言优秀率为%g\n",sum*1.0/rs);
break;
case 4:
for(j=0;j<5;j++)
{
for (i=0;i<NUM[j];i++)
{
if(stu[j][i].sx>=90)
{
sum++;
}
}
rs+=NUM[j];
}
printf("思修优秀率为%g\n",sum*1.0/rs);
break;
case 5:
for(j=0;j<5;j++)
{
for (i=0;i<NUM[j];i++)
{
if(stu[j][i].jds>=90)
{
sum++;
}
}
rs+=NUM[j];
}
printf("近代史优秀率为%g\n",sum*1.0/rs);
break;
}
system("pause");
}
void pjf()
{
int n,i,j,sum=0,rs=0;
printf("1:统计高数平均分\n");
printf("2:统计英语平均分\n");
printf("3:统计C语言平均分\n");
printf("4:统计思修平均分\n");
printf("5:统计近代史平均分\n");
scanf("%d",&n);
switch(n)
{
case 1:
for(j=0;j<5;j++)
{
for (i=0;i<NUM[j];i++)
{
sum+=stu[j][i].gs;
}
rs+=NUM[j];
}
//rs同样是记录人数和
printf("高数平均分为%g\n",sum*1.0/rs);
break;
case 2:
for(j=0;j<5;j++)
{
for (i=0;i<NUM[j];i++)
{
sum+=stu[j][i].yy;
}
rs+=NUM[j];
}
printf("英语平均分为%g\n",sum*1.0/rs);
break;
case 3:
for(j=0;j<5;j++)
{
for (i=0;i<NUM[j];i++)
{
sum+=stu[j][i].C;
}
rs+=NUM[j];
}
printf("C语言平均分为%g\n",sum*1.0/rs);
break;
case 4:
for(j=0;j<5;j++)
{
for (i=0;i<NUM[j];i++)
{
sum+=stu[j][i].sx;
}
rs+=NUM[j];
}
printf("思修平均分为%g\n",sum*1.0/rs);
break;
case 5:
for(j=0;j<5;j++)
{
for (i=0;i<NUM[j];i++)
{
sum+=stu[j][i].jds;
}
rs+=NUM[j];
}
printf("近代史平均分为%g\n",sum*1.0/rs);
break;
}
system("pause");
}
void my_max()
{
int n,i,j,max=0;
printf("1:高数最高分\n");
printf("2:英语最高分\n");
printf("3:C语言最高分\n");
printf("4:思修最高分\n");
printf("5:近代史最高分\n");
scanf("%d",&n);
switch(n)
{
case 1:
for(j=0;j<5;j++)
{
for (i=0;i<NUM[j];i++)
{
if(max<stu[j][i].gs)
max=stu[j][i].gs;
//判断max是不是比这个学生的小,如果小,就换值
}
}
printf("高数最高分为%d\n",max);
break;
case 2:
for(j=0;j<5;j++)
{
for (i=0;i<NUM[j];i++)
{
if(max<stu[j][i].yy)
max=stu[j][i].yy;
}
}
printf("英语最高分为%d\n",max);
break;
case 3:
for(j=0;j<5;j++)
{
for (i=0;i<NUM[j];i++)
{
if(max<stu[j][i].C)
max=stu[j][i].C;
}
}
printf("C语言最高分为%d\n",max);
break;
case 4:
for(j=0;j<5;j++)
{
for (i=0;i<NUM[j];i++)
{
if(max<stu[j][i].sx)
max=stu[j][i].sx;
}
}
printf("思修最高分为%d\n",max);
break;
case 5:
for(j=0;j<5;j++)
{
for (i=0;i<NUM[j];i++)
{
if(max<stu[j][i].jds)
max=stu[j][i].jds;
}
}
printf("近代史最高分为%d\n",max);
break;
}
system("pause");
}
学生成绩管理系统
最新推荐文章于 2023-07-24 13:20:52 发布