(C#)WPF根据设计的数据动态生成火车席位

1、效果图,页面设计

           

  2、代码
  //生成座位
        DataTable seatdt;
        string A = "";
        string B = "";
        string C = "";
        string D = "";
        string F = "";              
        private void btnCreateSeat_Click(object sender, RoutedEventArgs e)
        {
            //声明一个table
            seatdt = new DataTable();
            //获取席位个数
            int sumSeat = Convert.ToInt32(txt_sumSeat.Text);
            //获取列数
            int columns = Convert.ToInt32(cboSeatColumns.Text);
            //当显示的是座位席别的DGV的时候
            if (gridZuoWei.Visibility==Visibility.Visible)  
            {
                seatdt.Columns.Add("columnA"typeof(string));
                seatdt.Columns.Add("columnB"typeof(string));
                seatdt.Columns.Add("columnC"typeof(string));
                seatdt.Columns.Add("columnD"typeof(string));
                seatdt.Columns.Add("columnF"typeof(string));
                for (int i = 0; i < sumSeat;)
                {
                    if (columns == 5)
                    {
                        i = columns5(i, sumSeat);
                    }
                    else if (columns == 4)
                    {
                        i = columns4(i);
                    }
                    else if (columns == 3)
                    {
                        i = columns3(i);
                    }
                    else if (columns == 2)
                    {
                        i = columns2(i);
                    }
                    if (i > sumSeat)
                    {
                        MessageBox.Show("席位个数设置有误!应该为" + i);
                        txt_sumSeat.Text = i.ToString();                       
                    }
                }
                //绑定数据给席位为座位的DGV
                dgv_Seat.ItemsSource = seatdt.AsDataView();  
            }
            else //当显示的是卧铺席别的DGV的时候
            {
                seatdt.Columns.Add("number"typeof(string));
                seatdt.Columns.Add("top"typeof(string));
                seatdt.Columns.Add("centen"typeof(string));
                seatdt.Columns.Add("bottom"typeof(string));
             if (radioButtonTCB.IsChecked==true)  //硬卧、有上、中、下铺
                {
                    if (sumSeat % 3 == 0)
                    {
                        for (int i = 0; i < sumSeat / 3;)
                        {
                            i = WoPu3(i);
                        }
                    }
                    else
                    {
                        MessageBox.Show("席位个数设置有误!应该为" + (sumSeat + (3 - sumSeat % 3)));
                        txt_sumSeat.Text = (sumSeat + (3 - sumSeat % 3)).ToString();
                        btnCreateSeat_Click(nullnull); //调用自身开始重新计算
                    }
                }
              else //只有上、下铺
             {
                    if ((sumSeat % 2) == 0)
                    {
                        for (int i = 0; i < sumSeat / 2;)
                        {
                            i = WoPu2(i);
                        }
                    }
                    else
                    {
                        MessageBox.Show("席位个数设置有误!应该为" + (sumSeat + 1));
                        txt_sumSeat.Text = (sumSeat + 1).ToString();
                        btnCreateSeat_Click(nullnull); //调用自身开始重新计算
                    }
                }                          
      
             dgv_WoPuSeat.ItemsSource = seatdt.AsDataView();  //绑定数据给席位为卧铺的DGV
          }  
                   
            ShengChengZuoWei = true;
        }
        #region  生成座位席位编号的方法
        //列数为5执行的方法
        public int columns5( int i,int sumSeat)
        {
                if (i == 0)
                {
                    i++;
                    seatdt.Rows.Add("A0" + (i++), "B0" + (i++), """D0" + (i++), "F0" + i);
                }
                else if (i < sumSeat - 4)
                {
                    i = colA(i);
                    i = colB(i);
                    i = colC(i);
                    i = colD(i);
                    i = colF(i);
                    seatdt.Rows.Add(A, B, C, D, F);
                }
                else
                {
                  i++;
                 //添加一行数据到table中
                  seatdt.Rows.Add("A" + (i++), "B" + (i++), """D" + (i++), "F" + i);
                }
            
            return i;
        }
        private int colA(int i)
        {
            if (i++ < 9)
            {
                A = "A0" + i;
            }
            else
            {
                A = "A" + i;
            }
            return i;        
        }
        private int colB(int i)
        {
            if (i++ < 9)
            {
                B = "B0" + i;
            }
            else
            {
                B = "B" + i;
            }
            return i;
        }
        private int colC(int i)
        {
            if (i++ < 9)
            {
                C = "C0" + i;
            }
            else
            {
                C = "C" + i;
            }
            return i;
        }
        private int colD(int i)
        {
            if (i++ < 9)
            {
                D = "D0" + i;
            }
            else
            {
                D = "D" + i;
            }
            return i;
        }
        private int colF(int i)
        {
            if (i++ < 9)
            {
                F = "F0" + i;
            }
            else
            {
                F = "F" + i;
            }
            return i;
        }
        //列数为4执行的方法
        public int columns4(int i)
        {
            i = colA(i);
            i = colC(i);
            i = colD(i);
            i = colF(i);
            //添加一行数据到table中
            seatdt.Rows.Add(A, "", C, D, F);
            return i;
        }
        //列数为3执行的方法
        public int columns3(int i)
        {
            i = colA(i);
            i = colC(i);        
            i = colF(i);          
            //添加一行数据到table中
            seatdt.Rows.Add(A, "", C, "", F);
            return i;
        }
        //列数为2执行的方法
        public int columns2(int i)
        {
            i = colA(i);           
            i = colF(i);         
            //添加一行数据到table中
            seatdt.Rows.Add(A, """""", F);
            return i;
        }
        #endregion
        #region 生成卧铺编号的方法
        public int WoPu3(int i)
        {
            if (i++ < 9)
            {
                A = "0" + i;
            }
            else
            {
                A = "" + i;
            }
            if (i < 10)
            {
                B = "0" + i+"上铺";
            }
            else
            {
                B = i + "上铺";
            }
            if (i < 10)
            {
                C = "0" + i + "中铺";
            }
            else
            {
                C = i + "中铺";
            }
            if (i < 10)
            {
                D = "0" + i + "下铺";
            }
            else
            {
                D = i + "下铺";
            }
            //添加一行数据到table中
            seatdt.Rows.Add(A,B,C,D);
            return i;
        }
        public int WoPu2(int i)
        {
            if (i++ < 9)
            {
                A = "0" + i;
            }
            else
            {
                A = "" + i;
            }
            if (i < 10)
            {
                B = "0" + i+"上铺";
            }
            else
            {
                B = i + "上铺";
            }       
            if (i < 10)
            {
                D = "0" + i+"下铺";
            }
            else
            {
                D = i + "下铺";
            }
            //添加一行数据到table中
            seatdt.Rows.Add(A, B, "", D);
            return i;
        }
        #endregion  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值