zoukankan      html  css  js  c++  java
  • 影院售票系统

    1.此项目是模拟影院真实操作来搭建的

    影院售票系统

    所需要求:

    1.影院售票每天都更新放映列表,系统支持实时查看,包括电影放映场次时间,电影情况。

    2.影院提供3种影票:普通票,学生票,赠票(赠票免费,学生票有不同的折扣)

    3.允许用户可以选择场次,影票的类型及其座位,进行购票,并打印电影票。

    4.支持购票,并允许用户选座。

    5.系统可以创建保存售票情况,并允许对其进行恢复。

    下面是以下售票系统所需的类:

    类图如下:

    影院类:

    //座位集合
            public static Dictionary<string, Seat> seats = new Dictionary<string, Seat>();
    
            //放映计划
            public static Schedule Schedule = new Schedule();
    
            //已售出电影票集合
            public static List<Ticket> Soldticket = new List<Ticket>();
         
    
            public string path = "影院售票/Save.txt";
            //保存售票情况
            public void Save() 
            {
                FileStream filestream = new FileStream(path,FileMode.OpenOrCreate);
                StreamWriter streamWriter = new StreamWriter(filestream,Encoding.GetEncoding("GB2312"));
                
                foreach (Ticket item in Soldticket)
                {
                    int num = 0;
                    if (item is StudentTicket)
                    {
                        num = 1;
                    }
                    else if (item is FreeTicket)
                    {
                        num = 2;
                    }
                    streamWriter.Write(item.ScheduleItem.Time+"|"+
                        item.ScheduleItem.Movie.Moviesname+"|"+
                        item.ScheduleItem.Movie.Poster+"|"+
                        item.ScheduleItem.Movie.Director+"|"+
                        item.ScheduleItem.Movie.Actor+"|"+
                        item.ScheduleItem.Movie.Movietype+"|"+
                        item.ScheduleItem.Movie.Price+"|"
                        +item.Seat.Seatnum+"|"+item.Price1+ "|"+num+"*");
                }
                streamWriter.Close();
                filestream.Close();
            }
            //加载售票情况
            public void Load() 
            {
                FileStream filestream = new FileStream(path, FileMode.Open);
                StreamReader streamReader = new StreamReader(filestream, Encoding.GetEncoding("GB2312"));
                string str = streamReader.ReadToEnd();
                string[] Info = str.Split('*');
                Soldticket = new List<Ticket>();
                foreach (string item in Info)
                {
                    string[] info = item.Split('|');
                    if (info.Length==10)
                    {
                        ScheduleItem scheduleitem = new ScheduleItem();
                        scheduleitem.Time = info[0];
                        Movies movies = new Movies();
                        scheduleitem.Movie = movies;
                        scheduleitem.Movie.Moviesname = info[1];
                        scheduleitem.Movie.Poster = info[2];
                        scheduleitem.Movie.Director = info[3];
                        scheduleitem.Movie.Actor = info[4];
                        scheduleitem.Movie.Movietype = (MovieType)Enum.Parse(typeof(MovieType), info[5]);
                        scheduleitem.Movie.Price = Convert.ToDouble(info[6]);
                        Seat seat = new Seat();
                        seat.Seatnum = info[7];
                        seat.Color = Color.Red;
                        Ticket ticket = null;
                        if (info[9] == "1")
                        {
                            ticket = new StudentTicket(Convert.ToDouble(info[8]), scheduleitem, seat);
                        }
                        else if (info[9] == "2")
                        {
                            ticket = new FreeTicket(Convert.ToDouble(info[8]), scheduleitem, seat);
                        }
                        else
                        {
                            ticket = new Ticket(Convert.ToDouble(info[8]), scheduleitem, seat);
                        }
                        Soldticket.Add(ticket);
                    }           
                }
                streamReader.Close();
                filestream.Close();
            }
        }

    赠票子类继承父类Ticket

    public FreeTicket()
            {
            }
            public FreeTicket(double price, ScheduleItem scheduleItem, Seat seat)
                : base(price, scheduleItem, seat)
            {
            }
    
            //计算票价信息
            public override double CalcPrice()
            {
                return 0;
            }
    
            //打印票价信息
            public override void Print()
            {
                StringBuilder stringBuilder = new StringBuilder("************************
    ");
                stringBuilder.AppendLine("        青鸟影视(赠票)");
                stringBuilder.AppendLine("------------------------");
                stringBuilder.AppendFormat("      电影名:{0}
    ", this.ScheduleItem.Movie.Moviesname);
                stringBuilder.AppendFormat("            时间:{0}
    ", this.ScheduleItem.Time);
                stringBuilder.AppendFormat("           座位号:{0}
    ", this.Seat.Seatnum);
                stringBuilder.AppendFormat("              价格:{0}
    ", this.Price1);
                stringBuilder.AppendFormat("************************
    ");
                System.Windows.Forms.MessageBox.Show(stringBuilder.ToString());
            }
    
            //显示票价信息
            public override void Show()
            {
                StringBuilder stringBuilder = new StringBuilder("***********抱歉,已售出*************
    ");
                stringBuilder.AppendLine("                 青鸟影视(赠票)");
                stringBuilder.AppendLine("          ------------------------");
                stringBuilder.AppendFormat("                电影名:{0}
    ", this.ScheduleItem.Movie.Moviesname);
                stringBuilder.AppendFormat("                      时间:{0}
    ", this.ScheduleItem.Time);
                stringBuilder.AppendFormat("                     座位号:{0}
    ", this.Seat.Seatnum);
                stringBuilder.AppendFormat("                        价格:{0}
    ", this.Price1);
                stringBuilder.AppendFormat("          ************************
    ");
                System.Windows.Forms.MessageBox.Show(stringBuilder.ToString());
            }
        }

    电影类:

    public class Movies
        {
            //电影名
            private string moviesname;
            public string Moviesname
            {
                get { return moviesname; }
                set { moviesname = value; }
            }
    
            //海报名
            private string poster;
            public string Poster
            {
                get { return poster; }
                set { poster = value; }
            }
    
            //导演名
            private string director;
            public string Director
            {
                get { return director; }
                set { director = value; }
            }
    
            //主演
            private string actor;
            public string Actor
            {
                get { return actor; }
                set { actor = value; }
            }
    
            //电影类型
            private MovieType movietype;
            public MovieType Movietype
            {
                get { return movietype; }
                set { movietype = value; }
            }
    
            //定价
            private double price;
            public double Price
            {
                get { return price; }
                set { price = value; }
            }
    
            public Movies() 
            {
            }
            public Movies(string moviename,string poster,string director,string actor,MovieType movietype,double price)
            {
                this.Actor = actor;
                this.Director = director;
                this.Moviesname = moviename;
                this.Movietype = movietype;
                this.Poster = poster;
                this.Price = price;         
            }
        }

    电影类型:

    public enum  MovieType
        {
            Comedy,//喜剧
            War,//战争
            Romance,//角色
            Action,//动作
            Cartoon,//动画
            Thriller,//惊悚
            Adventure,//冒险
            Love//爱情
        }

    放映计划类:

     public class Schedule
        {
            //放映场次集合
            public Dictionary<string,ScheduleItem> Items { get; set; }
    
            public Schedule() { }
            public Schedule(Dictionary<string, ScheduleItem> items)
            {
                this.Items = items;
            }
    
            //xml读取
            public void LoadItems()
            {
                XmlDocument xml = new XmlDocument();
                xml.Load("影院售票/ShowList.xml");
                XmlElement xmlelement = xml.DocumentElement;         
                foreach (XmlNode item in xmlelement.ChildNodes)
                {
                    foreach (XmlNode item1 in item.ChildNodes)
                    {
                        if (item1.Name == "Schedule")
                        {
                            foreach (XmlNode item2 in item1.ChildNodes)
                            {
                                Movies movie =
                                new Movies(item["Name"].InnerText, item["Poster"].InnerText, item["Director"].InnerText, item["Actor"].InnerText, (MovieType)Enum.Parse(typeof(MovieType), item["Type"].InnerText), Convert.ToDouble(item["Price"].InnerText));
                                ScheduleItem scheduleItem = new ScheduleItem(item2.InnerText, movie);
                                Items.Add(scheduleItem.Time, scheduleItem);
                            }
                        }
                    }
                }     

    放映场次集合:

        public class ScheduleItem
        {
            //放映时间
            private string time;
            public string Time
            {
                get { return time; }
                set { time = value; }
            }
    
            //电影属性
            private Movies movie;
            public Movies Movie
            {
                get { return movie; }
                set { movie = value; }
            }
    
            public ScheduleItem() { }
            public ScheduleItem(string time,Movies movie) 
            {
                this.Movie = movie;
                this.Time = time;
            }
        }

    保存座位信息:

     public class Seat
        {
            //座位号
            private string seatnum;
            public string Seatnum
            {
                get { return seatnum; }
                set { seatnum = value; }
            }
    
            //座位颜色
            private Color color;
            public Color Color
            {
                get { return color; }
                set { color = value; }
            }
    
            public Seat() { }
            public Seat(string seatnum,Color color) 
            {
                this.Color = color;
                this.Seatnum = seatnum;
            }
        }

    学生票类继承父类Ticket

    public class StudentTicket:Ticket
        {
            public StudentTicket() 
            {
            }
            public StudentTicket(double price, ScheduleItem scheduleItem, Seat seat):base(price,scheduleItem,seat)
            {
                
            }
    
            //计算票价信息
            public override double CalcPrice()
            {
                return Price1 * 0.7;
            }
    
            //打印票价信息
              public override void Print()
            {
                StringBuilder stringBuilder = new StringBuilder("************************
    ");
                stringBuilder.AppendLine("        青鸟影视(学生)");
                stringBuilder.AppendLine("------------------------");
                stringBuilder.AppendFormat("      电影名:{0}
    ", this.ScheduleItem.Movie.Moviesname);
                stringBuilder.AppendFormat("          时间:{0}
    ", this.ScheduleItem.Time);
                stringBuilder.AppendFormat("          座位号:{0}
    ", this.Seat.Seatnum);
                stringBuilder.AppendFormat("             价格:{0}
    ", this.Price1);
                stringBuilder.AppendFormat("************************
    ");
                System.Windows.Forms.MessageBox.Show(stringBuilder.ToString());
            }
    
            //显示票价信息
            public override void Show()
            {
                StringBuilder stringBuilder = new StringBuilder("************抱歉,已售出************
    ");
                stringBuilder.AppendLine("                 青鸟影视(学生)");
                stringBuilder.AppendLine("          ------------------------");
                stringBuilder.AppendFormat("                电影名:{0}
    ", this.ScheduleItem.Movie.Moviesname);
                stringBuilder.AppendFormat("                      时间:{0}
    ", this.ScheduleItem.Time);
                stringBuilder.AppendFormat("                     座位号:{0}
    ", this.Seat.Seatnum);
                stringBuilder.AppendFormat("                        价格:{0}
    ", this.Price1);
                stringBuilder.AppendFormat("          ************************
    ");
                System.Windows.Forms.MessageBox.Show(stringBuilder.ToString());
            }
        }

    电影票父类:

     public class Ticket
        {
            //价格
            private double price;
            public double Price1
            {
                get { return price; }
                set { price = value; }
            }
    
            //放映场次
            private ScheduleItem scheduleItem;
            public ScheduleItem ScheduleItem
            {
                get { return scheduleItem; }
                set { scheduleItem = value; }
            }
    
            //座位
            private Seat seat;
            public Seat Seat
            {
                get { return seat; }
                set { seat = value; }
            }
    
            public Ticket() 
            {
            }
            public Ticket(double price, ScheduleItem scheduleItem, Seat seat)
            {
                this.Price1 = price;
                this.ScheduleItem = scheduleItem;
                this.Seat = seat;
            }
            //计算票价信息
            public virtual double CalcPrice() 
            {
                return price; 
            }
    
            //打印票价信息
            public virtual void Print()
            {
                StringBuilder stringBuilder = new StringBuilder("************************
    ");
                stringBuilder.AppendLine("             青鸟影视");
                stringBuilder.AppendLine("------------------------");
                stringBuilder.AppendFormat("      电影名:{0}
    ",scheduleItem.Movie.Moviesname);
                stringBuilder.AppendFormat("          时间:{0}
    ",scheduleItem.Time);
                stringBuilder.AppendFormat("         座位号:{0}
    ", seat.Seatnum);
                stringBuilder.AppendFormat("           价格:{0}
    ",price);
                stringBuilder.AppendFormat("************************
    ");
                System.Windows.Forms.MessageBox.Show(stringBuilder.ToString());
            }
    
            //显示票价信息
            public virtual void Show()
            {
                StringBuilder stringBuilder = new StringBuilder("***********抱歉,已售出*************
    ");
                stringBuilder.AppendLine("                     青鸟影视");
                stringBuilder.AppendLine("         ------------------------");
                stringBuilder.AppendFormat("              电影名:{0}
    ", scheduleItem.Movie.Moviesname);
                stringBuilder.AppendFormat("                  时间:{0}
    ", scheduleItem.Time);
                stringBuilder.AppendFormat("                 座位号:{0}
    ", seat.Seatnum);
                stringBuilder.AppendFormat("                   价格:{0}
    ", price);
                stringBuilder.AppendFormat("         ************************
    ");
                System.Windows.Forms.MessageBox.Show(stringBuilder.ToString());
            }
        }

    工具类用来判断票的类型:

     public class TicketUtil
        {
            //创建电影票
           public void  GreateTicket(ScheduleItem scheduleItem,Seat seat,double money,string type )
           {
    
           }

    影院售票系统XML文件:

    <ShowList>
      <Movie>
        <Name>不二神探</Name>
        <Poster>影院售票/不二神探.png</Poster>
        <Director>王子鸣</Director>
        <Actor>李连杰、文章、陈妍希</Actor>
        <Type>Action</Type>
        <Price>60</Price>
        <Schedule>
          <Item>9:00</Item>
          <Item>13:00</Item>
        </Schedule>
      </Movie>
      <Movie>
        <Name>西游降魔篇</Name>
        <Poster>影院售票/西游降魔篇.png</Poster>
        <Director>周星驰、郭子键</Director>
        <Actor>罗志祥、文章、舒淇</Actor>
        <Type>Comedy</Type>
        <Price>120</Price>
        <Schedule>
          <Item>11:00</Item>
          <Item>15:00</Item>
          <Item>19:00</Item>
        </Schedule>
      </Movie>
      <Movie>
        <Name>中国合伙人</Name>
        <Poster>影院售票/中国合伙人.png</Poster>
        <Director>陈可辛</Director>
        <Actor>黄晓明、邓超、大为、杜鹃</Actor>
        <Type>Love</Type>
        <Price>100</Price>
        <Schedule>
          <Item>21:00</Item>
          <Item>23:00</Item> 
        </Schedule>
      </Movie>
      <Movie>
        <Name>钢铁侠3</Name>
        <Poster>影院售票/钢铁侠3.png</Poster>
        <Director>沙恩·布莱克 </Director>
        <Actor>小罗伯·特唐尼、格温妮斯·帕特洛、盖皮尔斯、本金斯利</Actor>
        <Type>Romance</Type>
        <Price>150</Price>
        <Schedule>
          <Item>17:30</Item>
        </Schedule>
      </Movie>
    </ShowList>
  • 相关阅读:
    泡泡H5这封企业剪彩活动邀请函好像挺专业!
    教你 Shiro + SpringBoot 整合 JWT
    Thymeleaf 获取后端Model中的数据
    SpringBoot 之 普通类获取Spring容器中的bean ,
    如何用JS判断网页中某个id的网页元素是否存在(两种写法 jQuery写法和原始写法:
    前台请求不带cookie的问题解决方案大汇总
    js访问函数内部的变量(三种方法)
    源码分析:若依用户 user_id查询返回除了用户表,为何还带有部门dept和角色role表呢
    关于若依前端分页首次使用BootstrapPager 即bootstrap扩展插件
    关于若依需要验证码,PostMan是如何登陆流程
  • 原文地址:https://www.cnblogs.com/864466244qq/p/8370760.html
Copyright © 2011-2022 走看看