• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > C#影院售票系统毕业设计(3)

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

作者:乐智 字体:[增加 减小] 来源:互联网 时间:2017-05-28

乐智 通过本文主要向大家介绍了c站,c语言,欲情 c max,奔驰c200,85度c等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

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

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

分析:

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

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

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

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

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

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

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

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);
 }
</div>

这里面需要调用座位颜色更新的一个方法UpdateSeat(),先将Seats集合和labels集合的颜色初始化,也就是重置颜色为黄色,再根据售出票集合的信息将售出座位的颜色置为红色

 //重置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;
  }
 }
</div>

这样就实现了购买票后座位颜色状态的改变。

然后再根据选中的TreeView的时间(场次)节点刷新每场的中已经售出的票。

就是之前第二篇的treeView1_AfterSelect这个事件,调用我们的UpdateSeat方法就行了,这样每选择一个场次就会更新一次座位售出情况。

以上就是本文的全部内容,最后一篇文章《C#影院售票系统毕业设计(4)》继续实现对销售信息的本地保存、以及每次打开时载入上次的保存的销售信息,并对整个项目做整体总结。

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

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C# 检索不区分大小写并高亮显示实例详解
  • C#实现Base64处理的加密解密,编码解码示例
  • C# SqlHelper应用开发学习
  • C#多线程经典示例(吃苹果)
  • C#使用Windows Service的简单教程(创建、安装、卸载、调试)
  • C# 6.0 的知识梳理
  • C#向PPT文档插入图片以及导出图片的实例
  • C#使用Jquery zTree实现树状结构显示 异步数据加载
  • C#清理非托管对象实例分析
  • C#双缓冲技术实例详解

相关文章

  • 2017-05-28C#中label内容显示不全、不完整的解决方法
  • 2017-05-28如何应用C#实现UDP的分包组包
  • 2017-05-28DevExpress实现TreeList父子节点CheckState状态同步的方法
  • 2017-05-28C#读写操作app.config中的数据应用介绍
  • 2017-05-28C#通过html调用WinForm的方法
  • 2017-05-28C#设计模式编程中运用适配器模式结构实战演练
  • 2017-05-28C#面向对象编程之猜拳游戏实现方法
  • 2017-05-28WinForm实现按名称递归查找控件的方法
  • 2017-05-28C#实现微信公众号群发消息(解决一天只能发一次的限制)实例分享
  • 2017-05-28C#实现在服务器端裁剪图片的方法

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 桌面浮动窗口(类似恶意广告)的实现详解
    • C#窗体读取EXCEL并存入SQL数据库的方法
    • 浅谈c#表达式树Expression简单类型比较demo
    • C#实现开机自动启动设置代码分享
    • 关于C# Math 处理奇进偶不进的实现代码
    • C#实现将字符串转换成日期格式的方法
    • c#与mysql的连接
    • C#的泛型方法解析
    • 使用GPS经纬度定位附近地点(某一点范围内查询)
    • 简单掌握Windows中C#启动外部程序进程的方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有