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