c学生成绩管理系统文档.doc
- 文档编号:1222424
- 上传时间:2023-04-30
- 格式:DOC
- 页数:31
- 大小:132.50KB
c学生成绩管理系统文档.doc
《c学生成绩管理系统文档.doc》由会员分享,可在线阅读,更多相关《c学生成绩管理系统文档.doc(31页珍藏版)》请在冰点文库上搜索。
学生成绩管理系统
目录
1引言 2
1.1课题背景及意义 2
1.2可行性分析 2
2系统需求分析 4
2.1功能需求分析 4
2.2性能需求分析 4
2.3系统总体结构设计 4
3详细设计 6
3.1数据结构设计 6
3.2系统函数的组成、功能、参数说明、相互调用关系 7
4设计测试流程 9
5结束语 14
参考文献 15
附录 16
学生成绩管理系统
学生姓名:
张亮指导老师:
胡宁静
摘要本课程设计主要解决学生成绩管理问题。
使用计算机进行信息管理,不仅提高了工作效率,而且大大的提高了其安全性.尤其对于复杂的信息管理,计算机能够充分发挥它的优越性.学生成绩管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要。
在课程设计中,系统开发平台为WindowsXP,程序设计设计语言采用VisualC++,程序运行平台为Windows98/2000/XP。
在程序设计中,采用了面向对象解决问题的方法。
程序通过调试运行,初步实现了设计目标。
关键词程序设计;C++;成绩管理
1引言
为方便对学生成绩进行高效的管理,编写该程序以提高学生成绩管理效率。
使用该程序之后,学校管理者可以查询某位学生、某个科目的成绩情况,还可以对学生成绩进行排名,对学生的数据进行修改和删除,其中排名包括总分排名和各个科目的排名,学生可以更具自己的个人信息进行成绩查询,查询结果包括各个科目的分数、总分和平均分。
通过本系统可以很好的掌握学生成绩的分布,减轻管理人员的负担,也使学生的成绩和信息长时期的保留。
1.1课题背景及意义
一直以来人们使用传统的人工方式管理学生成绩,在计算机尚未在学校广泛使用之前,学生成绩管理主要依靠手工。
一个最典型的手工处理过程就是:
当考试完后,老师就要把学生成绩登记到文档中,当老师或学生要查询成绩的时候要一个一个去找,总分、平均分都需要一个一个累加起来算,很麻烦,不过最麻烦的还是排名,不能一目了然。
以上所描述的手工过程的不足之处显而易见,首先处理学生成绩的效率很低,其次处理能力比较低,一段时间内,所能服务的读者人数是有限的。
利用计算机来处理这些流程无疑会极大程度地提高效率和处理能力。
我们很清晰的看到自己的各个科目成绩和每个科目的排名和总分排名以及所有学生的成绩分布,而且还是零失误,所有的都是一目了然。
极大的方便了学生和老师。
为提高成绩管理效率,管理人员的工作负担,有必要开发一个小型成绩管理系统来对学生成绩实施有效管理。
1.2可行性分析
(1)经济可行性分析
作为学校这样的商业性质较小的场所,其经济成分比重相对较少,主要是支出的费用:
其中包括设备购置费、软件开发费用、管理和维护费、人员工资和培训费等。
由于各个学校实行统一操作,系统共享,其设备购置,人员工资,维护费用相对较少,而且本系统的费用很低。
(2)技术可行性分析
技术上的可行性分析主要分析现有技术条件能否顺利完成开发工作,硬件、软件配置能否满足开发者的需要,各类技术人员的数量,水平,来源等。
学生成绩管理系统的工作主要是在学生和老师之间架起一座桥梁,能相互沟通信息和处理信息。
这一特点非常适合计算机特点,通过网络internet技术,发挥计算机的信息传输速度快、准确度高的优势。
计算机硬件和软件技术的飞速发展,为系统的建设提供了技术条件。
(3)社会可行性分析
社会可行性有时也称为操作可行性,主要论证新系统在企业或机构开发和运行的可能性以及运行后可能一起的对企业或机构的影响,即组织内外是否具备接受和使用新系统的条件。
在当前信息技术飞速发展的大环境下,计算机技术和软件技术的更新是学校完全有可能也有能力采用这样先进的管理技术。
它对学校带来的影响可以看到:
对传统管理理念的冲击,可能引起管理层的变动和人员的调整。
对学校工作人员的要求提高,使学校在一定的可能下进行机构精简,迫使工作人员继续学习新知识,拓宽学校在市场环境下的生存空间。
对学生和管理人员业务方式的转变和扩充。
2系统需求分析
2.1功能需求分析
1)录入数据:
将学生姓名、语文、数学、英语成绩写入文件。
2)增加人员:
增加学生,并将学生姓名和成绩写入文件。
3)删除人员:
删除学生信息和成绩。
4)修改数据:
修改学生成绩。
5)按总成绩查询:
根据总分查询学生成绩,包括平均分。
6)按姓名查询:
根据学生姓名查询学生成绩,包括总分和平均分。
7)输出所有学生成绩:
输出文件中所有学生数据。
8)按总分排名:
按照总分从高到低排序。
9)按语文成绩排名:
按照语文成绩从高到低排序。
10)按数学成绩排名:
按照数学成绩从高到低排序。
11)按英语成绩排名:
按照英语成绩从高到低排序。
2.2性能需求分析
1.硬件环境
l处理器:
InterCR300或是更高。
l内存:
128MB(建议196MB)。
l硬盘空间:
20MB。
2.软件环境
l操作系统:
Windows98/XP或是Windows2000/WindowsNTServer4.0。
2.3系统总体结构设计
对学生成绩进行管理的系统,主要划分为以下三个模块:
1)操作:
包括录入数据、增加人员、删除人员、修改数据。
2)查询:
包括按总成绩查询、按姓名查询、输出所有学生成绩。
3)排名:
按总分排名、按语文成绩排名、按数学成绩排名、按英语成绩排名
根据需求分析的结果,总体结构如图2-1所示。
学生成绩管理系统
操作
查询
排名
增加人员
按总成绩查询
录入数据
删除人员
修改数据
按姓名查询
输出全部数据
按总分排名
语文成绩排名
数学成绩排名
英语成绩排名
图2.1系统总体结构
3详细设计
3.1数据结构设计
(1)类的设计
表3-1Stu类成员列表
Stu类
charname[20];
doublemath;
doublechinese;
doubleenglish;
doubleaverage;
doublesum;
doublegetsum();
doublegetaver();
(2)系统包含的类库
#include
#include
#include
(3)各个变量的定义和作用
charname[20];学生姓名
doublemath;数学成绩
doublechinese;语文成绩
doubleenglish;英语成绩
doubleaverage;平均分
doublesum;总分
Stu*s[50];对象数组记录学生成绩
3.2系统函数的组成、功能、参数说明、相互调用关系
主函数main()
调用菜单操作函数handle_menu()实现菜单的输出和操作,调用index()打印首页。
以及删除动态对象。
菜单操作函数voidhandle_menu()
这是一个无参的函数,通过调用菜单函数menu()实现菜单的输出,利用do-while()语句和switch()语句实现各函数的调用,系统根据输入的字符选项来调用相应的函数,进行相应的操作。
菜单函数voidmenu()
这是一个无参函数,主要实现“功能选择”的界面,在这个界面里有显示系统的十一大功能,根据每个功能前面的序号进行选择。
打印首页函数voidindex()
这是一个无参函数,主要功能是打印本系统的相关信息。
默认构造函数Stu:
:
Stu()
这是Stu类中的一个默认构造函数,实现对象的初始化。
有参构造函数Stu:
:
Stu(charn[20],doublema,doublechin,doubleeng)
这个函数的功能主要是对对象的数据成员赋值。
求总分函数doubleStu:
:
getsum()
这是一个无参函数,主要功能是将每个对象的语文、数学、英语三科成绩求和,返回总分sum。
求平均分函数doubleStu:
:
getaver()
这是一个无参函数,调用doubleStu:
:
getsum()平均分,返回平均分average
操作0数据录入函数voidoperate0()
这是一个无参函数,是Stu类的一个友元函数,该函数可将用户输入的学生的信息保存到文件"d:
\\document",输入完成后会提示用户是否要继续录入。
操作1增加人员函数voidoperate1()
这是一个无参函数,是Stu类的一个友元函数,该函数可以增加学生人数,提示用户输入的学生的信息,并保存到文件"d:
\\document",输入完成后会提示用户是否要继续录入。
操作2删除人员函数voidoperate2()
这是一个无参函数,是Stu类的一个友元函数,进入后系统会提示用户输入需要删除学生的姓名,然后查找该学生,删除该学生数据,并将其后指针往前移动一位,最后提示用户是否继续删除。
操作3修改数据函数voidoperate3()
这是一个无参函数,是Stu类的一个友元函数,进入后系统会提示用户输入需要修改学生的姓名,该函数的功能是修改学生的成绩,防止了录入数据时的错误,保证了系统的完备性。
操作4按总成绩查询函数voidoperate4()
这是一个无参函数,是Stu类的一个友元函数,进入后系统会提示用户输入需要查询的总分,然后输出所有该分数的学生的成绩,并提示用户是否需要继续查询。
操作5按姓名查询函数voidoperate5()
这是一个无参函数,是Stu类的一个友元函数。
进入后系统会提示用户输入需要查询的学生姓名,然后输出该学生的成绩,并提示用户是否需要继续查询。
操作6输出所有学生的数据函数voidoperate6()
这是一个无参函数,是Stu类的一个友元函数,进入后系统将自动输出该系统下所有学生的成绩,但并不排序,而是按照录入是的顺序输出,输出之后提示用户是否需要进行其它操作。
操作7按总分排名函数voidoperate7()
这是一个无参函数,是Stu类的一个友元函数,进入后系统将按照总分从高到低自动输出该系统下所有学生的成绩,输出之后提示用户是否需要进行其它操作。
操作8按语文成绩排名函数voidoperate8()
这是一个无参函数,是Stu类的一个友元函数,进入后系统将按照语文成绩从高到低自动输出该系统下所有学生的成绩,输出之后提示用户是否需要进行其它操作。
操作9按数学成绩排名函数voidoperate9()
这是一个无参函数,是Stu类的一个友元函数,进入后系统将按照数学成绩从高到低自动输出该系统下所有学生的成绩,输出之后提示用户是否需要进行其它操作。
操作y按英语成绩排名函数voidoperatey()
这是一个无参函数,是Stu类的一个友元函数,进入后系统将按照英语成绩从高到低自动输出该系统下所有学生的成绩,输出之后提示用户是否需要进行其它操作。
4设计测试流程
1.进入系统,显示本系统相关信息。
如图4.1所示。
图4.1系统主页
2.根据系统提示,进入菜单界面。
如图4.2所示。
图4.2菜单界面
3.输入0,回车,按提示输入数据。
如图4.3所示。
图4.3录入数据
输入y,回车,进行其他操作,将会回到图4.1所示的菜单界面。
4.回到菜单界面在输入1,回车,增加人员,按提示输入数据。
如图4.4所示。
图4.4增加人员
输入y,回车,进行其他操作,将会回到图4.1所示的菜单界面
5.回到菜单界面再输入6,回车,输出所有学生的数据,检测操作0和操作1。
运行结果如图4.5所示。
图4.5输出所有学生的数据
输入y,回车,进行其他操作,将会回到图4.1所示的菜单界面
6.回到菜单界面再输入7,回车,测试按总分排名。
运行结果如图4.6所示。
图4.6所有学生总分排名
输入y,回车,进行其他操作,将会回到图4.1所示的菜单界面
7.回到菜单界面再输入3,回车,测试修改数据。
修改完后,进入菜单,选择操作6输出所有学生数据。
修改如下:
张亮:
语文99数学98英语97
吴豪:
语文98数学97英语99
刘杰:
语文97数学99英语98
运行结果如图4.7所示。
图4.7修改后的数据
8.运用修改后的数据,测试按语文、数学、英语成绩排名。
(1)测试按语文成绩,运行结果如图4.8所示。
图4.8按语文成绩排名
(2)测试按数学成绩,运行结果如图4.9所示。
图4.9按数学成绩排名
(3)测试按英语成绩,运行结果如图4.10所示。
图4.10按英语成绩排名
9.回到菜单界面再输入2,测试删除数据,删除学生刘杰的数据。
运行结果如图4.11所示。
图4.11测试删除数据
10.回到菜单界面再输入4,测试按总分查询,运行结果如图4.12所示。
图4.12按总分查询
11.回到菜单界面再输入5,测试按姓名查询,运行结果如图4.13所示。
图4.13按姓名查询
12.测试完毕。
输入n,退出系统。
5结束语
在本次课程设计过程中,胡宁静老师从选题、构思、资料收集到最后定稿的各个环节给予细心指导,使我对软件工程有了更深刻的认识,在此表示衷心地感谢。
在整个过程中,我查阅了大量的关于书籍借阅管理系统的资料和网站,在老师的指导和自己的努力下,终于完成了本次课程设计。
在为期两周的课程设计过程中,使我熟悉了C++编程语言,但也体现了我的种种不足,希望在以后的学习生活当中能够改正。
同时我还要感谢指导过我的每一位老师,他们给了我很大的指导和帮助,还有在我陷入困境时帮助过我的同学们。
参考文献
[1]杨路明,C语言程序设计教程.北京:
北京邮电大学出版社,2005(2009.7重印)
[2]谭浩强,C++程序设计.北京:
清华大学出版社,2004.6
[3]杨路明,C语言程序设计上机指导与习题选解.北京:
北京邮电大学出版社,2005
附录
设计源程序清单
//head.h
#if!
defined(HEAD_H)
#defineHEAD_H
#include
#include
#include
usingnamespacestd;
/***********************
*声明Stu类
***********************/
classStu
{
private:
charname[20]; //姓名
doublemath,chinese,english,average,sum;
public:
Stu() //默认构造函数
{
}
Stu(charn[20],doublema,doublechin,doubleeng); //声明有参构造函数
doublegetsum(); //声明求总分函数
doublegetaver(); //声明求平均分函数
friendvoidoperate0(); //声明有友元函数操作0数据录入
friendvoidoperate1(); //声明有友元函数操作1增加人员
friendvoidoperate2(); //声明有友元函数操作2删除人员
friendvoidoperate3(); //声明有友元函数操作3修改数据
friendvoidoperate4(); //声明有友元函数操作4按总成绩查询
friendvoidoperate5(); //声明有友元函数操作5按姓名查询
friendvoidoperate6(); //声明有友元函数操作6输出所有学生数据
friendvoidoperate7(); //声明有友元函数操作7按总分排名
friendvoidoperate8(); //声明有友元函数操作8按语文成绩排名
friendvoidoperate9(); //声明有友元函数操作9按数学成绩排名
friendvoidoperatey(); //声明有友元函数操作y按英语成绩排名
};
/***********************
*声明函数原型
***********************/
voidmenu(); //声明菜单函数
voidhandle_menu(); //声明菜单操作函数
#endif
//stu.cpp
#include"head.h"
/********************
*定义Stu类
********************/
Stu:
:
Stu(charn[20],doublema,doublechin,doubleeng) //定义有参构造函数
{
strcpy(name,n);
math=ma;
chinese=chin;
english=eng;
}
doubleStu:
:
getsum() //定义求总分函数
{
sum=chinese+english+math;
returnsum;
}
doubleStu:
:
getaver() //定义求平均分函数
{
average=getsum()/3;
returnaverage;
}
//operate0.cpp
#include"head.h"
/***********************
*操作0数据录入函数定义
***********************/
inti=0; //定义全局变量
intj=0; //定义全局变量
Stu*s[50]; //定义对象数组
voidoperate0()
{
charname[20];
charc;
ofstream*file[50];
boolflag2=0;
doublemath,chinese,english;
do
{
cout<<"请输入姓名:
"< cin>>name; cout<<"请输入数学成绩: "< cin>>math; cout<<"请输入语文成绩: "< cin>>chinese; cout<<"请输入外语成绩: "< cin>>english; file[j]=newofstream("d: \\document",ios: : ate); //通过文件保存学生成绩到"d: \\document" *file[j]<<"姓名"< j++; s[i]=newStu(name,math,chinese,english); i++; cout<<"数据录入成功,想继续录入吗(y/n)"< cin>>c; flag2=0; do { if(c! ='y'&&c! ='n') { cout<<"指令错误! 请重新输入! "< cin>>c; } else flag2=1; }while(flag2==0); }while(c=='y'); } //operate1.cpp #include"head.h" /*********************** *操作1增加人员函数定义 ***********************/ externi; //引用外部变量 externj; //引用外部变量 externStu*s[50]; //引用外部变量 voidoperate1() { charname[20]; charc; ofstream*file[50]; boolflag2=0; doublemath,chinese,english; do { cout<<"请输入您要增加的学生的姓名: "< cin>>name; cout<<"请输入数学成绩: "< cin>>math; cout<<"请输入语文成绩: "< cin>>chinese; cout<<"请输入外语成绩: "< cin>>english; file[j]=newofstream("d: \\document",ios: : ate); //通过文件保存学生成绩到"d: \\document" *file[j]<<"姓名"< j++; s[i]=newStu(name,math,chinese,english); i++; cout<<"数据录入成功,想继续录入吗(y/n)"< cin>>c; flag2=0; do { if(c! ='y'&&c! ='n') { cout<<"指令错误! 请重新输入! "< cin>>c; } else flag2=1; }while(flag2==0); }while(c=='y'); } //operate2.cpp #include"head.h" /*********************** *操作2删除人员函数定义 ***********************/ externi; //引用外部变量 externj; //引用外部变量 externStu*s[50]; //引用外部变量 voidoperate2() { charname[20]; charc; boolflag3=0; do { cout<<"请输入您要删除的学生姓名: "< cin>>name; for(inth=0;h { if(strcmp(name,s[h]->name)==0) { flag3=1; i--; do { s[h]=s[h+1]; h++; }while(h<=i); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩管理系统 文档