简单成绩管理系统的设计与实现学生信息包括:学号、姓名、三门功课(高等数学、大学英语、C语言)。190350101 陈明玉 69 72 78 190350102 陈辰臣 100 96 90 190350103 赵昭朝 89 90 79 190350104 钱千乾 86 85 80 190350105 孙荪隼 79 69 100 试设计一学生成绩管理系统,使之能提供以下功能:1、输入学生信息(包括学号,姓名,高等数学成绩,大学英语成绩,C语言成绩)2、显示学生信息3、显示一门课的最高分4、显示一门课的最低分5、显示一门课的平均分6、从高到低显示C语言的成绩7、按学号查找C语言成绩8、按姓别查找C语言成绩9、退出10、其它可扩充功能说明
你题目的解答代码如下:
#include<stdio.h>
#include<string.h>
#include<math.h>
struct student
{
int num;
char name[20];
float Math;
float English;
float CLanguage;
}stu[5];//定义结构体
void main()
{
void a();
void b();
void c();
void d();
void e();
void f();
void g();
void h();
int n;
while(n!=9)
{ printf("\t学生成绩管理系统\n");
printf("1:输入一个班学生成绩记录\n");
printf("2:显示所有成绩记录\n");
printf("3:显示一门课的最高分\n");
printf("4:显示一门课的最低分\n");
printf("5:显示一门课的平均成绩\n");
printf("6:从高到低显示C语言成绩\n");
printf("7:按学号查找C语言成绩\n");
printf("8:按姓名查找C语言成绩\n");
printf("9:退出\n");
printf("输入选项代码:");
scanf("%d",&n);
switch(n)
{
case 1:a();break;
case 2:b();break;
case 3:c();break;
case 4:d();break;
case 5:e();break;
case 6:f();break;
case 7:g();break;
case 8:h();break;
case 9:printf("\n*******************谢谢使用!*******************\n");break;
break;
}
}
getchar();
}
/* 子 函 数*/
void a() /* 输入一个班的学生记录*/
{
int i;
for(i=0;i<5;i++)
{
printf("请输入学号 姓名 高数成绩 英语成绩 C语言成绩:");
scanf("%d%s%f%f%f",&stu[i].num,&stu[i].name,&stu[i].Math,&stu[i].English,&stu[i].CLanguage);
}
}
void b()/* 显示所有记录*/
{
int i;
printf("学号 姓名 高数成绩 英语成绩 C语言成绩\n");
for(i=0;i<5;i++)
printf("%d\t%s\t%f\t%f\t%f\n",stu[i].num,stu[i].name,stu[i].Math,stu[i].English,stu[i].CLanguage);
}
void c()/* 显示一门课最高分*/
{
double max[3]={0,0,0};
int i,j;
printf("******查询高数请输入0;查询英语请输入1;查询C语言请输入2\n");
scanf("%d",&i);
for(j=0;j<5;j++){
if(stu[j].Math>max[0])
max[0]=stu[j].Math;
}
for(j=0;j<5;j++){
if(stu[j].English>max[1])
max[1]=stu[j].English;
}
for(j=0;j<5;j++){
if(stu[j].CLanguage>max[2])
max[2]=stu[j].CLanguage;
}
printf("******最高分是%f\n",max[i]);
}
void d()/*显示一门课最低分*/
{
double min[3]={100,100,100};
int i,j;
printf("******查询高数请输入0;查询英语请输入1;查询C语言请输入2\n");
scanf("%d",&i);
for(j=0;j<5;j++){
if(stu[j].Math<min[0])
min[0]=stu[j].Math;
}
for(j=0;j<5;j++){
if(stu[j].English<min[1])
min[1]=stu[j].English;
}
for(j=0;j<5;j++){
if(stu[j].CLanguage<min[2])
min[2]=stu[j].CLanguage;
}
printf("******最低分是%f\n",min[i]);
}
void e()/*显示一门课的平均成绩*/
{
double ave[3];
double total[3]={0,0,0};
int i,j;
printf("******查询高数请输入0;查询英语请输入1;查询C语言请输入2\n");
scanf("%d",&j);
for(i=0;i<5;i++)
{
total[0]=total[0]+stu[i].Math;
}
ave[0]=total[0]/5.0;
for(i=0;i<5;i++)
{
total[1]=total[1]+stu[i].English;
}
ave[1]=total[1]/5.0;
for(i=0;i<5;i++)
{
total[2]=total[2]+stu[i].CLanguage;
}
ave[2]=total[2]/5.0;
printf("******平均成绩是%f\n",ave[j]);
}
void f()/*从高到低显示C语言成绩*/
{
float display[5];//如果直接对stu[i].CLanguage操作,会影响后续调用该数组。这里我使用循环拷贝数组,也可以使用函数。
for(int i = 0; i<5; i++){
display[i] =stu[i].CLanguage;
}
float temp;
for(int i=0;i<5;i++){
for(int j=0;j<5-i;j++){
if( display[j]< display[j+1]){
temp= display[j];
display[j]= display[j+1];
display[j+1]=temp;
}
}
}
printf("\nC语言从高到低排序如下");
for(int i = 0; i<5; i++){
printf("%f\n",display[i]);
}
}
void g()/*按学号查找C语言成绩*/
{
int input_stuno;
printf("请输入待查学生的学号:");
scanf("%d",&input_stuno);
for (int i=0; i<5; i++)
{
if (stu[i].num == input_stuno)
{
printf("该生C语言成绩:%f\n",stu[i].CLanguage);
break;
}
}
}
void h()/*按姓名查找C语言成绩*/
{
char inputname[20];
printf("输入姓名\n");
scanf("%s",&inputname);
for(int i=0;i<5;i++){
if(strcmp(inputname,stu[i].name) == 0){
printf("该生C语言成绩:%f\n",stu[i].CLanguage);
break;
}
}
}
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
https://blog.csdn.net/weixin_44882124/article/details/125285056
参考这个
我这边还可以帮你加上密码登录,有教师端和学生端嘿嘿,望采纳谢谢欧,然后再聊
百度立省10元
关注我,博客主页的资源下有成绩管理系统源码,可以搜索下
看下这篇博客,也许你就懂了,链接:(一)我们编写的代码如何在计算机上运行