求C语言程序设计答案

C语言课程设计—班级成绩管理系统

设计内容与设计要求

1、设计内容
(1)、问题描述:
对一个有N个学生的班级,每个学生有M门课程。该系统实现对班级成绩的录入、显示、修改、排序、保存等操作的管理。(N和M由宏定义设定)

(2)、功能要求:
1、本系统采用一个结构体数组,每个数据的结构应当包括:学号、姓名、M门课程名称。
2、本系统显示这样的菜单:
请选择系统功能项:
a、 成绩录入
b、 成绩显示
c、 成绩保存
d、 成绩排序
e、 成绩修改(要求先输入密码)
f、 成绩统计
(1) 显示每门课程成绩最高的学生的基本信息
(2) 显示每门课程的平均成绩
g、 退出系统
3、执行一个具体的功能之后,程序将重新显示菜单。
4、将学生成绩保存到文件中。

(3)、算法提示:
1、数据结构:结构体类型数组。
2、数据库结构:下表构成该系统的基本数据库。

姓名 学号 课程名称1 课程名称2 ……
char Char float float
(4)、测试数据:
学生人数N=10
课程门数M=4
课程名:数学、英语、日语,计算机

可能跟你要的有些出入,你自己再稍微改一下吧。

#include <stdio.h>
#include <string.h>
# include<stdlib.h>
# define N 3
int main()
{int mk;
char num[N][10];float score[N][4];
void Input(char number[N][10],float array[][4]);
void Search();
void Delete();
void Insert();
void Sort(char number[N][10],float array[][4]);
void Output(char number[N][10],float array[][4]);
void Stat(char number[N][10],float array[][4]);
do
{
system("cls");
printf("\t学生成绩管理系统\n");
printf("******************************\n");
printf("1.输入成绩\t");
printf("2.查询成绩\n");
printf("3.删除成绩\t");
printf("4.插入成绩\n");
printf("5.成绩排序\t");
printf("6.输出成绩\n");
printf("7.成绩统计\t");
printf("8.退出\n");
printf("******************************\n");
printf("请选择系统模块:");
scanf("%d",&mk);
while (!(mk==1||mk==2||mk==3||mk==4||mk==5||mk==6||mk==7||mk==8))
{printf("模块编号输入错误\n");
scanf("%d",&mk);
}
system("cls");
switch (mk)
{case 1: Input(num,score); break;
case 2: Search();break;
case 3: Delete();break;
case 4: Insert();break;
case 5: Sort(num,score);break;
case 6: Output(num,score);break;
case 7: Stat(num,score);break;
case 8: exit(0);
}
}
while(1);
}
void Input(char number[N][10],float array[][4])
{ int i,j;
float sum;
printf("学号\t成绩1\t成绩2\t成绩3\n");
for (i=0;i<N;i++)
{ scanf("%s",number[i]);
for(j=0;j<3;j++)
scanf("%f",&array[i][j]);
}
for(i=0;i<N;i++)
{ sum=0;
for(j=0;j<3;j++)
{
sum=sum+array[i][j];
}
array[i][3]=sum/3;
}

}
void Search()
{//按"学号"查找
int i,j,t=0;
char x;
printf("输入您要查找同学的学号:\n");
scanf("%s",x);
for(i=0;i<N;i++)
if(number[i]==x)
{t=1;x=i;}
if(t==1)
for(j=0;j<=3;j++)
printf("%f\t",array[x][j]);
else printf("data error!");
}
void Delete()
{//按"学号"删除
int i,j,t;
char x;
printf("输入您要删除同学的学号:\n");
scanf("%s",x);
for(i=0;i<N;i++)
if(number[i]==x) t=i;
for(t=i;t<3;t++)
{
number[t]=number[t+1];
for(j=0;j<=3;j++)
array[t][j]=array[t+1][j];
printf("删除后:\n");
for(i=0;i<N-1;i++)
printf("%s",number[i]);
for(j=0;j<=3;j++)
printf("%f\t",array[i][j]);
}
}
void Insert()
{//按"学号"插入
int i,j,k,x;
int a[1][4];
printf("输入您要插入同学的学号:\n");
scanf("%s",x);
printf("输入您要插入同学的成绩:\n");
for(j=0;j<=3;j++)
scanf("%f",&a[0][j]);
for(i=0;i<N;i++)
if(x>number[i])
{for(k=N;k>=i+1;k--)
number[k]=number[k-1];
number[i]=x;
for(j=0;j<=3;j++)
array[k][j]=array[k-1][j];
array[i][j]=a[0][j];
}
printf("插入后:\n");
for(i=0;i<=N;i++)
{
printf("%s\t",number[i]);
for(j=0;j<N;j++)
printf("%f\t",array[i][j]);
}
}
void Sort(char number[N][10],float array[][4])
{ int i,j,max;
float t;char ts[10];
for(i=0;i<N-1;i++)
{max=i;
for(j=i+1;j<N;j++)
if(array[j][3]>array[max][3])
max=j;
for(j=0;j<4;j++)
{t=array[i][j];array[i][j]=array[max][j];array[max][j]=t;
strcpy(ts,number[i]);strcpy(number[i],number[max]);strcpy(number[max],ts);}
}

}

void Output(char number[N][10],float array[][4])
{int i,j;
printf("学号\t成绩1\t成绩2\t成绩3\t平均成绩\n");
for (i=0;i<N;i++)
{ printf("%s\t",number[i]);
for(j=0;j<4;j++)
printf("%-6.1f\t",array[i][j]);
printf("\n");
}
getchar();printf("按输入键继续…");
getchar();
}

void Stat(char number[N][10],float array[][4])
{
//按"平均成绩"统计各分数段0~59,60~69,70~79,80~89,90~100的人数
//及最高分,最低分及平均分
int i,j;
int sum1=0,sum2=0,sum3=0,sum4=0,sum5=0;
int average1,average2,average3;
int min1=array[0][0],min2=array[0][0],min3=array[0][2],max1=array[0][0],max2=array[0][1],max3=array[0][2];
int s1=array[0][0],s2=array[0][1],s3=array[0][2];
for(i=0;i<N;i++)
{if(0<=array[i][3]<=59) sum1=sum1+1;
if(60<=array[i][3]<=69) sum2=sum2+1;
if(70<=array[i][3]<=79) sum3=sum3+1;
if(80<=array[i][3]<=89) sum4=sum4+1;
if(90<=array[i][3]<=100) sum5=sum5+1;}
for(i=1;i<N;i++)
{
s1=s1+array[i][0];
if(array[i][0]>max1) max1=array[i][0];
if(array[i][0]<min1) min1=array[i][0];
}
average1=s1/N;
for(i=1;i<N;i++)
{
s2=s2+array[i][1];
if(array[i][1]>max2) max2=array[i][1];
if(array[i][1]<min2) min2=array[i][1];
}
average2=s2/N;
for(i=1;i<N;i++)
{
s3=s3+array[i][2];
if(array[i][2]>max1) max1=array[i][2];
if(array[i][2]<min1) min1=array[i][2];
}
average3=s3/N;
printf("分数在0-59有%d\t分数在60-69有%d\t分数在70-79有%d\t分数在80-89有%d\t分数在90-100%d\t",sum1,sum2,sum3,sum4,sum5);
printf("score1最高分为%d\tscore2最高分为%d\tscore3最高分为%d\t",max1,max2,max3);
printf("score1最低分为%d\tscore2最低分为%d\tscore3最低分为%d\t",min1,min2,min3);
printf("score1的平均分为%d\tscore2的平均分为%d\tscore3的平均分为%d\t",average1,average2,average3);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-05-12
指向问两位是哪个学校的或许我们是校友! 代码都差不多哈哈哈。。。
第2个回答  2011-05-12
这么多 竟然不给分 你也太不人道了吧
第3个回答  2020-02-15
1、由两个函数构成,分别为主函数:main()和自定义函数add()
2、调用的系统函数为:scanf(),printf();
3、用到的保留字有:int,return
4、用户自定义标示符有:x,y,z,a,b,c
相似回答