⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mianform.cs

📁 影院售票管理系统 (1)具有方便、快速的售票功能
💻 CS
📖 第 1 页 / 共 2 页
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Xml;
using System.Runtime.Serialization.Formatters.Binary;
using System.IO;

namespace dianyingyuan
{
    public partial class MianForm : Form
    {
        Movie movie = null;
        /// <summary>
        /// 所有放映计划的集合
        /// </summary>
        Dictionary<string, Plan> myPlan = null;

        /// <summary>
        /// 所有电影的集合
        /// </summary>
        Dictionary<string, Movie> myMovies = new Dictionary<string, Movie>();
        public MianForm()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
           
            //this.tsmiSiero.Enabled = false;

            //InitMovies();
            //CreateMovieTree();
            //this.tsmiShuaxin.Enabled = false;

            //BinaryFormatter bf = new BinaryFormatter();
            //FileStream fs = null;
            //try
            //{
            //    fs = new FileStream("Sava.txt", FileMode.Open);
            //    this.myPlan = bf.Deserialize(fs) as Dictionary<string, Plan>;
            //}
            //catch (Exception ex)
            //{

            //    MessageBox.Show(ex.Message);
            //}
            //finally
            //{
            //    fs.Close();
            //}


        }
        /// <summary>
        /// 读取XML 做电影对象 传到 电影集合
        /// </summary>
        public void InitMovies()
        {
            //读XML文件
            XmlDocument xmlDocument = new XmlDocument();
            xmlDocument.Load("ShowList.xml");
            XmlNode showListNode = xmlDocument.DocumentElement;

            foreach (XmlNode movieNode in showListNode.ChildNodes)
            {
                //每部电影的信息
                string movieName = movieNode.ChildNodes[0].InnerText;
                string picture = movieNode.ChildNodes[1].InnerText;
                string director = movieNode.ChildNodes[2].InnerText;
                string actor = movieNode.ChildNodes[3].InnerText;

                MovieType type
                     = (MovieType)(Enum.Parse(typeof(MovieType),
                     movieNode.ChildNodes[4].InnerText));
                int price = int.Parse(movieNode.ChildNodes[5].InnerText);

                List<string> showTimeList = new List<string>();
                foreach (XmlNode time in movieNode.ChildNodes[6].ChildNodes)
                {
                    showTimeList.Add(time.InnerText);
                }

                Movie movie = new Movie(movieName, picture, director, actor, type,
                     price, showTimeList);

                this.myMovies.Add(movie.MovieName, movie);


            }
        }
        /// <summary>
        /// 循环集合 挂到 树上
        /// </summary>
        private void CreateMovieTree()
        {
            TreeNode treeRoot = new TreeNode("放映计划");
            treeRoot.Tag = "放映计划";

            foreach (string key in this.myMovies.Keys)
            {
                TreeNode movieNameNode = new TreeNode(this.myMovies[key].MovieName);
                movieNameNode.Tag = "影片";

                foreach (string showTime in this.myMovies[key].ShowTimeList)
                {
                    TreeNode showTimeNode = new TreeNode(showTime);
                    showTimeNode.Tag = "放映时间";

                    movieNameNode.Nodes.Add(showTimeNode);
                }

                treeRoot.Nodes.Add(movieNameNode);
            }

            this.twPlan.Nodes.Add(treeRoot);

            this.twPlan.ExpandAll();
        }
        /// <summary>
        /// 点击树上节点 在详情那里 显示 相应电影的 详细信息
        /// </summary>
        /// <param name="mo"></param>
        private void ShowMovieInfo(Movie mo)
        {
            lbldaoyan.Text = mo.Director;
            lbllei.Text = mo.MovieType.ToString();
            lblpian.Text = mo.MovieName;
            lblzhuyan.Text = mo.Actor;
            lbljiage.Text = mo.Price.ToString();
            pictureBox1.Image = Image.FromFile(mo.Picture);
            string time = "";
            foreach (string ti in mo.ShowTimeList)
            {
                time += " " + ti;
            }
            lbltime.Text = time;
        }

         private void twPlan_AfterSelect(object sender, TreeViewEventArgs e)
         {

             int num = 0;
             int all = 0;

             //选中电影名节点
             if (this.twPlan.SelectedNode.Tag.ToString() == "影片")
             {
                 label4.Text = twPlan.SelectedNode.Text;
                 label6.Text = "";
                 label7.Text = "";
                 movie = this.myMovies[this.twPlan.SelectedNode.Text];
                 this.tpShow.Controls.Clear();


                 foreach (string time in myMovies[label4.Text].ShowTimeList)
                 {
                     for (int i = 1; i <= 4; i++)
                     {
                         for (int j = 1; j <= 8; j++)
                         {
                             Color h = myPlan[label4.Text + "-" + time].Seats[i + "-" + j].Color;
                             if (h == Color.Red)
                             {
                                 num++;
                                 
                             }
                             all = twPlan.SelectedNode.GetNodeCount(true) * 32;



                         }
                     }
                 }
                 //显示电影
                 this.ShowMovieInfo(movie);
             }
             //选中时间节点
             else if (this.twPlan.SelectedNode.Tag.ToString() == "放映时间")
             {

                 movie = this.myMovies[this.twPlan.SelectedNode.Parent.Text];
                 label6.Text = "";
                 label7.Text = "";


                 string showTime = this.twPlan.SelectedNode.Text;
                 //显示座位
                 foreach (Plan plan in this.myPlan.Values)
                 {
                     string[] msg = plan.PlanName.Split('-');

                     if (msg[1] == showTime)
                     {
                         this.DrawSeats(plan);

                         break;
                     }
                 }


                 for (int i = 1; i <= 4; i++)
                 {
                     for (int j = 1; j <= 8; j++)
                     {
                         Color h = myPlan[label4.Text].Seats[i + "-" + j].Color;
                         if (h == Color.Red)
                         {
                             num++;
                             
                         }
                         all = 32;



                     }
                 }


                 //显示电影
                 this.ShowMovieInfo(movie);



             }
             else
             {
                 label4.Text = "";
                 label6.Text = "";
                 label7.Text = "";

                 foreach (string key in myMovies.Keys)
                 {
                     foreach (string time in myMovies[key].ShowTimeList)
                     {
                         for (int i = 1; i <= 4; i++)
                         {
                             for (int j = 1; j <= 8; j++)
                             {
                                 Color h = myPlan[key + "-" + time].Seats[i + "-" + j].Color;
                                 if (h == Color.Red)
                                 {
                                     num++;
                                     
                                 }
                                 all = myPlan.Count * 32;



                             }
                         }
                     }


                 }



             }
            
             int yu = all - num;
             label6.Text = num.ToString() + "张";
             label6.Tag = num;
             label7.Text = yu.ToString() + "张";
             label7.Tag = yu;

            

         }

        /// <summary>
        /// 初始化放映计划集合
        /// </summary>
        private void InitCinema()
        {
            //循环每一部电影
            foreach (Movie movie in this.myMovies.Values)
            {
                string movieName = movie.MovieName;

                //循环每部电影的放映时间
                foreach (string showTime in movie.ShowTimeList)
                {
                    string planName = movieName + "-" + showTime;

                    //产生座位集合
                    Dictionary<string, Seat> tempSeats =
                        new Dictionary<string, Seat>();

                    for (int i = 1; i <= 5; i++)
                    {
                        for (int j = 1; j <= 8; j++)
                        {
                            Seat seat = new Seat(i + "-" + j, Color.Yellow);

                            tempSeats.Add(seat.SeatNum, seat);
                        }
                    }



                    //创建放映计划对象
                    Plan plan = new Plan(planName, tempSeats);

                    //加入放映计划对象
                    this.myPlan.Add(plan.PlanName, plan);
                }
            }




        }

        /// <summary>
        /// 描绘每一场次的座位标签
        /// </summary>
        /// <param name="row"></param>
        /// <param name="column"></param>
        /// <param name="page"></param>
        private void DrawSeats(Plan plan)
        {

            this.tpShow.Controls.Clear();

            int row = 0;
            int col = 0;
            label4.Text = plan.PlanName;
            
            //循环座位号
           foreach (Seat seat in this.myPlan[plan.PlanName].Seats.Values)
            {

          
                Label label = new Label();
                label.BackColor = seat.Color;
                label.AutoSize = false;
                label.Font = new Font("Arial", 16, FontStyle.Regular);
                label.Size = new Size(60, 30);
                label.Name = seat.SeatNum;
                label.Text = seat.SeatNum;
                label.TextAlign = ContentAlignment.MiddleCenter;
                label.Location = new Point(30 + (col * 90), 40 + (row * 60));

                label.Tag = plan.PlanName;

                //点击事件由买票方法处理
                label.Click += new EventHandler(this.BuyTicket);

                this.tpShow.Controls.Add(label);

                col++;

                if (col > 7)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -