APP下载

基于数据结构和Java 的火车售票系统

2021-04-24陈湘瑾祖子帅于孔亮

科学技术创新 2021年9期
关键词:车次购票车票

陈湘瑾 祖子帅 于孔亮 修 昂

(山东科技大学,山东 济南250000)

1 概述

随着网络技术的持续性发展,同时为了适应现今社会的变革需要,设计一个线上火车售票系统来方便人们购买火车票,节约时间及其他成本显得极其重要。该基于数据结构和Java 的火车售票系统操作方便,用户登录该系统后可实现线上查票、购票、退票等目的。

2 系统需求分析和功能模块设计

本系统主要针对具有线上购票需求的用户而设定,购票人员基本信息包括:姓名、性别、身份证号码、职业;车票信息包括:车次、车厢、出发地点、到达地点、发车时间、票价等。系统采用顺序循环优先级队列实现如下功能:(1)车票基本信息录入。(2)售票。(3)退票。(4)查询输出。(5)当某班次车票售空,允许乘客排队等待退票,排队乘客带有优先级(如:现役军人>大学生>普通乘客)。

3 系统功能详细设计及实现

3.1 登录界面设计

此部分设计可以弹出用户名与密码对话框,若用户输入的信息匹配都正确即可进入主界面,对界面标签、文本框等组件进行属性(位置,大小)设计。为登录按钮添加事件监听器,主要是通过比较方法equals()将用户输入的账户及密码与原有固定的正确文本信息进行比对实现登录功能。

3.2 主界面(车票信息显示界面)设计

此界面通过Swing 开发,添加各种组件,通过二维数组的创建实现提取车票信息、全局数据的提取和存储,对主界面按钮添加监听,实现分别传入一个车次参数并跳转到其他各界面,通过比较实际改变的车票列表(文件流里文件的信息)和弹出界面显示还未改变的车位,声明改变了某个位置的值后再次赋值并显示改变后的数据信息,以此实现刷新功能并最终显示修改后车位。

3.3 购票界面设计

购票用户锁定车次进行购票而进行个人信息输入后,比较判断用户输入信息判断是否为空,只有都不为空时才弹出“进入买票队列!”窗口,否则弹出“请输入完整信息!”窗口。然后购买成功的用户的数据被获取并被添加到Main 中全局数据里,用户列表List 中添加数据。最后实现页面交互:将买票成功的用户的信息加入到查看列表里,购买状态默认为0。

3.4 查看及退票界面设计

此界面实现查看进入买票队列中的用户的等待状态等信息。通过循环、判断语句实现比对和人数累加的算法,将选中车次和选中此车次的查看列表比对,查看有多少人选中该车次(得h),创建h 行3 列的数组显示查看列表中的数据信息,再通过二维数组、读取文件流比对存储在文件中的车次和选中车次是否相等,若相等输出文件中信息到查看列表框。通过row 获取选中一行数据信息,若没选中则row=-1 显示“没有选择人!”。点击退票按钮时,通过比较判断,若数组w【row】【1】.equals(“1”)则判断该退票用户曾购票成功并可退票;找到车次后把对应车位位置数加1,表示有空余位可抢票。将原存储文件中的用户姓名和选中列表中的用户姓名比对,找到退票人名字后进行删除操作。即Main 中buylist 里移除那一行数据,后删除选中的那一行数据。

3.5 等待抢票队列显示界面设计

此界面显示当前车次还未抢到票的h 个用户的信息,通过h 行4 列的二维数组将上述用户信息放入优先级队列中存储起来,并将他们入队列,现役军人优先级设为1,学生优先级设为2,普通乘客优先级设为3,以此为后面比较优先级并先出队最高优先级做准备。若点击“抢车票”按钮则实行以下操作:若抢票成功则将ticketlist 中的车位数减一,后SeqPQueue 优先级队列实现获取优先级最高的人,找到购票成功的人并将其数据从buylist 中删除,然后新建一行车次,姓名和等待状态为1 的数据。若getSeat()<0 则弹出“没有车位!”提示框。

3.6 顺序优先级队列算法设计

将等待抢票队列列表中(即未抢票且无车位)的用户通过append()方法入队,由于是顺序优先级队列,队列入队都是从队尾插入(入队)此处无需考虑假溢出问题。队尾rear=rear+1 即可。对于出队要考虑优先级问题现役军人(优先级为1)先出队,其次是学生(优先级为2),最后是普通人。利用getPriority()方法得到的1、2、3 数字进行比较,数越小,优先级就越大。找到优先级最高元素的位置并出队后,这个元素后面的元素下标都要减1,补齐空缺。最后返回输出优先级最大的用户的信息(即该用户抢票成功)。

4 界面测试实现效果

4.1 用户登录

输入用户:“admin”及密码:“123”即可登入该火车售票系统。登录后跳转到车票信息显示界面,如图1。

图1 车票信息显示界面

4.2 用户购票

用户选中图1 中显示的任意一行车次数据并点击“购买”按钮,即可出现购票用户信息为锁定该车次进行购票而进行的个人信息输入录入界面,如图2 输入的名为“小芳”的用户相关信息。

图2 购票用户信息录入界面

4.3 查看及退票

购票之后点击主界面并点击“查看”按钮则出现该车次用户购票状态:“1”表示抢票成功、“0”表示还未抢票(在队列中等待抢票的用户)。如图3。

图3 查看及退票

4.4 等待抢票队列

用户点击主界面“队列”按钮查看在等待购票队列中的个人信息如图4,点击“抢车票后”若该车次还有空位则显示“购票成功”,反之则“没有车位”。

图4 等待抢票队列

5 结论

该火车售票系统基于Java 编程语言,依据图形用户界面设计及面向对象程序设计的基本概念,该系统可满足用户实现一体化线上查票、购票、退票等,使购票管理体系更加智能化、高效化,为购票者带来更大的便利,极大提高了用户的体验感。

猜你喜欢

车次购票车票
调度集中系统车次号技术的研究
直击痛点的“候补购票”可多来一些
抢不到票?铁路候补购票服务扩大到全部旅客列车
网络购票时代 莫让农民工掉队
八月一日夜车次徐州口占
我是个“小车票迷”
送别诗
爱打洞洞的老爷爷