完成课程设计报告
简单成绩管理系统的设计与实现
学生信息包括:学号、姓名、三门功课(高等数学、大学英语、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(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(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://wenku.baidu.com/view/c47c1d2dcd22bcd126fff705cc17552706225e69.html