收藏 分享(赏)

面向对象C++ 学生成绩管理系统.doc

上传人:dreamzhangning 文档编号:2723268 上传时间:2018-09-26 格式:DOC 页数:20 大小:441.91KB
下载 相关 举报
面向对象C++ 学生成绩管理系统.doc_第1页
第1页 / 共20页
面向对象C++ 学生成绩管理系统.doc_第2页
第2页 / 共20页
面向对象C++ 学生成绩管理系统.doc_第3页
第3页 / 共20页
面向对象C++ 学生成绩管理系统.doc_第4页
第4页 / 共20页
面向对象C++ 学生成绩管理系统.doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

1、课程设计(论文)题 目 名 称 学生成绩管理系统 课 程 名 称 专业课程设计 I 学 生 姓 名 学 号 系 、 专 业 信息工程系、计算机科学与技术 指 导 教 师 2013 年 11 月 15 日1目录1 前言 12 需求分析 12.1 任务 .12.2 要求 .12.3 运行环境 .12.4 开发工具 .23 分析和设计 23.1 系统分析及设计思路 .23.2 主要类图 .43.3 函数流程图 .64 具体代码实现 .85 课程设计总结 .135.1 程序运行结果或预期运行结果 .135.2 课程设体会 .16参考文献 18致 谢 1821 前言当前的编程语言主要分为面向过程和面向对

2、象两种,其中我们所熟悉的 C 语言是一种面向过程的语言,而 C+则是一种面向对象的语言。面向对象主要是一种思想,面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围。如数据库系统、交互式界面、应用结构、网络管理结构、人工智能等。对于此次课程设计学生成绩管理系统的设计,主要是考察我们对面向对象中类的定义和使用,成员变量和成员函数的定义和使用,友元函数的理解和调用,继承性与派生类,文件输入输出的掌握情况,在实际设计中首先定义一个基类 stu 用来存放学生的基本信息,再定义一个派生类 stu1 用了存放课程信息。通过本课程设计,我们可以运用 C+语言实现所设计的算法,编写较大型的程序,分

3、析和解决实际应用问题,进一步加深、巩固自己所学专业课程的基本理论知识,理论联系实际,进一步培养自己综合分析问题和解决问题的能力。通过本次课程设计我们还可以进一步掌握编写文档、文档排版的能力。为以后步入社会,走上工作岗位打下坚实的基础。2 需求分析2.1 任务某学校学生选择的课程包括选修课和必修课,每门课程有相应的学分,学生每学期可以选择若干门课程,设计学生成绩管理系统,计算学生某一学期的总成绩和平均成绩。2.2 要求具体要求:(1)可以进行学生成绩的输入和查询。(2)可以通过学号查找某个同学的总成绩,学分,平均成绩。(3)可以查询同学的达标情况和没有及格的科目。2.3 运行环境(1)WINDO

4、W XP/WINDOW 7 系统(2)Visual C+ 6.0 编译环境或 DEV C+ 5.0 编译环境32.4 开发工具C+语言3 分析和设计3.1 系统分析及设计思路根据面向对象的思想,通过类来实现设计一个学生成绩管理系统。首先定义一个基类 stu 用来存放学生的基本信息(学号(number),姓名(name)) ,再定义一个派生类stu1 用来存放课程信息(课程号(classnumber),课程名(classname),课程总学分(score),平时成绩(pingshifen),实验成绩(shiyanfen),卷面成绩(juanmianfen),总分(zongfen),实得学分(la

5、stscore)) 。根据实际情况考虑,有些课程并不需要实验,所以总分有两种算法。一种是没有实验成绩的总分:总分=平时成绩0.3+卷面成绩0.7 另一种有实验的总分:总分=平时成绩0.15+实验成绩0.15+卷面成绩0.7,总学分=各科实得学分;总成绩=各科总分;平均成绩=总成绩/总学分;main 函数用来实现操作,在程序中实现了三个功能:1 输入学生成绩;2 学生成绩查询;3 达标查询。main 函数通过文件流、I/O 流等学习内容实现。通过建立文件来存储所输入的学生信息以及存储计算的结果。1.基类 stu 类的设计:class stu /*定义一个基类,用来存放学生基本信息*/ publi

6、c:stu(char a20,char b20)strcpy(number,a);strcpy(name,b);char* getnumber()return number;4char* getname()return name;private:char number20;char name20;2.派生类 stu1 类的设计:class stu1:public stu /*定义派生类, 存放课程信息*/ public:stu1(char a20,char b20,char f10,char g10,double aa,double bb,double cc,double dd,double

7、ee,double ff):stu(a,b)strcpy(classnumber,f);strcpy(classname,g);score=aa;pingshifen=bb;shiyanfen=cc;juanmianfen=dd;zongfen=ee;lastscore=ff;friend void main();private:char classnumber10;char classname10;double score,pingshifen,shiyanfen,juanmianfen,zongfen,lastscore;;53.2 主要类图图 3.2.1 基类 stu 类图图 3.2.2

8、 派生类 stu1 类图6图 3.2.3 继承关系类图public73.3 函数流程图 整个程序的流程图:首先判断是否进入学生成绩管理系统,如果进入,通过输入相应的 1,2,3 选择要实现的功能,如图 3.3.1 所示。图 3.3.1 整个程序的主流程图欢迎进入学生管理系统是否进入系统结束输出菜单选项 1,2,3得到输入值 p1#include开始输入课程信息:课程编号、输入课程输入学生信息:学生学号、学生姓名输入该学生该课程的各项成绩:平时成绩、实验成绩、卷面成绩。该课程的学分继续输入该科其他学生成绩其他选择,输入其他课程其他学生成绩、成绩查询、达标查询等。输入该课程其他学生在这科的各项成绩

9、:平时成绩、实验成绩、卷面成绩。结束9#include#includeusing namespace std;class stu /*定义一个基类,存放姓名和学号信息*/public:stu(char a20,char b20)strcpy(number,a);strcpy(name,b);char* getnumber()return number;char* getname()return name;private:char number20;char name20;class stu1:public stu /*定义另一个派生类,存放课程信息和成绩*/public:stu1(char a

10、20,char b20,char f10,char g10,double aa,double bb,double cc,double dd,double ee,double ff):stu(a,b)strcpy(classnumber,f);strcpy(classname,g);score=aa;pingshifen=bb;shiyanfen=cc;juanmianfen=dd;zongfen=ee;lastscore=ff;friend void main();private:char classnumber10;char classname10;10double score,pingsh

11、ifen,shiyanfen,juanmianfen,zongfen,lastscore;void main() /*主函数*/char c; int flag5=0;int s=0;coutc;do /*判断是否进入系统*/if(c=n)break;else flag5=1;char number10;char name20;int i=0,I=0,j=0;int ja=0;ofstream *file50; stu1 *s150; /*定义指针存放课程信息*/char classnumber8;char classname10;double score,pingshifen,shiyanf

12、en,juanmianfen,zongfen,lastscore;bool flag=0;int p;char c4;do /*选择菜单*/coutp;if(1classnumber;coutclassname;docoutnumber;coutname;coutscore;coutpingshifen;coutshiyanfen;coutjuanmianfen;if(shiyanfen=0) /*总分的算法判断*/zongfen=pingshifen*0.3+juanmianfen*0.7;elsezongfen=pingshifen*0.15+shiyanfen*0.15+juanmian

13、fen*0.7;if(90c1;int flag1=0;doif(c1!=yelseflag1=1;while(flag1=0);while(c1=y);coutc2;int flag2=0;doif(c2!=yelseflag2=1;while(flag2=0); while(c2=y);if(p=2) /*成绩查询系统 */coutnum;int ii=0;double sum=0;double fen=0;double pingjunfen;for(int j=0;jnum;for(int j=0;jc4;while(c4=y);14while(flag5=0);5 课程设计总结5.1

14、程序运行结果或预期运行结果1.通过输入 y/n 判断用户是否进入学生成绩管理系统,通过输入对应的序号选择对应的功能,如图 5.1.1 所示。图 5.1.1 进入学生成绩管理系统2.判断输入的数字 1,2,3 选择对应实现的功能,选择 1 即表示输入学生成绩,首先输入课程号、课程名称再输入该课程某一学生的信息、课程学分以及该生这门课程的各项成绩,因为高数没有实验,所以实验成绩为 0。如图 5.1.2 所示。图 5.1.2 输入学科 1(高数)某一学生该科的各项成绩3.通过上一个流程选择 y,选择输入学科 1(高数)的其他学生在该课程的各项成15绩,平时分、实验分和卷面分。如图 5.1.3 所示图

15、 5.1.3 输入学科 1(高数)其他学生该科的各项成绩4.当学科 1 数据和学生在该科的信息输入数据成功后。继续进行其他学科 2(如C+面向对象的课程编号、课程名)的输入操作和其他学生在 C+面向对象这科的各项成绩,因为该科有实验,所以有实验成绩。如图 5.1.4 所示。图 5.1.4 输入学科 2(C+面向对象)某一学生该科的各项成绩5.输入其他学生在学科 2(C+面向对象)的各项成绩,如图 5.1.5 所示。16图 5.1.5 输入学科 2(C+面向对象)其他学生该科的各项成绩6.当所有学生的所有科目成绩输入数据成功后,选择适当的操作。下面进行的操作就是各个学生的成绩查询,以输入的数据

16、039 号学生和 002 学生为例。如图 5.1.6所示。图 5.1.6 学号为 039 号学生的各科成绩7.查询其他学生的各科成绩,选择适当的操作。以输入的学号 002 号学生为例。如图 5.1.7 所示。17图 5.1.7 学号为 002 号学生的各科成绩8.通过查找各个学生的成绩,我们可以对成绩管理系统里的数据有清晰的认识,在必要时可以通过该系统进行统计。在了解同学成绩后我们需要进行的操作是:某已学生是否达标,以及该生哪门不及格等信息。通过适当的操作进行达标查询,以 002号为例可以看出:该生需要留级,未及格的科目为 C+面向对象。如图 5.1.8 所示。图 5.1.8 学号为 002

17、号学生的达标查询9.当所有的数据输入成功、学生的各科成绩计算出来后。可以在程序设置的位置找到我们所输入数据、计算得到的数据存储的文本文件。课程信息和学生成绩可以从文件读取。如图 5.1.9 所示。18图 5.1.9 存储输入数据和计算得到数据的文本文件5.2 课程设计体会课程设计刚开始时,拿着选定的题目不知如何下手。毕竟课程设计不同于实验课,很多东西都要自己设计。静下心来,仔细分析题目,再加上指导老师的说明与提示,心中才有了谱。将整个系统根据不同的功能化分成不同的模块,画出各个部分的流程图根据流程图设计代码块。比如设计一个基类 stu 和一个派生类 stu1 再分别进行设计,逐个攻破,最后将其

18、整合起来。回顾起此课程设计,至今我仍感慨颇多,从理论到实践,在这段日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,友元函数、文件操作、函数重载。而且学到了很多在书本上所没有学到过的知识。在完成课题过程中,我们发现运行后的界面非常的差,有些成绩之间没有分开,这是设计上的漏洞。需要给界面添加必要的空格或符号,以用来区分不同的成绩。使用户界面尽量美观。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的

19、过程中遇到问题,可以说得是困难重重,但可喜的是最终都得到了解决。 实验过程中,也对团队精神的进行了考察,让我们在合作起来更加默契,在成功后一起体会喜悦的心情。果然是团结就是力量,只有互相之间默契、融洽的配合才能换来最终完美的结果。此次设计也让我明白了思路即出路,有什么不懂不明白的地方要及时向同学、老师请教或上网查询,只要认真钻研,动脑思考,动手实践,就没有弄不懂的知识,收获颇丰。19参考文献1陈维兴等,C+面向对象程序设计教程(第 3 版).清华大学出版,2009.62李素若,张牧等,C+面向对象程序设计.化学工业出版社,2008.73张福祥. C 语言程序设计M. 辽宁大学出版社,2008.

20、14牛莉,刘远军等计算机等级考试辅导教程M北京:中国铁道出版社,2008致 谢此次课程让我收获很多的同时也学会了许多知识。首先要感谢学校为我们课程设计提供了良好的环境,机房过硬的机器配置让我们可以更好、更快的实现我们的课程设计。 这学期的 C+面向对象课程设计是陈智老师教的,陈老师对待教学认真负责,上课积极为我们分析重点、难点而且还反复提出。这让我们在这门学科上对重点难点的掌握层次比较高。老师上课还时常给我们讲一些专业发展前景和课外内容,这极大地扩充了我们的知识面、丰富了我们的阅历,为以后步入社会打下一些基础。非常感谢此次负责我们这组课程设计的柳老师。感谢柳老师在课程设计过程中给我的指导,柳老师在检查我们程序时的严谨作风令我钦佩不已。老师细心的检查我们的程序,并指出我们所出现的问题和欠缺的方面,并且指导我们如何完善,如何使程序更加优化。这些都是让我们这组课程设计得已顺利完成的条件,感谢各位老师的悉心帮助和教导!感谢给予我们此次课程设计帮助的同学们!此外非常感谢此次课程设计的搭档吴娇同学,谢谢她在模块设计提出的种种思想,她细心的态度发现了此次课程设计中不少的问题,她让这次课程设计更加出色、出彩。最后感谢所有给予我帮助的老师和同学,谢谢你们!

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

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报