CH15-项目:影院售票系统

本章目标

  1. 完成影院售票系统

本章内容

  1. 项目技能训练点:

    1. 能够分析系统功能并合理提取对象和类
    2. 会使用类图理解类关系
    3. 会使用属性和方法构建类
    4. 会使用继承、多态实现良好复用和扩展性
    5. 会使用泛型集合
    6. 会使用枚举
    7. 会读取XML文件
    8. 会使用文件保存和恢复信息
  2. 任务描述:

    1. “广创影院”开始营业,需要一个售票系统
      1. 影院每天更新放映列表,系统支持实时查看:电影放映场次时间、电影概况
      2. 影院提供3类影票:普通票、赠票和学生票(赠票免费、学生票有不同折扣)
      3. 允许用户查看某场次座位售出情况
      4. 支持购票,并允许用户选座
      5. 用户可以选择场次、影票类型以及空闲座位进行购票,并打印电影票
      6. 系统可以保存销售情况,并允许对其进行恢复
  3. 整体开发思路

    1. 系统开发步骤

      1722328721401

    2. 难点分析:

      1. 业务理解

        1. 系统如何获得最新的放映列表?
        2. 如何实现?如何进行售票?流程是什么?
        3. 如何动态显示放映厅座位?如何控制颜色的变化体现座位“卖出”和“待卖”状态?
      2. 类关系(抽象出类)

        1. 电影类:Movie
        2. 放映日程类:Schedule
        3. 放映场次类:ScheduleItem
        4. 电影院类:Cinema
        5. 座位类:Seat
        6. 电影票父类:Ticket
        7. 学生票子类:StudentTicket
        8. 赠票子类:FreeTicket
        9. 工具类:TicketUtil

        1722328958669

      3. 重要类分析

        1722329052047

  4. 开发步骤

    1. 查看新放映列表

      1. 需求说明:

        1. 获取新放映列表

          选择“获取新放映列表”

          读取放映列表XML文件并将电影名称和放映时间显示在TreeView中

      2. 思路分析

        1. 编写相关类
          1. 电影类、放映日程类、放映场次类、电影院类
        2. 编写方法解析XML文件
        3. 编写方法初始化TreeView控件
        4. 编写窗体Load事件,初始化控件

      1722329259445

    2. 查看电影介绍

      1. 需求说明

        查看电影介绍

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

        1722329377566

    3. 查看影票票价

      1. 需求说明

        1. 查看不同类型影票票价

          选择“学生票”,“赠送者”不可用,“详情”面板中显示默认7折优惠价,选择不同的折扣,重新计算优惠价

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

      2. 1722329516741

    4. 查看放映厅座位

      1. 需求说明

        1. 查看放映厅座位

          窗体加载时,显示放映厅座位(5排7列)

        1722329600355

    5. 购票

      1. 需求说明

        1. 购票选择电影场次、购票类型,点击放映厅某座位进行购票
      2. 思路分析

        1. 编写Ticket类及其子类
        2. 编写座位标签的Click事件响应lblSeat_Click
        3. 座位标签绑定lblSeat_Click事件
      3. 提示:

        1. StudentTicket类和FreeTicket类继承Ticket类

          子类重写父类实际票价的计算方法

        2. TicketUtil工具类创建不同类型的影票对象

        1722330050914

    6. 打印电影票

      1. 需求说明

        1. 打印影票

          购票完毕,自动打印电影票,并标识所选座位为红色“已售出”状态

        1722330142957

    7. 继续售票

      1. 需求说明

        1. 保存当前销售情况
        2. 选择“继续售票”,加载之前销售状况,可以查看座位售出情况

        1722330327830