青鸟影院售票系统

来源:互联网 发布:网络优化工程师怎么样 编辑:程序博客网 时间:2024/04/28 12:55


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;         }    }}


1 0