Catalog
  1. 1. 题目
  2. 2. 项目简介
  3. 3. 功能描述
  4. 4. 代码清单
数据结构课程设计实验二

题目

银行排队系统

项目简介

大家肯定都曾经去银行办过业务,例如我们东门口的中国银行山大分行。银行排队采用的是链式队列,逻辑上相邻,物理上可以不相邻。本次实验要求大家做一个“快应用”,功能上只需要实现队列的FIFO即可

很多同学是第一次开发快应用,因为时间原因,我们这次对物理结构不做要求(链式,顺序)均可。安卓手机请先安装一个快应用调试器,用调试器打开rpk安装包进入快应用,非安卓手机的同学请安装模拟器。17级的徐莫迟同学作为本次作业的技术顾问,专门写了一份文档,内容详实,请参考http://xmcblog.com/2020/02/27/。

功能描述

到银行办理业务的顾客通过快应用扫码向服务器发送入队请求并入队,同时后端定时弹出队头。用户可通过点击屏幕按钮查询自己在队伍中的位置。

代码清单

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
(1)index.ux
<template>
<div class="demo-page">
<text class="title">欢迎使用</text>
<!-- 点击跳转详情页 -->
<input class="btn" type="button" value="扫码排队" onclick="scanQR" />
<input class="btn" type="button" value="查询位置" onclick="query" />
<img class = "image" src = "https://s2.ax1x.com/2020/03/08/3zJfSJ.jpg"></img>
</div>
</template>


<script>
import router from '@system.router'
import prompt from '@system.prompt'
import barcode from '@system.barcode'
import device from '@system.device'
import fetch from '@system.fetch'


export default {
private: {
id:'',
url:'',
},
onInit() {
const self = this
device.getUserId({
success: (data) => {
self.id = data.userId
prompt.showToast({
message: 'ID got'
})
}
})
},
scanQR(){
const self = this
barcode.scan({
success: (data) => {
self.url = data.result
fetch.fetch({
url: self.url + '1',
data: {"id": self.id},
method: 'GET',
responseType: 'text',
success: (response) => {
prompt.showToast({
message: response.data
})
},
fail: (data, code) => {
prompt.showToast({
message: '排队失败请检查网络'
})
}
})
},
fail: (data, code) => {
prompt.showToast({
message: '获取相机权限失败'
})
}
})
},
query() {
const self = this
fetch.fetch({
url: self.url + '2',
data: {'id': self.id},
method: 'GET',
responseType: 'text',
success: (response) => {
prompt.showToast({
message: response.data
})
},
fail: (data, code) => {
prompt.showToast({
message: '查询失败请先扫码'
})
}
})
}
}
</script>

<style>
.demo-page {
flex-direction: column;
justify-content: center;
align-items: center;
}

.title {
font-size: 40px;
text-align: center;
}

.image {
border-radius: 8px;
}

.btn {
width: 550px;
height: 86px;
margin-top: 75px;
border-radius: 43px;
background-color: #09ba07;
font-size: 30px;
color: #ffffff;
}
</style>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
from flask import Flask
from flask import request
import time
import threading

app = Flask(__name__)
q = []


@app.route('/1', methods=['POST', 'GET'])
def index1():
id = request.args.get('id')
if q.count(id):
return '当前已在队列中'
else:
q.append(id)
return '排队成功'


@app.route('/2', methods=['POST', 'GET'])
def index2():
id = request.args.get('id')
if q.count(id):
return '您当前所排的位置是' + str(q.index(id) + 1)
else:
return '您当前不在队列中'


def popque():
while True:
time.sleep(10)
if q:
q.pop(0)


if __name__ == "__main__":
t = threading.Thread(target=popque)
t.start()
app.run(debug=True, host='192.168.31.120')
t.join()
Author: Christopher Shen
Link: https://www.pasxsenger.com/2020/03/08/数据结构课程设计实验二/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Donate
  • 微信
  • 支付寶