学生成绩管理系统程序设计报告docWord文档下载推荐.docx
《学生成绩管理系统程序设计报告docWord文档下载推荐.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统程序设计报告docWord文档下载推荐.docx(10页珍藏版)》请在冰豆网上搜索。
算法设计合理性
用户界面设计
报告书写认真程度
内容详实程度
文字表达熟练程度
回答问题准确度
简短评语
教师签名:
年月日
评分等级
备注
评分等级有五种:
优秀、良好、中等、及格、不及格
学生成绩管理系统
一、课题内容和要求
设计一个简化的学生成绩管理系统,并用C或C#语言实现。
对该系统的要求如下:
1.该系统应实现以下功能
(1)按班级按课程从文件中读入相应的平时成绩、期中考试成绩和期末考试成绩。
(2)三个成绩对总评成绩的百分比被定义为常数,各占总成绩的30%、30%和40%。
(3)计算每位学生的总评成绩。
(4)算该班级本课程的总平均成绩。
(5)算处于优、良、中、及格、不及格的学生人数以及占总人数的百分比。
其中100-90为优,89-80为良,79-70为中,69-60为及格,60分以下为不及格。
(6)按要求输出成绩在优、良、中、及格、不及格各区间的学生学号。
2.系统应有以下菜单:
0.退出
1.计算每位学生的总评成绩
2.计算班级本课程总评成绩
3.统计优、良、中、及格、不及格的学生人数以及所占比例
4.查询成绩在优、良、中、及格、不及格各区间的学生学号
允许用户不断从这个菜单选择任一功能执行,直到选择退出,才退出整个系统。
二、需求分析
1.系统要从文件中读入相应的平时成绩、期中成绩和期末考试成绩。
这里就用到了C++中的输入输出文件的操作。
在C++语言中进行文件操作的一般步骤为:
(1)为要进行操作的文件定义一个流。
(2)建立(或打开)文件。
(3)进行读/写操作。
(4)关闭文件
另外从文件中读入的数据要在后面进行计算,所以应该把文件中的数据对应到类或者结构体数组上去。
(在这个程序中用的是结构体数组)
2.系统还要有计算的功能,这里的计算包括总评成绩的计算和平均值的计算。
因为要计算多个学生的成绩,所以利用循环语句来进行逐个学生成绩的计算并输出。
(在这个程序中都是用的for循环)
3.统计功能。
需要运用到条件语句,既满足条件就加1,以此来完成计数统计。
4.查询功能。
同样是运用条件语句,判断符合条件就对屏幕输出,达到用户查询的目的。
5.菜单功能。
用简单的菜单函数完成整体的框架,用到switch语句来完成菜单函数的循环。
三、概要设计
1.首先用structstudent定义一个结构数组,里面应该包含学号Id、平时成绩ps、期中成绩qz、期末成绩qm、总评成绩all、等级grade。
2.定义函数
(1)读入文件(fs.open),对应到结构体数组中,利用for循环计算总评成绩并用判断语句来判断等级。
(2)调用file函数,把计算的结果输出屏幕,并且按照要求保存到out文件中(ofstreamfout(“out.dat”);
)。
(3)调用file函数,计算平均成绩来得到课程的总评成绩。
(4)调用file函数,if判断语句来统计人数并计算比例,然后输出屏幕。
(5)if判断语句,把符合用户输入等级的学生的学号输出到屏幕。
四、详细设计
#include<
iostream.h>
/*输入输出的头文件*/
fstream.h>
/*对文件的操作*/
string.h>
/*定义字符串变量*/
stdlib.h>
structstudent/*定义一个结构数组*/
{
public:
charId[10];
floatps;
floatqz;
floatqm;
floatall;
chargrade;
}stu[20];
fstreamfs;
intnum;
charstr5[100]="
学生学号"
;
charstr6[100]="
总评成绩"
charstr7[100]="
成绩等级"
voidfile()/*定义一个函数,方便后面的调用*/
fs.open("
note.dat"
ios:
:
in|ios:
out);
/*对文件读入的操作,文件以输入输出方式打开*/
fs>
>
num;
for(inti=0;
i<
i++)
{
fs>
stu[i].Id>
stu[i].ps>
stu[i].qz>
stu[i].qm;
/*把文件中得数值对应到结构数组中*/
}
for(i=0;
i++)/*完成对总评成绩的计算*/
stu[i].all=stu[i].ps*0.3+stu[i].qz*0.3+stu[i].qm*0.4;
if((stu[i].all<
=100)&
&
(stu[i].all>
=90))
stu[i].grade='
A'
if((stu[i].all<
90)&
=80))
B'
80)&
=70))
C'
70)&
=60))
D'
60)&
=0))
E'
}
voidreadall()/*对选项1的实现,后面调用*/
{file();
inti;
ofstreamfout("
out.dat"
);
/*输出保存到out文件中*/
if(!
fout)/*如果文件打开失败*/
{
cout<
<
"
Cannotopenthefile!
endl;
}
fout<
str5<
\t"
str6<
str7<
/*把表头文字存入文件*/
cout<
/*把表头文字输出屏幕*/
for(i=0;
i++)/*for循环逐次输出学生的成绩*/
fout<
stu[i].Id<
stu[i].all<
stu[i].grade<
\t\t"
}
voidreadaverage()/*对选项2的实现,后面调用*/
{
本课程的总评成绩:
file();
floata[20],p;
a[i]=stu[i].all;
for(i=1;
a[i]=a[i]+a[i-1];
p=a[num-1]/num;
p<
endl<
voidreadgrade()/*对选项3的实现,后面调用*/
{inti;
intj=0;
intk=0;
intx=0;
inty=0;
intz=0;
if(stu[i].grade==65)
j++;
if(stu[i].grade==66)
k++;
if(stu[i].grade==67)
x++;
if(stu[i].grade==68)
y++;
if(stu[i].grade==69)
z++;
成绩为优的学生人数:
j<
成绩为良的学生人数:
k<
成绩为中等的学生人数:
x<
成绩为及格的学生人数:
y<
成绩为不及格的学生人数:
z<
floatn;
成绩为优的学生百分比:
n=float(j)/num;
n<
成绩为良的学生百分比:
n=float(k)/num;
成绩为中等的学生百分比:
n=float(x)/num;
成绩为及格的学生百分比:
n=float(y)/num;
成绩为不及格的学生百分比:
n=float(z)/num;
voidreadABCDE()/*对选项4的实现,后面调用*/
{charm[10];
请输入你需要查询学生的成绩等级:
cin>
m;
if((m[0]!
=65)&
(m[0]!
=66)&
=67)&
=68)&
=69))
Inputerror"
if(m[0]==65)
{cout<
{if(stu[i].grade=='
)
cout<
if(m[0]==66)
if(m[0]==67)
if(m[0]==68)
if(m[0]==69)
{cout<
voidmain()/*菜单函数,整体框架*/