服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C# - C#影院售票系统毕业设计(3)

C#影院售票系统毕业设计(3)

2021-11-02 13:34乐智 C#

这篇文章介绍了C#影院售票系统毕业设计,文章主要内容是关于购票、座位颜色状态的改变及场次座位状态的显示,需要的朋友可以参考下

前一篇文章《C#影院售票系统毕业设计(2)》中总结了动态绘制控件、票类型的切换以及数据在窗体中的展现。今天继续总结!

本文总结项目中最核心的部分--购票、座位颜色状态的改变及场次座位状态的显示

分析:

1.在选中时间(场次)后更新出座位状态(label实现),售出的为红色,未售出的显示为黄色。

2.已售出提示已经售出并不进行任何操作,未售出的询问是否购买。

3.根据选择的是普通票、赠票、还是学生票分别创建不同的票对象

  如果选择赠票则需要检测赠送者否填写

  如果选择的是学生票需要检测折扣是否选择

4.获取选中座位的座位号,调用工具类的CreateTicket()方法创建对应选中类型的票,普通票则直接使用Ticket类创建

5.用户选择购买后将座位集合的颜色改成红色;重新使用票类的计算价格方法;将售出的票加入到Cinema类中的SoldTickets集合中;更新座位颜色状态,上代码详解

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
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集合的颜色初始化,也就是重置颜色为黄色,再根据售出票集合的信息将售出座位的颜色置为红色

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//重置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)》继续实现对销售信息的本地保存、以及每次打开时载入上次的保存的销售信息,并对整个项目做整体总结

希望小编整理的这一系列文章对大家的学习有所帮助,希望大家可以喜欢。

延伸 · 阅读

精彩推荐
  • C#C#微信公众号与订阅号接口开发示例代码

    C#微信公众号与订阅号接口开发示例代码

    这篇文章主要介绍了C#微信公众号与订阅号接口开发示例代码,结合实例形式简单分析了C#针对微信接口的调用与处理技巧,需要的朋友可以参考下...

    smartsmile20127762021-11-25
  • C#VS2012 程序打包部署图文详解

    VS2012 程序打包部署图文详解

    VS2012虽然没有集成打包工具,但它为我们提供了下载的端口,需要我们手动安装一个插件InstallShield。网上有很多第三方的打包工具,但为什么偏要使用微软...

    张信秀7712021-12-15
  • C#深入理解C#的数组

    深入理解C#的数组

    本篇文章主要介绍了C#的数组,数组是一种数据结构,详细的介绍了数组的声明和访问等,有兴趣的可以了解一下。...

    佳园9492021-12-10
  • C#三十分钟快速掌握C# 6.0知识点

    三十分钟快速掌握C# 6.0知识点

    这篇文章主要介绍了C# 6.0的相关知识点,文中介绍的非常详细,通过这篇文字可以让大家在三十分钟内快速的掌握C# 6.0,需要的朋友可以参考借鉴,下面来...

    雨夜潇湘8272021-12-28
  • C#SQLite在C#中的安装与操作技巧

    SQLite在C#中的安装与操作技巧

    SQLite,是一款轻型的数据库,用于本地的数据储存。其优点有很多,下面通过本文给大家介绍SQLite在C#中的安装与操作技巧,感兴趣的的朋友参考下吧...

    蓝曈魅11162022-01-20
  • C#利用C#实现网络爬虫

    利用C#实现网络爬虫

    这篇文章主要介绍了利用C#实现网络爬虫,完整的介绍了C#实现网络爬虫详细过程,感兴趣的小伙伴们可以参考一下...

    C#教程网11852021-11-16
  • C#C#设计模式之Strategy策略模式解决007大破密码危机问题示例

    C#设计模式之Strategy策略模式解决007大破密码危机问题示例

    这篇文章主要介绍了C#设计模式之Strategy策略模式解决007大破密码危机问题,简单描述了策略模式的定义并结合加密解密算法实例分析了C#策略模式的具体使用...

    GhostRider10972022-01-21
  • C#如何使用C#将Tensorflow训练的.pb文件用在生产环境详解

    如何使用C#将Tensorflow训练的.pb文件用在生产环境详解

    这篇文章主要给大家介绍了关于如何使用C#将Tensorflow训练的.pb文件用在生产环境的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴...

    bbird201811792022-03-05