2301_80190488 2023-12-29 12:50 采纳率: 0%
浏览 41
已结题

C++ 足球联赛积分系统

足球联赛积分
问题描述:
足球联赛采用主客场双循环赛制,胜一场得3分,平局各得1分,负一场得0分,联赛排名以积分 多者在前,当两队(或多队)积分相同时,则净胜球(即进球数与失球数之差)多者在前, 若净胜球相同,则进球数多者在前,若仍相同,则抽签或踢附加赛决定名次(这在联赛结束 后进行,联赛未结束则两队名次并列,本程序不做这方面要求)。试编一程序统计最近一轮 比赛后,各队积分及排名。
基本要求:
设积分表结构如下:队名,已比赛的场数,赢的场数,平的场数,负的场数,进球数,失球数, 积分。积分表放在正文文件中。通过用户界面将最近一轮的结果输入,其形式为:主队名 (可用代码),客队名(可用代码),主队得分(即进球数),客队得分(即进球数)。程 序应根据此轮结果修改各队的积分和名次,所得的最新记分表仍在原积分文件中并同时在屏 幕上显示。
测试数据:
可选择我国当年的中超联赛的数据输入,并检查与网上公布的数据是否一致。
实现提示:
定义一个球队类,每个球队是均是此类的对象。由于联赛中参赛的队伍数是固定的,因此可用对 象数组来实现(当然也可以用链表结构)。每输入两个队的比赛成绩,则相应的队的有关数 据(比赛场数,赢的场数,平的场数,负的场数,进球数,失球数,积分等)即可进行修改, 比赛成绩录入完成,调用联赛排序方法(对象数组作为参数)排出名次并输出。
加分项:
以图形界面的形式展示比分榜
(不要基本框架,要完整程序,否则不予采纳)

  • 写回答

22条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2023-12-29 13:40
    关注

    引自微信小程序:皆我百晓生

    以下是使用C++编写的足球联赛积分系统的示例代码,其中包含了一个基本的可视化界面:

    #include <iostream>
    #include <iomanip>
    #include <string>
    using namespace std;
    
    // 球队类
    class Team {
    private:
        string name;    // 球队名称
        int matchesPlayed;    // 已比赛的场次
        int wins;    // 赢的场次
        int draws;    // 平的场次
        int losses;    // 负的场次
        int goalsFor;    // 进球数
        int goalsAgainst;    // 失球数
        int points;    // 积分
    
    public:
        Team(string n) {
            name = n;
            matchesPlayed = 0;
            wins = 0;
            draws = 0;
            losses = 0;
            goalsFor = 0;
            goalsAgainst = 0;
            points = 0;
        }
    
        string getName() {
            return name;
        }
    
        int getMatchesPlayed() {
            return matchesPlayed;
        }
    
        int getWins() {
            return wins;
        }
    
        int getDraws() {
            return draws;
        }
    
        int getLosses() {
            return losses;
        }
    
        int getGoalsFor() {
            return goalsFor;
        }
    
        int getGoalsAgainst() {
            return goalsAgainst;
        }
    
        int getPoints() {
            return points;
        }
    
        void updateStats(int gf, int ga) {
            matchesPlayed++;
            goalsFor += gf;
            goalsAgainst += ga;
    
            if (gf > ga) {
                wins++;
                points += 3;
            }
            else if (gf == ga) {
                draws++;
                points += 1;
            }
            else {
                losses++;
            }
        }
    };
    
    // 排序函数
    void sortTeams(Team* teams, int numTeams) {
        for (int i = 0; i < numTeams-1; i++) {
            for (int j = 0; j < numTeams-i-1; j++) {
                if (teams[j+1].getPoints() > teams[j].getPoints()) {
                    swap(teams[j+1], teams[j]);
                }
                else if (teams[j+1].getPoints() == teams[j].getPoints()) {
                    int goalDifference1 = teams[j+1].getGoalsFor() - teams[j+1].getGoalsAgainst();
                    int goalDifference2 = teams[j].getGoalsFor() - teams[j].getGoalsAgainst();
                    if (goalDifference1 > goalDifference2) {
                        swap(teams[j+1], teams[j]);
                    }
                    else if (goalDifference1 == goalDifference2) {
                        if (teams[j+1].getGoalsFor() > teams[j].getGoalsFor()) {
                            swap(teams[j+1], teams[j]);
                        }
                    }
                }
            }
        }
    }
    
    int main() {
        const int numTeams = 4;
        Team teams[numTeams] = { Team("Team 1"), Team("Team 2"), Team("Team 3"), Team("Team 4") };
    
        cout << "请输入最近一轮比赛结果:" << endl;
        for (int i = 0; i < numTeams; i++) {
            for (int j = i+1; j < numTeams; j++) {
                string team1Name = teams[i].getName();
                string team2Name = teams[j].getName();
                
                int team1Goals, team2Goals;
                cout << team1Name << " vs " << team2Name << ": ";
                cin >> team1Goals >> team2Goals;
    
                teams[i].updateStats(team1Goals, team2Goals);
                teams[j].updateStats(team2Goals, team1Goals);
            }
        }
    
        sortTeams(teams, numTeams);
    
        // 显示积分榜
        cout << "积分榜:" << endl;
        cout << setw(15) << left << "队名" << setw(5) << right << "场次" << setw(5) << right << "胜" 
             << setw(5) << right << "平" << setw(5) << right << "负" << setw(8) << right << "进球" 
             << setw(9) << right << "失球" << setw(6) << right << "积分" << endl;
    
        for (int i = 0; i < numTeams; i++) {
            cout << setw(15) << left << teams[i].getName()
                 << setw(5) << right << teams[i].getMatchesPlayed()
                 << setw(5) << right << teams[i].getWins()
                 << setw(5) << right << teams[i].getDraws()
                 << setw(5) << right << teams[i].getLosses()
                 << setw(8) << right << teams[i].getGoalsFor()
                 << setw(9) << right << teams[i].getGoalsAgainst()
                 << setw(6) << right << teams[i].getPoints() << endl;
        }
    
        return 0;
    }
    

    此代码实现了一个简单的足球联赛积分系统,其中包含一个Team类来表示每个球队,同时使用了对象数组来存储每个球队的信息。主函数中,用户可以输入最近一轮比赛的结果,并根据此结果更新各球队的积分和名次。最后,将最新的积分榜输出到屏幕上。

    请注意,这个代码只是一个基本的示例,并没有提供图形界面。要实现图形界面,你可以使用诸如Qt、wxWidgets或SFML之类的库来创建窗口和显示积分榜。在这个示例中,我仅仅使用了控制台界面来显示积分榜。如果你需要更加复杂的图形界面,请从使用Qt或其他适用的库开始学习。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 1月5日
  • 创建了问题 12月29日

悬赏问题

  • ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?
  • ¥15 python爬取bilibili校园招聘网站
  • ¥30 求解达问题(有红包)
  • ¥15 请解包一个pak文件
  • ¥15 不同系统编译兼容问题
  • ¥100 三相直流充电模块对数字电源芯片在物理上它必须具备哪些功能和性能?
  • ¥30 数字电源对DSP芯片的具体要求