学生成绩统计及查询系统.txt
来自「1.输入学生的学号、姓名及各科成绩 2.全班按总分排名 3.全班平均分 各单科平」· 文本 代码 · 共 284 行
TXT
284 行
#include<stdio.h>
#include<string.h>
#define N 100
#define M 6
struct student
{char number[10];
char name[10];
float sum;
float avr;
}stu[N];
void main()
{
char x;
void dos();
/* 出现界面 */
void input_stu(void); /* 输入学生的学号、姓名及各科成绩 */
void choice1(void); /*全班按总分排名 */
void choice2(void); /*全班各学生按平均分排名*/
void choice3(void); /*全班平均分 各单科平均分 各单科及格人数 */
void choice4(void); /*以学号或姓名查成绩 以及查一科以上不及格的学生名单 */
void choice5(void); /* 查一科以上不及格的学生名单 */
void choice6(void); /* 统计每科成绩大于等于80分 并且平均分大于等于90分的学生名单*/
void choice7(void); /*显示所有的学生成绩名单*/
dos(); /* 出现界面 */
input_stu(); /* 调用子函数——输入数据 */
printf("请选择功能键: \n“);
scanf("%d",&x);
while(x>=8)
{printf("\n输入有误,请重输");
scnaf("%d",&x);
}
switch(x)
{case 1:choice1(void);break;
case 2:choice2(void);break;
case 3:choice3(void);break;
case 4;choice4(void);break;
case 5:choice5(void);break;
case 6:choice6(void);break;
case 7:choice7(void);break;
default: dummy(){};
}
void dos(void)
{
int N,M;
printf("-------------------------------------------------------------------------\n");
printf("| |\n");
printf("| |\n");
printf("| **** **** |\n");
printf("| **** 欢迎进入 **** |\n");
printf("| **** 学生成绩统计及查询 **** |\n");
printf("| **** 系统 **** |\n");
printf("| **** **** |\n");
printf("| |\n");
printf("| |\n");
printf("-------------------------------------------------------------------------\n");
printf("请您确定学生数目(小于等于100): ");
scanf("%d",&N);
printf("请您确定科目数目(小于等于6): ");
scanf("%d",&M);
char direction[]={"功能键说明\n 输入学生的学号、姓名及各科成绩\n1——全班按总分排名\n
2——全班各学生按平均分排名\n3——全班平均分 各单科平均分 各单科及格人数 \n
4——以学号或姓名查成绩 以及查一科以上不及格的学生名单\n
5——查一科以上不及格的学生名单\n
6——统计每科成绩大于等于80分并且平均分大雨等于90分的学生名单\n
7——显示所有的学生成绩名单\n0——退出系统\n "};
puts(direction);
}
void input_stu(void)
{int i,j;
for(i=0;i<n;i++)
{printf("请输第%个学生的学号 姓名及各科成绩(注意学号不能为"00"):\n",i+1);
printf("学号: ");
scanf("%s",stu[i].number);
printf("姓名: ");
scanf("%s",stu[i].name);
for(j=0;j<M;j++)
{printf("成绩%d: ",j+1);
scanf("%f",&stu[i].score[j]);
}
}
}
void choice1(void) /*全班按总分排名 */
{int i,j ;
char temp1[N],temp2[N],temp3[N];
float sum,max;
for(i=0;i<N;i++)
{
printf("%5s%10s',stu[i].number,stu[i].name;
}
for(j=0,sum=0;j<M;;j++)
sum+=stu[i].score[j]; /*计算第i个学生总分及平均分*/
stu[i].sum=sum;
stu[i].are=sum/M.0;
for(j=1;j<=N-1;j++)
for(i=0;i<=N-j;i++)
if(stu[i].sum<stu[i+1].sum0
{max=stu[i].sum;stu[i].sum=stu[i+1].sum;stu[i].sum=max;}
strcpy(temp1,stu[N].number);
strcpy(temp2,stu[N].name);
strcpy(tempy3,stu[N].sum);
for(i=0;i<N;i++)
printf("%d %10s %9.2f \n",temp1[i],temp2[i],temp3[i]);
}
void choice2(void) /* 平均分来排名 */
{int i,j ;
char temp1[N],temp2[N],temp3[N];
float sum,max;
for(i=0;i<N;i++)
{
printf("%5s%10s',stu[i].number,stu[i].name;
}
for(j=1;j<=N-1;j++)
for(i=0;i<=N-j;i++)
if(stu[i].avr<stu[i+1].avr)
{max=stu[i].avr;stu[i].avr=stu[i+1].avr;stu[i+1].avr=max;}
strcpy(temp1,stu[N].number);
strcpy(temp2,stu[N].name);
strcpy(tempy3,stu[N].sum);
for(i=0;i<N;i++)
printf("%d %10s %9.2f \n",temp1[i],temp2[i],temp3[i]);
}
float sum,max;
for(i=0;i<N;i++)
{
printf("%5s%10s',stu[i].number,stu[i].name;
}
for(j=1;j<=N-1;j++)
for(i=0;i<=N-j;i++)
if(stu[i].avr<stu[i+1].avr)
{max=stu[i].avr;stu[i].avr=stu[i+1].avr;stu[i+1].avr=max;}
strcpy(temp1,stu[N].number);
strcpy(temp2,stu[N].name);
strcpy(tempy3,stu[N].sum);
for(i=0;i<N;i++)
printf("%d %10s %9.2f \n",temp1[i],temp2[i],temp3[i]);
}
void choice3(void) /*全班平均分 各单科平均分 各单科及格人数 */
void choice4(void) //查询学生成绩———学号或姓名
{int x;
printf(" 请您选择查询的方式:\n
1——按学号查询\n
2——按姓名查询\n")
scnaf("%d",&x);
switch(x)
{case 1:void choice4(1)(void) ;break;
default :printf("\n");
}
void choice4(1)(void) //只用学号查询学生成绩
{int i;
printf("请输入您要查询的学号: \n");
scanf("%d",&i);
if(i=0)
{printf("\n输入无效 请继续输入: \n");break;
}
if(i>N)
{printf("\n输入无效 请继续输入: \n");
scanf("%d",&i);
if(i==0) break;
}
printf("学号 姓名 score1 score2 score3 score5 score6\n");
Printf("%2.0f %10s",stu[i].number,stu[i].name);
for(j=0;j<m;j++)
printf("%3.1f",stu[i].score[j]);
printf("%5.1f%5.1f\n",stu[i].sum,stu[i].avr);
}
void choice4(2)(void) //用姓名查询成绩
{char temp[] //定义一个临时数组
printf("请输入您要查询的姓名: \n");
scanf("%s",&temp[]);
printf("学号 姓名 score1 score2 score3 score5 score6\n");
for(i=0;i<=N;i++)
{if(temp[]==stu[i].name)
Printf("%2.0f %10s",stu[i].number,stu[i].name);
for(j=0;j<m;j++)
printf("%3.1f",stu[i].score[j]);
printf("%5.1f%5.1f\n",stu[i].sum,stu[i].avr);
}
}
void choice5(void) //显示不及格学生学号 姓名 成绩 不及格科目数
{int i,j,k=0;
printf("学号 姓名 score1 score2 score3 score5 score6\n");
for(i=0;i<=N;i++)
{for(j=0;j<=M;j++)
{if(stu[i].score[j]<60) k++;
}
if(k!=0) frintf("%2.0f %10s %d",stu[i].number,stu[i].name,k);
for(j=0;j<m;j++)
printf("3.1f",stu[i].score[j]);
}
}
void choice6(void) //统计每科成绩>=80分且平均分>=90分名单
{int i,j,k=0;
Printf("每科成绩>=80分且平均分>=90分名单\n
学号 姓名 score1 score2 score3 score5 score6\n");
for(i=0;i<=N;i++)
{ for(j=0;j<=M;j++)
{if(stu[i].score[j]>=80||stu[i].avr>=90)
k++;}
if(k==M)
{frintf("%2.0f %10s",stu[i].number,stu[i].name);
printf("3.1f",stu[i].score[j]);
}
}
void choice7(void) //显示所有学生名单
{int i,j;
printf("学号 姓名 score1 score2 score3 score5 score6\n");
for(i=0;i<=N;i++)
{frintf("%2.0f %10s",stu[i].number,stu[i].name);
for(j=0;j<=M;j++)
printf("3.1f",stu[i].score[j]);
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?