亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C#影院售票系統(tǒng)畢業(yè)設(shè)計(jì)(2)

 更新時(shí)間:2021年08月31日 11:52:05   作者:樂(lè)智  
這篇文章主要介紹了C#影院售票系統(tǒng)畢業(yè)設(shè)計(jì),介紹了電影院座位的動(dòng)態(tài)繪制、電影信息綁定到窗體中如何展現(xiàn)出來(lái),需要的朋友可以參考下

本文繼續(xù)更新,動(dòng)態(tài)繪制控件、票類(lèi)型的切換以及數(shù)據(jù)在窗體中的展現(xiàn)。

先從簡(jiǎn)單的開(kāi)始,票類(lèi)型的切換。

分析:

  1.當(dāng)點(diǎn)擊普通票時(shí) 學(xué)生折扣和贈(zèng)送者是禁用的

  2.點(diǎn)擊贈(zèng)票時(shí) 啟用贈(zèng)送者,禁用學(xué)生折扣

  3.點(diǎn)擊學(xué)生票時(shí) 啟用學(xué)生折扣,禁用贈(zèng)送者

學(xué)生折扣ComboBox下拉框可以選擇折扣,根據(jù)折扣實(shí)時(shí)折扣計(jì)算價(jià)格到優(yōu)惠價(jià)上。

需要注意的是:
如果沒(méi)有選擇ListView的電影場(chǎng)次(也就是時(shí)間),選擇贈(zèng)票和學(xué)生票是沒(méi)有意義的甚至?xí)l(fā)學(xué)生票實(shí)時(shí)計(jì)算時(shí)的異常,所以我們要判斷
 if (this.treeView1.SelectedNode == null) return;
因此我們便可以設(shè)計(jì)三個(gè)RadioButton的點(diǎn)擊事件代碼

 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;
 //更新原價(jià),因?yàn)辄c(diǎn)擊贈(zèng)票時(shí)價(jià)格為0了
 this.lblOriginalPrice.Text = cinema.Schedule.Items[key].Movie.Price.ToString();
 }

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

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

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

 public bool GetKey()
 {
 //選中節(jié)點(diǎn)
 TreeNode node = this.treeView1.SelectedNode;
 //如果沒(méi)有選擇節(jié)點(diǎn)=》結(jié)束
 if (node == null) return false;
 //如果選中節(jié)點(diǎn)不是場(chǎng)次(時(shí)間)=》結(jié)束
 if (node.Level != 1) return false;
 //獲取時(shí)間作為key
 key = node.Text;
 if (key != "" && key != null) return true;
 return false;
 }

然后就是將XML中的數(shù)據(jù)綁定TreeView并在選擇TreeView的時(shí)間節(jié)點(diǎn)是將影片信息展現(xiàn)在窗體中

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

提取出InitTreeView()方便更新時(shí)調(diào)用cinema.Schedule.LoadItems();放到窗體的加載事件或初始化中
 

 private void InitTreeView()
 {
 this.treeView1.Nodes.Clear();
 string movieName = "";
 TreeNode tn = null;
 foreach (ScheduleItem item in cinema.Schedule.Items.Values)
 {
  //如果不存在此電影節(jié)點(diǎn),創(chuàng)建電影節(jié)點(diǎn)
  if (item.Movie.MovieName != movieName)
  {
  tn = new TreeNode(item.Movie.MovieName);
  tn.Tag = item.Movie;
  this.treeView1.Nodes.Add(tn);
  }
  //增加場(chǎng)次時(shí)間節(jié)點(diǎn)
  TreeNode time = new TreeNode(item.Time);
  tn.Nodes.Add(time);
  //獲取當(dāng)前場(chǎng)次的電影名字,重新遍歷
  movieName = item.Movie.MovieName;
 }
 //展開(kāi)所有的節(jié)點(diǎn)
 this.treeView1.ExpandAll();
 }

接下來(lái)就是選中場(chǎng)次節(jié)點(diǎn)時(shí)將電影的詳細(xì)信息展現(xiàn)在窗體中

 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標(biāo)簽的形式動(dòng)態(tài)繪制到窗體里,這里也是最難的地方,參考了一下書(shū) 

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();
  //設(shè)置背景顏色
  label.BackColor = Color.Yellow;
  //設(shè)置字體 字體,大小,指定應(yīng)用到文本的字形信息為普通文本,指定給定數(shù)據(jù)的度量單位,新字體的GDI字符集
  label.Font = new System.Drawing.Font("宋體", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
  //取消自動(dòng)尺寸方便我們?cè)O(shè)置尺寸
  label.AutoSize = false;
  //指定label的寬和高
  label.Size = new System.Drawing.Size(50, 25);
  //設(shè)置座位號(hào)
  label.Text = (j + 1).ToString() + "-" + (i + 1).ToString();
  label.TextAlign = ContentAlignment.MiddleCenter;
  //設(shè)置位置
  label.Location = new Point(60 + (i * 100), 60 + (j * 60));
  //所有的標(biāo)簽綁定到同一事件,lblSeat_Click是我們手動(dòng)寫(xiě)的事件
  label.Click += new System.EventHandler(lblSeat_Click);
  //tb是TabPage
  tb.Controls.Add(label);
  //加入到全局的labels集合中
  labels.Add(label.Text, label);
  //實(shí)例化一個(gè)座位Seat構(gòu)造函數(shù)的參數(shù)為座位號(hào)及顏色
  seat = new Seat((j + 1).ToString() + "-" + (i + 1).ToString(), Color.Yellow);
  cinema.Seats.Add(seat.SeatNum, seat);
  }
 }

之后文章將會(huì)繼續(xù)更新:購(gòu)票、座位顏色狀態(tài)的改變及場(chǎng)次座位狀態(tài)的顯示,希望大家繼續(xù)關(guān)注。

以上就是本文的全部?jī)?nèi)容,希望大家喜歡。

相關(guān)文章

  • 使用MSScriptControl 在 C# 中讀取json數(shù)據(jù)的方法

    使用MSScriptControl 在 C# 中讀取json數(shù)據(jù)的方法

    下面小編就為大家?guī)?lái)一篇使用MSScriptControl 在 C# 中讀取json數(shù)據(jù)的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-01-01
  • C#實(shí)現(xiàn)字符串與圖片的Base64編碼轉(zhuǎn)換操作示例

    C#實(shí)現(xiàn)字符串與圖片的Base64編碼轉(zhuǎn)換操作示例

    這篇文章主要介紹了C#實(shí)現(xiàn)字符串與圖片的Base64編碼轉(zhuǎn)換操作,結(jié)合實(shí)例形式分析了C#針對(duì)base64編碼與圖片的相互轉(zhuǎn)換操作技巧,需要的朋友可以參考下
    2017-06-06
  • c#開(kāi)發(fā)word批量轉(zhuǎn)pdf源碼分享

    c#開(kāi)發(fā)word批量轉(zhuǎn)pdf源碼分享

    已經(jīng)安裝有Office環(huán)境,借助一些簡(jiǎn)單的代碼即可實(shí)現(xiàn)批量Word轉(zhuǎn)PDF,看下面的實(shí)例源碼吧
    2013-12-12
  • C# Winform 禁止用戶(hù)調(diào)整ListView的列寬

    C# Winform 禁止用戶(hù)調(diào)整ListView的列寬

    在使用 ListView 的時(shí)候, 有時(shí)我們不想讓別人隨意調(diào)整列寬, 或者某幾列的列寬, 以便達(dá)到美觀(guān), 或者隱藏?cái)?shù)據(jù)的作用. 那么可以用一下代碼來(lái)實(shí)現(xiàn)
    2011-05-05
  • C# DataTable常見(jiàn)用法匯總

    C# DataTable常見(jiàn)用法匯總

    這篇文章主要介紹了C# DataTable常見(jiàn)用法,幫助大家更好的理解和學(xué)習(xí)c#,感興趣的朋友可以了解下
    2020-08-08
  • Unity實(shí)現(xiàn)人物旋轉(zhuǎn)和移動(dòng)效果

    Unity實(shí)現(xiàn)人物旋轉(zhuǎn)和移動(dòng)效果

    這篇文章主要為大家詳細(xì)介紹了Unity實(shí)現(xiàn)人物旋轉(zhuǎn)和移動(dòng)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-01-01
  • C#調(diào)用python腳本的方法詳解

    C#調(diào)用python腳本的方法詳解

    這篇文章主要為大家詳細(xì)介紹了C#調(diào)用python腳本的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),感興趣的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-11-11
  • C#服務(wù)器NFS共享文件夾搭建與上傳圖片文件的實(shí)現(xiàn)

    C#服務(wù)器NFS共享文件夾搭建與上傳圖片文件的實(shí)現(xiàn)

    本文主要介紹了C#服務(wù)器NFS共享文件夾搭建與上傳圖片文件的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • C#實(shí)現(xiàn)在線(xiàn)更新軟件

    C#實(shí)現(xiàn)在線(xiàn)更新軟件

    winform程序相對(duì)web程序而言,功能更強(qiáng)大,編程更方便,但軟件更新卻相當(dāng)麻煩,要到客戶(hù)端一臺(tái)一臺(tái)地升級(jí),面對(duì)這個(gè)實(shí)際問(wèn)題,在最近的一個(gè)小項(xiàng)目中,本人設(shè)計(jì)了一個(gè)通過(guò)軟件實(shí)現(xiàn)自動(dòng)升級(jí)技術(shù)方案,彌補(bǔ)了這一缺陷,有較好的參考價(jià)值
    2015-05-05
  • C#實(shí)現(xiàn)類(lèi)似新浪微博長(zhǎng)URL轉(zhuǎn)短地址的方法

    C#實(shí)現(xiàn)類(lèi)似新浪微博長(zhǎng)URL轉(zhuǎn)短地址的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)類(lèi)似新浪微博長(zhǎng)URL轉(zhuǎn)短地址的方法,涉及C#操作正則表達(dá)式的相關(guān)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-04-04

最新評(píng)論