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)》持續完成對發賣信息的當地保留、和每次翻開時載入前次的保留的發賣信息,並對全部項目做全體總結。
願望小編整頓的這一系列文章對年夜家的進修有所贊助,願望年夜家可以愛好。