青鸟影院售票系统


using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Day_影院售票系统
{
    static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
}


using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Day_影院售票系统
{
    /// <summary>
    /// 影院类
    /// </summary>
    public class Cinema
    {
        public static Dictionary<string, Seat> Seats =new Dictionary<string, Seat>();
        public static Schedule Schedule = new Schedule();
        public static List<Ticket> SoldTickets = new List<Ticket>();

        public void Save()
        {

            FileStream fs = new FileStream("soldTickets.txt", FileMode.OpenOrCreate);
            StreamWriter writer = new StreamWriter(fs, Encoding.Default);
            for (int index = 0; index < SoldTickets.Count; index++)
            {
                Ticket ticket = SoldTickets[index];
                string info = "|" + ticket.ScheduleItem.Movie.MovieName + "|" + ticket.ScheduleItem.Movie.Poster + "|" +
                              ticket.ScheduleItem.Movie.Director + "|" + ticket.ScheduleItem.Movie.Actor + "|" +
                              ticket.ScheduleItem.Movie.MovieType.ToString() + "|" +
                              ticket.ScheduleItem.Movie.Price + "|" + ticket.ScheduleItem.Time + "|" +
                              ticket.Seat.SeatNum + "|" + ticket.Seat.Color + "|" + ticket.Price + "|";
                if (ticket is FreeTicket)
                {
                    string customerName = ((FreeTicket) ticket).CustomerName;
                    writer.WriteLine("free" + info + customerName);
                }
                else if (ticket is StudentTicket)
                {

                    writer.WriteLine("student" + info + "");
                }
                else
                {
                    writer.WriteLine("" + info + "");
                }
            }
            writer.WriteLine("The End");
            writer.Close();
            fs.Close();
        }



        public void Load()
        {
            try
            {
                StreamReader reader = new StreamReader("soldTickets.txt", Encoding.Default);
                string line = reader.ReadLine();

                string[] propertyValues;
                Ticket ticket = null;

                while (line.Trim() != "The End")
                {
                    SoldTickets.Add(ticket);
                    line = reader.ReadLine();
                }
                reader.Close();

            }
            catch (Exception ex)
            {

                Console.WriteLine("有错误:" + ex.Message);
                SoldTickets = new List<Ticket>();
            }
        }
    }
}
        



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;

namespace Day_影院售票系统
{
    /// <summary>
    /// 赠票子类
    /// </summary>
   public class FreeTicket:Ticket
    {
        public FreeTicket(ScheduleItem sch, Seat seat, string name)
            : base(sch, seat)
        {
            this.Seat = seat;
            this.CustomerName = name;
            this.ScheduleItem = sch;
        }

        public string CustomerName { get; set; }
        public override void CalcPrice()
        {
            this.Price = 0;
        }
        public override void Print()
        {
            string info = string.Format("************************************************\n\t青鸟影院(赠票)\n------------------------------------------------\n电影名:\t{0}\n时间:\t{1}\n座位号:\t{2}\n姓名:\t{3}\n************************************************", this.ScheduleItem.Movie.MovieName, this.ScheduleItem.Time, this.Seat.SeatNum, this.CustomerName);
            MessageBox.Show(info);
            //存到文件中 
            string fileName = this.ScheduleItem.Time.Replace(":", "-") + " " + this.Seat.SeatNum + ".txt";
            FileStream fs = new FileStream(fileName, FileMode.Create);
            StreamWriter sw = new StreamWriter(fs);
            sw.Write(info);
            sw.Close();
            fs.Close();
        }
        public override void Show()
        {
            MessageBox.Show("已售出!\n赠票!"); ;
        }
    }
}


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Day_影院售票系统
{
    /// <summary>
    /// 电影类
    /// </summary>
  public  class Movie
    {
        public string MovieName;//电影名
        public string Poster { get; set; }//海报图片名
        public string Director { get; set; }//导演名
        public string Actor { get; set; }//主演
        public MovieType MovieType { get; set; }//电影类型
        public int  Price { get; set; }//定价
    }
}


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Day_影院售票系统
{
    public enum MovieType
    {
        爱情片 = 0,//爱情片
        战争片 = 1,//战争片
        浪漫电影 = 2,//浪漫电影
        动作片 = 3,//动作片
        卡通片 = 4,//卡通片
        惊悚片 = 5,// 惊悚片
        冒险片 = 6//冒险片
    }
}


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using  System.Xml;

namespace Day_影院售票系统
{
    /// <summary>
    /// 放映计划类
    /// </summary>
   public class Schedule
    {
        public Dictionary<string, ScheduleItem> Items =new Dictionary<string, ScheduleItem>();

        public void LoadItems()
        {
            Items.Clear();
            XmlDocument xml = new XmlDocument();
            xml.Load("ShowList.xml");
            XmlElement root = xml.DocumentElement;
            foreach (XmlNode item in root.ChildNodes)
            {
                Movie movie = new Movie();
                movie.MovieName = item["Name"].InnerText;
                movie.Poster = item["Poster"].InnerText;
                movie.Director = item["Director"].InnerText;
                movie.Actor = item["Actor"].InnerText;
                switch (item["Type"].InnerText)
                {
                    case "Action":
                        movie.MovieType = MovieType.爱情片;
                        break;
                    case "War":
                        movie.MovieType = MovieType.战争片;
                        break;
                    case "Comedy":
                        movie.MovieType = MovieType.浪漫电影;
                        break;
                }
                movie.Price = Convert.ToInt32(item["Price"].InnerText);
                if (item["Schedule"].HasChildNodes)
                {
                    foreach (XmlNode item2 in item["Schedule"].ChildNodes)
                    {
                        ScheduleItem schItem = new ScheduleItem();
                        schItem.Time = item2.InnerText;
                        schItem.Movie = movie;
                        Items.Add(schItem.Time, schItem);
                    }
                }

            }


        }

    }
}


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Day_影院售票系统
{
    /// <summary>
    /// 影院每天放映计划的场次,保存每场电影的信息
    /// </summary>
   public class ScheduleItem
    {
        public string Time { get; set; }//放映时间属性
        public Movie Movie{ get; set; }//本场所放映电影属性
    }
}


using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Day_影院售票系统
{
   public class Seat
    {
       public Seat(string seatnum,Color s)
       {
           this.SeatNum = seatnum;
           this.Color = s;
       }

       public string SeatNum { get; set; }//座位号
       public Color Color { get; set; }//座位卖出状态颜色
    }
}


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;

namespace Day_影院售票系统
{
    /// <summary>
    /// 学生票子类
    /// </summary>
    public class StudentTicket:Ticket
    {
        public StudentTicket(ScheduleItem sch, Seat seat, int discount)
            : base(sch, seat)
        {
            this.Discount = discount;
        }
        private int _discount;
        /// <summary> 
        /// 学生票的折扣 
        /// </summary> 
        public int Discount
        {
            get { return _discount; }
            set { _discount = value; }
        }
        public override void CalcPrice()
        {
            this.Price = this.ScheduleItem.Movie.Price * Discount / 10;
        }
        public override void Print()
        {
            string info = string.Format("************************************************\n\t青鸟影院(学生)\n------------------------------------------------\n电影名:\t{0}\n时间:\t{1}\n座位号:\t{2}\n价格:\t{3}\n************************************************", this.ScheduleItem.Movie.MovieName, this.ScheduleItem.Time, this.Seat.SeatNum, this.Price);
            MessageBox.Show(info);
            //存到文件中 
            string fileName = this.ScheduleItem.Time.Replace(":", "-") + " " + this.Seat.SeatNum + ".txt";
            FileStream fs = new FileStream(fileName, FileMode.Create);
            StreamWriter sw = new StreamWriter(fs);
            sw.Write(info);
            sw.Close();
            fs.Close();
        }
        public override void Show()
        {
            string info = string.Format("已售出!\n{0}折学生票!", this.Discount);
        }
    }
}



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;

namespace Day_影院售票系统
{
    /// <summary>
    /// 
    /// </summary>
    public class Ticket
    {

        //放映场次
      public   ScheduleItem ScheduleItem=new ScheduleItem();
        //所属座位对象
        public Seat Seat { get; set; }
        //票价
        private int _price;
        public int Price
        {
            get { return _price; }
            set { _price = value; }
        }

       

        //构造函数
        public Ticket() { }
        public Ticket(ScheduleItem sch, Seat seat)
        {
            this.ScheduleItem = sch;
            this.Seat = seat;
        }
        //计算票价
        public virtual void CalcPrice()
        {
            this.Price = ScheduleItem.Movie.Price;
        }

        //打印售票信息
        public virtual void Print()
        {
            string info = string.Format("************************************************\n\t青鸟影院(赠票)\n------------------------------------------------\n电影名:\t{0}\n时间:\t{1}\n座位号:\t{2}\n姓名:\t{3}\n************************************************", this.ScheduleItem.Movie.MovieName, this.ScheduleItem.Time, this.Seat.SeatNum, this.ScheduleItem);
            MessageBox.Show(info);
            string fileName = this.ScheduleItem.Time.Replace(":", "-") + " " + this.Seat.SeatNum + ".txt";
            Stream fs = new FileStream(fileName, FileMode.Create);
            StreamWriter sw = new StreamWriter(fs);
            sw.Write(info);
            sw.Close();
            fs.Close();
        }

        //显示当前售出票信息
        public virtual void Show()
        {
            MessageBox.Show("已售出!\n赠票!");
        }

    }
}


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Day_影院售票系统
{
    class TicketUtil
    {
        public void CreateTicket() { }

        public static Ticket CreateTicket(ScheduleItem sch, Seat seat, int discount, string customerName, string type) 

        {
            Ticket newTicket = null;
            switch (type)
            {
                case "student":
                    newTicket = new StudentTicket(sch, seat, discount);
                    break;
                case "free":
                    newTicket = new FreeTicket(sch, seat, customerName);
                    break;
                default:
                    newTicket = new Ticket(sch, seat);
                    break;
            }
            return newTicket; 

        }
    }
}


  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值