⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 student.txt

📁 学生考试成绩统计管理系统编写程序完成某班学生考试成绩的统计管理
💻 TXT
字号:
学生考试成绩统计管理系统2007-02-14 02:11/* 编写程序完成某班学生考试成绩的统计管理,包括成绩输入函数、成绩显示函数,
并计算每位同学的总分、平均分,对成绩排名输出。*/
#include <stdio.h> /*标准输入、输出函数库*/
#include <string.h> /*字符串处理函数库*/
#include <stdlib.h> /*整数和字符串的转换函数*/
#define N 10 /*宏定义,第7章会介绍。设定班里学生的个数*/

/*学生考试成绩的统计管理主菜单*/
void main_mun();
/*输入学生的成绩*/
void input();
/*显示学生的成绩*/
void output();
/*计算学生的平均成绩*/
void average();
/*计算学生的总成绩*/
void sum_score();
/*对学生的成绩进行排名*/
void sort();

char student[N+1][12]={"王非","李丽","刘红","张伟","陈雷","赵丹","罗冰","钱惠云","孙杨","周正","差无此人"}; /*用来记录学生的姓名*/
float score[N][4]; /*用来记录学生的各门成绩(数学、语文、英语、政治)*/
float aver[N]; /*用来记录学生的平均成绩*/
float sum_sc[N]; /*用来记录学生的总成绩*/
int sor[N]; /*用来记录每个学生排名情况*/


int main()
{

int in; /*输入的选择转换成整数*/
int i,j; /*程序循环所用变量*/
char select[6]; /*用于主菜单选择的字符*/

for (i=0; i<N; i++) /*对学生成绩进行初始化*/
for (j=0; j<4; j++)
score[i][j]=0.00;
printf("学生考试成绩的统计管理\n");

main_mun();
gets(select);
while ((strcmp(select,"q")!=0)&&(strcmp(select,"Q")!=0))
{

in=atoi(select); /*将输入的字符串转换成整数*/
if( in != 0)
{

switch (in)
{

case 1:
{

input(); 
break;

}
case 2:
{

output();
break;

}
case 3:
{

average();
break;

}
case 4:
{

sum_score(); 
break;

}
case 5:
{

sort(); 
break;

}

default:

printf("输入的选择有错,请重输!\n");

}
main_mun();

}
gets(select);

}
printf("管理系统结束!!\n");
return 0;

}

/*学生考试成绩的统计管理主菜单*/
void main_mun()
{

printf("1: 输入学生的成绩\n");
printf("2: 显示学生的成绩\n");
printf("3: 计算学生的平均成绩\n");
printf("4: 计算学生的总成绩\n");
printf("5: 根据学生成绩排名次\n");
printf("请输入你的选择:(q(Q)退出)\n");

}

/*输入学生的成绩*/
void input()
{

float sc[4]; /*输入成绩的中间变量*/
int number; /*表示学号*/ 
int flag=0; /*输入成绩是否有误的标志*/
int i; /*循环控制变量*/

printf("输入学生的成绩:\n");
printf("输入学号:\n");
scanf("%d",&number);
while((number<0)||(number>N))
{ 

printf("输入学号有误!!!.\n");
return;

}
printf("输入学生%s的成绩\n",student[number]);
printf("数学、语文、英语、政治\n");
scanf("%f%f%f%f",&sc[0],&sc[1],&sc[2],&sc[3]);
getchar();
/*判断成绩输入是否越界*/
for (i=0; i<4; i++) 
if ((sc[i]>100.00)||(sc[i]<0.00))
{

flag=1;
printf("输入成绩有误!!\n");
return;

}
/*成绩未越界后,进行赋值*/
for (i=0; i<4; i++)
score[number][i]=sc[i];

}

/*显示学生的成绩*/
void output()
{

int i; /*循环控制变量*/

for(i=0;i<N;i++)
{

printf("输出%s各门成绩:\n数学、语文、英语、政治\n",student[i]);
printf("%.2f %.2f %.2f %.2f\n\n",score[i][0],score[i][1],score[i][2],score[i][3]);

}

}

/*计算学生的平均成绩*/
void average()
{

float sc=0.00; /*中间变量*/
int i,j; /*循环控制变量*/
for (j=0; j<N; j++)
{

sc=0.0;
for (i=0; i<4; i++)
sc+=score[j][i];
aver[j]=sc/4;
printf("学生%s的平均成绩是:%.2f\n",student[j],aver[j]); 

}

}

/*计算学生的总成绩*/
void sum_score()
{

int i,j; /*循环控制变量*/

printf("输出学生的总成绩:\n");
for (j=0; j<N; j++)
{

sum_sc[j]=0;
for (i=0; i<4; i++)
sum_sc[j]+=score[j][i];
printf("学生%s的总成绩是:%.2f\n",student[j],sum_sc[j]);

}

}

/*对学生的成绩进行排名,以平均成绩为例*/
void sort()
{

int i,j,temp,location; /*循环控制变量*/
float max,sc; /*比较用中间变量*/
float aver[N];
int flag;/*排序是否交换的标志*/
int sor[N];/*记录排序的位置*/
for (j=0; j<N; j++)
{

sor[j]=j;
sc=0.0;
for (i=0; i<4; i++)
sc+=score[j][i];
aver[j]=sc/4;

}
for (i=0; i<N; i++) /*对学生平均成绩进行排序*/
{

flag=0;
max=aver[i];
location=i;
for (j=i+1; j<N; j++)
{

if (aver[j]>max)
{

max=aver[j];
flag=1;
location=j;

}

}
if(flag==1)
{

aver[location]=aver[i];
aver[i]=max;
temp=sor[i];
sor[i]=sor[location];
sor[location]=temp; 

}

}
printf("排序后的结果是:\n");
for(i=0;i<N;i++)
{

printf("第%d名 学号%d 姓名%s",(i+1),sor[i],student[sor[i]]);
printf("%f\n",aver[i]);

}

}
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -