*******************
实践教学
*******************
你的大学
计算机与通信学院
2011 年春季学期
C++面向对象 课程设计
目: 足球联赛积分系统
xxx
010
xxx
题
专业班级:计算机科学与技术六班
名:
姓
号:
学
指导教师:
成
绩:____________________
1
摘 要......................................................................................... 3
一、序言....................................................................................... 4
二、系统分析与设计...................................................................1
三、详细设计............................................................................... 2
四、系统测试............................................................................... 5
五、软件使用说明书...................................................................6
六、程序设计总结....................................................................... 7
七、致谢....................................................................................... 8
参考文献....................................................................................... 9
2
摘 要
足球联赛采用主客场双循环赛制,胜一场得 3 分,平局各得 1 分,负一场得
0 分。输入比赛信息后,在屏幕上显示积分排名结果。
排名以积分多者在前,当两队(或多队)积分相同时,则净胜球(即进球数
与失球数之差)多者在前,若净胜球相同,则进球数多者在前。
积分表结构要求如下:队名(不超过 15 个字符),已比赛的场数,赢的场数,
平的场数,负的场数,进球数,失球数,积分。积分表放在正文文件中。最近一
轮的结果从键盘输入,其形式为:主队名(可用代码),客队名(可用代码),主
队得分(即进球数),客队得分(即进球数)。
关键词:足球 比赛 积分
3
一、序言
足球联赛采用主客场双循环赛制,胜一场得3分,平局各得1分,负一场得0
分,联赛排名以积分多者在前,当两队(或多队)积分相同时,则净胜球(即进
球数与失球数之差)多者在前,若净胜球相同,则进球数多者在前,若仍相同,
则抽签或踢附加赛决定名次(这在联赛结束后进行,联赛未结束则两队名次并列,
本程序不做这方面要求)。该设计要求学生以足球联赛为背景,设计、开发一套
“足球联赛积分管理系统”软件。
通过该题目的设计,培养学生面向对象程序设计的思想,要求学生达到熟练
掌握 C++语言的基本知识和技能,基本掌握面向对象程序设计的基本思路和方法,
能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。同时强调
好的程序设计风格,提高解决实际问题的能力。
4
二、系统分析与设计
本程序是定义了一个 Team 类,每个球队均是该类的对象。将联赛中参赛的队伍数限定
不小于 2,并根据输入顺序自动编号。每输入一次比赛成绩,则相应的队的有关数据(比赛
场次、赢球场次、平的场次、输球场次、进球数、失球数、净胜球、得分)进行记录,且立
即进行更新。当比赛成绩录入完成时,调用联赛排序方法(对象数组作为参数)排出名次并
输出。从而实现题目的要求。
UML 类图:
Team
+T_name:char[15]
+T_matches:int
+T_wins:int
+T_vs:int
+T_loses:int
+T_goal:int
+T_lose_goal:int
+T_win_goal:int
+T_marks:int
+FindTeam(char
TeamNum,CTeam *Teams,int &i)
+CharStyle(char strInput[15])
+Sort(int
*Array3,int row,int col,int *order)
+sTeamSort(int
*Teams,int *TeamOrder)
*Array1,int
TeamName[15],int
*Array2,int
TeamNum,CTeam
图 1
UML 类图
1
三、详细设计
#include
#include "string.h"
#include
#include "stdlib.h"
using namespace std;
// 定义球队类
class CTeam
{
public:
char T_name[15];
int T_matches,//比赛场次
//赢球场次
T_wins,
// 平的场次
T_vs,
T_loses, // 输球场次
T_goal, // 进球数
T_lose_goal, // 失球数
T_win_goal, // 净胜球
T_marks;
// 得分
/*************************条件降序排序***************************/
/*输入:待排序的数组(Array1/Array2/Array3)、数组元素脚标(order)
/*输出:按降序排序好的数组(Array)、排序完的元素脚标(order)
/****************************************************************/
void Sort(int *Array1,int *Array2,int *Array3,int row,int col,int *order)
{
// 数组值中间变量
// 索引值中间变量
int temp1,temp2,temp3;
int ktemp;
int i,j;
for (j=0;jArray1[i+1] = temp1;
temp2 = Array2[i];
Array2[i] = Array2[i+1];
Array2[i+1] = temp2;
temp3 = Array3[i];
Array3[i] = Array3[i+1];
Array3[i+1] = temp3;
}
else if(Array1[i]==Array1[i+1])
{
if(Array2[i]
}
}
}
}
// 球队排序,输出球队排序结果 TeamOrder
void TeamSort(int TeamNum,CTeam *Teams,int *TeamOrder)
{
int i;
int *Point=new int[TeamNum];
int *win_goal=new int[TeamNum];
int *goal=new int[TeamNum];
//------------------小组 A 排名----------------//
for(i=0;i
|