车票销售管理系统课程设计报告.docx
《车票销售管理系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《车票销售管理系统课程设计报告.docx(19页珍藏版)》请在冰豆网上搜索。
车票销售管理系统课程设计报告
目录
1.系统需求分析4
1.1系统调查4
1.2用户需求4
2.系统逻辑方案5
2.1数据流图(简称为DFD)5
2.2数据字典(简称为DD)6
2.2.1数据项6
3.系统总体结构设计6
3.1软件系统总体结构设计6
3.2数据存储的总体设计7
3.3系统功能模块设计7
4.数据库详细设计9
4.1数据库设计9
4.1.1E-R图:
9
4.1.2关系模型:
11
4.1.3数据库结构12
4.2数据库的完整性和安全性13
4.2.1数据库的完整性13
4.2.2数据库的安全性13
5.数据库操作(SQLServer2000语句完成)14
5.1创建车票销售管理系统14
5.2创建车票销售系统索引表14
5.3建立存储过程向表中插入、修改、删除数据。
15
5.4建立存储过程实现查询17
5.5建立视图21
6.实验心得21
7.参考文献22
1.系统需求分析
1.1系统调查
对汽车站售票进行详细调查是了解系统需求和进行系统分析和设计的重要基础工作。
汽车售票管理系统主要用于车站日常的票务处理。
车售票管理系统在正常运行中需要对使用该系统的主要是汽车站售票人员、汽车站售票工作的管理人员与系统管理员。
为达到操作过程中的直观、方便、实用、安全等要求,我们组在这个系统中采用模块化程序设计的方法,便于系统功能的组合和修改,以及扩充和维护。
1.2用户需求
根据需求分析,本系统要实现以下的基本功能。
1.登录功能:
分为汽车站售票人员和系统管理员两种权限登陆。
用户通过输入不同用户名和密码进行身份验证,系统通过用户名和密码判断不同用户的权限,从而确定该用户可以执行的操作。
2.车票信息查询功能:
由汽车站的普通售票人员通过不同的检索入口,查询车票信息,并进行排序。
3.修改功能:
汽车站售票人员、汽车站售票工作的管理人员能够修改自身的用户名和密码,系统管理员则能实现系统用户与普通用户的添加,修改普通用户与系统管理员的密码,以此确保该系统能够安全操作,避免不必要的损失。
4.汇总功能:
对当天车票的信息进行汇总。
2.系统逻辑方案
2.1数据流图(简称为DFD)
2.2数据字典(简称为DD)
2.2.1数据项
表2.1车次编号
数据项
系统名:
车票销售管理系统编号:
I001名称:
车次编号别名:
数据项值:
类型:
字符型长度:
10个字节取值范围:
简述:
每辆客车都具有唯一的编号,它是某种票的唯一标识符,每种票都有唯一的编号,如“00001”通常表示大吧。
修改记录:
编写
日期
审核
表2.2票名称
数据项
系统名:
车票销售管理系统编号:
I002名称:
票名称别名:
数据项值:
类型:
字符型长度:
10个字节取值范围:
简述:
每辆客车都具有唯一票名称。
修改记录:
编写
日期
审核
日
3.系统总体结构设计
3.1软件系统总体结构设计
软件系统总体结构设计的主要任务就是将整个系统合理的划分成各个功能模块,正确处理模块之间与模块内部的联系及它们之间的调用关系和数据联系,定义各模块的内部结构等,本系统的软件总体结构按分解-协调的原则,信息隐蔽抽象的原则,自顶向下的原则,一致性原则,面向用户的原则进行设计
3.2数据存储的总体设计
按用途分类可把本系统文件分成以下几种:
(1)主文件:
系统中的主文件是最重要的共享文件,主要存放具有固定值属性的数据。
它需要长期保存,并不断更新。
如车次编号。
(2)处理文件:
处理文件包含下一次更新文件所需要的全部记录,本系统中的处理文件如票价。
3.3系统功能模块设计
该模块主要实现拥护通过查询界面可以根据条件进行车次时刻、车次票价查询。
4.数据库详细设计
4.1数据库设计
数据库的设计是指对一个给定的应用环境,构造数据库模式,建立数据库及其应用系统,满足各种用户需求。
作为信息资源开发、管理和服务的一种有效的手段,数据库技术的应用已越来越广泛,从小型的单项事务处理系统到大型的信息系统大都用先进的数据库技术来保持系统数据的安全性、完整性和共享性。
对一个实际的系统来说,数据库表的设计在遵循数据库理论的同时,必须能用开发工具来实现用户在各方面提出的功能要求。
4.1.1E-R图:
在系统的数据库设计中,先要对系统分析得到的数据字典中的数据存储进行分析,分析各数据存储之间的关系,然后才能得出系统的关系模式。
可以采用E-R图的方法来进行数据结构分析,E-R设计方法是一种通过E-R图来描述现实世界信息结构的DB设计方法。
E-R图由实体、属性、联系三部分组成。
各分E-R图说明如下:
图2-1车票ER图
图2-2顾客ER图
图2-3实体之间ER图
4.1.2关系模型:
车票与顾客之间的联系
售票1:
N
车票(票号,车次,日期,车型,票价,开车时间,票种,座位号,起始站,终点站)
顾客(身份证号,银行卡号)
退票1:
N
车票(票号,车次,日期,车型,票价,开车时间,票种,座位号,起始站,终点站)
顾客(身份证号,银行卡号)
订票1:
N
车票(票号,车次,日期,车型,票价,开车时间,票种,座位号,起始站,终点站)
顾客(身份证号,银行卡号,票号,日期,交易时间,交易金额,数量,起始站,终点站)
4.1.3数据库结构
表4.1Car表详细设计
字段名
数据类型
是否主键
是否必填
字段说明
carid
char
是
是
车次编号
cartype
int
否
否
客车型号
platenumber
char
否
是
车牌号
carholder
char
否
否
责任人
runningway
char
否
否
经营路线
seatlimit
int
否
是
座位限额
outsettime
datetime
否
是
发车时间
表4.2Seat表详细设计
字段名
数据类型
是否主键
是否必填
字段说明
carid
char
否
是
车次编号
date
datetime
否
是
日期
terminalname
char
否
是
终点站
selled
char
否
否
票是否售出
price
int
否
是
车票价格
表2.3PriceDiscount表详细设计
字段名
数据类型
是否主键
是否必填
字段说明
price
int
否
是
车票价格
tickettypeid
int
否
是
车票类型编号
discount
int
否
是
折扣
表2.4Price表详细设计
字段名
数据类型
是否主键
是否必填
字段说明
terminalid
char
是
是
终点站编号
outstation
char
否
否
起始站
terminalname
char
否
是
终点站
tnpycode
char
否
是
拼音码
price
int
否
是
车票价格
表2.5Type表详细设计
字段名
数据类型
是否主键
是否必填
字段说明
recordid
int
是
是
记录号
tickettypeid
int
否
是
车票类型号
tickettype
char
否
是
车票类型
4.2数据库的完整性和安全性
4.2.1数据库的完整性
数据库的完整性是指数据的正确性和相容性。
数据库管理系统(DBMS)用一定的机制来检查数据库中的数据是否满足规定的条件——完整性约束条件,数据的约束条件是语义的体现,将作为模式的一部分存入数据库中。
本系统中定义了表与表之间的联系有助于实现完整性规则,一般在程序中实现具体的完整性控制。
实体完整性:
要求主键属性的值不为空。
4.2.2数据库的安全性
数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄漏、更改或破坏。
在数据库系统中,大量的数据集中存放,而且为许多用户直接共享,是宝贵的信息资源,系统的安全保护措施就显得更为重要,它保护数据库防止恶意的破坏和非法的存取。
本系统包括数据库的安全和服务器的安全。
采用管理员表示和鉴定的方法实现数据库的安全,此安全管理措施并不在前台开发工具中实现,而是在后台数据库中实现。
在登录数据库时,系统让管理员户表示自己的身份,不同的管理员权限不同,系统进行核实,鉴别此管理员是否为合法用户,若是,系统进一步核实用户,通常要求用户输入口令,系统和对用户口令以鉴别用户身份。
服务器的安全也是通过用户在登录服务器时输入合法的用户名和密码来实现的。
这是一种简单可行的方法,实现起来比较方便。
没有采用更加复杂的系统安全管理措施是因为本管理系统一般是应用在校园网中,采用安全管理措施主要是为了防止没有修改权限的用户无意间修改了数据,因此采用用户标识和鉴定的安全管理措施就能够保障数据库的安全性。
5.数据库操作(SQLServer2005语句完成)
5.1创建车票销售管理系统
createdatabasesellticketsystem
usesellticketsystem
5.2创建车票销售系统索引表
创建车辆信息表
createtablecar
(caridchar(10)constraintc_PRIPRIMARYKEY,cartypeint,platenumberchar(10),carholechar(6),outsettimedatetime)
创建座位信息表
createtableseat
(caridchar(10)FOREIGNKEYREFERENCEScar(carid),datedatetime,terminalchar(6)FOREIGNKEYREFERENCESprice(terminal),priceint)
创建打折信息表
createtablepricediscount
(recordnumberintconstraintpd_PRIPRIMARYKEY,tickettypeidint,discountint,caridchar(10)FOREIGNKEYREFERENCEScar(carid))
创建价格表
createtableprice
(terminalidchar(10)constraintp_PRIPRIMARYKEY,outstationchar(10),terminalchar(6),caridchar(10)FOREIGNKEYREFERENCEScar(carid),ticketpriceint)
创建汇总表
createtabletype
(recordidintconstraintt_PRIPRIMARYKEY,tickettypeidintFOREIGNKEYREFERENCESpricediscount(tickettypeid),tickettypechar(10))
5.3建立存储过程向表中插入、修改、删除数据。
/*插入数据的存储过程*/
createproccar_proc
@caridchar(10),@cartypeint,@platenumberchar(10),@carholechar(6),@outsettimedatetime
as
insertintocar(carid,cartype,platenumber,carhole,outsettime)values(@carid,@cartype,@platenumber,@carhole,@outsettime)
execcar_proc'0001','10','zj1000','yi','2010-7-8'
execcar_proc'0002','20','zj2000','er','2010-7-8'
execcar_proc'0003','30','zj3000','san','2010-7-8'
createprocseat_proc
@caridchar(10),@datedatetime,@terminalchar(6),@priceint
as
insertintoseat(carid,date,terminal,price)values(@carid,@date,@terminal,@price)
execseat_proc'0001','2010-7-8','北京','10'
execseat_proc'0002','2010-7-8','上海','20'
execseat_proc'0003','2010-7-8','嘉兴','30'
createprocpricediscount_proc
@recordnumberint,@tickettypeidint,@discountint,@caridchar(10)
as
insertintopricediscount(recordnumber,tickettypeid,discount,carid)values(@recordnumber,@tickettypeid,@discount,@carid)
execpricediscount_proc'1','1','80%','1'
execpricediscount_proc'2','2','80%','2'
execpricediscount_proc'3','3','80%','3'
createprocprice_proc
@terminalidchar(10),@outstationchar(10),@terminalchar(6),@caridchar(10),@ticketpriceint
as
insertintoprice(terminalid,outstation,terminal,carid,ticketprice)values(@terminalid,@outstation,@terminal,@carid,@ticketprice)
execprice_proc'1','杭州','北京','0001','100'
execprice_proc'2','杭州','上海','0002','100'
execprice_proc'3','杭州','嘉兴','0003','100'
createproctype_proc
@recordidint,@tickettypeidint,@tickettypechar(10)
as
insertintotype(recordid,tickettypeid,tickettype)values(@recordid,@tickettypeid,@tickettype)
exectype_proc'1','1','大巴'
exectype_proc'2','1','中巴'
exectype_proc'3','1','小巴'
/*删除数据的存储过程*/
createproccar_delete_proc
@caridchar(10)
as
deletefromcar
wherecarid=@carid
execcar_delete_proc'0002'
/*修改数据的存储过程*/
createproccar_update_proc
@caridchar(10)constraint,@cartypeint,@platenumberchar(10),@carholechar(6),@outsettimedatetime
as
updatecarid
setcarid=@carid,cartype=@cartype,platenumber=@platenumber,carhole=@carhole,outsettime=@outsettime
wherecarid=@carid1
execcar_update_proc'0001','10','za1000','yi','2010-7-8','0002'
5.4建立存储过程实现查询
/*建立存储过程实现单表查询*/
/*建立名为“单表查询1”的存储过程,用来查询某辆客车的信息*/
createproc单表查询1
@caridchar(10)
as
select*
fromcar
wherecarid=@carid
/*建立名为“单表查询2”的存储过程,用来查询客车SEAT的信息*/
createproc单表查询2
@caridchar(10)
AS
select*
fromseat
wherecarid=@carid
/*建立名为“单表查询3”的存储过程,用来查询车票打折的信息*/
createproc单表查询3
@recordnumberint
as
select*
frompricediscount
whererecordnumber=@recordnumber
/*建立名为“单表查询4”的存储过程,用来查询车票价格的信息*/
createproc单表查询4
@terminalidchar(10)
as
select*
fromprice
whereterminalid=@terminalid
/*建立名为“单表查询5”的存储过程,用来查询某个TYPE的信息*/
createproc单表查询5
@recordidint
as
select*
fromtype
whererecordid=@recordid
/*建立存储过程实现连接查询*/
/*建立名为“连接查询1”的存储过程,用来查询某辆客车编号对应的车票价格信息*/
createproc连接查询1
@priceint
as
selectprice
fromcar,seat
wherecar.carid=seat.caridand
price=@price
/*建立名为“连接查询2”的存储过程,用来查询某辆车起始站的发车时间*/
createproc连接查询2
@outsettimedatetime
as
selectoutsettime,outstation
fromcar,price
wherecar.carid=price.caridand
outstation=@outstation
/*建立名为“连接查询3”的存储过程,用来查询某辆车起始站的车票类型*/
createproc连接查询3
@outstationchar(10),@tickettypechar(10)
as
selecttickettype
frompricediscount,price,type
whereprice.carid=pricediscount.caridand
pricediscount.tickettypeid=type.tickettypeidand
outstation=@outstationand
tickettype=@tickettype
/*建立名为“嵌套查询1”的存储过错,用来查询某个发车人的记录号*/
createproc嵌套查询1
@carholechar(6)
as
selectrecordnumber
frompricediscount
wherecaridIn(selectcarid
fromcar
wherecarhole=@carhole)
/*建立名为“嵌套查询2”的存储过错,用来查询某辆客车起始站的发车时间*/
createproc嵌套查询2
@outstationchar(10)
as
selectoutsettime
fromprice
wherecaridIn(selectcarid
fromcar
whereoutstation=@outstation)
5.5建立视图
/*视图建立*/
/*1,由客车表“car”建立一个视图,该视图由客车表的所有列构成*/
createview客车表(车次编号,客车型号,车牌号,责任人,发车时间)
as
select*fromcar
/*2,由票价表“price”建立一个视图,该视图由票价信息表的所有列构成*/
createview票价信息(终点站编号,起始站,车次编号,总票价)
as
select*fromprice
/*3,由记录汇总信息表“type”建立一个视图,该视图由汇总信息表的所有列构成*/
createview记录汇总信息(记录号,车票类型编号,车票类型)
as
select*fromtype
6.实验心得
总结:
本次课程设计调查从长途客运公司,根据其具体情况,设计售票管理系统。
加深了对数据库课程知识的理解。
由于时间仓促,系统还不够完善,还面临很多问题,但是通过对本次数据库的课程设计以及对数据库语言又有了更深一步的学习,对今后参与和开发数据库积累了不少经验,达到了学与用的结合。
于此同时,我也深深得学到了团队合作的重要性,多交流,对于这种分工完成的项目,组员之间的交流是极其必要的。
如果组员之间不能很好的沟通,不仅会做很多无用功,而且也会做很多重复的工作。
组员之间很好的互通有无,表明自己正在做什么,下一步要做什么,才能使设计很好的开展开来。
而我们组这次就做到了这点,我们每天都会在qq上或者见面相互交流,并及时修改进度安排表;除此之外,我们还相互帮助解决问题,或者共同解决问题。
在几天几夜的努力下,我们找到了一些参考书,又在这写书的帮助下了解了系统设计的各种方法,在编译过程中常常出现的问题,和解决的方法。
接下来就是编程件方面的焊接工作了。
没想到这项看起来不需要多少技术的工作却是非常的劳心劳力。
很多次是早上起来买瓶水放些吃的在宿舍里,一泡就是一天。
我看到有很多人跟我们一样,三三两两一同讨论学习。
当我想放弃的时候,我也这么对自己说,即使你做出来的是次品甚至不合格品,但是你一定要拿出来一件成品。
7.参考文献
[1]高春艳,李俊民.VisualBasic信息系统开发案例精选[M].北京:
机械工业出版社,2005
[2]林卓然.VisualBasic程序设计教程[M].北京:
电子工业出版社,2004
[3]范剑波.数据库技术及应用[M].浙江:
浙江大学出版社,2007
[4]严辉,刘卫国.数据库技术与应用实践教程——SQLSERVER[M].北京:
清华大学出版社,2007