面向对象程序设计课设论文学生成绩评定系统.docx

上传人:b****5 文档编号:28437617 上传时间:2023-07-13 格式:DOCX 页数:15 大小:92.55KB
下载 相关 举报
面向对象程序设计课设论文学生成绩评定系统.docx_第1页
第1页 / 共15页
面向对象程序设计课设论文学生成绩评定系统.docx_第2页
第2页 / 共15页
面向对象程序设计课设论文学生成绩评定系统.docx_第3页
第3页 / 共15页
面向对象程序设计课设论文学生成绩评定系统.docx_第4页
第4页 / 共15页
面向对象程序设计课设论文学生成绩评定系统.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

面向对象程序设计课设论文学生成绩评定系统.docx

《面向对象程序设计课设论文学生成绩评定系统.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计课设论文学生成绩评定系统.docx(15页珍藏版)》请在冰豆网上搜索。

面向对象程序设计课设论文学生成绩评定系统.docx

面向对象程序设计课设论文学生成绩评定系统

《面向对象程序设计》

课程设计

 

题目:

《学生成绩评定系统》

院系:

数学与计算科学

专业:

信息与计算科学

姓名学号:

指导老师:

日期:

2015年1月8日

 

摘要

关键字:

录入学生数据,删除数据,查询数据,显示全部学生数据

 

程序主要用于对学生成绩进行评定,将学生考试成绩输入,作业成绩,测试成绩输入,然后通过加权平均求出最终成绩,最后将成绩分成字符等级输出,此外这个程序还可以删除,查找,显示全部学生考试情况。

定义一个student类分别对学号、姓名、性别、考试成绩、作业成绩、和测试成绩进行输入,定义成员函数pj()将所有成绩加权以及成员函数gr()将加权后的成绩转化为等级,stu_delete(),stu_find(),display()分别为删除,查询,显示学生的数据,接着定义一个类manage_stu,将前面的student类作为manage_stu成员变量,并定义成员函数input_stu()用于输入N名学生信息,delete_stu(),find_stu(),分别用于删除和查找并显示指定学生,display_stu()用于显示全部学生信息,用户在界面上选择某个数字,通过switch来判断所对应的条件,从而选择调用相应的成员函数,例如选择1.录用学生信息,则调用manage_stu中的input_stu(),输入N名学生姓名,学号,性别,考试成绩,作业成绩,测试成绩后,则成绩存在系统中。

 

Abstract

Keywords:

input students'data,delete data,query data,

display all the students' dat

Programismainlyusedforassessmentofstudentachievement.Wecaninputstudents’examinationperformance,taskperformanceandtestscoresandthenthenthefinalresultsobtainedbytheweightedaverage.Finally,theperformanceleveloftheoutputintoacharacter,inadditiontothisprogramcanalsodelete,search,displayallstudenttestcases.

Designphase:

wecandefineaClassstudenttoinputrespectivelystudentnumber,name,sex,examinationperformance,taskperformanceandtestscores.Wecandefinememberfunctionpj()toweightallthescores.Andmemberfunctiongr()willconvertweightedscoresintothegrades.Thememberfunctionstu_delete()candeletedatas.Thememberfunctionstu_find()canfinddatas.Andthememberfunctiondisplay()candisplaythestudents’datas.ThenwedefineaClassmanage_stutotaketheprecedingClassstudentasthemembervariablesofit.Wedefinethememberfunctioninput_stu()toinputtheinformationofseveralstudents.Delete_stu()andfind_stu()areusedtorespectivelydeletedatasandfinddatasanddisplaythespecifiedstudents’information.Display_stu()isusedtodisplayallstudentinformation.Theusercanselectoneofthedigitalontheinterface,throughaswitchtodeterminethecorrespondingconditionstoselecttheappropriatememberfunctioncalls.Forexample,ifweselectnumber1:

inputtheinformationofstudents,wecancallthememberfunctioninput_stu()ofClassmanage_stutoinputseveralstudents’name,studentnumber,sex,examinationperformance,taskperformanceandtestscores.Theresultissavedinthesystem.

 

个人感言

课程设计是一次可以让我们把所学知识与实际相结合的一次机会,我们选择了学生成绩评定系统这一题目。

通过这次比较完整的一个程序设计,让我走出了纯理论的学习,从一种全新的角度去学习。

我体会较深的是互相帮助学习的过程,自己看书学习的经验,还有网上以及其他各种途径获得信息和知识的经验,理论与实际相结合的课程设计,锻炼了我综合运用所学的基础知识解决实际问题的能力,同时也提高了我查询文献资料的水平。

当然,课程设计并不是很好做的,不是你想完成就能完成的,它需要你认真仔细的,且静下心来对待每一个程序块。

因此,在这过程中我也培养了自己的耐心。

通过这个课程设计真的让我收获了很多,说实在的,自己的编程能力不是很强,所以我和队友进行了分工合作,在队友的帮助下明白了什么是dos命令,虽然只是协助工作,但对于自己也算是一种进步。

理解了整个程序之后就开始我主要负责的部分:

CRC卡片以及UML绘图。

刚开始连听都没听过,经过上网查询了两者的定义才明白CRC卡是一个标准索引卡集合,每一张卡片表示一个类。

类代表一系列对象的集合,这些对象是对系统设计的抽象建模,可以是一个人、一件物品等等,类名写在整个CRC卡的最上方。

职责包括这个类对自身信息的了解,以及这些信息将如何运用。

诸如,一个人,他知道他的电话号码、地址、性别等属性,并且他知道他可以说话、行走的行为能力。

这个部分在CRC卡的左边。

协作指代另一个类,我们通过这个类获取我们想要的信息或者相关操作。

这个部分在CRC卡的右边。

UML定义了不同的图,这些图从不同的侧面对系统进行描述。

系统模型将这些不同的侧面综合成一致的整体,便于系统的分析和构造。

上述所用是静态图。

总之,这个课程设计为我打开C++大门,做了这个后才发现C++还有很多很丰富的知识内容,现在学习到的只是冰山一角。

虽然这个代码存在很多方面的不足,时间复杂度和算法方面都有提高的空间,但我相信只要以后我多练习,一定会大有进步。

 

目录

一、引言1

二、原理1

三、设计内容2

(一)crc卡片3

(二)uml图4

四、程序调试5

五、附录代码7

六、参考文献14

 

引言

C++课程设计中编写一个程序用来对学生评定成绩。

每名学生都有三个分数:

考试分数、作业分数、和测验分数。

首先将每一项得分转换成字符等级(例如,100~94为A,93~91为A-,90-88为B+等)。

为了得到最终成绩,先将各项成绩转换成分值(例如,A=4.0,A-=3.7,B+=3.3等)。

然后,再将这三项成绩值加权平均(例如:

考试成绩占40%,作业成绩占35%,测验成绩占25%),得到最终得分。

最后,将最终得分再次转换成字符等级成绩。

设计一个用户界面来实现所述要求,并利用CRC卡片设计类和类中的方法,同时给出UML图并实现该程序。

在用户界面上可以输入学生的成绩,还能够查询学生的成绩。

程序主要用于对学生成绩进行评定,将学生考试成绩输入,作业成绩,测试成绩输入,然后通过加权平均求出最终成绩,最后将成绩分成字符等级输出,此外这个程序还可以删除,查找,显示全部学生考试情况。

原理部分

C++通过类来实现封装性,把数据和这些数据有关的操作封装在一个类中,把一些数据指定为私有,使他们与外界隔离,把需要让外界调用的成员函数指定为公用的,外界通过公用的函数来实现对数据的操作,外界与对象唯一的联系渠道就是调用公用的成员函数,所以公用成员函数是用户使用类的公用接口,这就是接口与实现分离。

程序设计者的任务包括两方面,一是设计所需要的各种类和对象,即决定把哪些数据和操作封装在一起,二是考虑怎么向有关对象发送消息,以完成所需任务,对一个大型任务来说,面向程序设计方法大大降低程序设计人员的工作难度,减少出错的机会。

C++提供构造函数来处理对象的初始化,构造函数是一种特殊的成员函数,不需要用户调用它,而是对象建立时自动执行,名字必须与类名相同,以便编译系统自动把它作为构造函数处理,它不具有任何类型,不返回任何值。

设计内容

定义一个student类分别对学号、姓名、性别、考试成绩、作业成绩、和测试成绩进行输入,定义一个float型的数组score[4]用来存放成绩,其中score[0]存放考试成绩,score[1]存放作业成绩,score[2]存放测试成绩,定义成员函数pj()将所有成绩加权后存放在score[3]中,成员函数gr()将加权后的成绩,通过if语句判断它所在的范围从而确定它的等级,stu_delete()用于删除某个学生数据,trcmp(stu[i].n_numble,d_numble)即通过输入的学号与之前存放在数组的学号对比,找到删除的数据后,把后面的数据往前移即stu[j]=stu[j+1],这就使删除的数据被覆盖掉,stu_display()用于输出学生的所有信息,包括学号,姓名,性别,考试成绩,测验成绩,作业成绩以及最终等级,stu_find()同过输入的学号与之前数组里的学号对比,k=strcmp(stu[i].n_numble,d_numble);如果k为0,即找到要查找的学号,

stu[i].dispaly()就可以展示全部关于该学生的信息,成员函数里的stu_input(),则用于输入学生信息。

接着定义一个类manage_stu,将前面的student类作为manage_stu成员变量即studentstu[N+1],定义N+1名学生空间定义N+1名学生空间,并定义成员函数input_stu()用于输入N名学生信息,每输入一次,调用一次student里的input()函数,delete_stu(),find_stu(),分别用于删除和查找并显示指定学生,display_stu()用于显示全部学生信息,通过一个for循环,每次都调用student里的display()函数,通过while中的i来控制是否进行循环,当i变为0即条件为假时,退出循环,用户在界面上选择某个数字,通过switch来判断所对应的条件,从而选择调用相应的成员函数,例如选择1.录用学生信息,通过switch中的数字对应case1,则调用manage_stu中的input_stu(),然后在input_stu()中又调用了student类中的input(),输入N名学生姓名,学号,性别,考试成绩,作业成绩,测试成绩后,则成绩存在系统中。

 

CRC卡片

Class:

manage_stu

说明:

系统运行时的主窗体

职责:

协作类:

student类

录用学生数据

删除数据

查询数据

显示全部学生数据

 

UML类图

 

程序调试

(1)用于录入学生信息

 

(2):

用于查找某个学生信息

 

图(3)删除某个学生信息

 

图(4)显示全部学生信息

 

图(5)退出系统

 

附录

#include

usingnamespacestd;

constintN=5;

classstudent

{

charn_name[10];

charn_numble[10];

charn_sex[3];

floatscore[4];//score[0]考试成绩,score[1]作业成绩,score[2]测试成绩,score[3]加权后的成绩

public:

student();

student(charname[],charnumble[],charsex[],floata,floatb,floatc);

student(student&s);

voidinput();//输入学生信息:

姓名,学号,性别,考试成绩,作业成绩,测试成绩

floatpj();//加权后的分

chargr();//获取等级

voidstu_delete(studentstu[]);//删除

voidstu_find(studentstu[]);//查询

voiddispaly();//显示学生信息:

姓名,学号,性别,考试成绩,作业成绩,测试成绩,等级

};

student:

:

student()

{

strcpy(n_numble,"000");

strcpy(n_name,"noname");

strcpy(n_sex,"male");

score[0]=0;

score[1]=0;

score[2]=0;

score[3]=0;

}

student:

:

student(charname[],charnumble[],charsex[],floata,floatb,floatc)

{

strcpy(n_name,name);

strcpy(n_numble,numble);

strcpy(n_sex,sex);

score[0]=a;

score[1]=b;

score[2]=c;

score[3]=score[0]*0.4+score[1]*0.35+score[2]*0.25;

}

student:

:

student(student&s)

{

strcpy(n_name,s.n_name);

strcpy(n_numble,s.n_numble);

strcpy(n_sex,s.n_sex);

score[0]=s.score[0];

score[1]=s.score[1];

score[2]=s.score[2];

score[3]=score[0]*0.4+score[1]*0.35+score[2]*0.25;

}

voidstudent:

:

input()

{

cout<<"输入学生信息:

"<

cout<<"请依次输入姓名,学号,性别,考试成绩,作业成绩,测试成绩"<

cin>>n_name>>n_numble>>n_sex>>score[0]>>score[1]>>score[2];

score[3]=score[0]*0.4+score[1]*0.35+score[2]*0.25;

}

floatstudent:

:

pj()

{

returnscore[3];

}

charstudent:

:

gr()

{

if(score[3]>=90&&score[3]<=100)return'A';

if(score[3]>=80&&score[3]<90)return'B';

if(score[3]>=70&&score[3]<80)return'C';

if(score[3]>=60&&score[3]<70)return'D';

if(score[3]<60)return'E';

}

voidstudent:

:

stu_delete(studentstu[])

{

studentt;

inti,k,j;

chard_numble[5];

cout<<"请输入要删除的学生学号:

";

cin>>d_numble;

for(i=0;i

{

j=i;

k=strcmp(stu[i].n_numble,d_numble);

if(k==0&&i!

=N)

{

for(;j

stu[j]=stu[j+1];

}

if(k==0&&i==N)

{

strcpy(stu[N].n_numble,"0000");

strcpy(stu[N].n_name,"noname");

strcpy(stu[N].n_sex,"男");

stu[N].score[0]=0;

stu[N].score[1]=0;

stu[N].score[2]=0;

stu[N].score[3]=0;

}

}

}

voidstudent:

:

stu_find(studentstu[])

{

inti,k;

chard_numble[5];

cout<<"请输入要查询学生的学号:

";

cin>>d_numble;

for(i=0;i

{

k=strcmp(stu[i].n_numble,d_numble);

if(k==0)

{

stu[i].dispaly();

}

}

}

voidstudent:

:

dispaly()

{

cout<<"姓名:

"<

"<

"<

"<

"<

"<

"<

}

classmanage_stu

{

//private:

studentstu[N+1];//定义N+1名学生空间

public:

voidinput_stu();//输入N名学生信息

voiddelete_stu();//删除指定学号的学生信息

voidfind_stu();//查找指定学号的学生并显示

voiddisplay_stu();//显示N名学生信息

};

voidmanage_stu:

:

input_stu()//输入N名学生信息

{

inti;

for(i=0;i

stu[i].input();

}

voidmanage_stu:

:

delete_stu()//删除指定学号的学生信息

{

studentr;

r.stu_delete(stu);

}

voidmanage_stu:

:

find_stu()//查找指定学号的学生并显示

{

studentt;

t.stu_find(stu);

}

voidmanage_stu:

:

display_stu()//显示全部名学生信息

{

studentt;

inti;

for(i=0;i

stu[i].dispaly();

}

voidmain()

{

inti=1,c;

manage_stus;

while(i)

{

cout<<"学生管理系统:

"<

cout<<"1、录入学生信息"<

cout<<"2、查找"<

cout<<"3、删除"<

cout<<"4、显示全部学生信息"<

cout<<"5、退出系统"<

cout<<"请选择(1--5):

";

cin>>c;

switch(c)

{

case1:

s.input_stu();break;

case2:

s.find_stu();break;

case3:

s.delete_stu();break;

case4:

s.display_stu();break;

case5:

i=0;

}

}

}

 

参考文献

[1]c++面象对象程序设计谭浩强编著清华大学出版社

[2]c++PrimerStanleyB.Lippman

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

当前位置:首页 > 幼儿教育 > 家庭教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1