意外崩溃时数据的恢复等工作。同时系统还要保证对数据库进行及时更新,保证数据一致性。
二、详细设计
2.1 系统功能分析
该系统参考12306网上火车票订票官方客户端进行设计,并根据自己的变成和设计能力对其功能进行进一步简化,系统可分为四大模块:登录模块,用户根据自己身份的不同进行登陆;注册模块:没有账户的用户可以输入个人信息和有效证件号码注册一个帐号;普通用户模块,进行个人车票的查询和预定,对自己订单和信息进行管理;管理员模块,对车次、车票、站点和订单进行管理。通过身份识别判断账户信息并区别不通身份的用户。火车票网上订票系统简单、操作灵活、方便、反应快速、计算准确,系统运行稳定、安全可靠,而且有良好的交互界面,让使用者可以方便、快速地掌握。
2.1.1 登录功能分析
用户进入系统后根据身份的不同选择不同的身份进入系统,如果身份有误,则不能进入系统,在系统的主页上,用户登录之前可以查看车次信息,但不能进行预定和修改车次信息。
2.1.2 注册功能分析
没有账户的用户在注册功能模块可以注册一个有效的帐号,注册成功之后就可以登录系统进行车票预定。
用户可以根据需要进行注册,拥有账户后,可以根据自己的账户名和密码进行登录,进入系统之后,用户可以查看自己的订单和未完成订单,可以对已付款订单进行改签和退票。用户可以查看自己的个人资料,并可以对资料进行修改,用户可以为自己的账户进行充值,也可以修改登录密码。
2.1.4 管理员功能分析
管理员根据自己的用户名和密码登录进系统之后,可以对车次、车票。站点进行增删改查操作,还可以查看所有用户的订单,可以查看个人信息和修改密码。
2.2 系统模块设计
通过多系统的功能进行分析绘制出系统的模块图如下图所示:
信息管理 车次管理 站点管理 车票管理 个人信息管理 车票查询 车票订购 订单管理 程序运行以后进入主界面,点击登录可以进入登录子模块,用户根据自己的身份的不同,可以选择是普通用户还是管理员进行登录。
2.2.3 注册子模块
程序运行之后进入主界面,点击注册可以进入注册子模块,可以输入自己的有效信息进行注册,该注册模块只能进行普通用户的注册,管理员不能进行注册,管理员帐号应是系统管理人员添加的,该模块不能实现。
2.2.4 普通用户子模块
(1)车次查询模块:用户进入自己的主页之后可以点击余票查询,来获取自己想查询的车次信息,查询有两个方法,一是输入出发地、目的地和出发日期进行查询,二是可以输入出发地、目的地、出发日期和车次进行查询。 (2)车票预定模块:用户进行车票预定前应首先查询一下自己想要预定的车次的余票信息,然后进行点击车票,预定预定自己想要的订票。
(3)我的订单模块:用户可以查看自己所有的订单,可以查看自己未付款的订单,还可以对已付款的订单进行退票和改签。
(4)我的信息模块:用户可以查看并修改自己的个人信息,可以对账户进行充值,而且可以修改自己的密码。
2.2.5 管理员子模块
(1)信息管理模块:在该模块,管理员可以查看该系统中所有的订单信息,可以查看已完成订单和未完成订单信息。管理员也可以查看个人信息以及修改密码。
(2)车次管理模块:管理员可以查看系统中的所有车次,可以增加车次,可以删除没有余票的车次,可以修改车次信息。
(3)车票管理模块:管理员可以查看所有车票、查询已被订车票、未被订的车票,以及可以按车次查看车票信息。管理员还可以添加车票,先选择需要添加车票的车次,再选择座位类型,对该车次添加车票后会将相应的车次的相应座位的余票进行增加。管理员还可以修改和删除车票,相应的修改和删除过车票之后,该车票对应车次的余票都要进行相应的修改。
(4)站点管理模块:管理员可以查看所有站点,也可以增加站点,可以删除没有车次的站点,也可以修改站点信息。
2.3 详细设计
系统的设计总共分为登录模块设计、注册模块设计、普通用户模块设计和管理员模块设计四部分,以下是对各模块的详细介绍:
2.3.1 登录模块设计
用户选择自己的身份,然后输入用户名和密码,后台代码连接数据库查找该用户输入的信息是否可以找到,如果可以找到则该用户可以登录到自己的主页,否则就停留在此页面无法登录。
2.3.2 注册模块设计
打开注册页面之后可以输入自己的有效用户名和密码注册一个账号,后台代码连接数据库往数据库里面插入一个新的用户信息,如果注册成功,则该用户立即可以登录到自己的主页进行车票查询和预定。如果注册失败,则系统继续停留在此页面并提示用户注册失败。
2.3.3 普通用户模块设计
(1)普通用户登录到自己的主页面之后可以进行余票查询,这时候系统会根据用户输入的有效信息从数据库里面检索车次信息并把车次的余票信息显示出来。用户进行车票预定时,用户可以输入需要预定的车次号、座位类型以及自己的有效信息进行预定,点击提交订单之后,系统会为用户生成一张未付款的订单,并从车次的余票信息中把相应的座位类型的车票数量减一,用户提交订单之后进入确认订单页面,如果用户选择重新预定,系统会把刚刚生成的订单删除并把车次的余票信息恢复原状,并跳转到车票预定的界面进行重新预定。如果用户选择取消订单,则会直接删除该订单,并把车次余票信息还原。如果选择网上之后,系统会先查询用户的余额信息,如果用户的余额多余该订单的票价,则会从用户的账户中直接扣除票价,并把该订单的状态改为已付款。
(2)用户可以在自己的主页面查看自己的所有订单信息和未完成订单信息,并且可以对付款的订单进行退票和改签,退票以后,系统会自动删除该订单,并把系统中对应的车票状态改为未被订,也会把对应车次的余票信息进行更
改。改签之后也会把就该订单删除,把车次和车票的信息进行修改,并跳转到预定车票页面重新进行车票预定。
(3)用户在自己的主页面查看自己的资料,并可以对资料进行修改,用户不可以修改用户名,因为用户名是用户的唯一标识,系统中不存在同名的用户,而且用户名是用户注册时已确定的,所以不能予以更改权限,但用户可以对自己的其他信息进行更改,以及时更新自己的最新的有效信息。用户还可以在主页面进行账户充值,账户充值就是更新自己信息的账户余额,把数据库中的余额信息增加。用户还可以进行修改密码,把数据库中已存在的密码换成自己想要重新设定的密码。
2.3.4 管理员模块设计
(1)管理员可以对系统进行信息管理,包括对系统中所有订单、已完成订单和未完成订单的查询,根据管理员选择的查询条件,分别从数据库中检索出相应的订单信息。因为订单是用户自己管理的,所以管理员没有权限对用户的订单进行增加、修改和删除权限。管理员还可以对自己的个人信息进行管理,如查看个人信息和修改密码,将自己的新密码更新到数据库中。 (2)管理员可以对车次进行管理,管理员可以查看系统中的所有车次,查看车次时,连接数据库从数据库中检索所有的车次信息。管理员还可以增加车次,往数据库的车次中添加新的车次,添加车次时应注意,车次的始发站和终点站依赖站点的站点号,所以始发站和终点站的站点号必须是已经存在的站点,而且添加车次时不能给该车次添加余票,因为车票的添加功能在车票的管理中,该车次的余票默认为零。管理员可以删除车次,并且删除的车次必须是没有余票的车次,如果有余票信息的话,因为车票的车次编号对其有依赖关系,所以会导致删除失败。管理员可以修改车次信息,先从列表中选择要修改的车次号,然后对车次信息进行修改并更新到数据库。
(3)管理员可以对车票进行管理,管理员可以查看系统中的车票信息,可以查询所有车票信息,也可以查询已被订和未被订的车票信息,同时还可以按照车次查看该车次的车票信息。管理员可以添加车票,从列表中选择好需要添加车票的车票和座位类型后就可以往数据库中对车票表中添加一张车票,同时将相应车次的相应座位类型余票进行添加。管理员还可以进行车票的删除,删除一张车票以后会将该车票对应的车次信息的余票也进行修改。管理
员还可以对车票进行修改,从列表中先选择要修改的车票编号,再选择修改过后的座位类型、车票价格、出发地和目的地,修改过该车票之后会把车次信息的余票情况进行修改。
(4)管理员可以对站点信息进行管理,管理员可以查询系统中的所有站点,也可以增加新站点,管理员可以对站点信息进行删除,但是只能删除对它没有依赖车次的站点,如果站点中有车次对它依赖,则该站点无法删除,管理员还可以修改站点信息,从列表中选择相应站点的编号,然后可以更改站点的名称,并把新的站点信息更新到数据库中。
三、数据分析与设计
3.1 数据库介绍
数据库是指自描述的完整记录的集合。它除了包含用户的源数据外,还包含关于它本身结构的描述。
数据库设计是建立数据库及其应用系统的技术,是信息系统开发和建设中的核心技术,具体说,数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求。合理的数据库结构设计可以提高数据存储的效率,保证数据的完整和一致。另外,合理的数据库结构将非常有利于程序的实现。数据库设计(Database Design)是指根据用户的需求,在某一具体的数据库管理系统上,设计数据库的结构和建立数据库的过程,就是规划和结构化数据库中的数据对象以及这些数据对象之间关系的过程。
1.数据库设计的一般性原则
第一个基本规则:对于每一个要存储其信息的实体(或事物),我们都应该给他一个自己的表;
第二个处理规则:如果你需要在一个列中存储多个值,那证明你的设计可能是有缺陷的。
简单的数据关系:一对一;一对多;多对一;多对多
在数据库的设计中:要做到数据规范化、完整性、数据冗于和规范实例化。
在整个设计过程中,我们必须按步骤认真完成。