编程课程项目:巴士模拟器中自动创建新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
相关产品推荐
相关产品推荐

