数据库课程设计——火车售票

题目简述
火车票售票系统

  • 车次管理(车次,起止地点,到达时间,开车时间)
  • 坐席管理(车厢号,座位号)
  • 售票(直达,换乘)改签,退票
  • 余票查询
  • 订单查询
  • 用户管理

开发环境与技术

  • 开发工具
    工具:WebStorm ,IntelliJ IDEA
    Mysql8.0.12 Tomcat 8.0 Maven Git Redis
  • 前端技术栈
    HTML+CSS+Javascript
    前端框架:Vue.js+ElementUi
  • 后端技术栈
    Spring Boot为框架
    MyBatis操作数据库
    Redis进行用户信息缓存
    Maven作为项目构建工具

需求分析

  1. 用户登录注册
    用户注册登陆后可以使用系统的所有功能,如添加乘客,购买车票,查询订单等等

  2. 系统需要提供基础的列车信息查询:
    根据车次查询列车是否正常运行,以及查看列车的基本信息(如列车类型,始发站,终点站,开车时间,到达时间,运行时间,车厢数等等)
    根据车次,查询列车经停站信息(包含这趟列车每一个经停车站的车站名,到达时间,开车时间,运行时间等信息)

  3. 系统需要提供根据车次查询列车详细信息的功能:
    根据始发站和终点站,查询可以满足自己行程要求并且正常运行的列车(可以根据开车时或者运行时间进行排序),并且可以进一步查看中间经过的的车站信息,以及开车时间,到达时间等。
    系统需要提供接续换乘一次的查询,根据输入的出发站和终点站,可以查询换乘一次满足条件的列车,并且可以根据开车时间或总运行时间进行排序。

  4. 车票购买
    在查询到符合自己出行条件的列车后,可以查询列车的剩余座位以及购买车票。
    首先添加乘客(添加需要购买车票的乘客)——>进行座位选择(为每一位乘客选择座位)——>订单支付——>购票成功
    接续换乘车票购买流程类似,只不过在选座时,需要选择两趟列车的座位。

  5. 系统需要提供用户的个人信息修改功能以及修改密码功能。

  6. 用户可以给除自己以外别的乘客购买车票,所以提供添加乘客的功能,每个用户下都可以添加多个乘客,从而为别的乘客购买车票。

  7. 系统提供订单的查询功能,可以查询到与自己有关的所有订单,比如所有订单,未支付订单,未出行订单。

  8. 未支付订单针对下单但是没有支付的订单,可以在规定的时间内进行支付操作,如果在规定时间内没有完成操作,则订单会作废,变成未完成支付的订单。

  9. 未出行订单针对已经支付但是没有出行的订单,可以在未出行订单中查看自己的出行计划。未出行订单可以进行改签操作,改签相同出发站和终点站的其他列车。

  10. 未出行订单还可以进行退票操作,从而取消订单。

数据库概念设计
本系统中一共6个实体集,分别是,用户实体,乘客实体,列车信息实体,列车经停信息实体,订单实体,列车座位信息实体

(1)用户实体:
保存注册系统的用户的信息,主码为用户电话号码,用来作为每一个用户的唯一标记,同时电话号码也作为登录系统的用户名来使用。其中存在用户自定义的完整性约束:用户类型(0为学生,1为成人,2为管理员),性别(0为女性,1为男性)

在这里插入图片描述

(2)乘客实体:
每个用户下可以添加多个乘客信息,然后为多个乘客购票。

在这里插入图片描述

(3)列车信息实体:
列车信息存储了列车整体信息,每一趟列车都有一条自己的总的列车信息,表示这趟列车是正常运行,或者是停开的。列车编号作为列车的主码(由于列车编号相同的列车,由于开车方向的不同,在途中可能改变车次,但是列车编号是固定不变的)
在这里插入图片描述

(4)列车经停信息实体:
每个列车都有经停信息表,存储了列车停靠的不同车站,以车站编号排序。
在这里插入图片描述

(5)列车座位信息表,为了简化系统设计的难度,统一固定车次为D,G开头的列车设置特等座,一等座和二等座三个座位类型,其他类型的车设置软卧,硬卧,硬座三个座位类型。并且如果座位类型相同,则车厢的座位数以及布局是相同的。比如:特等座一节车厢18座,一排2座,一等座一节车厢52座,一排4座,二等座一节车厢85座,一排5座。软卧一节车厢36个位置,一列2个位置,分为上下铺。硬卧一节车厢66个位置,一列3个位置,分为上中下铺。硬座一节车厢120个位置,一排6个座位。
列车座位信息的主码为列车编号,车厢编号。外码为列车编号,参照列车信息实体。
当车厢号固定时,说明座位类型已经固定,具体的位置是根据座位号对于相应一排的座位数求模运算得到的,比如特等座5号为5/2 +1 =3 3排
5%2 = 1 A座

在这里插入图片描述

(6)订单信息实体:
存储了系统中所有的订单信息,订单信息实体的主码为订单编号,外码为用户电话号码(用户实体主码),乘客身份证号码(乘客实体主码),列车编号(列车信息主码).

在这里插入图片描述

整体E-R图为:

在这里插入图片描述

在这里插入图片描述

 说明:
 (1)每个用户可以添加多个乘客
 (2)每个用户可以拥有多个订单
 (3)每个订单属于一个乘客
 (4)每个订单拥有一趟列车的信息
 (5)每个订单拥有一个列车的座位信息
 (6)每个订单拥有两个列车经停的车站信息
 (7)每个列车有多个经停的车站
 (8)每个列车拥有多个车厢的座位信息

E-R图向关系模式的转化

1)实体转化为关系模式
 用户(电话号码,密码,身份证号,邮箱,真实姓名,用户类型,性别,地址)
 乘客(乘客身份证号,乘客真实姓名,乘客电话号码,乘客类型,地址)
 列车信息(列车编号,车次,列车类型,列车车厢数,列车始发站,列车终点站,列车开车时间,列车到达时间,列车到达日期,列车运行时间,列车状态)
 列车座位信息(编号,车厢号,座位类型,座位数)
 列车经停信息(车次,车展编号,车站名,到达时间,总运行时间,开车时间)
 订单信息(订单编号,出发站编号,到达站编号,车厢号,座位编号,订单创建时间,订单状态,开车时间)
 (2)联系转化为关系模式
 用户拥有乘客(用户电话号码,乘客身份证号码)
 用户拥有订单(用户电话号码,订单编号)
 乘客拥有订单(乘客身份证号码,订单编号)
 订单拥有列车(订单编号,列车编号)
 订单拥有座位(订单编号,车厢号,座位号)
 列车信息拥有列车经停站信息(列车编号,车次,车站编号)
 列车拥有座位(列车编号,车厢号)
 (3)实体与联系进行合并,E-R图中的一对一与一对多的联系,通过参照完整性与关系模式进行合并,并进行一定修改,合并。
 用户(电话号码,密码,身份证号,邮箱,真实姓名,用户类型,性别,地址)
 乘客(用户电话号码,乘客身份证号,乘客真实姓名,乘客电话号码,乘客类型,地址)
 列车信息(列车编号,车次,列车类型,列车车厢数,列车始发站,列车终点站,列车开车时间,列车到达时间,列车到达日期,列车运行时间,列车状态)
 列车座位信息(列车编号,车厢号,座位类型,座位数)
 列车经停信息(列车编号,车次,车站编号,车站名,到达时间,总运行时间,开车时间)
 订单信息(订单编号,用户电话号码,乘客身份证号码,列车编号,出发站编号,到达站编号,车厢号,座位编号,订单创建时间,订单状态,开车时间)

数据库逻辑设计

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山语山

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值