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

上传人:b****2 文档编号:18057101 上传时间:2023-08-07 格式:DOCX 页数:19 大小:90.23KB
下载 相关 举报
面向对象C++ 学生成绩管理系统.docx_第1页
第1页 / 共19页
面向对象C++ 学生成绩管理系统.docx_第2页
第2页 / 共19页
面向对象C++ 学生成绩管理系统.docx_第3页
第3页 / 共19页
面向对象C++ 学生成绩管理系统.docx_第4页
第4页 / 共19页
面向对象C++ 学生成绩管理系统.docx_第5页
第5页 / 共19页
面向对象C++ 学生成绩管理系统.docx_第6页
第6页 / 共19页
面向对象C++ 学生成绩管理系统.docx_第7页
第7页 / 共19页
面向对象C++ 学生成绩管理系统.docx_第8页
第8页 / 共19页
面向对象C++ 学生成绩管理系统.docx_第9页
第9页 / 共19页
面向对象C++ 学生成绩管理系统.docx_第10页
第10页 / 共19页
面向对象C++ 学生成绩管理系统.docx_第11页
第11页 / 共19页
面向对象C++ 学生成绩管理系统.docx_第12页
第12页 / 共19页
面向对象C++ 学生成绩管理系统.docx_第13页
第13页 / 共19页
面向对象C++ 学生成绩管理系统.docx_第14页
第14页 / 共19页
面向对象C++ 学生成绩管理系统.docx_第15页
第15页 / 共19页
面向对象C++ 学生成绩管理系统.docx_第16页
第16页 / 共19页
面向对象C++ 学生成绩管理系统.docx_第17页
第17页 / 共19页
面向对象C++ 学生成绩管理系统.docx_第18页
第18页 / 共19页
面向对象C++ 学生成绩管理系统.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

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

《面向对象C++ 学生成绩管理系统.docx》由会员分享,可在线阅读,更多相关《面向对象C++ 学生成绩管理系统.docx(19页珍藏版)》请在冰点文库上搜索。

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

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

课程设计(论文)

题目名称学生成绩管理系统

课程名称专业课程设计I

学生姓名

学号

系、专业信息工程系、计算机科学与技术

指导教师

2013年11月15日

1前言

当前的编程语言主要分为面向过程和面向对象两种,其中我们所熟悉的C语言是一种面向过程的语言,而C++则是一种面向对象的语言。

面向对象主要是一种思想,面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围。

如数据库系统、交互式界面、应用结构、网络管理结构、人工智能等。

对于此次课程设计学生成绩管理系统的设计,主要是考察我们对面向对象中类的定义和使用,成员变量和成员函数的定义和使用,友元函数的理解和调用,继承性与派生类,文件输入输出的掌握情况,在实际设计中首先定义一个基类stu用来存放学生的基本信息,再定义一个派生类stu1用了存放课程信息.通过本课程设计,我们可以运用C++语言实现所设计的算法,编写较大型的程序,分析和解决实际应用问题,进一步加深、巩固自己所学专业课程的基本理论知识,理论联系实际,进一步培养自己综合分析问题和解决问题的能力。

通过本次课程设计我们还可以进一步掌握编写文档、文档排版的能力。

为以后步入社会,走上工作岗位打下坚实的基础.

2需求分析

2。

1任务

某学校学生选择的课程包括选修课和必修课,每门课程有相应的学分,学生每学期可以选择若干门课程,设计学生成绩管理系统,计算学生某一学期的总成绩和平均成绩。

2.2要求

具体要求:

(1)可以进行学生成绩的输入和查询。

(2)可以通过学号查找某个同学的总成绩,学分,平均成绩。

(3)可以查询同学的达标情况和没有及格的科目。

2.3运行环境

(1)WINDOWXP/WINDOW7系统

(2)VisualC++6.0编译环境或DEVC++5.0编译环境

2.4开发工具

C++语言

3分析和设计

3。

1系统分析及设计思路

根据面向对象的思想,通过类来实现设计一个学生成绩管理系统。

首先定义一个基类stu用来存放学生的基本信息(学号(number),姓名(name)),再定义一个派生类stu1用来存放课程信息(课程号(classnumber),课程名(classname),课程总学分(score),平时成绩(pingshifen),实验成绩(shiyanfen),卷面成绩(juanmianfen),总分(zongfen),实得学分(lastscore))。

根据实际情况考虑,有些课程并不需要实验,所以总分有两种算法。

一种是没有实验成绩的总分:

总分=平时成绩×0.3+卷面成绩×0.7另一种有实验的总分:

总分=平时成绩×0.15+实验成绩×0。

15+卷面成绩×0。

7,总学分=∑各科实得学分;总成绩=∑各科总分;平均成绩=总成绩/总学分;main函数用来实现操作,在程序中实现了三个功能:

1输入学生成绩;2学生成绩查询;3达标查询。

main函数通过文件流、I/O流等学习内容实现。

通过建立文件来存储所输入的学生信息以及存储计算的结果。

1.基类stu类的设计:

classstu/*定义一个基类,用来存放学生基本信息*/

public:

stu(chara[20],charb[20])

strcpy(number,a);

strcpy(name,b);

char*getnumber()

returnnumber;

char*getname()

{

returnname;

}

private:

charnumber[20];

charname[20];

};

2.派生类stu1类的设计:

classstu1:

publicstu/*定义派生类,存放课程信息*/

{

public:

stu1(chara[20],charb[20],charf[10],charg[10],doubleaa,doublebb,doublecc,

doubledd,doubleee,doubleff):

stu(a,b)

strcpy(classnumber,f);

strcpy(classname,g);

score=aa;

pingshifen=bb;

shiyanfen=cc;

juanmianfen=dd;

zongfen=ee;

lastscore=ff;

}

friendvoidmain();

private:

charclassnumber[10];

charclassname[10];

doublescore,pingshifen,shiyanfen,juanmianfen,zongfen,lastscore;

};

3。

2主要类图

图3.2.1基类stu类图

图3。

2.2派生类stu1类图

图3。

2.3继承关系类图

3.3函数流程图

整个程序的流程图:

首先判断是否进入学生成绩管理系统,如果进入,通过输入相应的1,2,3选择要实现的功能,如图3.3。

1所示。

图3.3。

1整个程序的主流程图

当进入系统学生成绩管理系统后根据提示选择要进行的操作,学生各科的成绩。

根据提示输入信息,如:

输入课程信息(课程编号,课程名称以及该课程的各项成绩等),输入学生信息(姓名,学号)等一系列的操作。

如图3.3.2所示。

1

N

Y

图3.3。

2输入某科成绩流程图

4具体代码实现

#include

#include

#include〈fstream〉

#include〈conio.h〉

usingnamespacestd;

classstu/*定义一个基类,存放姓名和学号信息*/

{

public:

stu(chara[20],charb[20])

strcpy(number,a);

strcpy(name,b);

}

char*getnumber()

returnnumber;

}

char*getname()

{

returnname;

}

private:

charnumber[20];

charname[20];

};

classstu1:

publicstu/*定义另一个派生类,存放课程信息和成绩*/

public:

stu1(chara[20],charb[20],charf[10],charg[10],doubleaa,doublebb,doublecc,doubledd,doubleee,doubleff):

stu(a,b)

strcpy(classnumber,f);

strcpy(classname,g);

score=aa;

pingshifen=bb;

shiyanfen=cc;

juanmianfen=dd;

zongfen=ee;

lastscore=ff;

friendvoidmain();

private:

charclassnumber[10];

charclassname[10];

doublescore,pingshifen,shiyanfen,juanmianfen,zongfen,lastscore;

};

voidmain()/*主函数*/

charc;intflag5=0;ints=0;

cout<〈"欢迎进入学生管理系统"〈

cout〈〈”进入(y/n)”<

cin〉>c;

do

{/*判断是否进入系统*/

if(c==’n’)

break;

else

{

flag5=1;

charnumber[10];

charname[20];

inti=0,I=0,j=0;intja=0;

ofstream*file[50];

stu1*s1[50];/*定义指针存放课程信息*/

charclassnumber[8];

charclassname[10];

doublescore,pingshifen,shiyanfen,juanmianfen,zongfen,lastscore;

boolflag=0;

intp;

charc4;

do

{/*选择菜单*/

cout〈<”请选择操作”〈

cout<<”1输入学生成绩信息”〈〈endl;

cout<<”2成绩查询”<〈endl;

cout<<"3达标查询"〈

do

{/*判断输入字符*/

cin〉〉p;

if(1〈=p&&p<=3)

flag=1;

else

cout〈〈”指令错误,请重新输入!

”<

}while(flag==0);

if(p==1)/*进入信息输入系统*/

{

cout<〈”进入信息添加"<〈endl;

charc1,c2;

do{/*信息的输入*/

cout<<"请输入课程编号:

"〈

cin>>classnumber;

cout〈<”请输入课程名:

”<

cin>>classname;

do{

cout〈<"请输入学生学号:

"〈〈endl;

cin〉〉number;

cout〈<"请输入学生姓名:

”〈〈endl;

cin〉>name;

cout〈<"课程总学分:

”〈〈endl;

cin〉〉score;

cout〈<”学生的平时成绩:

"〈〈endl;

cin〉>pingshifen;

cout〈<”学生的实验成绩:

"<

cin〉〉shiyanfen;

cout〈〈”学生卷面成绩:

”〈

cin〉〉juanmianfen;

if(shiyanfen==0)/*总分的算法判断*/

zongfen=pingshifen*0。

3+juanmianfen*0.7;

else

zongfen=pingshifen*0。

15+shiyanfen*0。

15+juanmianfen*0。

7;

if(90<=zongfen&&zongfen〈=100)/*学分的计算*/

lastscore=score;

elseif(80〈=zongfen)

lastscore=score*0。

8;

elseif(70<=zongfen)

lastscore=score*0.7;

elseif(60〈=zongfen)

lastscore=score*0。

6;

else

lastscore=0;

file[j]=newofstream("e:

\\eeee。

txt”,ios:

:

app);

/*信息存储文件的建立*/

*file[j]<〈”学号:

”<〈number〈〈”"<〈"课程编号:

"〈

"<

"<〈score<<"”〈<"平时分:

”<〈pingshifen<〈""<<”实验分:

"〈〈shiyanfen<〈""〈<"卷面分:

"<〈juanmianfen<<””〈〈”综合成绩:

"<

"〈〈lastscore<〈"”〈〈endl;

j++;

s1[I]=newstu1(number,name,classnumber,classname,score,pingshifen,shiyanfen,juanmianfen,zongfen,lastscore);

I++;

cout<<”数据输入成功,继续输入其他学生成绩?

(y/n)”;

cin>〉c1;

intflag1=0;

do

if(c1!

=’y’&&c1!

='n’)

{

cout<〈"错误指令"<〈endl;

cin>>c1;

}

else

flag1=1;

}

while(flag1==0);

while(c1=='y’);

cout<<"输入其他课程成绩?

(y/n)";/*转入其他成绩输入判断*/

cin>>c2;

intflag2=0;

do{

if(c2!

=’y’&&c2!

='n’)

cout〈〈”错误指令"〈〈endl;

cin>〉c2;

}

else

flag2=1;

}

while(flag2==0);

while(c2==’y’);

}

if(p==2)/*成绩查询系统*/

{

cout<〈”进入成绩查询"〈〈endl;

charnum[10];

cout〈<”请输入学号”〈〈endl;

cin〉〉num;

intii=0;doublesum=0;doublefen=0;doublepingjunfen;

for(intj=0;j

{

if(strcmp((*s1[j]).getnumber(),num)==0)/*判断学号是否存在*/

{

cout<<"课程编号:

”<〈(*s1[j])。

classnumber〈<"”〈〈"课程名称:

”<<(*s1[j]).classname<<""〈<”学分:

"<<(*s1[j])。

score〈<””<〈”平时成绩:

"〈<(*s1[j]).pingshifen<〈”"〈<”实验成绩:

”<<(*s1[j]).shiyanfen<<""〈〈”卷面成绩:

"<<(*s1[j])。

juanmianfen<<””〈<"综合成绩:

"〈<(*s1[j]).zongfen〈<"”〈<"实得学分:

”〈<(*s1[j])。

lastscore〈<""〈

ii++;

sum+=(*s1[j]).lastscore;/*总学分计算*/

if((*s1[j])。

score!

=0)

{/*平均分的计算*/

fen+=(*s1[j])。

zongfen;

pingjunfen=fen/sum;

}

}

cout<<"共修:

”<〈ii〈〈”科”〈<”"〈<”总学分:

”〈〈sum〈〈"”〈<"总分:

"<〈fen<〈”"〈〈”平均分:

”<〈pingjunfen<〈endl;

}

if(p==3)/*达标查询系统*/

{

cout<〈”进入达标查询"<〈endl;

charnum[10];doublesum;

cout<〈”请输入学号"<〈endl;

cin>〉num;

for(intj=0;j〈I;j++)

{

if(strcmp((*s1[j])。

getnumber(),num)==0)

sum+=(*s1[j]).lastscore;

if((*s1[j]).zongfen<60)/*未及格学科的*/

{

cout〈〈(*s1[j]).classname<<"未及格"<〈endl;

if(sum〈10)/*留级判断*/

{

cout<<”不好意思同学你未通过,需留级!

”〈〈endl;

cout<〈”进行其他操作(y/n)”〈

cin>>c4;

}

while(c4==’y');

while(flag5==0);

}

5课程设计总结

5.1程序运行结果或预期运行结果

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(高数)的其他学生在该课程的各项成绩,平时分、实验分和卷面分.如图5。

1.3所示

图5.1。

3输入学科1(高数)其他学生该科的各项成绩

4。

当学科1数据和学生在该科的信息输入数据成功后。

继续进行其他学科2(如C++面向对象的课程编号、课程名)的输入操作和其他学生在C++面向对象这科的各项成绩,因为该科有实验,所以有实验成绩.如图5.1。

4所示.

图5.1.4输入学科2(C++面向对象)某一学生该科的各项成绩

5.输入其他学生在学科2(C++面向对象)的各项成绩,如图5.1.5所示。

图5.1.5输入学科2(C++面向对象)其他学生该科的各项成绩

6.当所有学生的所有科目成绩输入数据成功后,选择适当的操作。

下面进行的操作就是各个学生的成绩查询,以输入的数据039号学生和002学生为例。

如图5.1。

6所示.

图5.1。

6学号为039号学生的各科成绩

7.查询其他学生的各科成绩,选择适当的操作。

以输入的学号002号学生为例。

如图5。

1。

7所示。

图5。

1.7学号为002号学生的各科成绩

8.通过查找各个学生的成绩,我们可以对成绩管理系统里的数据有清晰的认识,在必要时可以通过该系统进行统计。

在了解同学成绩后我们需要进行的操作是:

某已学生是否达标,以及该生哪门不及格等信息。

通过适当的操作进行达标查询,以002号为例可以看出:

该生需要留级,未及格的科目为C++面向对象.如图5。

1。

8所示。

图5。

1.8学号为002号学生的达标查询

9。

当所有的数据输入成功、学生的各科成绩计算出来后.可以在程序设置的位置找到我们所输入数据、计算得到的数据存储的文本文件。

课程信息和学生成绩可以从文件读取。

如图5。

1.9所示。

图5.1.9存储输入数据和计算得到数据的文本文件

5.2课程设计体会

课程设计刚开始时,拿着选定的题目不知如何下手。

毕竟课程设计不同于实验课,很多东西都要自己设计。

静下心来,仔细分析题目,再加上指导老师的说明与提示,心中才有了谱.将整个系统根据不同的功能化分成不同的模块,画出各个部分的流程图根据流程图设计代码块。

比如设计一个基类stu和一个派生类stu1再分别进行设计,逐个攻破,最后将其整合起来。

回顾起此课程设计,至今我仍感慨颇多,从理论到实践,在这段日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,友元函数、文件操作、函数重载.而且学到了很多在书本上所没有学到过的知识.在完成课题过程中,我们发现运行后的界面非常的差,有些成绩之间没有分开,这是设计上的漏洞。

需要给界面添加必要的空格或符号,以用来区分不同的成绩。

使用户界面尽量美观。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

在设计的过程中遇到问题,可以说得是困难重重,但可喜的是最终都得到了解决。

 实验过程中,也对团队精神的进行了考察,让我们在合作起来更加默契,在成功后一起体会喜悦的心情。

果然是团结就是力量,只有互相之间默契、融洽的配合才能换来最终完美的结果。

此次设计也让我明白了思路即出路,有什么不懂不明白的地方要及时向同学、老师请教或上网查询,只要认真钻研,动脑思考,动手实践,就没有弄不懂的知识,收获颇丰。

参考文献

[1]陈维兴等,C++面向对象程序设计教程(第3版).清华大学出版,2009.6

[2]李素若,张牧等,C++面向对象程序设计。

化学工业出版社,2008.7

[3]张福祥。

 C语言程序设计[M]. 辽宁大学出版社,2008.1

[4]牛莉,刘远军等.计算机等级考试辅导教程[M].北京:

中国铁道出版社,2008.

致谢

此次课程让我收获很多的同时也学会了许多知识。

首先要感谢学校为我们课程设计提供了良好的环境,机房过硬的机器配置让我们可以更好、更快的实现我们的课程设计。

这学期的C++面向对象课程设计是陈智老师教的,陈老师对待教学认真负责,上课积极为我们分析重点、难点而且还反复提出。

这让我们在这门学科上对重点难点的掌握层次比较高。

老师上课还时常给我们讲一些专业发展前景和课外内容,这极大地扩充了我们的知识面、丰富了我们的阅历,为以后步入社会打下一些基础。

非常感谢此次负责我们这组课程设计的柳老师.感谢柳老师在课程设计过程中给我的指导,柳老师在检查我们程序时的严谨作风令我钦佩不已。

老师细心的检查我们的程序,并指出我们所出现的问题和欠缺的方面,并且指导我们如何完善,如何使程序更加优化。

这些都是让我们这组课程设计得已顺利完成的条件,感谢各位老师的悉心帮助和教导!

感谢给予我们此次课程设计帮助的同学们!

此外非常感谢此次课程设计的搭档吴娇同学,谢谢她在模块设计提出的种种思想,她细心的态度发现了此次课程设计中不少的问题,她让这次课程设计更加出色、出彩。

最后感谢所有给予我帮助的老师和同学,谢谢你们!

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

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2