You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编程课程项目:巴士模拟器中自动创建新passenger对象(限25人)

解决方案

要实现每次添加乘客时自动创建新对象,同时限制巴士最多25人,核心是用集合动态管理乘客对象,而非手动命名单个变量。以下是具体修改方案:

1. 巴士类核心逻辑修改

在巴士类中维护一个乘客集合,添加乘客前先检查容量,再创建新对象并入集合:

class Bus
{
    // 存储所有乘客的集合
    private List<passenger> _passengers = new List<passenger>();
    // 最大载客量常量
    private const int MaxCapacity = 25;

    public void add_Passenger()
    {
        // 检查巴士是否已满
        if (_passengers.Count >= MaxCapacity)
        {
            Console.WriteLine("巴士已满,无法添加新乘客!");
            return;
        }

        // 创建新乘客对象
        passenger newPassenger = new passenger();

        // 读取乘客信息(增加输入验证避免崩溃)
        Console.Write("请输入乘客姓名:");
        newPassenger.name = Console.ReadLine();

        Console.Write("请输入乘客年龄:");
        while (!int.TryParse(Console.ReadLine(), out int age))
        {
            Console.Write("输入无效,请输入数字格式的年龄:");
        }
        newPassenger.age = age;

        Console.Write("请输入乘客目的地编号:");
        while (!int.TryParse(Console.ReadLine(), out int destination))
        {
            Console.Write("输入无效,请输入数字格式的目的地编号:");
        }
        newPassenger.destination = destination;

        // 将新乘客加入集合
        _passengers.Add(newPassenger);
        Console.WriteLine($"乘客添加成功!当前载客量:{_passengers.Count}/{MaxCapacity}");
    }

    // 可选:查看所有乘客的方法,用于测试验证
    public void DisplayPassengers()
    {
        Console.WriteLine("\n===== 当前乘客列表 =====");
        for (int i = 0; i < _passengers.Count; i++)
        {
            var p = _passengers[i];
            Console.WriteLine($"{i+1}. 姓名:{p.name},年龄:{p.age},目的地:{p.destination}");
        }
    }
}

2. Passenger类优化(可选,符合C#规范)

将公共字段改为属性,更符合C#封装设计规范:

class passenger
{
    public string Name { get; set; }
    public int Age { get; set; }
    public int Destination { get; set; }
}

若使用该优化类,需同步修改巴士类中对乘客属性的调用(如newPassenger.name改为newPassenger.Name)。

关键思路说明

  • 动态对象管理:用List<passenger>集合存储所有乘客,无需手动命名passenger1、passenger2,每次添加新对象直接并入集合即可。
  • 容量控制:通过MaxCapacity常量限制最大载客量,添加前检查集合长度,避免超员。
  • 输入合法性保障:用int.TryParse处理年龄和目的地输入,防止用户输入非数字导致程序崩溃。

内容的提问来源于stack exchange,提问作者babula40

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 01:39:58