学生成绩管理系统设计与实现设计说明书.docx
《学生成绩管理系统设计与实现设计说明书.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统设计与实现设计说明书.docx(21页珍藏版)》请在冰豆网上搜索。
学生成绩管理系统设计与实现设计说明书
《高级程序设计语言》课程设计
成果报告
学生成绩管理系统设计与实现
学生学号:
2
学生姓名:
学院:
专业班级:
专业课程:
指导教师:
2014年6月27日
题目
学生成绩管理系统设计与实现
考核项目
考核内容
得分
平时考核
(30分)出勤情况、态度、效率;知识掌握情况、基本操作技能、知识应用能力、获取知识能力
系统设计
(20分)分析系统的功能模块
编程调试
(20分)实现系统的各个功能模块,并完成调试
回答问题
(15分)回答老师针对课程设计提出的问题
课程设计报告撰写
(10分)严格按照规范要求完成课程设计报告
源代码
(5分)按照规范要求完成课程设计源代码的排版
总评成绩
指导教师评语:
日期:
年月日
第1章系统设计目的
1.1设计内容
-设计四个类;学生类(描述学生基本信息);成绩类:
班级类;课程(描述课程信息:
课程编号,科目名称(如高等数学,大学英语等);学生成绩及课程信息用文件保存,每个类一个文件,程序执行时从文件读入;
-能按学期,按班级完成对学生成绩的录入,修改,能按班级统计学生的成绩;求学生的总分及平均分;并能根据学生的平均成绩进行排序,能查询学生成绩,不及格科目及学生名单;能按班级输出学生的成绩单。
–设置学生的成绩信息:
学生学号、姓名、所选课程名称、平时成绩、期末成绩、平时成绩所占百分比
–计算学生总评成绩:
总评成绩=平时成绩*平时成绩所占百分比+期末成绩*(1-平时成绩所占百分比)
–显示学生的姓名、所选课程名称以及平时成绩、期末成绩和总评成绩信息。
分单人显示和以班输出(班成绩单格式输出到文件)
–注意,至少一个班,30人三门;
1.2设计目的:
(1)基本掌握面向对象程序设计的基本思路和方法;
(2)达到熟练掌握C++语言的基本知识和技能,解决简单的程序设计问题
(3)能够利用所学的基本知识和技能,解决简单的程序设计问题
1.3设计要求:
基本要求:
(1)要求利用面向对象的方法以及C++的编程思想来完成系统的设计;
(2)要求在设计的过程中,建立清晰的类层次;
(3)在系统的设计中,至少要用到面向对象的一种机制;
(4)根据C++课程所学的概念、理论和方法,按照C++程序设计的基本步骤,设计出一个适当规模的程序来实现设计课程内容中的全部功能;
(5)设计主控模块程序.对给出的程序源代码要给出各部分的详细注释.自己根据能力及需要添加相应功能模块,增强模拟系统功能。
第2章系统实现思路
2.1系统分析
1.需求分析:
a.能对学生各科成绩进行录入:
。
b.能对学生的成绩进行增加。
c.能对学生的成绩进行删除。
d.能对学生的成绩进行修改。
e.能对学生的成绩按总成绩,姓名,进行查询。
f.能输出学生的所有数据。
g.能进行成绩统计
h.能进行总分查询排名。
2.系统功能描述:
(1)使用继承的方法构造函数的类
(2)用文本文档来显示所录入的数据
(3)用switch函数来选择执行的功能
3.系统的功能分析:
资料维护:
系统维护包括对学生信息录入操作及数据表中的信息进行浏览。
系统功能:
可以对数据表中的信息进行浏览。
系统查询:
可以对学生的信息进行查询。
2.2系统模块框架图:
1.通过分析画出程序结构图:
学生成绩管理系统
图0-0程序框架图
操作
查询学生信息
修改
增加
总成绩
查询
姓名查询
输出所有学生的成绩
录入
删除
每个学生的平均成绩
每个学生的总评成绩
按总成绩排名
查询
各科不及格人数
第3章系统详细设计
3.1系统设计
1.界面设计
程序运行后会出现一个简捷的窗口,便于用户查询数据。
3.2系统的实现
通过主窗体调用其他窗体,具体实现可以参照系统分析相关内容。
应用系统主控界面包括记录编辑和记录查询等功能模块。
记录编辑功能完成学生成绩记录编辑和记录查询功能。
记录查询功能可以对数据各分类的记录进行查询
3.3详细设计
(1)定义一个基类student:
classStudent{//定义学生类
public:
Student(charn[20],intnum,floatxuen){
strcpy(name,n);
number=num;
xuenian=xuen;}
charname[20];
intnumber;
intxuenian;
(2)再派生出成绩类:
classChengji:
publicStudent//设置成绩类学生成绩
{public:
Chengji(charn[20],intnum,floatxuen,floatma2,floatma,floatcy2,floatcy,floateng2,floateng):
Student(n,num,xuen){
cyuyan=cy;
english=eng;
math=ma;
cyuyan2=cy2;
english2=eng2;
math2=ma2;}
在这个类中把一些需要用到的成员函数写上,来计算总分,总评成绩,平均成绩注意参数;floatget_sum(){//计算总分
sum=english2+math2+cyuyan2;
returnsum;
}
friendvoidmain();//将主函数定义为友元函数,方便访问类中的成员
floatget_aver(){//得到平均分的函数
average=get_sum()/3;
returnaverage;
}
(3)定义主函数:
voidmain()//主函数
{
cout<<"**********欢迎来到学生成绩查询系统**********"<cout<<"请选择需要的操作!
"<cout<<"()数据录入"<cout<<"()增加学生"<cout<<"()删除学生"<cout<<"()修改数据"<cout<<"查询:
"<cout<<"()按总成绩查询"<cout<<"()按姓名查询"<cout<<"()输出所有学生的数据"<cout<<"成绩统计:
"<cout<<"()每个学生的平均成绩"<cout<<"()各个学科不及格人数"<cout<<"排名"<cout<<"()按总分查询排名"<cout<<"()退出"<cout<<"选择相关操作请输入相对的括号里的阿拉伯数字及字母!
"<(4)运用全局变量:
intp=0;//全局变量,用于选择菜单时的输入
charw;//全局变量,用于在大项中选择是否继续操作
Chengji*s[100];//类定义的指针将所录入的数据按类中的形式分别存储
ofstream*file[100];
inti=0;//全局变量,用于做每个录入数据的下标
intj=0;
(5)运用switch函数来实现用户所要求的功能,并用do……while来进行循环。
do//判断输入是否正确
{
cin>>p;
if(p>=1&&p<=11)chris1=1;
else
cout<<"指令错误!
请重新输入:
"<while(chris1==0);
do{
switch(p)
case1用来进行数据的录入,并保存:
case1:
//数据录入
{floatzong;//计算总评成绩
charc;//用于在小项中选择是否继续操作
charname[20];
intnumber;
floatmath2,cyuyan2,english2,math,cyuyan,english,bf,xuenian;
do{cout<<"请输入学年"<cin>>xuenian;
cout<<"请输入姓名"<cin>>name;
cout<<"请输入学号"<cin>>number;
cout<<"请输入数学期末成绩"<cin>>math2;
cout<<"请输入数学平时成绩"<cin>>math;
cout<<"请输入c++期末成绩"<cin>>cyuyan2;
cout<<"请输入c++平时成绩"<cin>>cyuyan;
cout<<"请输入英语期末成绩"<cin>>english2;
cout<<"请输入英语平时成绩"<cin>>english;
cout<<"请输入成绩百分比"<cin>>bf;zong=(english2+math2+cyuyan2)*(1-bf)+(english+math+cyuyan)*bf;
fstreamoutfile,infile;//作一个文本文档在文件夹中用于显示所录入的数据
outfile.open("f1.txt",ios:
:
out|ios:
:
app);if(!
file){
cout<<"f1.txtcannotopen.\n";return;}
outfile<<"姓名:
"<"<"<"<