C语言课程设计成绩管理系统报告+源码Word文件下载.docx
- 文档编号:17246286
- 上传时间:2022-11-29
- 格式:DOCX
- 页数:23
- 大小:835.14KB
C语言课程设计成绩管理系统报告+源码Word文件下载.docx
《C语言课程设计成绩管理系统报告+源码Word文件下载.docx》由会员分享,可在线阅读,更多相关《C语言课程设计成绩管理系统报告+源码Word文件下载.docx(23页珍藏版)》请在冰豆网上搜索。
直接将在主函数中计算好的排名,在加上一些信息保存到新建的一个文件中,其执行完后如下:
如果在这个界面选择y,则会通过系统调用打开对应的文件。
关闭文件后可以进行下一步操作。
3、计算各科均分及标准差和分组情况模块
这个模块要实现的功能很多,主要是通过voidAve_Sta_dev(structStu_Data_1stu[MAX][KCS+2],intn),函数来实现的。
其处理完后保存到文件中,其格式如下:
4、打印出每个学生的成绩单
这个模块相对比较难一点,主要是要建立一个文件夹,在本系统中通过:
system("
mdscore"
),来建立一个文件夹,建立好文件夹后然后按照一定得规则保存到这个新建的文件夹中,文件的前面的名字是自己输入的,其界面如下:
5、显示不及格学生的信息
这个功能很简单,主要是通过函数intcheck(intk,structStu_Data_1stu[MAX][KCS+2])函数判断给定的数据是否存在不及格科目;
然后通过voidUnpass_List(structStu_Data_1stu[MAX][KCS+2],structStu_Creditxuefen[],intn)函数显示在屏幕上面;
方便查看,这个部分不保存到文件中,显示界面如下:
6、显示优等生学生的信息
这个模块和上面的基本上一样,首先通过:
intyds(intk,structStu_Data_1stu[MAX][KCS+2],intnum[],doubleaverage[])来判断给定的学生是否满足优等生的条件。
然后通过voidExcellence_List(structStu_Data_1stu[MAX][KCS+2],intnum[],doubleaverage[],intn)来显示在屏幕上,其见面如下:
7、绘制各科成绩的分布图
这个模块主要是通过一个简单的算法实现的,具体算法可以查看源代码,其基本实现思想是:
先确定不同分数段的人数,然后按照人数的多少来打印特定的一个符号,其符号是:
printf("
█"
);
其分布图如下:
四、数据测试
数据测试基本上在上面的实现中都已经说明的很清楚了,下面附上处理后的各个数据文件的截图:
按照加权平均分排名的结果:
各科目的总体分布情况:
各个学生的成绩单如下:
Stu_Date.h
#defineMAX100
#defineKCS5//实际课程数
intk;
structStu_Data_1
{
charElem[15];
};
structStu_Credit
charNO[10];
charcourse[10];
charcerdit[10];
structStu_Data_2
charcou[10];
doubleave;
doublebzc;
intbest;
intbetter;
intgood;
intpass;
intfail;
voidRank_List(intnum[],structStu_Data_1stu[MAX][KCS+2],doubleaverage[],intn)//按平均分排名
{
FILE*fp;
intj;
if((fp=fopen("
Data1.txt"
"
wb"
))==NULL)
{
……………此文件不可以打开,保存失败…………\n"
exit
(1);
}
fprintf(fp,"
名次"
for(j=0;
j<
KCS+2;
j++)fprintf(fp,"
%-9s"
stu[0][j].Elem);
平均分"
\r\n"
for(k=1;
k<
n;
k++)
%-6d"
num[k]);
stu[k][j].Elem);
%-6.1f"
average[k]);
}
fclose(fp);
…………保存成功………………\n"
}
//--------------------------------------------------------------------------
voidAve_Sta_dev(structStu_Data_1stu[MAX][KCS+2],intn)//求各科平均分、标准差
doubless,m;
structStu_Data_2da[KCS+2];
Data2.txt"
inta;
for(a=1;
a<
KCS+1;
a++)strcpy(da[a].cou,stu[0][a+1].Elem);
//------------------------------------------------------------------------------
for(a=2;
a++)
for(k=1,m=0;
k++)m=m+atoi(stu[k][a].Elem);
da[a-1].ave=m/(n-1);
}//计算各科平均分
//-------------------------------------------------------------------------------------
da[k].best=0;
da[k].better=0;
da[k].good=0;
da[k].fail=0;
da[k].pass=0;
for(k=1;
{
if(atoi(stu[k][a].Elem)>
=90)da[a-1].best++;
//优秀
if(atoi(stu[k][a].Elem)<
90&
&
atoi(stu[k][a].Elem)>
=80)da[a-1].better++;
//良好
if(atoi(stu[k][a].Elem)<
80&
=70)da[a-1].good++;
//中等
70&
=60)da[a-1].pass++;
//及格
60)da[a-1].fail++;
//不及格
}//科目分等级
//----------------------------------------------------------------------------------------------
for(a=2;
for(k=1,ss=0;
ss+=(atof(stu[k][a].Elem)-da[a-1].ave)*(atof(stu[k][a].Elem)-da[a-1].ave);
}
da[a-1].bzc=sqrt(ss/(n-1));
}//求出各科标准差
//---------------------------------------------------------------------------------------
编号课程名称平均分标准差优秀良好中等及格不及格\n"
%-6d%-10s%-8.1f%-10.2f%-5d%-5d%-6d%-6d%-6d\n"
k,da[k].cou,da[k].ave,da[k].bzc,da[k].best,da[k].better,da[k].good,da[k].pass,da[k].fail);
……………保存成功…………\n"
//--------------------------------------------------------------------------------------
intcheck(intk,structStu_Data_1stu[MAX][KCS+2])
if(atof(stu[k][a].Elem)<
60)return1;
return0;
//----------------------------------------------------------------------------------------
intyds(intk,structStu_Data_1stu[MAX][KCS+2],intnum[],doubleaverage[])
if(average[k]>
92)return1;
if(num[k]<
6)return1;
88)
if(atof(stu[k][a].Elem)>
=99)return1;
//-------------------------------------------------------------------------------------------------
voidScore_List(structStu_Data_1stu[MAX][KCS+2],intn,doubleaverage[],intnum[])
charno[5];
charclas[10]={"
"
请输入班级名:
scanf("
%s"
clas);
system("
itoa(k,no,10);
charfilename[20]={"
charadd[20]={"
score\\"
strcpy(add+strlen(add),clas);
strcpy(filename+strlen(filename),add);
strcpy(filename+strlen(filename),no);
strcpy(filename+strlen(filename),"
.txt"
if((fp=fopen(filename,"
printf("
exit
(1);
for(intj=0;
平均分名次"
for(a=0;
a++)
fprintf(fp,"
stu[k][a].Elem);
%-8.2f"
文件已保存到程序跟目录下SCORE文件夹里.\n"
}//打印每个学生的成绩单
voidUnpass_List(structStu_Data_1stu[MAX][KCS+2],structStu_Creditxuefen[],intn)
inta,p;
intcheck(intk,structStu_Data_1stu[MAX][KCS+2]);
学号姓名课程名称(学分):
成绩课程名称(学分):
成绩\n"
if(check(k,stu))
printf("
%-6s%-8s"
stu[k][0].Elem,stu[k][1].Elem);
for(a=2,p=0;
if(atof(stu[k][a].Elem)<
60){
p++;
if(p>
3){
printf("
\n"
%-9s(%s):
%-5s"
stu[0][a].Elem,xuefen[a-1].cerdit,stu[k][a].Elem);
p=p%3;
}
printf("
}
\n"
}//显示不及格的同学
//------------------------------------------------------------------------------------------------------
voidExcellence_List(structStu_Data_1stu[MAX][KCS+2],intnum[],doubleaverage[],intn)
intyds(intk,structStu_Data_1stu[MAX][KCS+2],intnum[],doubleaverage[]);
//----------------------------------------------------------------------------------------------
if(KCS>
5)
FILE*fp;
if((fp=fopen("
Data3.txt"
for(intj=0;
if(yds(k,stu,num,average))
{
fprintf(fp,"
for(a=0;
a++)fprintf(fp,"
}
fclose(fp);
\n由于科目过多屏幕无法正常显示,数据以保存到文件Data3.txt中,是否现在打开(y/n)"
charz;
scanf("
%c"
&
z);
if(z=='
y'
)
printf("
\n请关闭文件,使程序继续执行。
system("
return;
}//当科目大于5时执行该IF
j++)printf("
if(yds(k,stu,num,average))
for(a=0;
a++)printf("
%-6.2f"
}//显示优等生
//-------------------------------------------------------------------------------------------------------
voidMenu()
cls"
printf("
\n-------------------------------\n"
|1-保存学生排名后成绩单|\n"
|2-保存学生成绩分布情况|\n"
|3-打印每位同学的成绩|\n"
|4-显示存在不及格科目同学|\n"
|5-显示优等生名单|\n"
|6-显示分布图|\n"
|Q-quit|\n"
-------------------------------\n"
PleaseinputKey\n"
voidDistribution(structStu_Data_1stu[MAX][KCS+2],intn)
intc,j,figure[11]={0};
for(c=2;
c<
c++)
{
===%s成绩分布图===\n"
stu[0][c].Elem);
11;
k++)figure[k]=0;
figure[atoi(stu[k][c].Elem)/10]++;
for(inta=10;
a>
-1;
a--)
if(a==10)
100:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 成绩管理系统 报告 源码