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