《C++课程设计报告模板》由会员分享,可在线阅读,更多相关《C++课程设计报告模板(16页珍藏版)》请在金锄头文库上搜索。
1、 成绩 课程名称:C+ 课程设计设计题目: 足球联赛积分 姓 名:贾坤学 号:1208020229专业班级:网络 1202 班完成日期:2013年7 月 4日1 设计任务1.1 设计目的C+面向对象程序设计是计算机专业中一门重要的专业课。这次课程设计的目的是以程序设计语言为基础,通过完成一些程序设计,运用所学理论知识掌握面向对象程序设计的基本方法和编程技巧,巩固所学理论知识,使理论与实际相结合。从而提高自我分析问题、解决问题的能力。通过课程设计,我们应该得到了一些有利锻炼:进一步加深我们对所学知识的理解、分析以及运用的灵活性。全面提高我们的综合能力,解决问题的能力。2.理论与实际相互交涉,既检
2、验了对理论的掌握又检验了理论与实际相结合使用的能力。这不仅可以使我们充分理解理论,还可以提高我们的思考能力。3.掌握类与对象的知识,熟练使用数组。4.掌握面向对象程序的设计方法。5.进一步掌握编写、调试、运行各种能力的综合运用。1.2设计内容足球联赛采用主客场双循环赛制,胜一场得3分,平局各得1分,负一场得0分,联赛排名以积分多者在前,当两队(或多队)积分相同时,则净胜球(即进球数与失球数之差)多者在前,若净胜球相同,则进球数多者在前,若仍相同,则抽签或踢附加赛决定名次(这在联赛结束后进行,联赛未结束则两队名次并列,本程序不做这方面要求)。试编写一个足球联赛积分排名程序,程序统计最近一轮比赛后
3、,各队积分及排名。2 设计过程2.1 程序功能每输入两个队的比赛成绩,则相应的队的有关数据(比赛场数,赢的场数,平的场数,负的场数,进球数,失球数,积分等)即可进行修改,比赛成绩录入完成,调用联赛排序方法(对象数组作为参数)排出名次并输出。2.2算法原理1问题分析:为了实现足球联赛积分,首先要定义一个球队类和对象数组,每个球队均是球队类的对象。由于联赛中参赛的队伍数是固定的,因此将每个球队存放在对象数组的一个数组元素中。每输入两个对的比赛成绩,则相应的队的有关数据(补赛场数,赢的场数,平的场数,负的场数,进球数,失球数,积分等),即可进行修改,比赛成绩录入完成,调用联赛排序方法(对象数组作为参
4、数,积分为排列元素)排除名次并输出。2结构分析:在Team球队类中,设置一个外部接口,对比赛的进球数,失球数,净胜球数,赢球、输球、平局,积分先进行初始化为0。存放类的相应函数,在类外再分别实现相应的函数。其中goaling类是实现比赛队伍本身的进球、失球、净胜球的信息;而在类matching中,实现的是两个不同的比赛队伍之间的比赛成绩。通过a与b的大小来对win、score,Lost和equal进行相应的运算。这两个类均使用了this指针来保存这些值。Match类中用户输入主队和客队的名字并调用goaling、matching函数。Setname、getS、getPG函数是返回队伍的名字、积
5、分和净胜球数,getteamlist的作用是文件以二进制的方法储存在D盘,并可读和写。3. 实现流程分析:创建一个Team球队类,该类中具有进球数、失球数、净胜球数、赢球、输球、平局和积分的数据成员。在该类中定义成员函数实现相关信息的输出,函数的原型声明放在类的定义中,用构造函数初始化每个成员,显示信息函数要求将对象中的完整信息打印出来。2.3程序流程图Main()Display()Goaling()Matching()match()setname()getS()getPG()2.4 程序主要模块或者函数class Teamprivate: int goal; int cgoal; int p
6、goal; int win; int lost; int equal; int scorce; public: char name20; Team() goal=0; cgoal=0; pgoal=0; win=0; lost=0; equal=0; scorce=0; void Display() coutname goal cgoal pgoal win lost equal scorce0) this-goal+=a; if(acgoal-=a; pgoal=goal-cgoal;void Team:matching(int a,int b) if(ab) this-win+=1; th
7、is-scorce+=3; if(alost+=1; if(a=b) this-equal+=1; this-scorce+=1; void Team:match(Team &t) int a,b; couta; if(a0) coutwarningendl; exit(1); coutb; if(b0) coutwarninggoaling(a); this-goaling(0-b); t.goaling(b); t.goaling(0-a); this-matching(a,b); t.matching(b,a);void Team:setname() coutthis-name;int
8、Team:getS() return this-scorce;int Team:getPG() return this-pgoal;void getteamlist();fstream team(d:teams.txt,ios:in|ios:out|ios:binary);int main() char name20;Team t5; int t1,t2; char n; int i; if(!team) coutlost fileendl; exit(1); while(1) coutdo you have set the team name?(Y)n; if(n=Y|n=y) break;
9、 for(int i=0;i=4;i+) ti.setname(); team.write(char*)&ti,sizeof(ti); break; team.seekg(0,ios:beg); for(i=0;i5;i+) team.read(char*)&ti,sizeof(ti); while(1) coutis any match now?(N)n; if(n=N|n=n) break; do coutname; for(i=0;i5;i+) if(strcmp(name,ti.name)=0) t1=i; break; else continue; while(i=5); do co
10、utname; for(i=0;i5;i+) if(strcmp(name,ti.name)=0) t2=i; break; else continue; while(i=5); tt1.match(tt2); team.seekg(0,ios:beg); for(i=0;i5;i+) team.write(char*)&ti,sizeof(ti); getteamlist(); return 0;void getteamlist() Team t15; Team hao;fstream gamelist(d:teamlist.txt,ios:in|ios:out|ios:binary); i
11、f(!gamelist) coutwrong!endl; exit(1); team.seekg(0,ios:beg); for(int i=0;i5;i+) team.read(char*)&t1i,sizeof(t1i); for(int j=0;j4;j+) for(int i=0;i4-j;i+) if(t1i.getS()t1i+1.getS() hao=t1i; t1i=t1i+1; t1i+1=hao; if(t1i.getS()=t1i+1.getS() if(t1i.getPG()t1i+1.getPG() hao=t1i; t1i=t1i+1; t1i+1=hao; cout球队 进球数 失球数 净胜球胜 负 平 积分 endl; for(i=0;i