你的位置:首页 > ASP.net教程

[ASP.net教程]电影院售票系统


需求概述:该系统可以销售每天不同时段的电影票。因为播放的时间段不同,所有对应的电影票有不同的优惠政策,此外还可以使用兑换卷的免费票!

 

主要功能:在影片列表中选择某个时间段的一场电影,单机座位选择一个种类的电影票,并创建电影票,计算价格并打印影票信息,然后该座位被置为红色表示已经售出。

1、影院每天更新放映列表,系统支持实时查看,包括电影放映场次时间,电影概况

2、影院提供三类影票:普通票、赠票和学生票(赠票免费,学生票有不同程度的折扣)

3、允许用户查看某场次座位的售出情况

4、支持购票,并允许用户选座

5、用户可以选择场次、影票类型及空闲座位进行购票,并打印电影票

6、系统可以保存销售情况,并允许对其进行恢复

 

开发环境:Visual Studio2012

涉及知识:C#中的封装、继承、多态、泛型集合、

 

类图:

思路分析:

  1、编写相关类,包括电影勒、放映日程类、放映场次类、影院类

  2、编写方法解析

  3、编写方法初始化TreeView

  4、编写窗体Load事件,实现控件初始化

初始化TreeView参考代码:

 1      /// <summary> 2     /// 获取放映列表绑定到TreeView 3     /// </summary> 4     private void BingTreeView() 5     { 6       this.tvMovies.Nodes.Clear(); 7       //加载 8       cinema.Schedule.LoadItems(); 9       //绑定到TreeView10       TreeNode root = null;11       foreach (ScheduleItem var in cinema.Schedule.Items.Values)12       {13         if (root == null || root.Text != var.Movie.MovieName)14         {15           //根节点16           root = new TreeNode(var.Movie.MovieName);17           this.tvMovies.Nodes.Add(root);18         }19         //子节点20         root.Nodes.Add(var.Time);21       }22     }

2、查看电影介绍

需求:选择电影场次,“详情”面板显示电影的详细信息


3、查看电影院票价

需求:选择“学生票”时,赠送者文本框不可用,“详情”面板中显示默认7折优惠价,也可以选择不同的折扣,重新计算优惠价

   选择“赠票”时,学生折扣组合框不可用,“详情”面板中显示优惠价为“0”


4、查看放映厅座位

需求说明:窗体加载时,显示放映厅座位

参考代码:

 1     /// <summary> 2     /// 初始化座位 3     /// </summary> 4     private void InitSeats(int row, int col) 5     { 6       for (int i = 0; i < row; i++) 7       { 8         for (int j = 0; j < col; j++) 9         {10           Label lb = new Label();11           lb.BackColor = Color.Yellow;12           lb.Location = new Point(20 + j * 100, 50 + i * 70);13           lb.Font = new Font("Courier New", 11);14           lb.Name = (i + 1) + "-" + (j + 1);15           lb.Size = new Size(80, 30);16           lb.TabIndex = 0;17           lb.Text = (i + 1) + "-" + (j + 1);18           lb.TextAlign = ContentAlignment.MiddleCenter;19           lb.Click += lb_Click;20           tpCinema.Controls.Add(lb);21           //添加座位对象到CInema的Seats集合中22           Seat seat = new Seat(lb.Text, Color.Yellow);23           cinema.Seats.Add(seat.SeatNum, seat);24         }25       }26     }    

5、购票

需求说明:选择电影场次、购票类型,单击放映厅的某座位进行购票


6、打印电影票

需求说明:购票完毕,自动打印电影票,并标识所选座位为红色,即已售出状态(代码参考购票)

7、继续销售:

需求说明:保存当前销售情况,选择“继续售票”时加载之前的销售状况,可以查看座位的售出状况

思路分析:编写Save()和Load()方法;窗体加载时,加载售票信息;选择场次时,显示该场座位的售出情况

参考代码:

 1     /// <summary> 2     /// 加载放映场次 3     /// </summary> 4     public void Load() 5     { 6       using (FileStream fs = new FileStream("student.dat",FileMode.Open)) 7       { 8         BinaryFormatter bf = new BinaryFormatter(); 9         this.SoldTickets = bf.Deserialize(fs) as List<Ticket>;10       }11     }12 13     /// <summary>14     /// 保存销售信息15     /// </summary>16     public void Save()17     {18       //19       using (FileStream fs = new FileStream("student.dat",FileMode.Create))20       {21         BinaryFormatter bf = new BinaryFormatter();22         bf.Serialize(fs, SoldTickets);23       }24 25     }

项目主要功能如上!仅作初学者交流学习,老鸟午喷!有什么建议请留言!

项目源码地址:http://pan.baidu.com/s/1i35W6yD