上次利用了JavaScript实现了具有优先权的队列,但是想做一下能够看到的,能够操作的
所以根据上一次的基础实现一个模拟发票,并按票价排队的程序。
先上效果图:
按提交,安排票位:
乘客拿了票,胡乱排队,这时候按排队,让他们根据票价排队,牌价高者优先(以上方块里的数字为票价)
那么该怎么实现呢,
queue.js 负责按照优先权来排序队列
sort.js 负责发票,并调用queue.js来排序
main.js 负责在页面根据票数来安排位置,显示操作
代码如下:
queue.js
1.数组items用于存储队列中的项;
2.isEmpty方法用于判断队列是否为空;
3.QueueElement类用于读取票价,并根据票价来匹配优先值;
4.enqueue方法用于根据优先权来排序队列;
5.print方法用于返回队列。
sort.js
1.数组arr用于存储已拿到票的元素;
2.seatQueue用于存储queue.print()返回的队列,即已排序好的队列;
3.isSuit用于判断输入的作为数是否符合要求,符合的话返回demand为true;
4.sortSeat方法用于安排票,supper为一等座,medium为二等座,general为三等座。分别按1/6,2/6, 3/6来安排坐票数;
5.SeatObj类用于存储每个对象的票价、优先值、是否已领票;
调用sortSeat方法,生成一个queue对象。quantity为票数,调用isSuit方法判断sortSeat传进的票数是否符合要求,
符合则成票数。
根据票数生成seatObj对象,并初始化它,把它添加到数组arr。
遍历票数,随机发票,得到票让对象的on属性为"on",表示已拿到票。
遍历票数,把数组arr每一项的price属性添加到queue对象中排序。
把queue.print()的结果返回给seatQueue。
main.js
1.seatNum 为输入框输入的票数;
2.submit为提交按钮;
3.lineUp为排队按钮;
4.plane为显示排序的地方;
5.sorted为已排序的票。
根据票数来生成作为,采用网格布局,让它自适应。
生成sort对象,sort对象调用sortSeat方法。
把sort赋值给sorted;
显示排序后的队列。