学校运动会成绩统计面向对象实验报告.docx
- 文档编号:7689780
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:33
- 大小:223.75KB
学校运动会成绩统计面向对象实验报告.docx
《学校运动会成绩统计面向对象实验报告.docx》由会员分享,可在线阅读,更多相关《学校运动会成绩统计面向对象实验报告.docx(33页珍藏版)》请在冰豆网上搜索。
学校运动会成绩统计面向对象实验报告
课程设计报告
1.设计任务………………………………………………………………
2.设计要求……………………………………………………………………4
3.设计方案……………………………………………………………………4
4.设计内容…………………………………………………4
4.1.1软件达到的目的……………………………………………………………4
4.1.2软件功能说明………………………………………………………………4
4.1.2.1各项功能说明………………………………………………………………5
5.软件设计环境与原理………………………………………………………………5
5.1设计环境与模块的划分………………………………………………………5
5.1.1软件设计环境…………………………………………………………………5
5.1.2软件模块的划分………………………………………………………………5
5.2软件设计主要原理………………………………………………………………6
5.2.1采用的主要数据结构类型……………………………………………………6
5.2.2各个模块之间的调用关系和数据储存格式说明……………………………7
6.软件的设计过程…………………………………………………………………8
6.1各软件模块之间的调用方式……………………………………………………8
6.2软件中实现各项功能的函数与程序代码………………………………………8
7.设计结果与分析…………………………………………………………………14
8.总结………………………………………………………………………………19
1.设计任务
运用面向对象语言描述成绩类,学院类,项目等类,每一个类应包含数据成员和成员函数。
设计基类和派生类,并运用多态性和虚函数的知识。
注重面向对象程序设计理论知识的理解与实际的动手编程能力,要求学生源文件用多文件的工程结构,数据存储用文件形式,标准的C++输入输出,功能完善,适当的注释等知识。
本课程设计要实现的主要功能如下:
1)建立成绩类,学院类,项目等类
2)学校运动会信息的初始化
4)学校运动会成绩信息的输入、排序、添加、查找、保存
5)学校运动会信息的输出
2.设计要求
【基本要求】
1、使用继承减少重复代码;
2、使用多态性统一通讯协议,使程序易于维护;
3、体现数据抽象和封装;
4、体现数据访问属性和继承属性。
3.设计方案
学校运动会成绩统计
4.设计内容
4.1软件达到的目的
该软件主要是实现对学校运动会成绩进行系统化的管理,首先可以对学校运动会成绩基本信息进行输入和存取,其次可以读取显示学校运动会成绩统的相关信息,然后可以删除和修改学校运动会成绩相关信息,还有就是可按编号查询此学校运动会成绩的相关信息。
由此来系统化管理学校运动会成绩,并达到简易操作的目的。
4.2软件功能说明
对学校运动会成绩的信息进行整理,输入、输出、保存、排序、查找等功能
4.2.1各项功能说明
(1)学校运动会成绩基本信息的录入和保存:
这部分的功能主要包括信息的录入和保存,首先按程序提示分别输入有关学校运动会成绩的相关信息包括学院编号、项目编号、运动员性别、各个项目的成绩等。
录入完毕后系统将显示全部学校运动会成绩,信息中已包含对学校运动会成绩基本信息。
可以选择是否保存,选择存盘后,系统则自动将学生信息存入电脑中的文件123.txt中。
(2)学校运动会成绩的排序:
这部分的功能主要包括学校运动会成绩的排序,首先按程序提示分别输入有关学校运动会成绩的相关信息包括学院编号、项目编号、运动员性别来给团体总分和男子和女子总分排序。
(3)学校运动会成绩的输出:
这部分的功能主要是首先按程序提示分别输入有关学校运动会成绩的相关信息包括学院编号、项目编号、运动员性别来输出学院团体总分和男子和女子总分。
(4)按编号查找学校运动会成绩信息:
此项功能可以根据用户输入的学校编号和项目编号查出该学校运动会成绩的所有信息。
(5)对需要保存的学生信息进行保存。
这部分的功能主要是对输入的运动会的成绩进行保存放在123.txt的文件中。
(6)读取学校运动会成绩信息:
这部分的主要功能是对保存在123.txt文件中的信息读取出来并且输出来。
(7)退出系统,结束任务。
五.软件设计环境与原理
5.1设计环境与模块的划分
5.1.1软件设计环境
MicrosoftVisualC++6.0
5.1.2软件模块的划分
该软件主要组成模块和各个模块之间的调用关系如下图:
5.2软件设计主要原理
5.2.1采用的主要数据结构类型
该程序采用的是结构体类型来处理学生的所有基本信息,如下所述。
包含的库函数有:
#include"stdafx.h"
#include
#include"fstream.h"
#include
#include
包含的函数有:
int&ReturnSchool(){returnschool;}int&ReturnScore(){returnscore;}
int&ReturnMark(){returnmark;}voidSetRecord_3(inti);voidSetRecord_5(inti);
voidoutput();School();voidInnput();intSumScoreSchool(intnumber);
intMSumScoreSchool(intnumber);intFSumScoreSchool(intnumber);
voidOutPut(void);voidSumOutPut(void);voidMSumOutPut(void);
voidsave_to_file();voidFSumOutPut(void);voidget(char*c);
voidpaixuWhole(void);voidpaixuWholeM(void);voidpaixuWholeF(void);
voidItemSearch(intSchoolNumber,intItemNumber);
voidSchoolSearch(intItemNumber);voidqd();voidexit();
voidmenu();voidmain();
5.2.2各个模块之间的调用关系和数据储存格式说明
各函数模块之间的调用关系主要是主函数调用所有其它功能函数和菜单函数,并利用循环使各个功能函数运行完毕后都会回到菜单。
该程序的数据以txt文件储存。
六.软件的设计过程
6.1各软件模块之间的调用方式
程序中各个模块之间的调用方式主要是通过文件的包含和函数的调用实现的,用文件的形式把各个函数分开,再用头文件把它们包含进来,使用主函数进行调用。
6.2软件中实现各项功能的函数与程序代码
//000.cpp:
Definestheentrypointfortheconsoleapplication.
//
#include"stdafx.h"
#include
#include"fstream.h"
#include
#include
classRecord//最小的类,用来记录得奖者的信息
{
friendclassSubject;
friendclassRankList;
private:
intschool;
intscore;
intmark;
public:
Record(ints=-1,intsc=0,intm=0):
school(s),score(sc),mark(m){}
int&ReturnSchool(){returnschool;}
int&ReturnScore(){returnscore;}
int&ReturnMark(){returnmark;}
};
classSubject//它嵌套Record类,正好组成一个项目
{
friendclassRankList;
public:
RecordRec[5];
voidSetRecord_3(inti);
voidSetRecord_5(inti);
};
classSchool//主要为了输出的方便
{
friendclassRankList;
intWholeScoreM,WholeScoreF,WholeScore;
voidoutput(){
cout< } School(){ WholeScoreM=0; WholeScoreF=0; WholeScore=0; } }; classRankList{//他嵌套Subject类,正好组成所有的项目 private: SubjectSubject[5]; public: Schoolschool[5]; voidInput(); intSumScoreSchool(intnumber);//.按照学院代码查找学院总分 intMSumScoreSchool(intnumber);//按照学院代码查找学院男子团体总分 intFSumScoreSchool(intnumber);//按照学院代码查找学院女子团体总分 voidOutPut(void);//按学院代码输出所有的总分 voidSumOutPut(void);//输出所有学院总分排名 voidMSumOutPut(void);//输出学院男子总分排名 voidsave_to_file();//存入文件 voidFSumOutPut(void);//输出学院女子总分排名 voidget(char*c);//从文件中读取数据 voidpaixuWhole(void); voidpaixuWholeM(void); voidpaixuWholeF(void); voidItemSearch(intSchoolNumber,intItemNumber);//按学院编号查询学院某个项目的情况 voidSchoolSearch(intItemNumber);//可以按项目编号查询取得前三或前五名的学院 }; voidRankList: : get(char*c) { fstreamfin(c,ios: : in|ios: : out); if(! fin) { cerr<<"open"< "< exit (1); } for(intk=0;k<3;k++) for(intj=0;j<5;j++) { fin>>Subject[k].Rec[j].ReturnSchool(); fin>>Subject[k].Rec[j].ReturnScore(); fin>>Subject[k].Rec[j].ReturnMark(); } for(k=3;k<5;k++) for(intj=0;j<3;j++) { fin>>Subject[k].Rec[j].ReturnSchool(); fin>>Subject[k].Rec[j].ReturnScore(); fin>>Subject[k].Rec[j].ReturnMark(); } _getch(); } voidRankList: : save_to_file() { ofstreamoutfile("123.txt",ios: : out); if(! outfile) { cerr<<"openerror! "< exit (1); } for(intk=0;k<3;k++) for(intj=0;j<5;j++) { outfile< } for(k=3;k<5;k++) for(intj=0;j<3;j++) { outfile< } outfile.close(); _getch(); } voidRankList: : ItemSearch(intSchoolNumber,intItemNumber) { inttemp=0; if(ItemNumber<3) { for(inti=0;i<5;i++) { if(Subject[ItemNumber].Rec[i].ReturnSchool()==SchoolNumber) { cout<<"第"< temp++; } } } else { for(inti=0;i<3;i++) { if(Subject[ItemNumber].Rec[i].ReturnSchool()==SchoolNumber) { cout<<"第"< temp++; } } } if(temp==0) cout<<"第"< _getch(); } voidRankList: : SchoolSearch(intItemNumber) { if(ItemNumber<3) { for(inti=0;i<5;i++) { cout<<"取得男子项目第"< } } else { for(inti=0;i<3;i++) { cout<<"取得女子项目第"< } } _getch(); } voidSubject: : SetRecord_3(inti)//为取前三名的项目建立记录 { inta,j; cout<<"请输入第"< cout<<"学院: "; cin>>a; boolTag=true; while(Tag){ if(a>5){ cout<<"输入错误! 只有5个学院! "< cout<<"学院: "; cin>>a; } else Tag=false; } Rec[i].school=a; cout<<"成绩: "; cin>>a; Rec[i].score=a; boolflag=true; if(i>0) { while(flag){ for(j=0;j if(Rec[i].score>Rec[j].score){ cout<<"输入错误! 重新输入! "< cin>>a; Rec[i].score=a; } else flag=false; } } } switch(i){ case0: Rec[i].mark=10;break; case1: Rec[i].mark=5;break; case2: Rec[i].mark=2;break; } _getch(); } voidSubject: : SetRecord_5(inti)//为取前五名的项目建立记录 { inta; cout<<"请输入第"< cout<<"学院: "; cin>>a; boolTag=true; while(Tag){ if(a>5){ cout<<"输入错误! 只有5个学院! "< cout<<"学院: "; cin>>a; } else Tag=false; } Rec[i].school=a; cout<<"成绩: "; cin>>a; Rec[i].score=a; boolflag=true; if(i>0){ while(flag){ for(intj=0;j if(Rec[i].score>Rec[j].score){ cout<<"输入错误! 重新输入! "< cout<<"成绩: "; cin>>a; Rec[i].score=a; } else flag=false; } } } switch(i){ case0: Rec[i].mark=10;break; case1: Rec[i].mark=5;break; case2: Rec[i].mark=2;break; case3: Rec[i].mark=0;break; case4: Rec[i].mark=0;break; } _getch(); } voidRankList: : Input(){ inti,j; for(i=0;i<3;i++) { cout<<"项目"< for(j=0;j<5;j++){ Subject[i].SetRecord_5(j); } } for(i=3;i<5;i++) { cout<<"项目"< for(j=0;j<3;j++){ Subject[i].SetRecord_3(j); } } _getch(); } intRankList: : SumScoreSchool(intnumber)//查找学院总分 { intgole=MSumScoreSchool(number)+FSumScoreSchool(number); school[number].WholeScore=gole; returngole; } intRankList: : MSumScoreSchool(intnumber) { intWholeScore=0,i,j; for(i=0;i<3;i++) { for(j=0;j<5;j++) if(Subject[i].Rec[j].ReturnSchool()==number) { WholeScore=WholeScore+Subject[i].Rec[j].ReturnMark(); } } school[number].WholeScoreM=WholeScore; returnWholeScore; _getch(); } intRankList: : FSumScoreSchool(intnumber) { intWholeScore=0,i,j; for(i=3;i<5;i++) { for(j=0;j<5;j++) if(Subject[i].Rec[j].ReturnSchool()==number) { WholeScore=WholeScore+Subject[i].Rec[j].ReturnMark(); } } school[number].WholeScoreF=WholeScore; returnWholeScore; _getch(); } voidRankList: : paixuWhole() { intbound,j,t; Schoolo; bound=4; while(bound! =0) { t=0; for(j=0;j<=bound;j++) if(school[j].WholeScore { o=school[j]; school[j]=school[j+1]; school[j+1]=o; t=j; } bound=t; } _getch(); } voidRankList: : paixuWholeM() { intbound,j,t; Schoolo; bound=4; while(bound! =0) { t=0; for(j=0;j<=bound;j++) if(school[j].WholeScoreM { o=school[j]; school[j]=school[j+1]; school[j+1]=o; t=j; } bound=t; } _getch(); } voidRankList: : paixuWholeF() { intbound,j,t; Schoolo; bound=4; while(bound! =0) { t=0; for(j=0;j<=bound;j++) if(school[j].WholeScoreF { o=school[j]; school[j]=school[j+1]; school[j+1]=o; t=j; } bound=t; } _getch(); } voidRankList: : OutPut(void){ for(inti=0;i<5;i++) { SumScoreSchool(i); MSumScoreSchool(i); FSumScoreSc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学校 运动会 成绩 统计 面向 对象 实验 报告