👉博__主👈:米码收割机
👉技__能👈:C++/Python语言
👉公众号👈:测试开发自动化
👉荣__誉👈:阿里云博客专家博主、51CTO技术博主
👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。
足球比赛数据统计系统(面向对象)
目录
- 足球比赛数据统计系统(面向对象)
- 一、设计要求
- 二、结果展示
- 2.1 输入比赛数据
- 2.2 显示队伍排名
- 2.3 显示某时间段比赛数据
- 2.4 显示某队主客场得分
- 2.5 退出
- 三、程序设计
- 3.1 定义Match结构
- 3.2 定义TeamStats结构
- 3.3 设计用户界面:
- 3.4 数据输入功能
- 3.5 实现队伍排名展示功能
- 3.6 实现指定队伍和月份的比赛数据查询功能
- 四、总结
一、设计要求
统计足球比赛数据,要求能用菜单实现如下功能:
(1)输入每场比赛的主队名称客队名称,比赛日期,主队得分,客队得分。 (2)按总得分从高到低排出每个队的名称,总得分,胜,和,负的次数。
(3) 根据用户要求输出某队某月 (从键盘输入队名和月份)的所有比赛数据。(4) 根据用户要求输出某队主场总得分,客场总得分。
二、结果展示
2.1 输入比赛数据
展示如下【关注 测试开发自动化 回复 足球比赛数据统计系统 公众号获取源码】 :
2.2 显示队伍排名
展示如下【关注 测试开发自动化 回复 足球比赛数据统计系统 公众号获取源码】 :
2.3 显示某时间段比赛数据
展示如下【关注 测试开发自动化 回复 足球比赛数据统计系统 公众号获取源码】:
2.4 显示某队主客场得分
展示如下【关注 测试开发自动化 回复 足球比赛数据统计系统 公众号获取源码】:
2.5 退出
展示如下【关注 测试开发自动化 回复 足球比赛数据统计系统 公众号获取源码】:
三、程序设计
3.1 定义Match结构
定义一个结构体Match来存储单场比赛的信息:主队名称,客队名称,比赛日期,主队得分,客队得分。
代码如下【关注 测试开发自动化 回复 足球比赛数据统计系统 公众号获取源码】:
struct Match {
std::string home_team; // 主场队伍名称
std::string away_team; // 客场队伍名称
std::string date; // 格式: yyyymmdd
int home_score; // 主场队伍分数
int away_score; // 客场队伍分数
};
3.2 定义TeamStats结构
定义一个结构体TeamStats来存储队伍的统计数据:总得分,胜利次数,平局次数,失利次数,主场得分,客场得分。使用vector存储所有比赛数据。使用map存储队伍的统计数据,键为队伍名称,值为TeamStats结构体。
代码如下【关注 测试开发自动化 回复 足球比赛数据统计系统 公众号获取源码】:
struct TeamStats {
int total_points = 0; // 队伍总积分
int wins = 0; // 队伍赢得的比赛次数
int draws = 0; // 队伍打平的比赛次数
int losses = 0; // 队伍输掉的比赛次数
int home_score = 0; // 队伍在主场(即作为主队)的比赛中累积得到的总进球数
int away_score = 0; // 队伍在客场(即作为客队)的比赛中累积得到的总进球数
};
3.3 设计用户界面:
设计一个简单的文本菜单,展示用户可以选择的操作。获取用户的输入来选择操作。
代码如下【关注 测试开发自动化 回复 足球比赛数据统计系统 公众号获取源码】:
std::cout << "菜单:\n"
<< "1. 输入比赛数据\n"
<< "2. 显示队伍排名\n"
<< "3. 显示某队某月的所有比赛数据\n"
<< "4. 显示某队主场和客场总得分\n"
<< "5. 退出\n"
<< "请选择(15): ";
3.4 数据输入功能
获取用户输入的每场比赛信息。将输入的比赛数据存储到vector中。实时更新队伍的统计数据。
代码如下【关注 测试开发自动化 回复 足球比赛数据统计系统 公众号获取源码】:
// 输入比赛数据
Match match;
std::cout << "输入主队名称: ";
std::cin >> match.home_team;
std::cout << "输入客队名称: ";
std::cin >> match.away_team;
std::cout << "输入比赛日期(yyyy-mm-dd): ";
std::cin >> match.date;
std::cout << "输入主队得分: ";
std::cin >> match.home_score;
std::cout << "输入客队得分: ";
std::cin >> match.away_score;
matches.push_back(match);
// 更新统计数据
TeamStats& home_stats = stats[match.home_team];
TeamStats& away_stats = stats[match.away_team];
home_stats.home_score += match.home_score;
away_stats.away_score += match.away_score;
if (match.home_score > match.away_score) {
home_stats.total_points += 3;
home_stats.wins++;
away_stats.losses++;
}
else if (match.home_score < match.away_score) {
away_stats.total_points += 3;
away_stats.wins++;
home_stats.losses++;
}
else {
home_stats.total_points++;
away_stats.total_points++;
home_stats.draws++;
away_stats.draws++;
}
3.5 实现队伍排名展示功能
从map中提取统计数据,并存储到一个vector中用于排序。根据总得分对vector进行降序排序。以表格的形式输出每个队伍的名称,总得分,胜利次数,平局次数,和失利次数。
代码如下【关注 测试开发自动化 回复 足球比赛数据统计系统 公众号获取源码】:
std::string team_name, year_month;
std::cout << "输入队伍名称: ";
std::cin >> team_name;
std::cout << "输入年月(yyyy-mm): ";
std::cin >> year_month;
for (const auto& match : matches) {
if ((match.home_team == team_name || match.away_team == team_name) &&
match.date.substr(0, 7) == year_month) {
std::cout << match.date << " " << match.home_team << " " << match.home_score << " - "
<< match.away_score << " " << match.away_team << "\n";
}
}
3.6 实现指定队伍和月份的比赛数据查询功能
获取用户输入的队伍名称和年月。遍历存储的比赛数据,匹配队伍名称和日期,输出符合条件的比赛信息。
代码如下【关注 测试开发自动化 回复 足球比赛数据统计系统 公众号获取源码】:
// 显示某队主场和客场总得分
std::string team_name;
std::cout << "输入队伍名称: ";
std::cin >> team_name;
TeamStats& team_stats = stats[team_name];
std::cout << "主场总得分: " << team_stats.home_score << "\n";
std::cout << "客场总得分: " << team_stats.away_score << "\n";
四、总结
本项目是一个用C++编写的简单控制台应用程序,目的是统计和查询足球比赛的数据。程序具备输入比赛信息,展示队伍排名,查询特定队伍在特定月份的比赛数据,以及查询某队的主场和客场总得分等功能。
在数据存储方面,代码使用标准模板库(STL)的vector和map容器。其中,vector用于存储所有比赛的数据,而map则用于以队伍名称为键存储队伍的统计数据。此外,定义了两个结构体Match和TeamStats来组织比赛和队伍统计数据。
用户界面部分包含一个简单的文本菜单,通过std::cout输出选项,用户可以通过输入相应的数字选择执行的操作。代码通过循环来运行此菜单,直到用户选择退出。
对于数据输入功能,代码接收用户输入的比赛信息,并将其存储在vector中。同时,更新相应队伍的统计数据。
在队伍排名展示方面,代码提取map中的统计数据,将其存入vector,然后使用排序算法按得分排序。之后,以表格形式输出每个队伍的名称,总得分,胜利次数,平局次数和失利次数。
查询功能允许用户输入队伍名称和月份,然后通过遍历比赛数据,找到符合条件的比赛,并输出相关信息。而在得分查询部分,代码从队伍统计数据中检索主场和客场得分,并输出。
总的来说,此程序是一个基于控制台的足球比赛数据统计和查询工具,它展示了如何使用C++的基本数据结构和算法来实现实用的功能。虽然简单,但它为学习和理解C++编程提供了一个很好的示例。