火车订票管理信息数据库设计.docx
《火车订票管理信息数据库设计.docx》由会员分享,可在线阅读,更多相关《火车订票管理信息数据库设计.docx(30页珍藏版)》请在冰豆网上搜索。
火车订票管理信息数据库设计
一、课题背景与意义…………………………………………………………………1
1.1概述…………………………………………………………………………1
1.2意义…………………………………………………………………………1
1.3数据库优势…………………………………………………………………1
1.4开发环境……………………………………………………………………2
二、需求分析…………………………………………………………………………3
2.1业务需求分析………………………………………………………………3
2.2功能需求……………………………………………………………………3
2.3数据需求……………………………………………………………………4
2.4性能需求……………………………………………………………………5
三、系统总体设计……………………………………………………………………6
3.1系统组成……………………………………………………………………6
3.2数据库设计…………………………………………………………………7
3.2.1概念结构设计…………………………………………………………7
3.2.2逻辑结构设计…………………………………………………………8
3.3物理结构设计……………………………………………………………9
3.3.1确定数据库的存储结构……………………………………………10
3.3.2调试分析……………………………………………………………10
3.4数据库模式定义…………………………………………………………20
四、系统详细设计与实现…………………………………………………………21
4.1模块简述…………………………………………………………………21
4.2模块设计…………………………………………………………………21
五、结束语…………………………………………………………………………32
六、参考文献………………………………………………………………………34
一、课题背景与意义
1.1概述
信息时代已经来临,信息处理的利器——计算机应用于火车站售票的日常管理为火车站售票的现代化带来了从未有过的动力和机遇,为火车站票务管理领域的飞速发展提供了无限潜力。
采用计算机管理信息系统已成为火车站票务管理科学化和现代化的重要标志,给火车站票务带来了明显的经济效益和社会效益。
采用数据技术建立的管理系统不仅能提高出售/预定车票的效率,还能减少错误发生的概率,方便用户的查询订购车票。
降低工作人员的工作量,避免购票人员在车站无效的等票,可以调高购买者买到票的机率,这样的作用在春运期间最为显著,因为在春运的时候车站里许多人是在无效的等票,不仅造成车站里人员管理的困难,还使本可以买到票的人无辜浪费时间在侯票上。
目前火车票的订购仅仅依靠手工操作,已现有的工作人员很难应付车票订购高峰时刻的大量数据处理问题,同时还会出现由此带来的旅客查询问题,导致火车误点情况。
本次设计拟开发一个火车票订购系统,可以降低人工操作,提高工作效率,同时方便乘客查询订票。
1.2意义
火车票订购一直是困扰我们的一个老问题,也是社会服务的一个难点,订票的查询以与车票信息的查询时期一个最基本的业务,从便面上看,这只是一个最简单的部分,但是它涉与到管理以与客户服务的多个方面,因此设计了本火车票订购系统来实现票务的查询。
1.3数据库优势
数据库管理的特点很多,它比传统的数据管理拥有很多优点。
以下就是数据库的优势。
一、数据结构化。
所谓“整体”结构化是指在数据库中的数据不再仅仅针对某一个应用,而是面向全组织的;不仅数据内部是结构化的,而且整体也是结构化的,数据之间是有联系的。
二、数据的共享性高,冗余度低,易扩充。
数据共享可以减少数据的冗余,节约存储空间。
数据共享还能够避免数据之间的不相容性和不一致性。
三、数据独立性高。
包括物理独立性和数据的逻辑独立性。
物理的独立性是指用户的应用程序与存储在磁盘上的数据库中的数据是相互独立的。
逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的。
四、数据是由统一管理和控制的。
包含
(1)数据的安全性保护
(2)数据的完整性检查(3)并发控制(4)数据库恢复
1.4开发环境
工具软件利用2007和 2000数据库来开发这个火车票订购系统
二、需求分析
在构造系统时,首先从需求出发构造数据库表,然后再由数据库表结合需求划分系统功能模块。
这样,就把一个大的系统分解成了几个小系统,使整个系统的功能更加详细易于理解,同时易于实现系统的整体设计。
本系统分为二个功能,分别是用户管理和车次/车票管理,其所能实现的功能:
1、实现用户登录、用户添加。
2、实现对车次的删除和车次基本信息的添加。
3、实现售票的基本管理。
4、实现对车次基本信息的查询。
2.1业务需求分析
从实际角度出发,对于用户要提供方便快捷的车票查询和订票服务,对于车站工作人员,则是要能够方便明朗的对车次信息进行增删修改操作和车票的订售操作,提高车次的编组效率,是车次资源得到充分利用,并可以提高车票的出售效率降低工作人员的工作量。
2.2功能需求
在数据操作界面需要有用户登录窗口和车次信息操作窗口,这需要有实现用户登录的功能和车次查询、添加、车票出售的功能。
这是火车订票系统的基本功能,只有实现了这几个功能一个火车订票系统才能开始运作,在本系统中实现了用户的登录添加和车票的基本信息操作。
功能列表
编号
功能名称
功能说明
1.1
用户登录
用户输入用户名和密码登录系统
1.2
用户添加
增加用户和对所添加的用户权限进行设定
2.1
添加车次
添加车次的基本信息
2.2
删除车次
删除车的基本信息
3.1
售票
对车票销售/预定的操作
4.1
车次查询
对车次基本信息的查询
2.3数据需求
系统处理的对象有:
用户信息:
用户名、用户密码、用户权限。
车次信息:
车次号、票价、起始站、目的站、开车时间、到站时间、实时座位数。
系统处理如图:
2.1系统底层数据流图
2.2用户系统与车次信息系统间数据流图图
数据项名
数据项含义
存储结构
1
用户名
(30)
2
登录密码
(30)
3
用户权限
(30)
4
车次号
(30)
5
票价
(8)
6
座位数
(4)
7
起始站
(30)
8
目的站
(30)
9
发车时间
(30)
10
到站时间
(30)
2.3数据字典
2.4性能需求
为了保证系统能够长期、安全、稳定、可靠、高效的运行,本系统应该满足以下的性能需求。
1.准确性和与时性
系统处理的准确性和与时性是系统的必要性能。
系统应能与时而且准确的根据用户权限与所输入的信息做出响应。
由于本系统的查询功能对于整个系统的功能和性能完成举足轻重。
作为系统的很多数据来源,而车票的数量和时间又影响用户的决策活动,其准确性和与时性很大程度上决定了系统的成败。
在系统开发过程中,必须采用一定的方法保证系统的准确性和与时性。
2.安全性
网上订票系统中涉与到的数据是客运公司相当重要的信息,系统要保证用户的权限,对于车次等信息用户只享有查询服务,不得更改;系统还要提供方便的手段供系统维护人员进行数据备份、日常安全管理、以与系统意外崩溃时数据的恢复等工作。
同时系统还要保证对数据库进行与时更新,保证数据一致。
三、系统总体设计
3.1系统组成
系统开发的总体目标是实现火车票订/售票管理的系统化和自动化,保证车票售出和车次信息管理的正确无误,确保车票和车次管理的有效。
在本系统中分为两个子系统,分别是用户子系统和车次信息子系统,主要任务是对用户信息、车次信息、车票信息等操作与外理。
本系统为结构、运行平台为微软6.0以上版本。
以与2000以上版本。
下图3.1为系统功能结构图:
3.1功能模块图
3.2数据库设计
3.2.1概念结构设计
概念设计阶段主要是将需求分析阶段得到的用户需求抽象为信息结构(概念模型)的过程。
根据之前的分析,数据库应该主要的实体有用户和车票信息。
经过分析得到的实体关系图、图如下:
火车票订购图
3.2.2逻辑结构设计
逻辑结构的任务就是把概念结构设计阶段设计好的基本图转化为与选用产品所支持的数据模型有相符合的逻辑结构。
将上图的图转化为以下的关系模型。
关系的码用横线标出。
用户(身份证号、用户名、性别、电话)
订票信息(订单号、身份证号、车号、发车时间、订购日期、订购票数)
车次(车号、发车日期、出发地、目的地、开出时刻、到达时刻、剩余票数、票价、座位类型)
以上是实体以与其属性。
查询(身份证号、车号、发车日期、查询方式)
订票(订单号、订票方式)
退票(订单号、退票方式)
以上是联系与其属性。
火车站网上订票系统数据库中各个表格的设计结果如表2.1——表2.6所示。
每个表格表示在数据库中的一个表。
表2-1车次信息
字段名
数据类型
是否可空
说明
车号
(10)
(主键)
出发地
(20)
目的地
(20)
发车日期
(主键)
开出时刻
到达时刻
剩余票数
票价
(10)
表2-2订票信息
字段名
数据类型
是否可空
说明
订单号
(10)
(主键)
身份证号
(18)
(外键)
车号
(10)
(外键)
发车日期
(外键)
订购日期
订购票数
总价
表2-3用户表
字段名
数据类型
是否可空
说明
身份证号
(20)
(主键)
用户名
(20)
性别
(2)
电话
(20)
表2-4订票表
字段名
数据类型
是否可空
说明
订单号
(20)
(主键)
订票方式
(20)
表2-5退票表
字段名
数据类型
是否可空
说明
订单号
(20)
(主键)
订票方式
(20)
表2-6查询表
字段名
数据类型
是否可空
说明
身份证号
(20)
(主键)
车号
(10)
(主键)
发车日期
(主键)
查询方式
(20)
3.3物理结构设计
数据库在物理设备上的存储结构与存取方法称为数据库的物理结构,它依赖于选定的数据库系统。
对于数据库查询事务,需要得到如下信息:
●查询的关系。
通过连接查询可以将车次和用户之间互联;通过订票和退票可以将用户和订票信息互联,从而将每个表联系在一起,构成一个相关联的数据库。
●查询条件所涉与到的属性。
查询涉与到的属性是(身份证号、车号、发车日期);订票涉与到的属性是(订票号);退票所涉与到的属性(订票号)。
●连接条件所涉与到的属性(身份证号、订单号、车号-发车日期、订单号)。
对于数据更新,需要得到如下信息:
●被更新的关系。
●每个关系上的更新操作条件所涉与的属性。
●修改操作要改变的属性值。
需要注意的是,数据库上运行的事务会不断的变化、增加或减少,以后需要根据上述设计信息的变化调整数据库的物理结构。
3.3.1确定数据库的存储结构
1、确定数据的存放位置
存放于C盘,并且分配2M的空间,而且文件的存储空间可以随着数据库的增大而增大,即文件增长不受限制。
文件的增长按百分比进行,增长百分比为10%。
2、确定系统配置
数据库可以公共访问,可以打开任意个数据库对象,内存分配高于2M的内存空间。
3.3.2调试分析
在原有系统的数据有一小部分已经输入到了数据库后,就可以开始对数据库系统进行联合调试,这又成为数据库的试运行。
运行前先要对数据库进行备份,如下:
再进行简单的数据库操作,如:
建立基本表
语句为:
订票信息
(订单号(10),
身份证号(20),
车号(10),
发车日期,
订购日期,
订购票数,
总价,
(身份证号)用户(身份证号),
(车号)车次(车号),
(发车日期)车次(发车日期));
运行结构截图:
其余的建表类似,在此不一一列举。
修改基本表
①向用户表增加“地址”列,数据类型为字符串型
语句为:
用户地址(20);
运行结构截图:
②将用户表中的电话的数据类型改为变长字符串型
语句为:
用户电话(20);
运行结果截图:
数据查询
①查询身份证号为3773462的个人信息,语句为:
*
用户
身份证号=3773462;
②查询全体用户的身份证号,语句为:
用户名,身份证号
用户;
运行结果截图:
③查询车票价格低于100元的车次:
语句为:
车号
车次
票价<100;
运行结果截图为:
④查询王姓客户的信息
语句为:
*
用户
用户名'张%';
运行结果截图:
⑤按总票价的升序将订单号排列
语句为:
订单号,总价
订票信息
总价;
运行结果截图:
⑥查询从北京出发的所有车次的总票价
语句为:
(票价)
车次
出发地='北京';
运行结果截图:
⑦求乘坐车号大于一次的车号
语句为:
车号
订票信息
车号
(*)>=2;
运行结果截图:
⑧连接查询:
查询身份证号为216972195412194262乘客的车次信息
语句为:
车次.*
用户,车次,查询
用户.身份证号=查询.身份证号
车次.车号=查询.车号
车次.发车日期=查询.发车日期
用户.身份证号='216972195412194262';
⑨嵌套查询:
查询与李明同乘一列火车的旅客的身份证号
语句:
身份证号
订票信息
车号
(车号
订票信息,用户
订票信息.身份证号=用户.身份证号
用户名='李明');
数据更新
①插入数据
向车次表添加一组数据:
“T26”、“2010-12-15”、“青岛”、“北京”、
“22:
10”、“次日06:
54”、“硬座”、42、118,语句为:
车次
('T26',2010-12-15,'青岛','北京',
'22:
10','次日06:
54',42,118,'硬座');
运行结构截图:
‘
②修改数据
由于雪天路滑将发车日期为2010-12-13车次为T25的到达时可改为次日09:
20
语句为:
车次
到达时刻='次日09:
20'
车号='T25'
发车日期='2010-12-13';
③删除数据
乘客348742196610025432由于个人原因不能乘坐当日车次,他选择退票,请为其删除信息记录。
语句为:
用户
身份证号='348742196610025432';
订票,订票信息
订票.订单号=订票信息.订单号
身份证号='348742196610025432';
运行结果截图:
运行结果中已经不含乘客348742196610025432的信息了
视图
①建立选择用网络查询车次用户的视图。
语句为:
身份证号
查询
查询方式='网络';
②更新视图
将身份证号为3773462的乘客改为3777611
语句为:
身份证号='377611';
③删除视图
语句为:
;
总之,视图的操作与表的操作基本一致,在此不必赘述。
经过一系列验证数据库的调试正常,可以进行数据库的操作。
3.4数据库模式定义
列名
数据类型
取值约束
可否为空
说明
(30)
可
车次号
(30)
可
起始站
(30)
可
目的站
(30)
可
发车时间
(30)
可
到站时间
(8)
可
票价
(4)
可
实时座位数
四、系统详细设计与实现
4.1模块简述
本火车管理系统重要的所有模块主要是分为用数据库的类三个部分,下面对三个个部分进行再分类,共有9个模块。
模块类别
模块编号
模块名称
公共模块
模块功能
用户
T——1
用户登录模块
T——2
添加用户
车次信息
T——3
查询车次
T——4
插入车次
T——5
T——6
删除车次号
T——7
售票
T——8
连接模块
T——9
连接数据库
4.2模块设计
下面给出模块的背景,设计思路,算法,界面以与关键代码,比较简单的模块就仅给界面设计以与算法设计,比较复杂的模块会给出相应的数据库有关触发器,存储过程和视图的设计。
而本系统重的模块主要有一下几个:
1、用户模块
模块是公共模块,车次信息和连接模块也用到,模块。
类是为系统用户表创建的一个类:
要利用访问数据库,类的成员变量对应表的列,类的成员函数对应表的操作。
但本系统不是为每一个表都创建了类。
1、其页面设计:
给用户一个好的登录界面,提供友善的人机界面,为用户的使用提供方便。
同时也是为后面用户操作其他功能提供了权限依据,避免出现用户权限的不确定造成整个系统不同模块的错误操作,使整个订票业务遭到破坏。
用户模块代码:
()
{
:
(1);
("""")
{
("请填好用户名或密码!
");
}
{;
()调试
;
"*'""%''""%'";
;
();
();
(>0)记录集没有移动到最后
{
("登入成功");
()->();
}
(>0)
{
()->();
}
();
();
}
}
2、车次信息模块
车次添加实现了车次能跟上需求的变化,使得系统管理员能根据需要添加车次,让售票员能为购买者提供优质的服务。
车次添加程序:
()
{
:
(1);
(""&""&""&""&""&"")
{
("请完善空格");
}
{
;
()调试
;
"('""','""','""','""','""',20,'""')";
"('""','""','""','""','""','""')";
()
;
();
();
("插入成功");
();
();
}
}
3、删除车次
删除车次的操作是对添加车次操作的补充,有了删除操作才能让车次添加车次顺利的执行。
删除车次代码:
()
{
:
(1);
;
()调试
;
"'""'";
;
();
();
("删除成功");
();
();
}
4、车票出售/预定
在这个部分模块中可以实现对不同车次车票的出售/预定功能,并且在页面对话框中能知道车次的实时信息,以便确定该车次的车票还能不能向外面出售或预定。
车票出售/预定代码:
(*)
{
();
{{()
:
}}
}
(,)
{{()
:
}}
()
5、车次查询
此模块是面向用户使用的,用户在购买或预定车票前可以通过该对话框页面实现不同车次在不同站之间的详细查询,可提高用户得到票的概率,提高用户在购买或预定票的效率。
车次查询:
()
{
(1);
0;
;
清原来的列表纪录
;
();
();
;
利用数据库,重新填充纪录
"'""'";
"'""%'";
"*'""%'";
根据记录集,填充列表框
("""""")
{
("请填写车次或起始和终点站");
}
("""""")
{
="*'""'";
;
();
(>0)记录集没有移动到最后
{
(j,(*)()>(""));
(,1,(*)()>(""));
(,2,(*)()>(""));
(,3,(*)()>(""));
(,4,(*)()>(""));
(,5,(*)()>(""));
(,6,(*)()>(""));
下移一条记录
>();
}
();
}
("""""")
{
="*'""''""''""'";
;
();
(>0)记录集没有移动到最后
{
(j,(*)()>(""));
(,1,(*)()>(""));
(,2,(*)()>(""));
(,3,(*)()>(""));
(,4,(*)()>(""));
(,5,(*)()>(""));
(,6,(*)()>(""));
下移一条记录
>();
}
();
}
("""""")
{
="*'""''""'";
;
();
(>0)记录集没有移动到最后
{
(j,(*)()>(""));
(,1,(*)()>(""));
(,2,(*)()>(""));
(,3,(*)()>(""));
(,4,(*)()>(""));
(,5,(*)()>(""));
(,6,(*)()>(""));
下移一条记录
>();
}
();
();
}
{
("请完善对话框");
}
}
五、结束语
经过近三周的课程设计,我们学到了很多东西。
在以前我们没有亲手建立过数据库,在这一实践中我们学习到了数据库的建立方法和通过建立数据库模块的技巧。
虽然说过程的艰难的,但是学习到的东西让我们感到很欣慰。
在建立数据库框架的时候,遇到了一个很麻烦的问题就是不知道怎样设定函数与数据库文件之间的联系,在添加函数程序时还需要考虑到和数据库文件的连接问题。
在设置连接方面的确是这一次设计数据库的一大难点,看别人做的程序也不怎么懂,在同学的帮助下最终把程序弄全,能够实现基本的功能。
但是在最终调试时用户的登录还是出现了一个问题,就是登录后出现一个错误,虽然能登录成功,但是点击确定按钮后却出现一个错误,最终发现是在设定用户表是出现了问题,但是我不知道怎样改。
另外在整个结构中,数据库的的权限没有设定好,使得售票员和管理员的权限在运行窗口中没有体现出来;且在售票员没有登录时也能进行车次的查询、添加和售票活动。
可以说整个数据库并没有完全实现,漏洞比较多,只能实现基本的增删改查的功能。