python飞机票预定系统_数据库课程设计 - 机票预订系统

一、机票预定系统

1.1 题目要求

要求具备如下基本功能

班机基本信息的管理;

航班信息的管理;

旅客预定机票、取消预约、付款取票、退票的管理;

查询航班信息、航班预定情况、旅客信息,计算航班满座率。

统计每周、每月,每年营业收入情况。

1.2 开发环境

语言:Python 3.5

框架:Django 1.10.6

前端设计:HTML, CSS, JavaScript

开发环境:PyCharm

二、需求分析

2.1 具体需求

为方便旅客出行,某航空公司(CSU Airlines)拟开发一个机票预定系统。旅客可通过网上订票平台查询公司航班情况,通过输入起飞地、目的地、起飞时间等信息系统为旅客安排航班,旅客可根据自身需要,按照起飞时间和机票价位来选择航班。订票成功之后,系统为旅客生成订单信息,旅客可以再个人信息页面查看自己的订票信息,并且可以向系统提出退票要求,系统针对具体情况计算手续费后进行相应退票处理。

2.2 功能分析

(1)用户界面

查询:用户对航班信息进行查询操作;

排序:用户根据自己的需求对查询结果进行排序筛选;

订票:对用户订票需求进去处理并记录旅客预定信息和更新数据库信息;

退票:对用户退票需求进行处理并更新数据库;

查看个人信息:用户查看自己的个人票务信息

帮助:提供系统使用帮助文档;

退出:关闭当前页面。

(2)管理员界面

航班信息管理:可对航班信息进行增删改查操作;

旅客信息管理:可对旅客信息进行增删改查操作;

财务信息管理:可以统计航空公司每周、每月,每年营业收入情况。

帮助:提供系统使用帮助文档;

退出:关闭当前页面。

2.3 系统主功能图

机票预订系统主功能图

2.4 系统数据流图

机票预订系统数据流图

三、逻辑设计

3.1 ER图

航班和旅客间ER图

3.2 数据库表

(1)航班信息表

(2)旅客信息表

旅客信息表继承了 Django 模板中默认的 User 类,所以有一些继承来的别的字段,我们的 Passenger 对象只需要 id,username,password 即可。

(3)实体间多对多关系

通过在两表之间建立一张新表的方式,将 booksystem_flight 表和 auth_user 表的主键联系在一起,实现了多对多关系。

四、功能设计

本系统采用的 Python + Django + Sqlite 的设计方法,后台功能写在 views.py 文件中。

4.1 用户模块

4.1.1 订票模块

在用户订票的过程中,首先判定用户是否登录,如果没有登录,就加载登录页面;如果用户已经登陆了,通过前端用户选择的航班传入flight.id,然后判断如果用户已经订过这次航班,就反馈冲突信息,如果没有,订票成功,数据库更新,显示订票成功页面。

# 免除csrf

@csrf_exempt

def book_ticket(request, flight_id):

if not request.user.is_authenticated(): # 如果没登录就render登录页面

return render(request, 'booksystem/login.html')

else:

flight = Flight.objects.get(pk=flight_id)

# 查看乘客已经订购的flights

booked_flights = Flight.objects.filter(user=request.user) # 返回 QuerySet

if flight in booked_flights:

return render(request, 'booksystem/book_conflict.html')

# book_flight.html 点确认之后,request为 POST 方法,虽然没有传递什么值,但是传递了 POST 信号

# 确认订票,flight数据库改变

# 验证一下,同样的机票只能订一次

if request.method == 'POST':

if flight.capacity > 0:

flight.book_sum += 1

flight.capacity -= 1

flight.income += flight.price

flight.user.add(request.user)

flight.save() # 一定要记着save

# 传递更改之后的票务信息

context = {

'flight': flight,

'username': request.user.username

}

return render(request, 'booksystem/book_flight.html', context)

4.1.2 查询模块

前端表单接收用户传入的出发地、目的地和出发时间,然后在航班数据库中寻找满足条件的航班,分两步:

寻找出发地和目的地相同的航班;

寻找航班出发日期与旅客出发日期相同的航班。

为了给用户良好的体验,满足条件的航班信息按照不同的 key 值(起飞时间、降落时间、机票价格)进行升序排列。

<
  • 6
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值