1.需求分析
1.需求描述
火车售票管理系统需要对旅客提供用户注册和维护信息的功能,并允许旅客查询车票、购买车票、改签和退票、查询本人车票详细信息等,需要对列车员提供查看某辆火车具体座位使用情况的功能,方便列车员查票、帮助乘客补票等等,此外,系统需要对管理员提供维护更新火车信息的功能,允许管理员增减火车班次、应对火车晚点等突发情况。值得注意的是,由于同一时刻使用人数众多,系统原则上要做到高并发。
2.功能描述
用户注册和信息维护功能:
用户信息应当包括账户、密码、电话号码和乘车人信息,允许一个用户添加多个乘车人,乘车人信息包括姓名、身份证号、优惠类型、手机号码、(可用状态),可用状态是考虑到例如老赖、逃犯等被运输公司禁止购票的情形。信息维护允许用户修改密码、电话号码、增删改乘车人信息。
购票功能:
旅客可以按“起点城市-终点城市,日期”查询该日车票表,表中允许按有无余票、车次类型、车组类型、席别类型、出发车站、到达车站、出发时间段和到达时间段来查询特定的车票,最好允许旅客进行中转查询。车票信息除前面提到的有无余票、车次类型……之外,还需要有车票最低价格、各席别余票数量等信息。购票时,需要旅客提供自己账号所绑定的乘车人信息,并在一定时间内完成支付,否则释放席位。
退票改签:
在满足要求的情况下(例如未开始检票),允许乘客退票和改签,退票即删除订单信息,改签在删除的基础上创建新的订单,只是价格变为“补齐差价”。
查询本人车票:
查询订单记录,订单记录比车票信息要增加订单号和具体座位。
乘务员查票、帮助补票、升席功能:
乘务员账号信息要包含员工号、服务的列车号以及基本个人信息,管理员可以更改乘务员服务的列车号,允许员工查询自己服务的列车的具体座位使用情况,可以从座位查询当前乘车人的身份证号、姓名等信息,可以帮助乘客升席和补票。
管理员系统:
管理员可以按身份证号封禁一些乘车人,可以调整乘务员的岗位,可以增减火车班次、维护更新火车信息、修改火车当前状况如晚点x分钟等等。
二更 :
用户表(USERS):
属性:账号(USER_ID),密码(PASSWORD),电话号码(PHONE)
主键:账号(USER_ID)
乘车人表(PASSENGERS):
属性:姓名(NAME),年龄(AGE),性别(SEX),身份证号(PASSENGER_ID),电话号码(PHONE),优惠类型(CONCESSION_TYPE),可用状态(IS_ACTIVE)
主键:身份证号(PASSENGER_ID)
用户—乘车人表(USER-PASSENGER):
属性:账号(USER_ID),身份证号(PASSENGER_ID)
主键:账号(USER_ID),身份证号(PASSENGER_ID)
外键:账号(USER_ID) 参照用户表(USERS) 账号(USER_ID)
身份证号(PASSENGER_ID)参照乘车人表(PASSENGERS) 身份证号(PASSENGER_ID)
车站表(STATIONS):
属性:车站名(STATION_NAME),所在城市(CITY),地址(ADDRESS)
主键:车站名(STATION_NAME)
列车表(TRAINS):
属性:列车号(TRAIN_ID),列车类型(TRAIN_TYPE),列车编组(NUM),担当路局(BU),列车长(CONDUCTOR)
主键:列车号(TRAIN_ID)
外键:列车长(CONDUCTOR)参照乘务员表乘务员号(TRAINMAN_ID)
列车类型(TRAIN_TYPE)参照列车类型表(TRAIN_TYPES)列车类型(TRAIN_TYPE_ID)
列车类型表(TRAIN_TYPES):
属性:列车类型(TRAIN_TYPE_ID),单组列车定员(MAX_PS),单组列车长度(LEN),餐车位置(ML),最高时速(KMH)
主键:列车类型(TRAIN_TYPE_ID)
列车—车站经过表(TR-ST_PASS):
属性:车站名(STATION_NAME),列车号(TRAIN_ID),开点(D_TIME),到点(A_TIME),停靠站台(PASS_PF),班次号(JOURNEY_ID)
主键:车站名(STATION_NAME),列车号(TRAIN_ID),到点(A_TIME)
外键:车站名(STATION_NAME) 参照车站表(STATIONS) 车站名(STATION_NAME)
列车号(TRAIN_ID) 参照列车表(TRAINS) 列车号(TRAIN_ID)
车站—车站基础价格表(ST-ST_PRICE):
属性:出发站(D_STATION),到达站(A_STATION),价格(PRICE)
主键:出发站(D_STATION),到达站(A_STATION)
外键:出发站(D_STATION),到达站(A_STATION) 均参照车站表(STATIONS)车站名(STATION_NAME)
班次表(JOURNEYS)
属性:班次号(JOURNEY_ID),延误时间(DELAY_TIME)
主键:班次号(JOURNEY_ID)
座位信息表(SEATS):
属性:列车号(TRAIN_ID),座位编号(SEAT_ID),席别(SEAT_TYPE)
主键:列车号(TRAIN_ID),座位编号(SEAT_ID)
外键:列车号(TRAIN_ID) 参照列车表(TRAINS)列车号(TRAIN_ID)
座位占用信息导出表(SEATS_OC):
属性:座位编号(SEAT_ID),班次号(JOURNEY_ID),占用开始站(BEGIN_OC),占用结束站(END_OC)
主键:座位编号(SEAT_ID),班次号(JOURNEY_ID)
外键:班次号(JOURNEY_ID) 参照班次表(JOURNEYS) 班次号(JOURNEY_ID)
座位编号参照座位信息表(SEATS)中对应的座位编号
作用:简化非常复杂的车票查询操作
订单表(ORDERS):
属性:订单号(ORDER_ID),乘车人身份证号(PS_ID),下单日期(DATE),班次号(JOURNEY_ID),座位号(SEAT_ID),下单人账户(USER_ID),支付状态(IS_PAYED)
主键:订单号(ORDER_ID)
外键:下单人账户(USER_ID) 参照用户表(USERS)账号(USER_ID)
乘务员表(TRAINMANS):
属性:乘务员号(TRAINMAN_ID),服务列车号(SERVE_TRAIN_ID),年龄(AGE),性别(SEX),姓名(NAME),职位(POSITON)
主键:乘务员号(TRAINMAN_ID)
外键:服务列车号(SERVE_TRAIN_ID) 参照列车表(TRAINS) 列车号(TRAIN_ID)
火车售票系统----ER模型图
水印没钱去不掉QAQ
GUI界面流以及与SQL数据库的简要交互