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

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

編輯:C#入門知識

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


前一篇文章《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)》持續完成對發賣信息的當地保留、和每次翻開時載入前次的保留的發賣信息,並對全部項目做全體總結。

願望小編整頓的這一系列文章對年夜家的進修有所贊助,願望年夜家可以愛好。

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