程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#影院售票體系卒業設計(1)

C#影院售票體系卒業設計(1)

編輯:C#入門知識

C#影院售票體系卒業設計(1)。本站提示廣大學習愛好者:(C#影院售票體系卒業設計(1))文章只能為提供參考,不一定能成為您想要的結果。以下是C#影院售票體系卒業設計(1)正文


 C#進修閱歷從根本語法構造到窗體再到面向對象終究走完了.NET低級法式員的途徑,用了年夜概一天半的時光做完這個練手項目《影院售票體系》,先上後果截圖一張

抽出時光做些這個對今朝的我來講算不小的項目。

用到的常識點有:面向對象思惟、TreeView、XML讀取、File文件流、泛型聚集,這外面對我來講難度最年夜的是面向對象與泛型聚集的聯合,看來進修一門編程說話的難點照樣在設計思惟上。

再來引見一下項目需求:在影片列表當選擇某個時段的一場片子,單擊坐位選擇一個品種的片子票,並創立片子,盤算價錢並打印影票信息,然後該坐位被置為白色表現曾經售出。

影院天天更新放映列表,體系支撐及時檢查,包含片子放映場次時光、片子概略。

影院供給三類影票:通俗票、贈票和先生票(贈票收費;先生票有扣頭)

許可用戶檢查某場次坐位的售出情形

支撐購票,並許可用戶選座

用戶可以選擇場次、影票類型及余暇坐位停止購票,並打印片子票

體系可以保留發賣情形,並許可對其停止恢復

1、成績剖析

1.體系開辟步調

(1)明白需求

(2)設計類

(3)創立項目

(4)肯定編碼次序

      1.主窗體

      2.檢查新放映列表

      3.檢查片子引見

      4.檢查影票票價

     5.檢查放映廳坐位

     6.購票和打印片子票

     7.持續購票

(5)測試

2、類的設計

 獻上這9個類的代碼,依據依附編寫類的次序,不克不及完整依照下面次序

1.Seat:保留影院的坐位信息,重要屬性以下

坐位號(SeatNum):string類型

坐位賣出狀況色彩(Color):System.Drawing.Color類型

using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 using System.Drawing;
 
 namespace 影院售票體系
 {
 /// <summary>
 /// 保留影院的坐位信息
 /// </summary>
 public class Seat
 {
 public Seat() { }
 public Seat(string seatNum,Color color) 
 {
 this.SeatNum = seatNum;
 this.Color = color;
 }
 private string _seatNum;
 /// <summary>
 /// 坐位號
 /// </summary>
 public string SeatNum
 {
 get { return _seatNum; }
 set { _seatNum = value; }
 }
 private Color _color;
 /// <summary>
 /// 坐位賣出狀況色彩
 /// </summary>
 public Color Color
 {
 get { return _color; }
 set { _color = value; }
 }
 }
 }

2.Movie:片子類

片子名(MovieName):string類型

海報圖片途徑(Poster):string類型

導演名(Director):string類型

主演(Actor):string類型

片子類型(MovieType):MovieType自界說列舉類型

訂價(Price):int類型

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

 namespace 影院售票體系
 {
 /// <summary>
 /// 片子類
 /// </summary>
 public class Movie
 {
 private string _movieName;
 /// <summary>
 /// 片子名
 /// </summary>
 public string MovieName
 {
 get { return _movieName; }
 set { _movieName = value; }
 }
 private string _poster;
 /// <summary>
 /// 海報圖片名
 /// </summary>
 public string Poster
 {
 get { return _poster; }
 set { _poster = value; }
 }
 private string _director;
 /// <summary>
 /// 導演名
 /// </summary>
 public string Director
 {
 get { return _director; }
 set { _director = value; }
 }
 private string _actor;
 /// <summary>
 /// 主演
 /// </summary>
 public string Actor
 {
 get { return _actor; }
 set { _actor = value; }
 }
 
 private int _price;
 /// <summary>
 /// 訂價
 /// </summary>
 public int Price
 {
 get { return _price; }
 set { _price = value; }
 }
 /// <summary>
 /// 片子類型
 /// </summary>
 public MovieType MovieType { get; set; }
 }
 /// <summary>
 /// 片子類型,1悲劇2戰斗3戀愛
 /// </summary>
 public enum MovieType
 {
 /// <summary>
 /// 舉措片
 /// </summary>
 Action = 0,
 /// <summary>
 /// 戰斗片
 /// </summary>
 War = 1,
 /// <summary>
 /// 戀愛片
 /// </summary>
 Comedy = 2
 }
 }

3.Ticket:片子票父類,保留片子票信息

放映場次(ScheduleItem):ScheduleItem自界說類

所屬坐位對象(Seat):Seat自界說類型

票價(Price):int類型

盤算票價的虛辦法CalcPrice()

打印售票信息的虛辦法Print()

顯示以後售出票信息的虛辦法Show() 

 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 using System.Windows.Forms;
 using System.IO;
 
 namespace 影院售票體系
 {
 /// <summary>
 /// 片子票父類
 /// </summary>
 public class Ticket
 {
 public Ticket() { }
 public Ticket(ScheduleItem sch,Seat seat) 
 {
 this.ScheduItem = sch;
 this.Seat = seat;
 }
 private Seat _seat = new Seat();
 /// <summary>
 /// 所屬坐位
 /// </summary>
 public Seat Seat
 {
 get { return _seat; }
 set { _seat = value; }
 }
 
 private int _price;
 /// <summary>
 /// 票價
 /// </summary>
 public int Price
 {
 get { return _price; }
 set { _price = value; }
 }
 /// <summary>
 /// 放映場次
 /// </summary>
 public ScheduleItem ScheduItem { get; set; }
 /// <summary>
 /// 盤算票價
 /// </summary>
 public virtual void CalcPrice()
 {
 this.Price = ScheduItem.Movie.Price;
 }
 /// <summary>
 /// 打印售票信息
 /// </summary>
 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.ScheduItem.Movie.MovieName, this.ScheduItem.Time, this.Seat.SeatNum, this.Price);
 MessageBox.Show(info);
 //存到文件中
 string fileName = this.ScheduItem.Time.WordStr(":", "-")+" "+this.Seat.SeatNum+".txt";
 FileStream fs = new FileStream(fileName,FileMode.Create);
 StreamWriter sw = new StreamWriter(fs);
 sw.Write(info);
 sw.Close();
 fs.Close();
 }
 /// <summary>
 /// 顯示以後售票信息
 /// </summary>
 public virtual void Show()
 {
 string info = string.Format("已售出!\n通俗票!");
 MessageBox.Show(info);
 }
 }
 }

4.StudentTicket:先生票子類,繼續父類Ticket

先生票的扣頭(Discount):int類型

重寫父類盤算票價CalcPrice

重寫父類打印售票信息的Print()

重寫父類顯示以後出票信息的Show()辦法

 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 using System.Windows.Forms;
 using System.IO;
 namespace 影院售票體系
 {
 /// <summary>
 /// 先生票
 /// </summary>
 public class StudentTicket : Ticket
 {
 public StudentTicket() { }
 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; }
 }
 /// <summary>
 /// 盤算先生票價
 /// </summary>
 public override void CalcPrice()
 {
 this.Price =this.ScheduItem.Movie.Price* Discount / 10;
 }
 /// <summary>
 /// 打印先生票的售票信息
 /// </summary>
 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.ScheduItem.Movie.MovieName, this.ScheduItem.Time, this.Seat.SeatNum, this.Price);
 MessageBox.Show(info);
 //存到文件中
 string fileName = this.ScheduItem.Time.WordStr(":", "-") + " " + this.Seat.SeatNum + ".txt";
 FileStream fs = new FileStream(fileName, FileMode.Create);
 StreamWriter sw = new StreamWriter(fs);
 sw.Write(info);
 sw.Close();
 fs.Close();
 }
 /// <summary>
 /// 顯示以後售出票信息
 /// </summary>
 public override void Show()
 {
 string info = string.Format("已售出!\n{0}折先生票!",this.Discount);
 MessageBox.Show(info);
 }
 }
 }

5.FreeTicket:贈票子類,繼續父類Ticket

取得贈票者的名字屬性(CustomerName):string類型

重寫父類盤算票價CalcPrice()

重寫父類打印售票信息Print()

重寫父類顯示以後出票信息Show()

 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 using System.Windows.Forms;
 using System.IO;
 
 namespace 影院售票體系
 {
 /// <summary>
 /// 贈票
 /// </summary>
 public class FreeTicket:Ticket
 {
 public FreeTicket() { }
 public FreeTicket(ScheduleItem sch,Seat seat,string name) 
 {
 this.Seat = seat;
 this.CustomerName = name;
 this.ScheduItem = sch;
 }
 private string _customerName;
 /// <summary>
 /// 取得贈票者的名字
 /// </summary>
 public string CustomerName
 {
 get { return _customerName; }
 set { _customerName = value; }
 }
 /// <summary>
 /// 盤算票價
 /// </summary>
 public override void CalcPrice()
 {
 this.Price = 0;
 }
 /// <summary>
 /// 打印售票信息
 /// </summary>
 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.ScheduItem.Movie.MovieName, this.ScheduItem.Time, this.Seat.SeatNum, this.CustomerName);
 MessageBox.Show(info);
 //存到文件中
 string fileName = this.ScheduItem.Time.WordStr(":", "-") + " " + this.Seat.SeatNum + ".txt";
 FileStream fs = new FileStream(fileName, FileMode.Create);
 StreamWriter sw = new StreamWriter(fs);
 sw.Write(info);
 sw.Close();
 fs.Close();
 }
 /// <summary>
 /// 顯示以後售出票信息
 /// </summary>
 public override void Show()
 {
 MessageBox.Show("已售出!\n贈票!");
 }
 }
 }

6.ScheduleItem:影院天天籌劃放映籌劃的場次,保留每場片子的信息

放映時光屬性(Time):string類型

本場合放映片子屬性(Movie):Movie自界說類型

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
 namespace 影院售票體系
 {
 /// <summary>
 /// 影院天天籌劃放映的場次,保留每場片子的信息
 /// </summary>
 public class ScheduleItem
 {
 private string _time;
 /// <summary>
 /// 放映時光
 /// </summary>
 public string Time
 {
 get { return _time; }
 set { _time = value; }
 }
 private Movie _movie = new Movie();
 
 /// <summary>
 /// 本場放映的片子
 /// </summary>
 public Movie Movie
 {
 get { return _movie; }
 set { _movie = value; }
 }
 private List<Ticket> _soldTickets=new List<Ticket>();
 
 private Dictionary<string, Seat> _seats=new Dictionary<string,Seat>();
 /// <summary>
 /// 本場次的坐位狀況
 /// </summary>
 public Dictionary<string, Seat> Seats
 {
 get { return _seats; }
 set { _seats = value; }
 }
 }
 }

7.Schedule:放映籌劃類

放映場次屬性(Items):自界說泛型聚集Dictionary<string,ScheduleItem>

讀取XML文件獲得放映籌劃聚集的LoadItems()辦法

 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 using System.Xml;
 
namespace 影院售票體系
 {
 /// <summary>
 /// 放映籌劃類,保留影院當天的放映籌劃聚集
 /// </summary>
 public class Schedule
 {
 /// <summary>
 /// 放映場次
 /// </summary>
 public Dictionary<string, ScheduleItem> Items = new Dictionary<string, ScheduleItem>();
 /// <summary>
 /// 讀取XML文件獲得放映籌劃聚集
 /// </summary>
 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.Action;
  break;
  case "War":
  movie.MovieType = MovieType.War;
  break;
  case "Comedy":
  movie.MovieType = MovieType.Comedy;
  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);
  }
  }
 
 }

 }
 }
 }

8.Cinema:影院類,保留放映籌劃和坐位類

坐位聚集屬性(Seat):自界說泛型聚集Dictionary<string,Seat>

放映籌劃Schedule:Schedule自界說類型

已售出片子票的聚集(SoldTicket):自界說泛型聚集List<Ticket>

保留和讀取售票情形的Save()和Load()辦法

 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 
 namespace 影院售票體系
 {
 /// <summary>
 /// 影院類
 /// </summary>
 public class Cinema
 {
 private Dictionary<string, Seat> _seats = new Dictionary<string, Seat>();
 /// <summary>
 /// 坐位聚集
 /// </summary>
 public Dictionary<string, Seat> Seats
 {
 get { return _seats; }
 set { _seats = value; }
 }
 private Schedule _schedule = new Schedule();
 /// <summary>
 /// 放映籌劃
 /// </summary>
 public Schedule Schedule
 {
 get { return _schedule; }
 set { _schedule = value; }
 }
 private List<Ticket> _soldTickets=new List<Ticket>();
 /// <summary>
 /// 曾經售出的票
 /// </summary>
 public List<Ticket> SoldTickets
 {
 get { return _soldTickets; }
 set { _soldTickets = value; }
 }
 /// <summary>
 /// 保留售票信息到文件中
 /// </summary>
 public void Save() 
 {
 //Save和Load的代碼在窗體的代碼完成了
 }
 /// <summary>
 /// 從文件中讀取售票信息
 /// </summary>
 public void Load() { }
 }
 }

9.對象類

 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 
 namespace 影院售票體系
 {
 /// <summary>
 /// 對象類
 /// </summary>
 public class TicketUtil
 {
 /// <summary>
 /// 創立片子票
 /// </summary>
 /// <returns></returns>
 public static Ticket CreateTicket(ScheduleItem sch,Seat seat,int discount,string customerName,string type)
 {
 Ticket ticket=null;
 switch (type)
 {
  case "StudentTicket":
  ticket = new StudentTicket(sch,seat,discount);
  break;
  case "FreeTicket":
  ticket = new FreeTicket(sch,seat,customerName);
  break;
  default:
  ticket = new Ticket(sch,seat);
  break;
 }
 return ticket;
 }
 }
}

下篇文章將持續更新,內容有片子院坐位的靜態繪制、片子信息綁定到窗體中展示出來,願望年夜家不要走開,有甚麼處所須要改良的迎接年夜家指出,配合商量提高。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved