C#影院售票體系卒業設計(2)。本站提示廣大學習愛好者:(C#影院售票體系卒業設計(2))文章只能為提供參考,不一定能成為您想要的結果。以下是C#影院售票體系卒業設計(2)正文
本文持續更新,靜態繪制控件、票類型的切換和數據在窗體中的展示。
先從簡略的開端,票類型的切換。

剖析:
1.當點擊通俗票時 先生扣頭和贈予者是禁用的
2.點擊贈票時 啟用贈予者,禁用先生扣頭
3.點擊先生票時 啟用先生扣頭,禁用贈予者
先生扣頭ComboBox下拉框可以選擇扣頭,依據扣頭及時扣頭盤算價錢到優惠價上。
須要留意的是:
假如沒有選擇ListView的片子場次(也就是時光),選擇贈票和先生票是沒成心義的乃至會激發先生票及時盤算時的異常,所以我們要斷定
if (this.treeView1.SelectedNode == null) return;
是以我們即可以設計三個RadioButton的點擊事宜代碼
private void rdoGiveTicket_CheckedChanged(object sender, EventArgs e)
{
if (this.treeView1.SelectedNode == null) return;
this.lblOriginalPrice.Text = "0";
this.cboDiscount.Enabled = false;
this.txtGiver.Enabled = true;
}
private void rdoStuTicket_CheckedChanged(object sender, EventArgs e)
{
if (this.treeView1.SelectedNode == null) return;
this.cboDiscount.Enabled = true;
this.txtGiver.Enabled = false;
}
private void rdoNormal_CheckedChanged(object sender, EventArgs e)
{
this.cboDiscount.Enabled = false;
this.txtGiver.Enabled = false;
if (!GetKey()) return;
//更新原價,由於點擊贈票市價格為0了
this.lblOriginalPrice.Text = cinema.Schedule.Items[key].Movie.Price.ToString();
}
為了雅觀也能夠挪用ClearContent()辦法清空一下能夠殘留的信息
private void ClearContent()
{
//點擊時光(場次)時切換回通俗票 並清空能夠殘留的信息
txtGiver.Text = "";
cboDiscount.Text = "";
}
因為通俗票切換回來的時刻須要刷新價錢,所以要獲得價錢;cinema片子院對象是一個全局對象(可以看上一篇的類),key是一個全局的變量,存儲的是選中場次的時光,用來做放映場次的Key。GetKey()辦法是獲得選中場次的時光並前往布爾值,看代碼實例
public bool GetKey()
{
//選中節點
TreeNode node = this.treeView1.SelectedNode;
//假如沒有選擇節點=》停止
if (node == null) return false;
//假如選中節點不是場次(時光)=》停止
if (node.Level != 1) return false;
//獲得時光作為key
key = node.Text;
if (key != "" && key != null) return true;
return false;
}
然後就是將XML中的數據綁定TreeView並在選擇TreeView的時光節點是將影片信息展示在窗體中
之前在搭建類的時刻用到 Schedule 放映籌劃類有一個辦法LoadItems()就是將XML信息解析並添加到放映籌劃聚集中
提掏出InitTreeView()便利更新時挪用cinema.Schedule.LoadItems();放到窗體的加載事宜或初始化中
private void InitTreeView()
{
this.treeView1.Nodes.Clear();
string movieName = "";
TreeNode tn = null;
foreach (ScheduleItem item in cinema.Schedule.Items.Values)
{
//假如不存在此片子節點,創立片子節點
if (item.Movie.MovieName != movieName)
{
tn = new TreeNode(item.Movie.MovieName);
tn.Tag = item.Movie;
this.treeView1.Nodes.Add(tn);
}
//增長場次時光節點
TreeNode time = new TreeNode(item.Time);
tn.Nodes.Add(time);
//獲得以後場次的片子名字,從新遍歷
movieName = item.Movie.MovieName;
}
//睜開一切的節點
this.treeView1.ExpandAll();
}
接上去就是選中場次節點時將片子的具體信息展示在窗體中
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
//清空殘留信息
ClearContent();
rdoNormal.Checked = true;
//獲得key
if (!GetKey()) return;
lblName.Text = cinema.Schedule.Items[key].Movie.MovieName;
lblDate.Text = key;
lblType.Text = cinema.Schedule.Items[key].Movie.MovieType.ToString();
lblOriginalPrice.Text = cinema.Schedule.Items[key].Movie.Price.ToString();
lblMainAct.Text = cinema.Schedule.Items[key].Movie.Actor;
lblDirect.Text = cinema.Schedule.Items[key].Movie.Director;
this.pictureBox1.Image = Image.FromFile(cinema.Schedule.Items[key].Movie.Poster);
this.lblPreferentialPrice.Text = "";
}
最初是將坐位信息以label標簽的情勢靜態繪制到窗體裡,這裡也是最難的處所,參考了一下書
private void InitialSeat()
{
int seatRow = 7;
int seatLine = 5;
for (int i = 0; i < seatRow; i++)//列
{
for (int j = 0; j < seatLine; j++)//行
{
label = new Label();
//設置配景色彩
label.BackColor = Color.Yellow;
//設置字體 字體,年夜小,指定運用到文本的字形信息為通俗文本,指定給定命據的器量單元,新字體的GDI字符集
label.Font = new System.Drawing.Font("宋體", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
//撤消主動尺寸便利我們設置尺寸
label.AutoSize = false;
//指定label的寬和高
label.Size = new System.Drawing.Size(50, 25);
//設置坐位號
label.Text = (j + 1).ToString() + "-" + (i + 1).ToString();
label.TextAlign = ContentAlignment.MiddleCenter;
//設置地位
label.Location = new Point(60 + (i * 100), 60 + (j * 60));
//一切的標簽綁定到統一事宜,lblSeat_Click是我們手動寫的事宜
label.Click += new System.EventHandler(lblSeat_Click);
//tb是TabPage
tb.Controls.Add(label);
//參加到全局的labels聚集中
labels.Add(label.Text, label);
//實例化一個坐位Seat結構函數的參數為坐位號及色彩
seat = new Seat((j + 1).ToString() + "-" + (i + 1).ToString(), Color.Yellow);
cinema.Seats.Add(seat.SeatNum, seat);
}
}
以後文章將會持續更新:購票、坐位色彩狀況的轉變及場次坐位狀況的顯示,願望年夜家持續存眷。
以上就是本文的全體內容,願望年夜家愛好。