锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

不是吧,阿sir,还有人不会制作影院订票系统前端页面吗?(拿来就用)

时间:2022-11-17 16:00:00 mawomatic传感器h4

影院订票系统前端页面

  • ??案例分析
  • ??详细设计
    • ?定义座位数据和样式
    • ?座椅事件处理及相关代码
    • ?监听与数据格式化
    • ?展示电影信息
  • ??动态操作演示图
  • ??源码(附图片素材)

引言:
??大家好,欢迎来到我的博客。五一假期快到了。你打算如何安排假期活动?你想看电影来缓解无聊的学习和生活吗?说到电影,它离不开中国大陆电影票房冠军长津湖。所以今天,让我们制作一个电影预订系统的前端页面。如果有错误,欢迎纠正。

在这里插入图片描述

??案例分析

??影院订票系统是影院销售电影票的一个非常重要的环节,直接影响用户的操作是否方便,界面是否直观。该系统包括用户注册、电影信息管理、订票信息管理、站内新闻管理等模块。本节只阐述了订票前端页面,旨在让读者综合运用本书前期学习的知识。本节完成的前端页面如图1所示,可点击效果动图查看完成效果。

图1 效果图

??该页面需要图形来选择座位,即可以单击图1左侧的可选座位来选择要购买的座位。单击可选座位后,座位将成为可选座位状态;单击可选座位后,座位将回到可选座位状态;图中灰色座位表示已售出座位。
??此外,在选择或取消座位后,选定的座位将自动显示在图1的右侧,并可以根据用户选择的电影票,自动计算票的总价,也可以限制用户一次只能购买五张票,当票数达到上限时,动态提示用户,此时不能选择新的可选座位,但可以取消选定的座位。
??从图1可以看出,该页面分为左右两部分Bootstrap实现网格布局,即左右占12级的一半,其中左半分为两行(座位线和座位提示线),右半分为两行(电影信息线和电影票购买信息线)。事实上,
现代码如下:

<div  class="container" id="app">     <div  class="row">         <div  class="col-md-6">              <div  class="row">                 <!--左上半部分:座位线-->              </div>              <div class="row">                  <!--左下半部分:座位提示-->              </div>     </div>     <div class="col-md-6 sceenRight">         <div class="row">             <!--右上半部分:电影信息行-->         </div>         <div class"row">
             <!--右下半部分:影票购买信息行-->
        </div>
    </div>
  </div>
</div>

🎉详细设计

✨座位数据与样式定义

  座位数据是通过在

  • 标记中使用背景图片,背景图片有四种座位样式:无座位(空白)、可选座位(白色)、选中座位(红色)、售出座位(灰色),在数组中定义的数值如下:

    -1:无座位0:可选座位1:选中座位2:售出座位
    

      例如,在Vue.js中定义一个11行10列的座位,每个座位用一个数字来表示,数字含义如上所示,定义的数组语句如下所示(其在浏览器中对应如图1左上半部分的座位图):

    seatflag:[
    		0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    		0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    		0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    		0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    	    0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    		0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    		0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    		0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    		0, 0, 0, 0, 2, 2, 0, 0, 0, 0,
    		0, 0, 0, 2, 2, 0, 2, 2, 0, 0,
    		-1, 0, 0, 0, 0, 0, 0, 0, 0, -1,
    		-1, -1, 0, 0, 0, 0, 0, 0, -1, -1,
    	]
    

      从定义的seatfage数组可以看出这是一维数组,让其变成能够显示行列的二维数组的方法是:定义一行有多少座位的数据seatCol,用户单击某一个座位后,在程序中可以得到该座位在数组中的序号,该序号整除seatCol得到的商就是行号,对seatCol取余数就是相对应的列号。
    在CSS中对座位

  • 元素的样式定义是通过四个座位的背景图(如图2所示)完成,通过上下移动该背景图使用户在
  • 元素的窗口中看到不同的座位样式,其样式定义如下所示:

    图2 订票系统座位背景图
    .seat{
    			float: left;
    			width: 30px;
    			height: 30px;
    			background-color: bisque;
    			margin: 5px 10px;
    			cursor: pointer;
    			list-style: none;
    		}
    .seatActive{
    			background: url(img/bg.png) 1px 0px;
    		}
    .seatSpace{
    			background: url(img/bg.png) 1px -29px;
    		}
    .seatNoUse{
    			background: url(img/bg.png) 1px -56px;
    		}
    .noSeat{
    			background: url(img/bg.png) 1px -84px;
    		}
    

      使用Vue中的v-for命令对上面的数据动态生成多个座位的

  • 元素。每个座位都有“seat”样式类,然后根据每个座位对应的数据来显示其对应的样式图片,当对应座位的数据是-1时,添加“noSeat”样式类,即没有该座位;当对应座位数据是0时,添加“seatSpace”样式类,即该座位是可选座位;当对应座位数据是1时,添加“ seatActive ”样式类,即该座位是已选座位;当对应座位数据是2时,添加“seatNoUse”样式类,即该座位是售出座位。HTML中的语句如下所示:

    <li class="seat seatSpace" v-for="(item,index) in seatflag"
    							:key="index" 
    		   :class="{'noSeat':seatflag[index]==-1, 'seatActive':seatflag[index]==1, 'seatSpace':seatflag[index]==0, 'seatNoUse':seatflag[index]==2, }",
    							@click="handleClick(index)"
    							></li>
    

      行和列是由单击座位对应序号和数据seatCol来确定的,但在浏览器中的显示是由

  • 的父级元素来确定的,也就是
  • 相关文章