日韩性视频-久久久蜜桃-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#总结项目《影院售票系统》编写总结二的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 国产天天综合 | 99久久精品国产一区二区三区 | 91超薄肉色丝袜交足高跟凉鞋 | 奇米精品一区二区三区在线观看一 | 国产精品福利片 | 欧美视频一二三 | 国产精品尤物视频 | 欧美乱轮 | 亚洲精品第一页 | 伊人天天干| 日本网站免费 | 亚洲成人av电影网站 | 精品色图 | 光溜溜视频素材大全美女 | 黄色一级片 | 美女久久久久久久 | 性色av浪潮av | 国产另类ts人妖一区二区 | 又黄又色又爽 | 久爱精品| 最新中文字幕在线观看 | 午夜久久网 | 婷婷爱五月 | 日毛片 | 欧美日韩亚洲激情 | 日本特级黄色大片 | 亚洲精品高清视频在线观看 | 啪啪综合 | 中文在线播放 | 色淫湿视频| 欧美一区在线看 | 王者后宫yin肉h文催眠 | 黄色片91 | 污视频在线观看免费 | 国产一页 | 天天爽天天爽夜夜爽毛片 | 夜夜看av| 国产精品一区二区小说 | www.av72| 91精品美女| 亚洲一区二区三区影视 | 91夫妻视频 | 亚洲第一字幕 | 国产淫片av片久久久久久 | 精品国产无码在线 | 国产理论在线 | www一区| 99热这里只有精品首页 | 黑人一级| 亚洲AV无码精品一区二区三区 | 四虎国产精品成人免费入口 | 国产性色视频 | 欧美日本道 | 日韩av不卡在线观看 | 免费在线观看黄色网址 | 久久精品国产一区 | www黄色片 | 欧美噜噜噜 | 天降女子在线观看 | a级片在线观看视频 | 日韩毛片中文字幕 | 老师用丝袜脚帮我脚交 | 国产精品一区二区三 | 国产粉嫩在线 | 成人一区三区 | 黑森林福利视频导航 | 亚洲欧美精品久久 | 青草在线视频 | 久久精品国产精品亚洲色婷婷 | 欧美区二区三区 | 国产丝袜第一页 | 人人爽爽爽 | 国产操比视频 | 草草草在线 | 黄视频在线 | 打美女屁股网站 | 久久婷婷精品 | 免费观看成人在线视频 | 五月婷婷伊人网 | 亚洲av无码潮喷在线观看 | 免费国产小视频 | 91在线| 久久精品国产免费看久久精品 | 91成人免费版 | 免费观看在线视频 | 欧美福利在线视频 | 日韩精品自拍 | 日韩激情文学 | 先锋资源中文字幕 | 国产精品污www一区二区三区 | 麻豆性视频 | 日韩免| 人人草人人爽 | 日本不卡一区二区 | 日韩国产欧美视频 | 成人第一页| 最新av导航 | 午夜激情视频网 | 亚洲熟妇色自偷自拍另类 |