我如何在C#中为飞行座位分配乘客姓名

问题描述 投票:0回答:1

我正在使用C#Windows形式的航空预订项目。用户使用两个列表框输入名称并选择座位,一个列表框用于行(即1 2 3 4 5),一个列表框用于列(即A B C D)。当用户按下书时,乘客将被添加到座位列表中(即1A-Sue)。如果用户按“显示所有座位”,它将显示所有座位信息,可能有或没有乘客。 (即1A-和2A-David)。

我的问题是我的代码只记录了一次姓名。如果我再次按book记录第二位乘客,第二个座位信息将显示第二个名字。例如,第一个输入名称:Sue;排:1个座位:A。 “显示所有席位”的文本框将为1A-Sue 1B- .... 5D-第二个输入名称:Steven;行:C座位1个。 “显示所有席位”的文本框将为1A-Sue 1B- .... 5D- 1A- 1B- 1C-史蒂文 .... 5D-

namespace airline
{
    public partial class Form1 : Form
    {
        //initialize seat in 2D array
        string[,] seat = new string[5, 4] {{"1A","1B","1C","1D" },
                                               {"2A","2B","2C","2D" },
                                               {"3A","3B","3C","3D" },
                                               {"4A","4B","4C","4D" },
                                               {"5A","5B","5C","5D" },};
        //initialize varialbes
        string row;
        string col;
        string selectedSeat;
        string output = String.Empty;
        public static List<Passenger> passengers;
        public Form1()
        {
            InitializeComponent();


        }

        private void showAllowSeatClick(object sender, EventArgs e)
        {

            seatTextBox.Text = output;
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void bookClick(object sender, EventArgs e)
        {
            row = rowListBox.SelectedItem.ToString();
            col = seatListBox.SelectedItem.ToString();
            selectedSeat = row + col;
            for (int i = 0; i < seat.GetLength(0); i++)
            {
                for (int j = 0; j < seat.GetLength(1); j++)
                {
                    if (seat[i, j] == selectedSeat)
                    {
                        output += seat[i, j] + " - " + nameTextInput.Text +"\n";
                        nameTextInput.Clear();
                    }
                    else
                    {
                        output += seat[i, j] + " - " +"\n";
                    }

                }
            }


        }
    }
}


c# multidimensional-array
1个回答
0
投票

而不是使用字符串数组,我建议构建一个对象数组:

public class Seat
{
    public string Id {get; set;}
    public string PassengerName {get; set;}
}

所以对象看起来像:

var seat = new Seat()
{
    Id = "1A",
    PassengerName = "John Doe"
}

这样,当用户选择一个座位时,您可以分配该特定对象的PassengerName属性。

或者,在数组上,您可以使用Dictionary对象,其Key为座位ID,乘客姓名为值。

© www.soinside.com 2019 - 2024. All rights reserved.