日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C#总结项目《影院售票系统》编写总结二

發布時間:2024/10/12 C# 101 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#总结项目《影院售票系统》编写总结二 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

昨天發布了總結項目的第一篇,需求分析以及類的搭建,今天繼續更新,動態繪制控件、票類型的切換以及數據在窗體中的展現。

先從簡單的開始,票類型的切換。

分析:

  1.當點擊普通票時 學生折扣和贈送者是禁用的

  2.點擊贈票時 啟用贈送者,禁用學生折扣

  3.點擊學生票時 啟用學生折扣,禁用贈送者

    學生折扣ComboBox下拉框可以選擇折扣,根據折扣實時折扣計算價格到優惠價上。

  需要注意的是:

    如果沒有選擇ListView的電影場次(也就是時間),選擇贈票和學生票是沒有意義的甚至會引發學生票實時計算時的異常,所以我們要判斷

  

1 if (this.treeView1.SelectedNode == null) return;

因此我們便可以設計三個RadioButton的點擊事件代碼

1 private void rdoGiveTicket_CheckedChanged(object sender, EventArgs e) 2 { 3 if (this.treeView1.SelectedNode == null) return; 4 this.lblOriginalPrice.Text = "0"; 5 this.cboDiscount.Enabled = false; 6 this.txtGiver.Enabled = true; 7 } 贈票點擊 1 private void rdoStuTicket_CheckedChanged(object sender, EventArgs e) 2 { 3 if (this.treeView1.SelectedNode == null) return; 4 this.cboDiscount.Enabled = true; 5 this.txtGiver.Enabled = false; 6 } 學生票點擊 1 private void rdoNormal_CheckedChanged(object sender, EventArgs e) 2 { 3 this.cboDiscount.Enabled = false; 4 this.txtGiver.Enabled = false; 5 if (!GetKey()) return; 6 //更新原價,因為點擊贈票時價格為0了 7 this.lblOriginalPrice.Text = cinema.Schedule.Items[key].Movie.Price.ToString(); 8 } 普通票點擊

為了美觀也可以調用ClearContent()方法清空一下可能殘留的信息

private void ClearContent(){//點擊時間(場次)時切換回普通票 并清空可能殘留的信息txtGiver.Text = "";cboDiscount.Text = "";}

由于普通票切換回來的時候需要刷新價格,所以要獲取價格;cinema電影院對象是一個全局對象(可以看上一篇的類),key是一個全局的變量,存儲的是選中場次的時間,用來做放映場次的Key。GetKey()方法是獲取選中場次的時間并返回布爾值,看代碼實例

1 public bool GetKey() 2 { 3 //選中節點 4 TreeNode node = this.treeView1.SelectedNode; 5 //如果沒有選擇節點=》結束 6 if (node == null) return false; 7 //如果選中節點不是場次(時間)=》結束 8 if (node.Level != 1) return false; 9 //獲取時間作為key 10 key = node.Text; 11 if (key != "" && key != null) return true; 12 return false; 13 } GetKey方法

然后就是將XML中的數據綁定TreeView并在選擇TreeView的時間節點是將影片信息展現在窗體中

之前在搭建類的時候用到 Schedule 放映計劃類有一個方法LoadItems()就是將XML信息解析并添加到放映計劃集合中

提取出InitTreeView()方便更新時調用

cinema.Schedule.LoadItems();放到窗體的加載事件或初始化中

1 private void InitTreeView() 2 { 3 this.treeView1.Nodes.Clear(); 4 string movieName = ""; 5 TreeNode tn = null; 6 foreach (ScheduleItem item in cinema.Schedule.Items.Values) 7 { 8 //如果不存在此電影節點,創建電影節點 9 if (item.Movie.MovieName != movieName) 10 { 11 tn = new TreeNode(item.Movie.MovieName); 12 tn.Tag = item.Movie; 13 this.treeView1.Nodes.Add(tn); 14 } 15 //增加場次時間節點 16 TreeNode time = new TreeNode(item.Time); 17 tn.Nodes.Add(time); 18 //獲取當前場次的電影名字,重新遍歷 19 movieName = item.Movie.MovieName; 20 } 21 //展開所有的節點 22 this.treeView1.ExpandAll(); 23 } InitTreeView綁定到TreeView

接下來就是選中場次節點時將電影的詳細信息展現在窗體中

1 private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) 2 { 3 //清空殘留信息 4 ClearContent(); 5 rdoNormal.Checked = true; 6 //獲取key 7 if (!GetKey()) return; 8 lblName.Text = cinema.Schedule.Items[key].Movie.MovieName; 9 lblDate.Text = key; 10 lblType.Text = cinema.Schedule.Items[key].Movie.MovieType.ToString(); 11 lblOriginalPrice.Text = cinema.Schedule.Items[key].Movie.Price.ToString(); 12 lblMainAct.Text = cinema.Schedule.Items[key].Movie.Actor; 13 lblDirect.Text = cinema.Schedule.Items[key].Movie.Director; 14 this.pictureBox1.Image = Image.FromFile(cinema.Schedule.Items[key].Movie.Poster); 15 this.lblPreferentialPrice.Text = ""; 16 } 展示詳細的信息到窗體

最后是將座位信息以label標簽的形式動態繪制到窗體里,這里也是最難的地方,參考了一下書

1 private void InitialSeat() 2 { 3 int seatRow = 7; 4 int seatLine = 5; 5 for (int i = 0; i < seatRow; i++)// 6 { 7 for (int j = 0; j < seatLine; j++)// 8 { 9 label = new Label(); 10 //設置背景顏色 11 label.BackColor = Color.Yellow; 12 //設置字體 字體,大小,指定應用到文本的字形信息為普通文本,指定給定數據的度量單位,新字體的GDI字符集 13 label.Font = new System.Drawing.Font("宋體", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); 14 //取消自動尺寸方便我們設置尺寸 15 label.AutoSize = false; 16 //指定label的寬和高 17 label.Size = new System.Drawing.Size(50, 25); 18 //設置座位號 19 label.Text = (j + 1).ToString() + "-" + (i + 1).ToString(); 20 label.TextAlign = ContentAlignment.MiddleCenter; 21 //設置位置 22 label.Location = new Point(60 + (i * 100), 60 + (j * 60)); 23 //所有的標簽綁定到同一事件,lblSeat_Click是我們手動寫的事件 24 label.Click += new System.EventHandler(lblSeat_Click); 25 //tb是TabPage 26 tb.Controls.Add(label); 27 //加入到全局的labels集合中 28 labels.Add(label.Text, label); 29 //實例化一個座位Seat構造函數的參數為座位號及顏色 30 seat = new Seat((j + 1).ToString() + "-" + (i + 1).ToString(), Color.Yellow); 31 cinema.Seats.Add(seat.SeatNum, seat); 32 } 33 } 動態繪制控件

明天將會繼續更新:購票、座位顏色狀態的改變及場次座位狀態的顯示

歡迎大神斧正教導

轉載于:https://www.cnblogs.com/AIThink/p/4937713.html

總結

以上是生活随笔為你收集整理的C#总结项目《影院售票系统》编写总结二的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久久久久一区 | 欧美少妇一区 | 天堂色播 | 国产一二三 | 成人资源在线 | 成人av综合 | 视频三区在线 | 一区二区三区视频观看 | 久久久蜜桃 | 日本不卡视频在线 | 欧美成人免费在线 | 干骚视频 | 日韩二区三区 | 久久成人网18网站 | 香蕉视频免费网站 | 外国av网站 | 欧美黑人狂野猛交老妇 | 懂色aⅴ国产一区二区三区 亚洲欧美国产另类 | 亚洲精品中文字幕在线 | 国产精品国产精品国产专区蜜臀ah | 精品999久久久一级毛片 | 四虎色| 欧美精品黄色片 | 国产专区视频 | av天天操 | 在线看黄色的网站 | 黄色不卡av | 深夜的私人秘书 | 都市激情校园春色亚洲 | 黑人一级女人全片 | 男女ss视频 | 久久精品99久久久久久 | www.在线观看麻豆 | 黄色激情视频网站 | 午夜视频在线观看网站 | 超碰一区二区三区 | 九九五月天 | 美女丝袜合集 | 蜜臀av在线播放 | 国产精品电影在线观看 | 国产吞精囗交免费视频 | 中文字幕精品久久 | 国产不卡在线观看 | 中文字幕免费在线观看视频 | 欧美日韩免费观看一区=区三区 | 精品久久久久久久久久久久久久久久久久 | 久久99精品久久久久 | 久久精品亚洲精品国产欧美 | 黄页免费视频 | 91久久精品www人人做人人爽 | 精品一区二区三区蜜桃 | 国产精品腿扒开做爽爽爽挤奶网站 | 超碰97在线资源 | www国产亚洲精品久久麻豆 | 欧美用舌头去添高潮 | 婷婷丁香在线 | 久一在线视频 | 青青国产精品视频 | 国产91久久精品一区二区 | 91在线精品一区二区三区 | 超碰成人福利 | 亚洲中文字幕无码一区 | 操碰av| 美妇av | 亚洲欧美日本另类 | 国产伦精品一区二区三区妓女下载 | 丰满岳乱妇国产精品一区 | 亚洲综合精品一区 | 久久精品久久久精品美女 | 欧美视频一区二区三区在线观看 | 自拍偷拍亚洲精品 | 欧美性受xxxx狂喷水 | 亚洲免费福利 | 亚洲免费视频播放 | 成人p站在线观看 | 日韩av伦理 | 亚洲精品在线免费播放 | 国产精品17p | 兄弟兄弟全集免费观看 | 一二三区在线 | 国产a一区| 少妇粉嫩小泬白浆流出 | 激情五月俺也去 | 西野翔夫の目の前で犯在线 | 日本国产三级xxxxxx | 黄色一级大片在线免费看国产一 | 搡老岳熟女国产熟妇 | 黄色一级在线 | 不用播放器的av网站 | 日产亚洲一区二区三区 | 国产成人在线观看 | 天堂中文在线免费观看 | 中文字幕一区av | 色老头在线视频 | 免费在线观看小视频 | 亚洲第一中文字幕 | 黄色一二三区 | 成人在线免费观看视频 | 精品成人av一区二区在线播放 |