学生成绩处理系统的设计与实现的设计说明书.docx
《学生成绩处理系统的设计与实现的设计说明书.docx》由会员分享,可在线阅读,更多相关《学生成绩处理系统的设计与实现的设计说明书.docx(24页珍藏版)》请在冰豆网上搜索。
学生成绩处理系统的设计与实现的设计说明书
C\C++程序设计课程设计
设计说明书
学生成绩处理系统的设计与实现
学生姓名
学号
班级
成绩
指导教师
计算机科学与技术系
2009年7月3日
C\C++程序设计课程设计评阅书
题目
学生成绩处理系统的设计与实现
学生姓名
学号
指导教师评语及成绩
指导教师签名:
年月日
答辩评语及成绩
答辩教师签名:
年月日
教研室意见
总成绩:
室主任签名:
年月日
课程设计任务书
2008—2009学年第二学期
专业:
计算机科学与技术学号:
姓名:
课程设计名称:
软件技术基础课程设计
设计题目:
学生成绩处理系统的设计与实现
完成期限:
自2009年6月22日至2009年7月3日共2周
设计依据、要求及主要内容(可另加附页):
有如下表所示的若干个学生成绩:
学号
姓名
C语言
数学
英语
总分
平均
08001
李强
90
95
80
08002
张兵
68
75
58
08003
刘英
78
80
64
…
…
…
…
…
要求用C/C++语言编写一个程序实现学生成绩处理系统,数据的基本存储结构采用结构体数组,指针作为函数的参数。
要求实现如下功能:
1)阐述设计思想,画出流程图;
2)对学生成绩进行录入和修改;
3)横向计算每个学生各门功课的总成绩及平均成绩;纵向计算某门课程的平均分数;
4)采用选择排序、快速排序、归并排序对学生的平均成绩进行排序;
5)统计每门课程中不及格人数、60—70分、70—80分、80—90分以及90分以上人数;
6)说明测试方法,写出完整的运行结果,较好的界面设计;
7)编写课程设计报告。
以上要求中前三个阶段的任务完成后,先将设计说明书的草稿交指导老师面审,审查
合格后方可进入后续阶段的工作。
设计工作结束后,经指导老师验收合格后将设计说明书打印装订,并进行答辩。
最终设计成果形式为:
1.设计好的软件一套;
2.撰写一份课程设计说明书一份,打印并装订成册。
指导教师(签字):
教研室主任(签字):
批准日期:
年月日
摘要
设计了一个学生成绩处理系统软件,该处理系统具有计算每个学生的总成绩、平均成绩以及对学生平均成绩进行排列功能,计算各门课的总成绩和平均成绩功能,统计每门课各分数段的人数以及修改学生信息的功能。
本成绩处理系统采用VC++作为软件开发环境,采用了结构体数组来实现。
操作简单,可适用多个学生的多门成绩处理。
关键词:
成绩处理;函数;VC++
目录
1课题描述…………………………………………………………………………1
2设计过程…………………………………………………………………………2
3程序源代码………………………………………………………………………7
4测试结果与分析…………………………………………………………………13
总结…………………………………………………………………………………17
参考文献……………………………………………………………………………18
1课题描述
学生成绩处理系统可以通过简单的操作,实现对学生成绩平均分的计算,学生成绩的排序,修改,以及对每门课程总分,平均分的计算和各分数段人数的统计。
对所输学生成绩的平均分进行选择排序,选择排序是将一组无序数据按升序排列。
首先比较a[1]和a[2]的值,若a[1]大于a[2]则交换两者的值,否则不变;再比较a[1]和a[3]的值,以此类推,共处理n-1轮后就以升序排列。
对一门课中各个分数段人数进行统计,是用if-else语句实现多分支的方法。
学生成绩处理系统解决了教师处理学生成绩的难题,提高了成绩处理的效率。
在次以VisualC++6.0作为开发工具,编程实现了学生成绩处理的演示系统。
2设计过程
本设计采用结构体、数组实现学生成绩的基本处理。
下面给出学生成绩处理系统中学生成绩的输出、平均成绩的计算和排列、各门课程的总分平均分以及各个分数段人数的统计的流程图。
其中图2.1为学生成绩输出流程图:
图2.1学生成绩输出流程图
图2.2为对学生平均成绩进行排序流程图:
图2.2对学生平均成绩进行排序(选择排序)的流程图
图2.3为计算一门课的总成绩和平均分的流程图:
图2.3计算一门课的总成绩和平均分的流程图
图2.4为修改学生成绩信息的流程图:
图2.4修改学生成绩信息的流程图
图2.5为计算一门课各个分数段人数的流程图修改学生成绩信息的流程图:
图2.5计算一门课各个分数段人数的流程图修改学生成绩信息的流程图
3程序源代码
#include/*引用库函数*/
#include
#include
#include
#include
typedefstruct
{
charname[10];
intnum;
floatCprogram;
floatEnglish;
floatMath;
floatSum;
floataverage;
}Student;
Studentstu[5];/*结构体数组变量*/
intmenu()/*菜单函数*/
{
charc;
do
{
cout<<"******************学生成绩管理系统*******************"<cout<<"1:
输入学生成绩"<cout<<"2:
输出学生成绩"<cout<<"3:
用选择排列法排列学生平均成绩"<cout<<"4:
纵向计算三门课的成绩"<cout<<"5:
修改一组学生成绩"<cout<<"6:
统计三门课程各分数段的成绩"<cout<<"0:
退出程序"<cout<<"请选择操作(0到6):
"<c=getchar();/*读入选择*/
}
while(c<'0'||c>'6');
return(c-'0');
}
intInput(Studentstud[],intn)
{
inti=0;
charsign;
while(sign!
='n'&&sign!
='N')/*判断*/
{
cout<<"请输入学生的姓名:
";
cin>>stud[i].name;
cout<<"请输入学生的学号:
";
cin>>stud[i].num;
cout<<"请输入该C语言该学生的成绩:
";
cin>>stud[i].Cprogram;
cout<<"请输入该学生数学的成绩:
";
cin>>stud[i].Math;
cout<<"请输入该学生英语的成绩:
";
cin>>stud[i].English;
cout<<"=====>提示:
继续写入成绩?
(Y/N)";
cin>>sign;/*输入判断*/
i++;
}
returni;
}
voidOutput(Studentstud[],intn)/*输出学生成绩*/
{
inti;
cout<<"姓名学号C语言数学英语总分平均分"<for(i=1;i{
stud[i-1].Sum=stud[i-1].Cprogram+stud[i-1].Math+stud[i-1].English;
stud[i-1].average=stud[i-1].Sum/3;
cout<}
}
voidSwap(Studentstud[],intn)/*按平均分排序*/
{
inti,j;
Studenttemp;
for(i=0;ifor(j=i+1;j{
if(stud[i].average{
temp=stud[i];
stud[i]=stud[j];
stud[j]=temp;
}
}
cout<<"-------------------输入学生的信息---------------"<cout<<"姓名学号C语言数学英语总分平均分"<for(i=0;i{
stud[i].Sum=stud[i].Cprogram+stud[i].Math+stud[i].English;
stud[i].average=stud[i].Sum/3;
cout<}
}
voidAverage(Studentstud[],intn)/*计算各门课的总分和平均分*/
{
inti;
floataver1,aver2,aver3;
floatsum1=stud[0].Cprogram;
floatsum2=stud[0].Math;
floatsum3=stud[0].English;
for(i=1;i{
sum1+=stud[i].Cprogram;
sum2+=stud[i].Math;
sum3+=stud[i].English;
aver1=sum1/n;
aver2=sum2/n;
aver3=sum3/n;
}
cout<<"-------------------输入学生的信息-------------------"<cout<<"姓名学号C语言数学英语总分平均分"<for(i=0;i{
stud[i].Sum=stud[i].Cprogram+stud[i].Math+stud[i].English;
stud[i].average=stud[i].Sum/3;
cout<cout<<"C语言课程的总分,平均分:
"<cout<<"数学课程的总分,平均分:
"<cout<<"英语课程的总分,平均分:
"<}
}
voidModify(Studentstud[],intn)/*按学号查找,修改学生成绩*/
{
ints;
inti=0;
cout<<"输入需要修改成绩学生的学号:
"<cin>>s;
while((stud[i].num-s)!
=0&&ii++;/*查找判断*/
if(i==n)
{
cout<<"=====>提示:
对不起,无该学生的成绩……"<return;
}
cout<<"----------------该学生的信息-------------"<cout<<"姓名学号C语言数学英语总分平均分"<cout<cout<<"---------------------------------------------------------------"<cout<<"请输入学生的姓名:
";
cin>>stud[i].name;
cout<<"请输入学生的学号:
";
cin>>stud[i].num;
cout<<"请输入该C语言该学生的成绩:
";
cin>>stud[i].Cprogram;
cout<<"请输入该学生数学的成绩:
";
cin>>stud[i].Math;
cout<<"请输入该学生英语的成绩:
";
cin>>stud[i].English;
stud[i].Sum=stud[i].Cprogram+stud[i].Math+stud[i].English;
stud[i].average=stud[i].Sum/3;
cout<<"该学生修改后的成绩信息为:
"<cout<}
voidcprogram(Studentstud[],intn)/*统计C语言各个分数段的人数*/
{
inti;
intk=0,h=0,m=0,p=0,l=0;
for(i=0;i{
if(stud[i].Cprogram>=90)
k++;
elseif(stud[i].Cprogram>=80)
h++;
elseif(stud[i].Cprogram>=70)
m++;
elseif(stud[i].Cprogram>=60)
p++;
else
l++;
}
cout<<"C语言中90分以上的人数:
"<"<"<"<
"<}
voidmath(Studentstud[],intn)/*统计数学各个分数段的人数*/
{
inti;
intk=0,h=0,m=0,p=0,l=0;
for(i=0;i{
if(stud[i].Math>=90)
k++;
elseif(stud[i].Math>=80)
h++;
elseif(stud[i].Math>=70)
m++;
elseif(stud[i].Math>=60)
p++;
else
l++;
}
cout<<"数学中90分以上的人数:
"<"<"<"<
"<voidenglish(Studentstud[],intn)/*统计英语各个分数段的人数*/
{
inti;
intk=0,h=0,m=0,p=0,l=0;
for(i=0;i{
if(stud[i].English>=90)
k++;
elseif(stud[i].English>=80)
h++;
elseif(stud[i].English>=70)
m++;
elseif(stud[i].English>=60)
p++;
else
l++;
}
cout<<"英语中90分以上的人数:
"<"<"<"<
"<}
voidmain()/*主函数*/
{
intn;
for(;;)
{
switch(menu())/*选择判断*/
{
case1:
cout<>输入成绩<<===="<n=Input(stu,n);
break;
case2:
cout<>输出学生成绩信息<<===="<Output(stu,n);
break;
case3:
cout<>学生成绩选择排列<<===="<Swap(stu,n);
break;
case4:
cout<>纵向计算三门课的成绩<<===="<Average(stu,n);
break;
case5:
cout<>修改一组成绩<<===="<Modify(stu,n);/*查找并显示一个记录*/
break;
case6:
cout<>对三门课各分数段成绩人数进行统计<<===="<cprogram(stu,n);
math(stu,n);
english(stu,n);
break;
case0:
cout<>退出<<===="<exit(0);
}
}
}
4测试结果及分析
运行程序,按要求输入学生成绩得到运行结果,如图4.1所示:
图4.1输入学生成绩
选择功能2,输出学生成绩信息,如图4.2所示:
图4.2输出学生成绩
选择功能3,对学生平均成绩进行排列,如图4.3所示:
图4.3对学生平均成绩进行排列
选择功能4,纵向计算三门课成绩的总分以及平均分,如图4.4所示:
图4.4纵向计算三门课的总成绩和平均成绩
选择功能5,根据学号修改学生的成绩信息,如图4.5所示:
图4.5输入要修改的学生学号
如果输入学号错误,如图4.6所示:
图4.6输入错误学号
选择功能6,统计三门课个分数段人数,如图4.7所示:
图4.7对学生三门课各分数段成绩人数进行统计
选择功能0,退出,如图4.8所示:
图4.8退出
总结
课程设计的过程是非常不容易的,但对我却有很大的启发。
这次课程设计我主要是应用以前所学的C语言以及本学期的VC,综合起来才完成了这个学生成绩处理系统的软件,比平常上机实验所编程序要复杂,锻炼了我自己。
首先,C/C++程序设计让我把以前学习到的知识得到巩固和进一步的提高认识,对已有知识有了更进一步的理解和认识;再次,我在课程设计中碰到了很多的问题,通过查阅相关资料以及上网查询进行解决,同时曹老师对我也进行了指导,指出了课程设计流程中的错误,提出了建议。
越来越多的人们开始依靠计算机来解决日常生活中的问题,计算机可以明显提高速度和准确率。
我所设计的成绩处理系统可以对学生成绩进行处理。
当然,通过这次课程设计,我也发现了自身的很多不足之处,在以后的学习中,我会不断的完善自我,不断进取,能使自己在C/C++编程这方面有一个大的发展。
参考文献
[1]严蔚敏,吴伟民.数据结构(C语言版)[M].北京:
清华大学出版社,2002
[2]刘斌,王忠.面向对象程序设计VisualC++[M].北京:
清华大学出版社,2003
[3]何钦铭,颜辉.C语言程序设计[M].北京:
高等教育出版社,2008