面向对象的编程技术成绩管理.docx

上传人:b****5 文档编号:12360599 上传时间:2023-04-18 格式:DOCX 页数:20 大小:380.23KB
下载 相关 举报
面向对象的编程技术成绩管理.docx_第1页
第1页 / 共20页
面向对象的编程技术成绩管理.docx_第2页
第2页 / 共20页
面向对象的编程技术成绩管理.docx_第3页
第3页 / 共20页
面向对象的编程技术成绩管理.docx_第4页
第4页 / 共20页
面向对象的编程技术成绩管理.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

面向对象的编程技术成绩管理.docx

《面向对象的编程技术成绩管理.docx》由会员分享,可在线阅读,更多相关《面向对象的编程技术成绩管理.docx(20页珍藏版)》请在冰豆网上搜索。

面向对象的编程技术成绩管理.docx

面向对象的编程技术成绩管理

《面向对象的编程技术》

课程设计实验报告

 

学号:

 

班级:

专业:

 

姓名:

 

设计时间:

课程设计一、使用c++的面向对象程序设计方法(类机制)设计程序

 

课程题目:

学生成绩管理系统

1、实验目的

1.在编辑应用程序过程中,逐步加深对C++语言编程的理解;

2.加强实践的能力,动手能力,同时进一步对所学的知识进行巩固;

3.培养初步C++编程的能力,为以后的学习奠定基础。

二、实验内容

学生成绩管理系统

本《学生成绩管理系统》程序是一个具有对学生信息进行录入、添加、删除、根据学号进行学生信息的查询、显示已有学生信息的显示、对学生成绩进行统计(包括总分,平均分等),可以对已有的学生信息进行修改,保存和读取输入的数据等功能。

一切功能都可以在运行的软件中运行。

三、功能要求

(1)    信息维护:

学生信息数据要以文件的形式保存,能实现学生信息数据的维护。

此模块包括子模块有:

增加学

生信息、删除学生信息、修改学生信息

(2)    信息查询:

查询时可实现按姓名查询、按学号查询

(3)成绩统计:

输入任意的一个课程名(如数学)和一个分数段(如60--70),统计出在此分数段的学生情况。

(4)    排序:

能对用户指定的任意课程名,按成绩升序或降序排列学生数据并显示排序结果(使用表格的形式显示排序后的输出结果)(使用多种方法排序者)

4、流程图

 

 

四、运行环境

VC++6.0。

五、实验代码处理

 

#include

#include

#include

classstu

{

charname[20];

doublemath,chinese,english,average,sum;

public:

stu()

{

}

stu(charn[20],doublema,doublechin,doubleeng)

{

strcpy(name,n);

math=ma;

chinese=chin;

english=eng;

}

doublegetsum()

{

sum=chinese+english+math;

returnsum;

}

doublegetaver()

{

average=getsum()/3;

returnaverage;

}

friendvoidmain();

};

voidmain()

{

cout<<"*****************欢迎来到学生成绩管理系统*****************"<

cout<<"**********************************"<

cout<<"******请选择您需要的操作!

*******"<

cout<<"***********操作:

***********"<

cout<<"***********(0)数据录入***********"<

cout<<"***********

(1)增加人员***********"<

cout<<"***********

(2)删除人员***********"<

cout<<"***********(3)修改数据***********"<

cout<<"***********查询:

***********"<

cout<<"**********(4)按总成绩查询**********"<

cout<<"***********(5)按姓名查询***********"<

cout<<"**********(6)输出所有学生的数据****"<

cout<<"***********成绩名词***********"<

cout<<"*********(7)按总分查询排名*********"<

cout<<"*********(8)按语文查询排名*********"<

cout<<"*********(9)按数学查询排名*********"<

cout<<"*********(y)按英语查询排名*********"<

cout<<"选择相关操作请输入相对的括号里的阿拉伯数字!

"<

cout<<"**********************************"<

charp;charw;

stu*s[50];

ofstream*file[50];

inti=0;

intj=0;

boolflag2=0;

do

{

cin>>p;

if((p>='0'&&p<='10'))

flag2=1;

else

cout<<"指令错误!

请重新输入:

"<

}while(flag2==0);

do{

switch(p)

{

case'0':

{

charc;

charname[20];doublemath,chinese,english;

do{

cout<<"请输入姓名"<

cin>>name;

cout<<"请输入数学成绩:

"<

cin>>math;

cout<<"请输入语文成绩:

"<

cin>>chinese;

cout<<"请输入外语成绩:

"<

cin>>english;

file[j]=newofstream("d:

\\document",ios:

:

ate);

*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');

break;

}

case'4':

{

doublet;charc;

do

{

intflag1=0;

cout<<"请输入你要查询学生的总成绩"<

cin>>t;

for(intq=0;q

{

if(s[q]->getsum()==t)

{

flag1=1;

cout<<"您要查询的学生是:

"<<(*s[q]).name<

}

}

if(flag1==0)

cout<<"对不起!

您要查询的学生不存在!

"<

cout<<"您想继续查询吗?

(y/n)"<

cin>>c;

if(c!

='y'&&c!

='n')

{

cout<<"指令错误!

请重新输入!

"<

cin>>c;

}

}

while(c=='y');

break;

}

case'5':

{

charn[20];intj=0;charc;

do{

intflag=0;

cout<<"请输入你要查询的学生姓名"<

cin>>n;

for(intj=0;j

{

if(strcmp(n,(*s[j]).name)==0)

{

flag=1;

cout<<"您要查询的学生是:

"<<(*s[j]).name<

cout<<(*s[j]).name<<"的总成绩成绩是"<<(*s[j]).getsum()<

"<<(*s[j]).getaver()<

}

}

if(flag==0)

cout<<"对不起!

您要查询的学生不存在!

"<

cout<<"您想继续查询吗?

(y/n)"<

cin>>c;

if(c!

='y'&&c!

='n')

{

cout<<"指令错误!

请重新输入!

"<

cin>>c;

}

}

while(c=='y');

break;

}

case'1':

{

charname[20];doublemath,chinese,english;

charc;

do

{

cout<<"请输入您要增加的学生的姓名:

"<

cin>>name;

cout<<"请输入数学成绩:

"<

cin>>math;

cout<<"请输入语文成绩:

"<

cin>>chinese;

cout<<"请输入外语成绩:

"<

cin>>english;

file[j]=newofstream("d:

\\document",ios:

:

ate);

*file[j]<<"姓名"<

j++;

s[i]=newstu(name,math,chinese,english);

i++;

cout<<"数据录入成功,想继续录入吗(y/n)"<

cin>>c;

if(c!

='y'&&c!

='n')

{

cout<<"指令错误!

请重新输入!

"<

cin>>c;

}

}while(c=='y');

break;

}

case'2':

{

charname[20];boolflag3=0;charc;

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);

}

}

if(flag3==0)

cout<<"您要求删除的对象本来就不存在!

请检查输入的正确性!

";

cout<<"要继续删除吗?

(y/n)"<

cin>>c;

if(c!

='y'&&c!

='n')

{

cout<<"指令错误!

请重新输入!

"<

cin>>c;

}

}while(c=='y');

break;

}

case'3':

{

charname[20];doublemat,chin,eng;flag2=0;

charc;

do

{

cout<<"请输入您要修改的学生的姓名:

"<

cin>>name;

for(inth=0;h

{

if(strcmp(name,s[h]->name)==0)

{

flag2=1;

cout<<"请输入新的数学成绩:

"<

cin>>mat;

cout<<"请输入新的语文成绩:

"<

cin>>chin;

cout<<"请输入新的外语成绩:

"<

cin>>eng;

s[h]->chinese=chin;

s[h]->math=mat;

s[h]->english=eng;

cout<<"数据修改成功!

";

}

}

if(flag2==0)

{

cout<<"您要修改的学生本来就不存在!

请检查重新输入!

"<

}

cout<<"想继续修改吗(y/n)"<

cin>>c;

if(c!

='y'&&c!

='n')

{

cout<<"指令错误!

请重新输入!

"<

cin>>c;

}

}while(c=='y');

break;

}

case'6':

{

cout<<"本系统所有学生数据如下:

"<

if(i==0)

cout<<"管理系统中没有录入数据或者数据已经被删除!

"<

for(intk=0;k

{

cout<

"<<""<name<<

"语文:

"<<""<chinese<<"数学:

"<<""<math

<<"外语:

"<<""<english<<"总分:

"<<""<<(*s[k]).getsum()

<<"平均分:

"<<""<<(*s[k]).getaver()<

}

break;

}

case'7':

{

intt;stub;

cout<<"本系统所以学生排名如下:

"<

for(intx=0;x

{

t=x;

for(inty=x+1;y

{

if((s[t]->getsum())<(s[y]->getsum()))

t=y;

if(t!

=x)

{

b=*s[x];

*s[x]=*s[t];

*s[t]=b;

}

}

}

if(i==0)

cout<<"管理系统中没有录入数据或者数据已经被删除!

";

for(intk=0;k

{

cout<

"<<""<name<<

"语文:

"<<""<chinese<<"数学:

"<<""<math

<<"外语:

"<<""<english<<"总分:

"<<""<getsum()

<<"平均分:

"<<""<getaver()<

}

break;

}

case'8':

{

intt;stub;

cout<<"本系统所以学生语文排名如下:

"<

for(intx=0;x

{

t=x;

for(inty=x+1;y

{

if((s[t]->chinese)<(s[y]->chinese))

t=y;

if(t!

=x)

{

b=*s[t];

*s[t]=*s[x];

*s[x]=b;

}

}

}

if(i==0)

cout<<"管理系统中没有录入数据或者数据已经被删除!

";

for(intk=0;k

{

cout<

"<<""<name<<

"语文:

"<<""<chinese<<"数学:

"<<""<math

<<"外语:

"<<""<english<<"总分:

"<<""<getsum()

<<"平均分:

"<<""<getaver()<

}

break;

}

case'9':

{

intt;stub;

cout<<"本系统所以学生数学排名如下:

"<

for(intx=0;x

{

t=x;

for(inty=x+1;y

{

if((s[t]->math)<(s[y]->math))

t=y;

if(t!

=x)

{

b=*s[t];

*s[t]=*s[x];

*s[x]=b;

}

}

}

if(i==0)

cout<<"管理系统中没有录入数据或者数据已经被删除!

";

for(intk=0;k

{

cout<

"<<""<name<<

"语文:

"<<""<chinese<<"数学:

"<<""<math

<<"外语:

"<<""<english<<"总分:

"<<""<getsum()

<<"平均分:

"<<""<getaver()<

}

break;

}

case'y':

{

intt;stub;

cout<<"本系统所以学生英语排名如下:

"<

for(intx=0;x

{

t=x;

for(inty=x+1;y

{

if((s[t]->english)<(s[y]->english))

t=y;

if(t!

=x)

{

b=*s[t];

*s[t]=*s[x];

*s[x]=b;

}

}

}

if(i==0)

cout<<"管理系统中没有录入数据或者数据已经被删除!

";

for(intk=0;k

{

cout<

"<<""<name<<

"语文:

"<<""<chinese<<"数学:

"<<""<math

<<"外语:

"<<""<english<<"总分:

"<<""<getsum()

<<"平均分:

"<<""<getaver()<

}

}

break;

}

cout<<"您想继续进行其他操作吗?

(y/n)"<

boolflag4=0;

do

{

cin>>w;

if(w!

='y'&&w!

='n')

cout<<"指令错误!

请重新输入!

"<

else

flag4=1;

}while(flag4==0);

if(w=='y')

cout<<"请输入操作代码(0录入/4按总分查询/5按姓名查询/1增加人员/2删除人员/3修改数据/6显示所有成员数据/7按总分排名/8按语文排名/9按数学排名/y按英语排名)"<

cin>>p;

}while(w=='y');

for(intx=0;x

{

deletes[x];

cout<<"deleteallmembers!

"<

}

}

 

6、程序运行结果

1主菜单界面

2添加学生记录

3显示学生记录

4按姓名查找学生成绩

5按总分排名

6增加成员

7删除成员

8修改成员数据

四、

课程设计总结

这是一个综合性较强,很实际的一个编程实例。

刚学C++时候,感觉类和对象还挺有意思的,刚接触到这个题目时,觉得应该没什么大问题吧,我自认为一些基本知识点都已经掌握了。

可是,真的当我动手编程的时候,才发现并没有想象中的那么简单。

单个知识点是弄清了,但是,将所有的知识点综合起来运用时,就碰到了各种各样的问题了。

有时候,一个错误得找好久,才能发现。

本系统的重点就是要会建立两个类。

一个是学生类,用来存放一个学生的成绩记录,相当于一个结构体的功能吧。

另一个类是学生成绩记录系统类,该类用来存放多个学生的成绩记录。

难点就是学生类里各个功能的实现。

总的来说,添加,显示,查找,这三个功能比较容易,但是,删除,保存,加载这三个功能就需要花点心思了,可能是平时用的比较少吧,生疏了。

可见只有通过平时多加练习,才能有助于自己巩固知识点。

最后想说的是,调试程序真的很关键。

调试程序需要较大的耐心。

可能调试程序的时间比自己编写整个程序的时间还要长,下的工夫还要深,但这是一个程序员必须了解,也必须接受的事实。

有好几次,几个错误让我很是头疼啊,很想删了,重新来过,可是最后发现,还是得有耐心去调试程序。

通过这个实验的练习,我也学到了很多东西,特别是加深了对类和对象理解和应用方面,也很谢谢老师给我的帮助。

 

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

当前位置:首页 > 外语学习 > 韩语学习

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

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