c++课程设计(论文)学生成绩管理系统.doc

上传人:仙人指路1688 文档编号:2384610 上传时间:2023-02-17 格式:DOC 页数:31 大小:124KB
返回 下载 相关 举报
c++课程设计(论文)学生成绩管理系统.doc_第1页
第1页 / 共31页
c++课程设计(论文)学生成绩管理系统.doc_第2页
第2页 / 共31页
c++课程设计(论文)学生成绩管理系统.doc_第3页
第3页 / 共31页
c++课程设计(论文)学生成绩管理系统.doc_第4页
第4页 / 共31页
c++课程设计(论文)学生成绩管理系统.doc_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《c++课程设计(论文)学生成绩管理系统.doc》由会员分享,可在线阅读,更多相关《c++课程设计(论文)学生成绩管理系统.doc(31页珍藏版)》请在三一办公上搜索。

1、目录1引 言21.1 课题背景及意义21.2 可行性分析22系统需求分析42.1 功能需求分析42.2 性能需求分析42.3 系统总体结构设计43详细设计63.1 数据结构设计63.2系统函数的组成、功能、参数说明、相互调用关系74设计测试流程95结束语14参考文献15附录16学生成绩管理系统学生姓名:张亮 指导老师:胡宁静摘 要 本课程设计主要解决学生成绩管理问题。使用计算机进行信息管理,不仅提高了工作效率,而且大大的提高了其安全性.尤其对于复杂的信息管理,计算机能够充分发挥它的优越性.学生成绩管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要。在课程设计中

2、,系统开发平台为Windows XP,程序设计设计语言采用Visual C+,程序运行平台为Windows 98/2000/XP。在程序设计中,采用了面向对象解决问题的方法。程序通过调试运行,初步实现了设计目标。关键词 程序设计;C+;成绩管理1引 言 为方便对学生成绩进行高效的管理,编写该程序以提高学生成绩管理效率。使用该程序之后,学校管理者可以查询某位学生、某个科目的成绩情况,还可以对学生成绩进行排名,对学生的数据进行修改和删除,其中排名包括总分排名和各个科目的排名,学生可以更具自己的个人信息进行成绩查询,查询结果包括各个科目的分数、总分和平均分。通过本系统可以很好的掌握学生成绩的分布,减

3、轻管理人员的负担,也使学生的成绩和信息长时期的保留。1.1 课题背景及意义一直以来人们使用传统的人工方式管理学生成绩,在计算机尚未在学校广泛使用之前,学生成绩管理主要依靠手工。一个最典型的手工处理过程就是:当考试完后,老师就要把学生成绩登记到文档中,当老师或学生要查询成绩的时候要一个一个去找,总分、平均分都需要一个一个累加起来算,很麻烦,不过最麻烦的还是排名,不能一目了然。以上所描述的手工过程的不足之处显而易见,首先处理学生成绩的效率很低,其次处理能力比较低,一段时间内,所能服务的读者人数是有限的。利用计算机来处理这些流程无疑会极大程度地提高效率和处理能力。我们很清晰的看到自己的各个科目成绩和

4、每个科目的排名和总分排名以及所有学生的成绩分布,而且还是零失误,所有的都是一目了然。极大的方便了学生和老师。为提高成绩管理效率,管理人员的工作负担,有必要开发一个小型成绩管理系统来对学生成绩实施有效管理。1.2 可行性分析(1)经济可行性分析作为学校这样的商业性质较小的场所,其经济成分比重相对较少,主要是支出的费用:其中包括设备购置费、软件开发费用、管理和维护费、人员工资和培训费等。由于各个学校实行统一操作,系统共享,其设备购置,人员工资,维护费用相对较少,而且本系统的费用很低。(2)技术可行性分析技术上的可行性分析主要分析现有技术条件能否顺利完成开发工作,硬件、软件配置能否满足开发者的需要,

5、各类技术人员的数量,水平,来源等。学生成绩管理系统的工作主要是在学生和老师之间架起一座桥梁,能相互沟通信息和处理信息。这一特点非常适合计算机特点,通过网络internet技术,发挥计算机的信息传输速度快、准确度高的优势。计算机硬件和软件技术的飞速发展,为系统的建设提供了技术条件。(3)社会可行性分析社会可行性有时也称为操作可行性,主要论证新系统在企业或机构开发和运行的可能性以及运行后可能一起的对企业或机构的影响,即组织内外是否具备接受和使用新系统的条件。在当前信息技术飞速发展的大环境下,计算机技术和软件技术的更新是学校完全有可能也有能力采用这样先进的管理技术。它对学校带来的影响可以看到:对传统

6、管理理念的冲击,可能引起管理层的变动和人员的调整。对学校工作人员的要求提高,使学校在一定的可能下进行机构精简,迫使工作人员继续学习新知识,拓宽学校在市场环境下的生存空间。对学生和管理人员业务方式的转变和扩充。2系统需求分析2.1 功能需求分析1) 录入数据:将学生姓名、语文、数学、英语成绩写入文件。2) 增加人员:增加学生,并将学生姓名和成绩写入文件。3) 删除人员:删除学生信息和成绩。4) 修改数据:修改学生成绩。5) 按总成绩查询:根据总分查询学生成绩,包括平均分。6) 按姓名查询:根据学生姓名查询学生成绩,包括总分和平均分。7) 输出所有学生成绩:输出文件中所有学生数据。8) 按总分排名

7、:按照总分从高到低排序。9) 按语文成绩排名:按照语文成绩从高到低排序。10) 按数学成绩排名:按照数学成绩从高到低排序。11) 按英语成绩排名:按照英语成绩从高到低排序。2.2 性能需求分析1硬件环境l 处理器:Inter CR300或是更高。l 内存:128MB(建议 196MB)。l 硬盘空间:20MB。2软件环境l 操作系统: Windows 98/ XP 或是Windows 2000/Windows NT Server 4.0。2.3 系统总体结构设计对学生成绩进行管理的系统,主要划分为以下三个模块:1) 操作:包括录入数据、增加人员、删除人员、修改数据。2) 查询:包括按总成绩查询

8、、按姓名查询、输出所有学生成绩。3) 排名:按总分排名、按语文成绩排名、按数学成绩排名、按英语成绩排名根据需求分析的结果,总体结构如图2-1所示。学生成绩管理系统操作查询排名增加人员按总成绩查询录入数据删除人员修改数据按姓名查询输出全部数据按总分排名语文成绩排名数学成绩排名英语成绩排名图2.1系统总体结构3详细设计3.1 数据结构设计(1) 类的设计表3-1 Stu类成员列表Stu类char name20;double math;double chinese;double english;double average;double sum;double getsum();double geta

9、ver();(2)系统包含的类库#include输入输出流#includeString类#include文件输入/输出操作(3)各个变量的定义和作用char name20; 学生姓名double math; 数学成绩double chinese; 语文成绩double english; 英语成绩double average; 平均分double sum; 总分Stu *s50; 对象数组记录学生成绩3.2系统函数的组成、功能、参数说明、相互调用关系主函数 main()调用菜单操作函数handle_menu()实现菜单的输出和操作,调用index()打印首页。以及删除动态对象。菜单操作函数 vo

10、id handle_menu()这是一个无参的函数,通过调用菜单函数menu()实现菜单的输出,利用do-while()语句和switch()语句实现各函数的调用,系统根据输入的字符选项来调用相应的函数,进行相应的操作。菜单函数 void menu()这是一个无参函数,主要实现“功能选择”的界面,在这个界面里有显示系统的十一大功能,根据每个功能前面的序号进行选择。打印首页函数 void index()这是一个无参函数,主要功能是打印本系统的相关信息。默认构造函数Stu: Stu()这是Stu类中的一个默认构造函数,实现对象的初始化。有参构造函数Stu: Stu(char n20,double

11、ma,double chin,double eng)这个函数的功能主要是对对象的数据成员赋值。求总分函数double Stu:getsum()这是一个无参函数,主要功能是将每个对象的语文、数学、英语三科成绩求和,返回总分sum。求平均分函数double Stu:getaver()这是一个无参函数,调用double Stu:getsum()平均分,返回平均分average操作0数据录入函数void operate0()这是一个无参函数,是Stu类的一个友元函数,该函数可将用户输入的学生的信息保存到文件d:document,输入完成后会提示用户是否要继续录入。操作1增加人员函数void opera

12、te1()这是一个无参函数,是Stu类的一个友元函数,该函数可以增加学生人数,提示用户输入的学生的信息,并保存到文件d:document,输入完成后会提示用户是否要继续录入。操作2删除人员函数void operate2()这是一个无参函数,是Stu类的一个友元函数,进入后系统会提示用户输入需要删除学生的姓名,然后查找该学生,删除该学生数据,并将其后指针往前移动一位,最后提示用户是否继续删除。操作3修改数据函数void operate3()这是一个无参函数,是Stu类的一个友元函数,进入后系统会提示用户输入需要修改学生的姓名,该函数的功能是修改学生的成绩,防止了录入数据时的错误,保证了系统的完备

13、性。操作4按总成绩查询函数void operate4()这是一个无参函数,是Stu类的一个友元函数,进入后系统会提示用户输入需要查询的总分,然后输出所有该分数的学生的成绩,并提示用户是否需要继续查询。操作5按姓名查询函数void operate5()这是一个无参函数,是Stu类的一个友元函数。进入后系统会提示用户输入需要查询的学生姓名,然后输出该学生的成绩,并提示用户是否需要继续查询。操作6输出所有学生的数据函数void operate6()这是一个无参函数,是Stu类的一个友元函数,进入后系统将自动输出该系统下所有学生的成绩,但并不排序,而是按照录入是的顺序输出,输出之后提示用户是否需要进行

14、其它操作。操作7按总分排名函数void operate7()这是一个无参函数,是Stu类的一个友元函数,进入后系统将按照总分从高到低自动输出该系统下所有学生的成绩,输出之后提示用户是否需要进行其它操作。操作8按语文成绩排名函数void operate8()这是一个无参函数,是Stu类的一个友元函数,进入后系统将按照语文成绩从高到低自动输出该系统下所有学生的成绩,输出之后提示用户是否需要进行其它操作。操作9按数学成绩排名函数void operate9()这是一个无参函数,是Stu类的一个友元函数,进入后系统将按照数学成绩从高到低自动输出该系统下所有学生的成绩,输出之后提示用户是否需要进行其它操作

15、。操作y按英语成绩排名函数void operatey()这是一个无参函数,是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,回车,进行其他操作

16、,将会回到图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所示。

17、图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.测试

18、完毕。输入n,退出系统。5结束语在本次课程设计过程中,胡宁静老师从选题、构思、资料收集到最后定稿的各个环节给予细心指导,使我对软件工程有了更深刻的认识,在此表示衷心地感谢。在整个过程中,我查阅了大量的关于书籍借阅管理系统的资料和网站,在老师的指导和自己的努力下,终于完成了本次课程设计。在为期两周的课程设计过程中,使我熟悉了C+编程语言,但也体现了我的种种不足,希望在以后的学习生活当中能够改正。同时我还要感谢指导过我的每一位老师,他们给了我很大的指导和帮助,还有在我陷入困境时帮助过我的同学们。参考文献1 杨路明,C语言程序设计教程.北京:北京邮电大学出版社,2005(2009.7重印)2 谭浩强

19、,C+程序设计. 北京:清华大学出版社,2004.63 杨路明,C语言程序设计上机指导与习题选解.北京:北京邮电大学出版社,2005附录设计源程序清单/head.h#if !defined(HEAD_H)#define HEAD_H#include#include#includeusing namespace std;/*声明Stu类*/class Stuprivate:char name20;/姓名double math,chinese,english,average,sum;public:Stu()/默认构造函数Stu(char n20,double ma,double chin,doub

20、le eng);/声明有参构造函数double getsum();/声明求总分函数double getaver();/声明求平均分函数friend void operate0();/声明有友元函数操作0 数据录入friend void operate1();/声明有友元函数操作1 增加人员friend void operate2();/声明有友元函数操作2 删除人员friend void operate3();/声明有友元函数操作3 修改数据friend void operate4();/声明有友元函数操作4 按总成绩查询friend void operate5();/声明有友元函数操作5 按

21、姓名查询friend void operate6();/声明有友元函数操作6 输出所有学生数据friend void operate7();/声明有友元函数操作7 按总分排名friend void operate8();/声明有友元函数操作8 按语文成绩排名friend void operate9();/声明有友元函数操作9 按数学成绩排名friend void operatey();/声明有友元函数操作y 按英语成绩排名;/*声明函数原型*/void menu();/声明菜单函数void handle_menu();/声明菜单操作函数#endif/stu.cpp#includehead.h/

22、*定义Stu类*/Stu:Stu(char n20,double ma,double chin,double eng)/定义有参构造函数strcpy(name,n); math=ma; chinese=chin; english=eng;double Stu:getsum()/定义求总分函数sum=chinese+english+math;return sum;double Stu:getaver()/定义求平均分函数average=getsum()/3;return average;/operate0.cpp#includehead.h/*操作0数据录入函数定义*/int i=0;/定义全局

23、变量int j=0;/定义全局变量Stu *s50;/定义对象数组void operate0()char name20;char c; ofstream *file50; bool flag2=0;double math,chinese,english;docout请输入姓名:name;cout请输入数学成绩:math;cout请输入语文成绩:chinese;cout请输入外语成绩:english;filej=new ofstream(d:document,ios:ate);/通过文件保存学生成绩到d:document*filej姓名name数学成绩math语文成绩chinese外语成绩eng

24、lishendl; j+; si=new Stu(name, math, chinese, english); i+; cout数据录入成功,想继续录入吗(y/n)c; flag2=0; do if(c!=y&c!=n) cout指令错误!请重新输入!c; else flag2=1; while(flag2=0); while(c=y); /operate1.cpp#includehead.h/*操作1增加人员函数定义*/extern i;/引用外部变量extern j;/引用外部变量extern Stu *s50;/引用外部变量void operate1()char name20;char

25、c; ofstream *file50; bool flag2=0; double math,chinese,english;docout请输入您要增加的学生的姓名:name;cout请输入数学成绩:math;cout请输入语文成绩:chinese;cout请输入外语成绩:english;filej=new ofstream(d:document,ios:ate);/通过文件保存学生成绩到d:document*filej姓名name数学成绩math语文成绩chinese外语成绩englishendl; j+; si=new Stu(name, math, chinese, english);

26、i+; cout数据录入成功,想继续录入吗(y/n)c; flag2=0; do if(c != y & c != n) cout指令错误!请重新输入!c; else flag2 = 1; while(flag2 = 0); while(c = y); /operate2.cpp#includehead.h/*操作2删除人员函数定义*/extern i;/引用外部变量extern j;/引用外部变量extern Stu *s50;/引用外部变量void operate2()char name20;char c; bool flag3=0;docout请输入您要删除的学生姓名:name;for(

27、int h=0;hname) = 0)flag3 = 1; i-;dosh=sh+1;h+;while(h=i);if(flag3=0)cout您要求删除的对象本来就不存在!请检查输入的正确性!;cout要继续删除吗?(y/n)c;if(c!=y&c!=n)cout指令错误!请重新输入!c;while(c=y);/operate3.cpp#includehead.h/*操作3修改数据函数定义*/extern i;/引用外部变量extern j;/引用外部变量extern Stu *s50;/引用外部变量void operate3()char name20;char c; bool flag2=

28、0; double math,chinese,english;double mat,chin,eng;docout请输入您要修改的学生的姓名:name;for(int h=0;hname)=0)flag2=1; cout请输入新的数学成绩:mat;cout请输入新的语文成绩:chin;cout请输入新的外语成绩:eng;sh-chinese=chin;sh-math=mat;sh-english=eng;cout数据修改成功!;if(flag2=0)cout您要修改的学生本来就不存在!请检查重新输入!endl;cout想继续修改吗(y/n)c;if(c!=y&c!=n)cout指令错误!请重新

29、输入!c;while(c=y); /operate4.cpp#includehead.h/*操作4按总成绩查询函数定义*/extern i;/引用外部变量extern j;/引用外部变量extern Stu *s50;/引用外部变量void operate4()char c; double t;doint flag1=0;cout请输入你要查询学生的总成绩t;for(int q=0;qgetsum()=t)flag1=1;cout您要查询的学生是:(*sq).nameendl;if(flag1=0)cout对不起!您要查询的学生不存在!endl; cout您想继续查询吗?(y/n)c;if(c

30、!=y&c!=n)cout指令错误!请重新输入!c;while(c=y);/operate5.cpp#includehead.h/*操作5按姓名查询函数定义*/extern i;/引用外部变量extern j;/引用外部变量extern Stu *s50;/引用外部变量void operate5()char name20;char c; char n20;doint flag=0;cout请输入你要查询的学生姓名n;for(int j=0;ji;j+)if(strcmp(n,(*sj).name)=0)flag=1;cout您要查询的学生是:(*sj).nameendl;cout(*sj).n

31、ame的总成绩成绩是(*sj).getsum()endl平均成绩是:(*sj).getaver()endl; if(flag=0)cout对不起!您要查询的学生不存在!endl;cout您想继续查询吗?(y/n)c;if(c!=y&c!=n)cout指令错误!请重新输入!c;while(c=y);/operate6.cpp#includehead.h/*操作6输出所有学生的数据函数定义*/extern i;/引用外部变量extern j;/引用外部变量extern Stu *s50;/引用外部变量void operate6()char name20;char c; bool flag2=0;

32、cout本系统所有学生数据如下:endl;if(i=0)cout管理系统中没有录入数据或者数据已经被删除!endl;for(int k=0;ki;k+)/数据输出coutk+1 姓名: name 语文: chinese 数学:math 外语:english 总分:(*sk).getsum() 平均分:(*sk).getaver()endl;/operate7.cpp#includehead.h/*操作7按总分排名函数定义*/extern i;/引用外部变量extern j;/引用外部变量extern Stu *s50;/引用外部变量void operate7()char name20;char

33、 c; bool flag2=0; int t;Stu b;cout本系统所有学生排名如下:endl; for(int x=0;xi-1;x+)t=x;for(int y=x+1;ygetsum()getsum()t=y;if(t!=x)b=*sx; *sx=*st; *st=b;if(i=0)cout管理系统中没有录入数据或者数据已经被删除!; for(int k=0;ki;k+)/数据输出coutk+1 姓名: name 语文: chinese 数学:math 外语:english 总分:(*sk).getsum() 平均分:(*sk).getaver()endl;/operate8.cp

34、p#includehead.h/*操作8按语文成绩排名函数定义*/extern i;/引用外部变量extern j;/引用外部变量extern Stu *s50;/引用外部变量void operate8()char name20;char c; bool flag2=0; double math,chinese,english;int t;Stu b;cout本系统所有学生语文排名如下:endl;for(int x=0;xi-1;x+)t=x;for(int y=x+1;ychinesechinese)t=y;if(t!=x)b=*st; *st=*sx; *sx=b;if(i=0)cout管

35、理系统中没有录入数据或者数据已经被删除!;for(int k=0;ki;k+)/数据输出coutk+1 姓名: name 语文: chinese 数学:math 外语:english 总分:(*sk).getsum() 平均分:(*sk).getaver()endl;/operate9.cpp#includehead.h/*操作9按数学成绩排名函数定义*/extern i;/引用外部变量extern j;/引用外部变量extern Stu *s50;/引用外部变量void operate9()char name20;char c; bool flag2=0; double math,chinese,english;int t;Stu b;cout本系统所有学生数学排名如下:endl;for(int x=0;xi;x+)t=x;for(int y=x+1;ymathmath)t=y;if(t!=x)

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号