学校运动会成绩统计面向对象实验报告Word文档下载推荐.docx
《学校运动会成绩统计面向对象实验报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《学校运动会成绩统计面向对象实验报告Word文档下载推荐.docx(33页珍藏版)》请在冰豆网上搜索。
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<
stdlib.h>
#include"
fstream.h"
iostream.h>
#include<
conio.h>
包含的函数有:
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.
//
//控制颜色
classRecord//最小的类,用来记录得奖者的信息
{
friendclassSubject;
friendclassRankList;
private:
intschool;
intscore;
intmark;
public:
Record(ints=-1,intsc=0,intm=0):
school(s),score(sc),mark(m){}
};
classSubject//它嵌套Record类,正好组成一个项目
RecordRec[5];
voidSetRecord_3(inti);
voidSetRecord_5(inti);
classSchool//主要为了输出的方便
intWholeScoreM,WholeScoreF,WholeScore;
voidoutput(){
cout<
<
WholeScoreM<
"
\t"
WholeScoreF<
WholeScore<
endl;
}
School(){
WholeScoreM=0;
WholeScoreF=0;
WholeScore=0;
classRankList{//他嵌套Subject类,正好组成所有的项目
SubjectSubject[5];
Schoolschool[5];
voidInput();
//.按照学院代码查找学院总分
//按照学院代码查找学院男子团体总分
//按照学院代码查找学院女子团体总分
//按学院代码输出所有的总分
//输出所有学院总分排名
//输出学院男子总分排名
//存入文件
voidFSumOutPut(void);
//输出学院女子总分排名
voidget(char*c);
//从文件中读取数据
voidpaixuWhole(void);
voidpaixuWholeM(void);
voidpaixuWholeF(void);
//按学院编号查询学院某个项目的情况
voidSchoolSearch(intItemNumber);
//可以按项目编号查询取得前三或前五名的学院
voidRankList:
:
get(char*c)
fstreamfin(c,ios:
in|ios:
out);
if(!
fin)
{
cerr<
open"
c<
error!
exit
(1);
for(intk=0;
k<
3;
k++)
for(intj=0;
j<
5;
j++)
fin>
>
Subject[k].Rec[j].ReturnSchool();
Subject[k].Rec[j].ReturnScore();
Subject[k].Rec[j].ReturnMark();
for(k=3;
_getch();
save_to_file()
ofstreamoutfile("
123.txt"
ios:
outfile)
openerror!
outfile<
Subject[k].Rec[j].ReturnSchool()<
"
Subject[k].Rec[j].ReturnScore()<
Subject[k].Rec[j].ReturnMark()<
outfile.close();
ItemSearch(intSchoolNumber,intItemNumber)
inttemp=0;
if(ItemNumber<
3)
for(inti=0;
i<
i++)
if(Subject[ItemNumber].Rec[i].ReturnSchool()==SchoolNumber)
第"
SchoolNumber<
学院在男子项目"
ItemNumber<
取得"
i+1<
名"
temp++;
else
学院在女子项目"
if(temp==0)
学院在项目"
没有取得名次"
SchoolSearch(intItemNumber)
取得男子项目第"
名的学院是"
Subject[ItemNumber].Rec[i].ReturnSchool()<
取得女子项目第"
voidSubject:
SetRecord_3(inti)//为取前三名的项目建立记录
{
inta,j;
请输入第"
名的学院,成绩"
学院:
;
cin>
a;
boolTag=true;
while(Tag){
if(a>
5){
输入错误!
只有5个学院!
Tag=false;
Rec[i].school=a;
成绩:
Rec[i].score=a;
boolflag=true;
if(i>
0)
while(flag){
for(j=0;
i;
j++){
if(Rec[i].score>
Rec[j].score){
重新输入!
flag=false;
switch(i){
case0:
Rec[i].mark=10;
break;
case1:
Rec[i].mark=5;
case2:
Rec[i].mark=2;
SetRecord_5(inti)//为取前五名的项目建立记录
inta;
0){
case3:
Rec[i].mark=0;
case4:
Input(){
inti,j;
for(i=0;
项目"
(男子,取前五名)"
Subject[i].SetRecord_5(j);
for(i=3;
(女子,取前三名)"
Subject[i].SetRecord_3(j);
intRankList:
SumScoreSchool(intnumber)//查找学院总分
intgole=MSumScoreSchool(number)+FSumScoreSchool(number);
school[number].WholeScore=gole;
returngole;
MSumScoreSchool(intnumber)
intWholeScore=0,i,j;
if(Subject[i].Rec[j].ReturnSchool()==number)
WholeScore=WholeScore+Subject[i].Rec[j].ReturnMark();
school[number].WholeScoreM=WholeScore;
returnWholeScore;
FSumScoreSchool(intnumber)
school[number].WholeScoreF=WholeScore;
paixuWhole()
intbound,j,t;
Schoolo;
bound=4;
while(bound!
=0)
t=0;
=bound;
if(school[j].WholeScore<
school[j+1].WholeScore)
o=school[j];
school[j]=school[j+1];
school[j+1]=o;
t=j;
bound=t;
paixuWholeM()
if(school[j].WholeScoreM<
school[j+1].WholeScoreM)
paixuWholeF()
if(school[j].WholeScoreF<
school[j+1].WholeScoreF)
OutPut(void){
SumScoreSchool(i);
MSumScoreSchool(i);
FSumScoreSc