控制台输入举例

1.概要

2.代码

#include <iostream>
#include <string>
#include <cstdlib> // 用于 system() 函数

int main() {
    std::string input;

    std::cout << "1111";
    std::getline(std::cin, input);

    std::cout << "\n2222" << input << std::endl;

    system("pause"); // 添加这行代码
    return 0;
}

3.运行结果

下面我将为你提供一个 **完整的输入示例流程**,模拟使用上述 C 语言编写的“运动会赛事管理系统”时的用户交互过程。通过这个例子,你可以清楚地了解每一步如何输入数据、系统如何响应,以及最终能实现哪些功能。 --- ### ✅ 假设场景:校园田径运动会 我们要录入: - 3 名运动员 - 2 个项目(100米跑、跳远) - 自动生成赛程 - 录入成绩并查看排名和破纪录情况 --- ### 📥 输入举例控制台交互模拟) ```text ===== 运动会赛事管理系统 ===== 1. 添加运动员 2. 添加比赛项目 3. 自动生成赛程 4. 录入比赛成绩 5. 查询项目排名 6. 查询运动员成绩 7. 查看当前纪录 8. 保存数据 9. 加载数据 0. 退出系统 请选择操作: 1 ``` #### ➤ 步骤1:添加运动员 ```text 请输入运动员信息: 编号: 101 姓名: ZhangSan 队伍: ComputerScience 年龄: 20 运动员添加成功! ``` 再次选择 `1`: ```text 请输入运动员信息: 编号: 102 姓名: LiSi 队伍: MathDepartment 年龄: 19 年龄: 19 运动员添加成功! ``` 再添加一名: ```text 编号: 103 姓名: WangWu 队伍: PhysicsDept 年龄: 21 运动员添加成功! ``` --- #### ➤ 步骤2:添加比赛项目(选 `2`) ```text 请输入比赛项目信息: 项目编号: 1 项目名称: 100m_Race 当前纪录保持者: None 当前纪录成绩: 12.0 项目添加成功! ``` 继续添加跳远项目: ```text 项目编号: 2 项目名称: LongJump 当前纪录保持者: OldPlayer 当前纪录成绩: 5.8 项目添加成功! ``` --- #### ➤ 步骤3:自动生成赛程(选 `3`) ```text === 自动生成赛程安排 === 项目[1]100m_Race 安排在 10:34 项目[2]LongJump 安排在 11:17 ========================= ``` --- #### ➤ 步骤4:录入比赛成绩(选 `4`) 第一次录入百米成绩: ```text 录入比赛成绩: 运动员ID: 101 项目ID: 1 成绩(秒或米): 11.5 🎉 新纪录!原纪录 12.00 被打破! 成绩已录入! ``` 第二次: ```text 运动员ID: 102 项目ID: 1 成绩(秒或米): 11.8 成绩已录入! ``` 第三次: ```text 运动员ID: 103 项目ID: 1 成绩(秒或米): 12.1 成绩已录入! ``` 现在我们来录跳远成绩(越大越好,但代码默认越小越好 → 注意:需改进逻辑,见后说明) 假设我们仍用“数值小为好”,那我们可以反向理解为“助跑时间”之类的。为了演示方便,我们先按原逻辑处理。 但我们换一种方式:让跳远以“米”为单位,并修改判断条件(稍后提出改进建议)。 暂时这样录入: ```text 运动员ID: 101 项目ID: 2 成绩(秒或米): 5.9 🎉 新纪录!原纪录 5.80 被打破! 成绩已录入! ``` > 💡 提示:目前代码对所有项目都使用 `<` 判断是否破纪录,适合跑步类(越小越好)。对于跳高/跳远等“越大越好”的项目,需要额外字段标记类型。 --- #### ➤ 步骤5:查询项目排名(选 `5`) ```text 请输入项目ID: 1 --- 项目[1]成绩排名 --- 项目: 100m_Race 1. ZhangSan (ComputerScience) 成绩: 11.50 (新纪录) 2. LiSi (MathDepartment) 成绩: 11.80 3. WangWu (PhysicsDept) 成绩: 12.10 ``` --- #### ➤ 步骤6:查询某运动员成绩(选 `6`) ```text 请输入运动员ID: 101 --- 运动员 101 的参赛成绩 --- 项目: 100m_Race, 成绩: 11.50 (破纪录) 项目: LongJump, 成绩: 5.90 (破纪录) ``` --- #### ➤ 步骤7:查看当前纪录(选 `7`) ```text === 当前各项纪录 === [1] 100m_Race: 11.50 秒/米 —— 保持者: ZhangSan [2] LongJump: 5.90 秒/米 —— 保持者: ZhangSan ``` --- #### ➤ 步骤8:保存数据(选 `8`) ```text 数据已保存! ``` 生成三个文件: - `athletes.dat` - `events.dat` - `results.dat` 下次启动程序选择 `9` 即可加载这些数据。 --- #### ➤ 最后选择 `0` 退出 ```text 再见! ``` --- ### ⚠️ 注意事项与建议改进 当前代码有一个重要限制: > ❌ 所有项目的“破纪录”判断都是基于 `score < record_time`,即“越小越好”。 但这不适用于跳远、跳高、铅球等“越大越好”的项目。 ✅ **解决方案建议**:给 `Event` 结构体增加一个类型标志: ```c typedef struct { int event_id; char event_name[EVENT_LEN]; char record_holder[NAME_LEN]; float record_value; int is_better_less; // 1表示越小越好(如跑步),0表示越大越好(如跳远) } Event; ``` 然后在判断时改为: ```c if ((e.is_better_less && score < e.record_value) || (!e.is_better_less && score > e.record_value)) { // 破纪录 } ``` --- ### ✅ 总结:典型输入顺序模板 | 操作 | 输入内容 | |------|----------| | 添加运动员 | ID, 姓名, 队伍, 年龄 | | 添加项目 | ID, 名称, 纪录保持者, 纪录成绩, 类型(可扩展) | | 生成赛程 | 无输入,系统自动输出时间表 | | 录入成绩 | 运动员ID, 项目ID, 成绩值 | | 查询排名 | 输入项目ID → 显示前三名 | | 查询个人 | 输入运动员ID → 显示其所有成绩 | ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值