亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#影院售票系統畢業設計(1)

2020-01-24 01:24:12
字體:
來源:轉載
供稿:網友

 C#學習經歷從基本語法結構到窗體再到面向對象終于走完了.NET初級程序員的道路,用了大概一天半的時間做完這個練手項目《影院售票系統》,先上效果截圖一張

抽出時間做些這個對目前的我來說算不小的項目。

用到的知識點有:面向對象思想、TreeView、XML讀取、File文件流、泛型集合,這里面對我來說難度最大的是面向對象與泛型集合的結合,看來學習一門編程語言的難點還是在設計思想上。

再來介紹一下項目需求:在影片列表中選擇某個時段的一場電影,單擊座位選擇一個種類的電影票,并創建電影,計算價格并打印影票信息,然后該座位被置為紅色表示已經售出。

影院每天更新放映列表,系統支持實時查看,包括電影放映場次時間、電影概況。

影院提供三類影票:普通票、贈票和學生票(贈票免費;學生票有折扣)

允許用戶查看某場次座位的售出情況

支持購票,并允許用戶選座

用戶可以選擇場次、影票類型及空閑座位進行購票,并打印電影票

系統可以保存銷售情況,并允許對其進行恢復

一、問題分析

1.系統開發步驟

(1)明確需求

(2)設計類

(3)創建項目

(4)確定編碼順序

      1.主窗體

      2.查看新放映列表

      3.查看電影介紹

      4.查看影票票價

     5.查看放映廳座位

     6.購票和打印電影票

     7.繼續購票

(5)測試

二、類的設計

 獻上這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.Replace(":", "-")+" "+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.Replace(":", "-") + " " + 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.Replace(":", "-") + " " + 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; } }}

下篇文章將繼續更新,內容有電影院座位的動態繪制、電影信息綁定到窗體中展現出來,希望大家不要走開,有什么地方需要改進的歡迎大家指出,共同探討進步。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
九九视频这里只有精品| 另类美女黄大片| 欧美日韩xxxxx| 日韩少妇与小伙激情| 国产在线观看一区二区三区| 色午夜这里只有精品| 日本伊人精品一区二区三区介绍| 日韩av在线资源| 色综合久久88| 欧美一级淫片丝袜脚交| 国产亚洲一区二区在线| 热re99久久精品国产66热| 成人国产亚洲精品a区天堂华泰| 另类少妇人与禽zozz0性伦| 日韩激情视频在线播放| 亚洲欧洲日产国码av系列天堂| 日韩成人在线视频网站| 亚洲天堂久久av| 成人免费观看49www在线观看| 色婷婷av一区二区三区在线观看| 亚洲国产美女精品久久久久∴| 国产成人高潮免费观看精品| 精品偷拍各种wc美女嘘嘘| 亚洲天天在线日亚洲洲精| 欧美极品欧美精品欧美视频| 性夜试看影院91社区| 性欧美视频videos6一9| 国产+人+亚洲| 亚洲r级在线观看| 亚洲欧美www| 国产日韩欧美黄色| 久久九九亚洲综合| 久久成人精品电影| 92国产精品久久久久首页| 欧美乱大交xxxxx另类电影| 欧美xxxx14xxxxx性爽| 精品av在线播放| 国产成人精品优优av| 中文字幕精品网| 久久99热这里只有精品国产| 欧美激情a在线| 91在线网站视频| 26uuu日韩精品一区二区| 亚洲国产成人久久综合一区| 欧美大奶子在线| 欧美黄色www| 久久国产精品久久国产精品| 久久免费视频观看| 国产精品久久久久久久久影视| 57pao成人国产永久免费| 欧美性精品220| 北条麻妃一区二区在线观看| 国产性色av一区二区| 久久久久久久久久av| 亚洲欧美资源在线| 亚洲欧洲自拍偷拍| 国产亚洲精品一区二555| 日韩精品视频在线观看网址| 久久成人这里只有精品| 国产精品久久久久高潮| 亚洲一区二区久久久久久久| 精品性高朝久久久久久久| 精品视频一区在线视频| 国产精品激情av电影在线观看| 国产丝袜精品视频| 在线观看国产成人av片| 欧美日本中文字幕| 国产精品99久久久久久人| 热久久免费视频精品| 久99九色视频在线观看| 亚洲视频免费一区| 日韩中文在线视频| 欧美精品一区二区三区国产精品| 日韩精品一区二区三区第95| 欧美日本国产在线| 欧美在线视频网站| 成人在线中文字幕| 欧美国产日韩免费| 日韩精品小视频| 日韩中文字幕在线免费观看| 一区二区三区久久精品| 国产一区二区丝袜高跟鞋图片| 国产精品久久久亚洲| 日韩美女视频中文字幕| 91精品国产高清| 国产精品电影在线观看| 午夜精品福利视频| 亚洲影视中文字幕| 亚洲欧美在线一区| 久久精品久久久久电影| 国产丝袜精品第一页| 日韩av在线免费观看| 日本久久久久久久久久久| 97欧美精品一区二区三区| 欧美激情久久久| 色多多国产成人永久免费网站| 色噜噜亚洲精品中文字幕| 日韩成人在线播放| 欧美黑人性猛交| 成人黄色中文字幕| 国产精品jizz在线观看麻豆| 精品国产老师黑色丝袜高跟鞋| 亚洲一区亚洲二区亚洲三区| 欧美猛少妇色xxxxx| 97色在线观看| 久久99精品国产99久久6尤物| 亚洲成人在线网| 国产精品自拍偷拍视频| 91高清免费在线观看| 亚洲第一页中文字幕| 久久伊人色综合| 国产成人精品999| 国产成人涩涩涩视频在线观看| 欧美日韩午夜激情| 成人激情视频小说免费下载| 亚洲va码欧洲m码| 久久这里只有精品99| 久久99亚洲精品| 日av在线播放中文不卡| 欧美成人精品影院| 一区二区三区回区在观看免费视频| 久久精品国产久精国产思思| 欧美色videos| 亚洲精品成人久久电影| 日韩欧美亚洲成人| 91国产在线精品| 91精品国产91久久久久福利| 日本19禁啪啪免费观看www| 亚洲高清色综合| 激情久久av一区av二区av三区| 欧美性jizz18性欧美| 亚洲大胆人体av| 一区二区三区无码高清视频| 亚洲精品国产免费| 国产免费一区二区三区香蕉精| 色视频www在线播放国产成人| 亚洲跨种族黑人xxx| 欧美中文在线免费| 欧美精品性视频| 亚洲欧美中文日韩v在线观看| 久久久久久伊人| 欧美精品久久久久久久久久| 黄色精品在线看| 国产美女精品免费电影| 97视频在线观看播放| 韩国三级日本三级少妇99| 国产深夜精品福利| 国产精品www| 成人有码视频在线播放| 久久影院模特热| 2019精品视频| 亚洲成人精品久久久| 日韩精品中文字幕在线| 日韩av最新在线观看| 日韩成人av网址| 91亚洲精品一区二区| 亚洲国产精品久久久| 欧美日韩中文在线观看| 国产精品一区二区三区毛片淫片| 亚洲性线免费观看视频成熟| 在线亚洲国产精品网| 国产精品久久久久久影视| 91免费看视频.| 日韩成人在线视频|