1、 数据库原理课程设计题 目 网上订票系统 院 系 _专 业 _学生姓名 学 号 指导教师 二0 一六 年 十二 月 十 八 日目 录 1、 需求分析:31。1课题背景:31.2 目的和意义:31。3 可行性分析:31。4 需求分析的成果:31。4.1:功能结构图:31。4。2:流程图:41.4。3:数据流图:51。4。4:数据字典:62.软件总体设计:83。 软件详细设计:93.1车票查询模块:93。1。1:查询车票信息:93.1.2:查询客户信息:93。1。3:查询客户订票信息:93.1.4:查询客户退票信息:93。1。5:查询票存系统记录信息:93.2车票信息管理模块:93。2.1添加车票
2、信息:93.2。2删除车票信息:103。2.3修改车票信息:104。数据库设计:104。1:概念模型设计:104。1。1 实体属性图:104。1.2:ER图114。1。3:联系:124.1.4:完整性约束:134.2:逻辑结构设计:134.2。1:ER图向关系模式的转换为:134.2。2:数据表设计:134.3:物理结构设计:154.3。1存储方式:154。3。2检索方式:165。系统编码与设计:166. 总结:181、 需求分析: 1。1课题背景:随着Internet的迅速发展和用户数量的急剧增加,互联网对于企业和事业单位的运营和发展日益重要,并且网上交易也逐渐被人们认可,并成为未来交易的发
3、展方向。随着现在旅游业发展的日益壮大一个便于人们操作的网上售票系统应当被开发。网上售票系统是道路旅游服务信息系统的一个重要组成成分,为旅客提供优质便捷的服务。为了提高道路客运的售票效率,丰富道路客运的营销手段,车站售票总站及其下属代收点可以通过公用的互联网资源,实现网上的售票. 1.2 目的和意义:随着旅游业的逐渐成熟发达,铁路客运量大幅度的提高,各大省市的客车都显著的增加,这些都对客车票务管理系统提出了更高的要求,所以要不断的完善更新客车票务管理系统,提高列车售票系统的工作效率。通过人工的方式难以实现以最快的速度选择自己想乘坐的哪一趟客车。因此产生了一种可行性的方案是基于客户端服务器的体系结
4、构,服务器为数据库系统,存储所有必要的信息.客户端通过连接到服务的应用程序从而快速、准确地完成相应的工作,通过网上订票,可以达到高效、便捷的购票。网上售票系统的实施,将会在一定程度上影响道路的客运关系,增强市场竞争能力,减少劳动强度,方便广大旅客购票,有一定的社会和经济效益。 1。3 可行性分析:根据客运售票的实际情况,对其所开展的业务简单介绍如下:(1) :查询。为对车次信息的查询和对已订车票的用户的车票信息进行查询。其中车票信息包括:车票编号、车次、出发站、目的站、座位类型、座位号、车票价格、发车时间、到达时间、类型、购买的用户姓名。并且车票的信息职工查看,不予以用户修改。(2) :售票。
5、客户通过查询系统,进入到查询页面,根据用户的需求找到相应的车次,用户输入客户信息确定后售票。其中客户信息包括:身份证号、姓名、用户名、联系电话、银行卡类型、银行卡、籍贯、类型。(3) :退票。客户通过查询系统进入查询页面,输入自己的身份证号找到自己的购票信息,通过退票模块可进行退票。其中退票信息包括:退票编号、车票编号、退票时间、退票数量、退票手续费。(4) :帐户管理。分为售票人员帐户和客户。两个不同的主体分别在两个不同的界面上操作,并且他们的权限也不相同。售票人员可以对车票的信息进行操作,而用户只能查看自己的订票信息和车次信息,并进行购买或者进行退票。 1.4 需求分析的成果: 1.4。1
6、:功能结构图: 1。4.2:流程图: (1):订票业务流程图: (2):退票业务流程图:1.4.3:数据流图:分为顶层和下一层数据流图.顶层数据流图:下一层数据流图订票:下一层数据流图-退票:1。4.4:数据字典:数据字典包括数据流、数据元素、数据存储、处理。数据元素:K1票存系统编号 varchar(10)K7 姓名 nvarchar(10) K13 购票类型 nchar(3),K19 退票时间 datetime K25 目的站 nvarchar(5) K31 车票类型 nchar(3) K2 票存系统地址 nvarchar(10) K8 联系电话 char(11) K14 订票单号 var
7、char(10) K20 退票数量 smallintK26 座位类型 nchar(2)K32 记录日期 date K3 票务人员编号 varchar(10) K9 用户名 nvarchar(5) K15 订票时间 datetime K21 手续费 smallmoney,K27 座位号 smallint K33 记录时间 time K4 票务人员工作地点 nvarchar(10) K10 银行卡类型 nchar(4) K16 乘车日期 datetime K22 车票编号 varchar(10) K28 车票价格 smallmoney K34 出入账金额 smallint,K5 票务人员姓名 nv
8、archar(10)K11 银行卡号 char(19) K17订票数量 smallint K23 车次 varchar(8) K29 发车时间 datetime K35 出入账类型 nchar(5),K6 身份证号 char(18) K12 籍贯 nchar(4)K18退票单号 varchar(10)K24 出发站 nvarchar(5) K30 到站时间 datetime K36 记录数量 smallint 数据流:数据流名称简述数据流来源数据流去向数据流组成订票单客户网上订购车票的单据客户服务器K6+K7+K8+K9+K10+K11+K12+K13+K14+K15+K16+K17+K22+
9、K23+K26+K27+K28+K29+K30+K31售票单火车票的票据服务器客户K6+K7+K8+K9+K10+K11+K12+K13+K14+K17+K22+K23+K28+K32+K33+K34+K35退票申请单客户向服务器申请退票的单据客户处理模块K4+K5+K6+K7+K8+K9+K10+K11+K12+K13+K18+K19+K20+K21+K22+K23+K24+K25+K28+K32+K33+K34+K35+K36未通过单服务器不同意客户退票申请的单据处理模块服务器K6+K7+K8+K9+K10+K11+K12+K13+K14+K15+K17+28+K32+K33+K34+K3
10、5+K36拒绝申请单服务器拒绝退票的单据服务器客户K6+K7+K8+K9+K10+K11+K12+K13+K14+K15+K17+28+K32+K33+K34通过单服务器同意客户退票申请的单据处理模块票存系统K1+K2+K6+K7+K8+K9+K10+K11+K12+K13+K14+K15+K17+28+K32+K33+K34退票单服务器开出的退票单服务器客户K3+K4+K5+K6+K7+K8+K9+K10+K11+K12+K13+K18+K19+K20+K21+K24+K25+K28+K32+K33+K34+K36处理:处理逻辑编号处理逻辑名称简述输入处理输出P1。1售票服务器向客户售票订票
11、单开出售票单并登记售票单P1.2退票服务器向客户提供退票单退票单开出退票单并修改记录退票单P2.1退票处理服务器审理客户的退票单退票申请单处理看是否同意用户的退票单异常退票单:拒绝退票退票单:允许退票,并修改记录P2.2退票异常服务器不允许用户退票异常退票单拒绝用户退票申请异常退票单数据存储:S1:票存系统存储。用户订票与退票的来给系统的票存记录增加或删除信息。S2:记录信息存储。记录用户订票与退票的详细记录信息。2.软件总体设计:本系统一共分为三个模块,每个模块的逻辑设计都是紧密相连的。并且模块的设计是根据上几个阶段的分析所得,符合系统的设计要求。于是根据上述的分析,可考虑将系统的模块分为车
12、票查询、车票信息管理,模块设计如图所示:3.软件详细设计:对模块总体设计中的模块拆分,指明具体采用了哪种算法,运用什么样的数据结构.根据总体设计的模块设计图可以设计如下的算法:3.1车票查询模块: 3。1。1:查询车票信息:用户通过输入出发站、目的站、出发日期来从数据库中进行检索。利用JAVA语言,在其中定义三个String类型的变量str0,str1,str2,分别存储这三个信息,通过执行Statement 生成的对象stmt,令sql_1=select * from 车票_1 where 出发站 like ”+str0+” and 目的站 like +str1+” and 发车时间+str
13、2;执行stmt.executeQuery(sql_1),将返回ResultSet结果集,然后再将结果打印即可。其中提供给用户的不仅存在查询结果,还拥有提供给用户购买车票的相关提示,当用户购买车票后,则更新票存系统的记录.3。1。2:查询客户信息:用户通过用户身份证号码或者通过用户名查询当前用户的基本信息。通过身份证号码查询,可以定义一个变量str存储身份证号码信息,然后令sql_1=”select from 客户_1 where 身份证号 like ”+str; 执行stmt.executeQuery(sql_1),将返回ResultSet结果集,然后再将结果打印即可。通过用户名查看信息与其
14、类似,仅需将sql_1中的“身份证号”改为“用户名”即可。3.1。3:查询客户订票信息:用户通过用户身份证号码或者通过用户名查询当前用户的基本信息。通过身份证号码查询,可以定义一个变量str存储身份证号码信息,然后令sql_1=”select * from 订票_1 where 身份证号 like ”+str; 执行stmt。executeQuery(sql_1),将返回ResultSet结果集,然后再将结果打印即可。通过用户名查看信息与其类似,仅需将sql_1中的“身份证号”改为“用户名”即可.在查询界面上,用户可以直接退票,但是在票购买的三天内不予以退票,过了三天后则可以退票。退票成功的话
15、,则将票存系统中有关该车票的记录删除.3.1.4:查询客户退票信息:用户通过用户身份证号码或者通过用户名查询当前用户的基本信息。只能通过用户名查询,可以定义一个变量str存储用户名信息,然后令sql_1=select * from 退票_1 where 用户名 like ”+str; 执行stmt.executeQuery(sql_1),将返回ResultSet结果集,然后再将结果打印即可。3。1。5:查询票存系统记录信息:用户通过输入车票编号或票存系统编号查询当前具体的记录信息。通过票存系统编号查询,可以定义一个变量str存储票存系统编号信息,然后令 sql_1=select from 票存
16、系统_1 where 票存系统编号 like +str; 执行stmt。executeQuery(sql_1),将返回ResultSet结果集,然后再将结果打印即可.3.2车票信息管理模块:3。2.1添加车票信息:售票员通过输入新的车次信息到数据库中,利用JAVA语言解决,可进行如下考虑。首先定义一个String类的对象数组str14,其中将要输入的数据全部保留,然后定义一个String类对象sql_1,令sql_1=”insert into车票 values(+sql0+sql1+sql2+sql3+sql4+sql5+sql6+sql7+” +sql8+sql9+” +sql10+sql1
17、1+sql12+sql13+”);再定义一个Statement对象stmt用来装载即将执行的数据库语句,然后执行 stmt.executeUpdate(sql_1)语句即可将插入操作同步到数据库中。3.2。2删除车票信息:售票人员通过输入车票的编号来进行删除当前的车票。令sql_1=”delete from 车票 where 车票编号 like +str;再定义一个Statement对象stmt用来装载即将执行的数据库语句,然后执行 stmt。executeUpdate(sql_1)语句即可将删除操作同步到数据库中.3.2。3修改车票信息:售票人员通过输入车票的编号来指明进行修改当前的车票。定
18、义一个String对象str记录售票人员输入车票的编号,在定义一个str1,指明用户相对具体的哪一个字段进行修改,再定义一个str2存放修改子段的新值。令sql_1=”update 车票 set +str1+”=+str2+” where 车票编号=”+str;再定义一个Statement对象stmt用来装载即将执行的数据库语句,然后执行 stmt.executeUpdate(sql_1)语句即可将删除操作同步到数据库中.4.数据库设计:4。1:概念模型设计:4。1。1 实体属性图:实体1-客户:(如图41)图4-1实体二订票单:(如图4-2所示) 实体三退票单:(如图43所示) 图42 图4
19、3 实体四-车票:(如图4-4所示)图44实体五-售票人员:(如图45所示) 实体六-票存系统:(如图46所示) 图4-5 图4-64.1.2:ER图4.1.3:联系:票务人员与客户是一对多联系,客户与订票单是一对多联系,客户与退票单是一对多联系,订票单与车票是一对多联系,退票单与车票是一对多联系,车票与票存系统是多对多联系。4。1.4:完整性约束:票存系统表:主键:票存系统编号。售票人员表:主键:票务人员编号。客户表:主键:身份证号。外键:票务人员编号。订单表:主键:订票单号。外键:客户身份证号.退票单:主键:退票单号。外键:客户身份证号。车票表:主键:车票编号。外键:订票单号,退票单号。记
20、录表:主键:(车票编号,票存系统编号)。外键:车票编号,票存系统编号.4。2:逻辑结构设计:4。2.1:ER图向关系模式的转换为:票存系统(票存系统编号,票存系统地址)售票人员(票务人员编号,票务人员工作地点,票务人员姓名)客户(身份证号,姓名,联系电话,用户名,银行卡类型,银行卡号,籍贯,类型,票务人员编号)订票单(订票单号,订票时间,乘车日期,订票数量,客户身份证号)退票单(退票单号,退票时间,退票数量,手续费,客户身份证号)车票(车票编号,车次,出发站,目的站,座位类型,座位号,车票价格,发车时间,到站时间,类型,订票单号,退票单号)记录(车票编号,票存系统编号,记录日期,记录时间,出入
21、账金额,出入账类型,记录数量)4。2。2:数据表设计:总共设计7张表,如下:(1):create table 票存系统 (票存系统编号 varchar(10) primary key,票存系统地址 nvarchar(10) not null)(2):create table 售票人员(票务人员编号 varchar(10) primary key,票务人员工作地点 nvarchar(10) not null,票务人员姓名 nvarchar(10)(3):create table 客户(身份证号 char(18) primary key,姓名 nvarchar(10) not null,联系电话
22、char(11) not null unique,用户名 nvarchar(5) not null unique,银行卡类型 nchar(4) not null,银行卡号 char(19) not null unique,籍贯 nchar(4) not null,购票类型 nchar(3),票务人员编号 varchar(10),constraint 购票类型约束 check(购票类型 in(普通票,学生票)),constraint 客户_票务人员 foreign key(票务人员编号) references 售票人员(票务人员编号)(4):create table 订票单(订票单号 varch
23、ar(10) primary key,订票时间 datetime not null,乘车日期 datetime not null,订票数量 smallint default(1),客户身份证号 char(18) not null,constraint 订票单_客户 foreign key(客户身份证号) references 客户(身份证号))(5):create table 退票单(退票单号 varchar(10) primary key,退票时间 datetime not null,退票数量 smallint,手续费 smallmoney,客户身份证号 char(18) not null,
24、constraint 退票单_客户 foreign key(客户身份证号) references 客户(身份证号)(6):create table 车票(车票编号 varchar(10) primary key,车次 varchar(8) not null,出发站 nvarchar(5) not null,目的站 nvarchar(5) not null,座位类型 nchar(2) not null,座位号 smallint not null,车票价格 smallmoney not null,发车时间 datetime not null,到站时间 datetime not null,车票类型
25、nchar(3) not null,订票单号 varchar(10) not null,退票单号 varchar(10),check(座位类型 in(座型,卧型)),check(车票类型 in(普通票,学生票)),constraint 车票_订票 foreign key(订票单号) references 订票单(订票单号),constraint 车票_退票 foreign key(退票单号) references 退票单(退票单号)(7):create table 记录(车票编号 varchar(10),票存系统编号 varchar(10),记录日期 date not null,记录时间 ti
26、me not null,出入账金额 smallint,出入账类型 nchar(5),记录数量 smallint default(0),primary key(车票编号,票存系统编号),constraint 记录_车票 foreign key(车票编号) references 车票(车票编号),constraint 记录_票存系统 foreign key(票存系统编号) references 票存系统(票存系统编号)4.3:物理结构设计:4.3。1存储方式:设计时主要是以表存储,但是也有一些视图的存储以便于查询数据并且给数据库的表增加安全性.视图如下:create view 车票_1 assel
27、ect 车票编号,车次,出发站,目的站,座位类型,座位号,车票价格,发车时间,到站时间,车票类型,订票单号 from 车票 create view 客户_1asselect 身份证号,姓名,联系电话,用户名,银行卡类型,银行卡号,籍贯,购票类型from 客户create view 退票_1asselect 退票单号,退票时间,退票数量,手续费,”T.姓名 as 姓名,”T.用户名 as 用户名from 退票单 ”S”join 客户 Ton T”.身份证号=S.客户身份证号create view 票存系统_1asselect R。车票编号,R”。票存系统编号,”R。记录日期,R.记录时间,R.出
28、入账金额,R。出入账类型,R.记录数量,T”。票存系统地址from 记录 ”Rjoin 票存系统 Ton ”R。票存系统编号=T”。票存系统编号create view 订票_1 asselect ”O”。订票单号,”O.订票时间,”O。乘车日期,”O.订票数量,C.身份证号,C”。姓名,”C”。用户名,C.购票类型from 订票单 O”join 客户_1 Con ”C.身份证号=”O”。客户身份证号/便于用户查看自己的订票信息4.3.2检索方式:为了方便检索,加速检索的速度,定义了如下几个索引来加快查询的速度。create index 车票_index on 车票(车票编号);create i
29、ndex 记录_index on 记录(车票编号,票存系统编号);create index 客户_index on 客户(用户名);create index 订票单_index on 订票单(订票单号);5.系统编码与设计:本系统采用JAVA进行设计,通过JDBC编程,将数据库与java相连,从而可以直接通过JAVA操作数据库,实现一些数据库的复杂操作。设计的主功能模块如图51(格式化代表输出的结果按格式输出):图51主界面如图52:图5-2用户身份登录界面如图5-3: 售票员身份界面如图54: 图5-3 图54查询车次界面如图55:图5-5购票界面如图5-6:图56查询客户信息界面如图5-7
30、:图5-7售票员修改车票信息界面如图5-8:图5-8退票失败界面如图59:图59退票成功界面如图510,退票成功时将会在数据库中执行输出记录信息,从图5-10最后一行可以看出。图5-106. 总结:通过本次实习,我学到了很多有关数据库和JAVA语言的知识。本次实习历时几周,我查阅了很多书籍,上网搜集了很多知识,尤其时JDBC方面的知识,在我的Eclipse上面搭建了JDBC,从而才可以很好的利用JAVA来修改数据库中的数据。这次实习的内容很全面,涉及到软件工程、数据库以及面向对象程序设计,是第一次将我所学到的所有知识进行整体连接.从而可以很全面的了解我现在学习上面的缺陷,进行查漏补缺。不仅如此,我逐渐体会到了作为一个学习计算机的学生,将来所要面临的工作涉及哪些方面,以及在我大学剩下的时间里该如何学习、如何拓宽我的知识,从而可以学到更高深的内容.这是一次新的开始,同时也是一次全新的尝试,我会在以后的学习时光里面弥补我之前所学科目的不足,从而为我以后进行更全面的、更整体的、更难的课题积极做准备。
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100