国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

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

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

前一篇文章《C#影院售票系統畢業設計(2)》中總結了動態繪制控件、票類型的切換以及數據在窗體中的展現。今天繼續總結!

本文總結項目中最核心的部分--購票、座位顏色狀態的改變及場次座位狀態的顯示

分析:

1.在選中時間(場次)后更新出座位狀態(label實現),售出的為紅色,未售出的顯示為黃色。

2.已售出提示已經售出并不進行任何操作,未售出的詢問是否購買。

3.根據選擇的是普通票、贈票、還是學生票分別創建不同的票對象

  如果選擇贈票則需要檢測贈送者否填寫

  如果選擇的是學生票需要檢測折扣是否選擇

4.獲取選中座位的座位號,調用工具類的CreateTicket()方法創建對應選中類型的票,普通票則直接使用Ticket類創建

5.用戶選擇購買后將座位集合的顏色改成紅色;重新使用票類的計算價格方法;將售出的票加入到Cinema類中的SoldTickets集合中;更新座位顏色狀態,上代碼詳解

try {  //獲取當前被點擊座位標簽的座位號(Text屬性)  string seatNum = ((Label)sender).Text.ToString();  //贈送者名字  string customerName = this.txtGiver.Text.ToString();  //折扣  int discount = 0;  //票的類型  string type = "";  //如果學生票是選中的  if (this.rdoStuTicket.Checked)  {  type = "StudentTicket";  if (this.cboDiscount.Text == null)  {  MessageBox.Show("請輸入折扣數!", "提示");  return;  }  else  {  discount = int.Parse(this.cboDiscount.Text);  }  }  //如果贈票是選中的  else if (this.rdoGiveTicket.Checked)  {  if (string.IsNullOrEmpty(this.txtGiver.Text))  {  MessageBox.Show("請輸入贈票者姓名!", "提示");  return;  }  type = "FreeTicket";  }  //創建票 使用工具類的靜態方法  Ticket newTicket = TicketUtil.CreateTicket(cinema.Schedule.Items[key], cinema.Seats[seatNum], discount, customerName, type);  //如果當前座位的顏色是黃色-待售出  if (cinema.Seats[seatNum].Color == Color.Yellow)  {  //詢問  DialogResult result = MessageBox.Show("是否購買?", "提示", MessageBoxButtons.YesNo);  if (result == DialogResult.Yes)  {  //重新計算票價  newTicket.CalcPrice();  //將票加入到已經售出票的集合  cinema.SoldTickets.Add(newTicket);  //更新座位顏色狀態  UpdateSeat();  lblPreferentialPrice.Text = newTicket.Price.ToString();  newTicket.Print();  //使座位集合的顏色狀態改變  cinema.Seats[seatNum].Color = Color.Red;  }  }  //如果是已經售出的票  else  {  //顯示當前售票信息  foreach (Ticket ticket0 in cinema.SoldTickets)  {  //已售出票集合的座位號等于當前點擊座位號 并且 選中的時間等于售出票的場次的時間 并且 售出票的場次計劃中電影名字等于TreeView選中時間的父節點也就是電影名稱  if (ticket0.Seat.SeatNum == seatNum && ticket0.ScheduItem.Time == treeView1.SelectedNode.Text && ticket0.ScheduItem.Movie.MovieName == treeView1.SelectedNode.Parent.Text)  {  ticket0.Show();  }  }  }  } catch (Exception ex) {  MessageBox.Show("請先選擇場次!" + ex.Message); }

這里面需要調用座位顏色更新的一個方法UpdateSeat(),先將Seats集合和labels集合的顏色初始化,也就是重置顏色為黃色,再根據售出票集合的信息將售出座位的顏色置為紅色

 //重置labels集合label的顏色 foreach (string lkey in labels.Keys) {  labels[lkey].BackColor = Color.Yellow; } //重置座位集合顏色 foreach (string key in cinema.Seats.Keys) {  cinema.Seats[key].Color = Color.Yellow; } //遍歷售出票集合 foreach (Ticket ticket in cinema.SoldTickets) {  //如果場次一致,并且電影名字一致  if (ticket.ScheduItem.Time == this.treeView1.SelectedNode.Text && ticket.ScheduItem.Movie.MovieName == this.lblName.Text)  {  //重新更改顏色  labels[ticket.Seat.SeatNum].BackColor = Color.Red;  cinema.Seats[ticket.Seat.SeatNum].Color = Color.Red;  } }

這樣就實現了購買票后座位顏色狀態的改變。

然后再根據選中的TreeView的時間(場次)節點刷新每場的中已經售出的票。

就是之前第二篇的treeView1_AfterSelect這個事件,調用我們的UpdateSeat方法就行了,這樣每選擇一個場次就會更新一次座位售出情況。

以上就是本文的全部內容,最后一篇文章《C#影院售票系統畢業設計(4)》繼續實現對銷售信息的本地保存、以及每次打開時載入上次的保存的銷售信息,并對整個項目做整體總結

希望小編整理的這一系列文章對大家的學習有所幫助,希望大家可以喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 丹棱县| 永清县| 长宁区| 邻水| 新源县| 大余县| 阿巴嘎旗| 包头市| 宣化县| 疏附县| 平潭县| 鄂尔多斯市| 台湾省| 吴旗县| 蓬莱市| 延津县| 商洛市| 东光县| 安化县| 永福县| 团风县| 容城县| 漯河市| 遂川县| 本溪| 新乡县| 三亚市| 辽源市| 罗定市| 绥滨县| 宣城市| 连州市| 吉隆县| 古浪县| 福贡县| 章丘市| 温宿县| 石门县| 防城港市| 东宁县| 杭锦后旗|