《数据库原理及应用》车站管理系统实践报告(共24页).doc

上传人:飞****2 文档编号:13819844 上传时间:2022-05-01 格式:DOC 页数:24 大小:243.50KB
返回 下载 相关 举报
《数据库原理及应用》车站管理系统实践报告(共24页).doc_第1页
第1页 / 共24页
《数据库原理及应用》车站管理系统实践报告(共24页).doc_第2页
第2页 / 共24页
点击查看更多>>
资源描述

《《数据库原理及应用》车站管理系统实践报告(共24页).doc》由会员分享,可在线阅读,更多相关《《数据库原理及应用》车站管理系统实践报告(共24页).doc(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上一、 数据库功能描述车站售票管理系统主要用于车站日常的票务处理。主要功能包括车票的购买与销售管理,实现路线信息、汽车信息、票务信息的查询和管理,及方便车辆、乘客身份等进行统计。实现方便、快捷售票;使用户准确了解售票情况,提供多种查询和统计功能;实现系统的安全性设置,是系统具有一定的恢复和维护功能。最终满足不同人群的需求。二、数据库设计 2.1 系统需求分析根据实际需求,本系统应实现以下基本功能:(1) 登录功能:分为汽车站售票人员和系统管理人员两种权限登录.用户通过输入不同的用户名以及密码进行身份验证,系统通过用户名以及密码验证来验证不同用户的访问权限,从而为用户提供

2、操作;(2) 车票信息查询功能:由汽车站的普通售票人员通过不同的检索入口,查询车票信息,并进行排序;(3) 修改功能:汽车站售票人员、汽车站售票管理人员能够修改自身的用户名以及密码,系统管理人员则能够实现系统用户与普通用户的添加、修改普通用户与系统管理人员的密码,以此确保该系统能够安全的操作,避免不必要的损失;(4) 汇总功能:能够对某个时段或者当天的售票情况进行汇总等。2.2 数据流图:描述售票、订票、退票管理等子系统的功能描述。顾 客车站管理系统售票人员购票信息售票信息 图1-1 顶层图查询处理买票车票汇总0层图购票信息可供票车票图1-2 0层图缺票记录车票记录查询处理买票 1层图 购票信

3、息可供票车票售票记录 售票记录 车票记录 图1-3 售票1层图 查询顾客信息查询处理订票订票信息核对后的可供票车 票顾客信息 车票记录订票记录 图1-4 订票1层图 处理退票退票信息 退票记录 图1-5 退票1层图2.3数据字典:对此系统中数据库出现的数据对象、字段及控制信息给出准确定义。2.3.1数据项编号数据项名数据项含义说明数据类型长度与其他数据项关系是否可以为空1TNo票号char4Ticket表主键否2Tcnt车次int4否3Ttime发车时间datetime8否4Tprice票价int45PID身份证号char18Passenger表主键否6Pname乘客姓名varchar127P

4、sex乘客性别char28Page乘客年龄int49Pweight携重int410CNo售票员编号char8Conductor表主键否11Cname售票员姓名varchar1212Csex售票员性别char213Cwage售票员薪酬int414LNo路线编号char8Line表主键否15Ldepart起始站点char8否16Larrival到达站点char8否17Ldistance里程int418BNo汽车编号char8Bus表主键否19Bload汽车载客量int420Btype车型char1021Byear购入年份int422DNo司机编号char8Driver表主键否23Dname司机姓名

5、varchar1024Dsex司机性别char225Dage司机年龄int426buytime购买日期datetime827buycount购买数量int428sellcount销售数量int42.3.2数据结构编号数据结构名属性1售票员员工编号、姓名、性别、薪酬2乘客身份证号码、姓名、性别、年龄、 行李重量3路线路线编号、起始点、终点、路程4车票车票编号、车次、发车时间、票价5司机司机编号、姓名、性别、年龄6汽车汽车编号、载客量、车型、购入时间2.3.3数据流编号数据流名输入输出1售票员信息用户输入电脑的用户名、密码系统主菜单2查询购买情况车票编号、起始点、终点、汽车型号车票记录3查询汽车信

6、息汽车编号、型号、购入时间、载客量汽车记录4变更汽车信息变更信息汽车记录5变更站点信息变更信息站点记录6变更路线信息变更信息路线记录7查询车票信息编号、起始点、终点、汽车型号车票记录8预订车票车票编号、预定日期、预定预定记录9购买车票车票编号、预定日期、购买购买记录10更改乘客信息变更信息乘客信息11查询路线信息路线编号、起始点、终点路线信息12变更车票信息变更信息车票记录2.3.4数据存储数据存储名输入数据流输出数据流备注汽车信息变更汽车信息查询汽车信息路线信息变更路线信息查询路线信息车票信息变更车票信息查询车票信息乘客信息变更乘客信息查询乘客信息预订车票信息车票信息预定记录购买车票信息车票

7、信息购票记录退票信息车票信息退票记录2.3.5处理过程处理过程名输入数据流输出数据流处理操作查询已知汽车、路线、车票信息所需信息购买/预定车票信息、购买时间、座位号无更新变更信息再次查询信息权限认证用户名、密码系统主菜单用户登录2.4 数据库概念结构设计 局部E-R图2.4.1 乘客购买车票车票乘客购买车次发车时间票价身份证号年龄姓名票号性别行李重量ER图 12.4.2 司机驾驶汽车司机编号汽车型号司机购入时间汽车驾驶载客量姓名年龄汽车编号性别11ER图 22.4.3 路线包含车票车票路线包含车次发车时间票价路线编号终点起点票号里程ER图 3全局ER图姓名拥有汽车汽车编号载客量汽车型号购入时间

8、司机编号性别年龄驾驶销售包含售票员职工号姓名性别薪酬起始站终点站路线编号里程路线乘客身份证号姓名年龄性别购买购买日期数量车票票价发车时间车次票号行李重量nmnnm数量1m1112.5 数据库逻辑结构设计2.5.1逻辑设计车票 (票号,车次,发车时间,票价,线路编号,汽车编号)路线(线路编号,起始站, 终点站,里程)乘客(身份证号,姓名,年龄,性别,行李重量)售票员(职工号,姓名,性别,薪酬,汽车编号)汽车(汽车编号,载客量,汽车型号,购入时间)司机(编号,姓名,性别,年龄)购买(票号,身份证号,购买时间,购买数量)销售(票号,职工号,销售时间)2.5.2 3NF分析(1) 判断是否满足1NF关

9、系中每个属性都是不可再分的简单项,故满足1NF。(2) 判断是否满足2NF车票、路线、乘客、售票员、汽车、司机都是单属性决定主键,后面的属性都由各种编号唯一确定,而购买、销售分别有两个属性确定主键,购买时间,和销售时间显然只能由前面的两个组合唯一确定。已判断关系模式满足1NF,且经检验每个非主属性都完全函数依赖于关系模式的主键关系,故满足2NF。(3) 判断是否满足3NF对表内各非主属性进行了判断,它们都只依赖于主属性,不存在传递依赖。已判断关系模式满足2NF,且经检验每个非主属性都不传递函数依赖于关系模式的主关系键,故满足3NF。经上述分析可知所建表满足3NF(第三范式)。三、 数据库实施

10、3.1 数据库部署环境操作系统:Windows7数据库:SQL server 2000开发工具:Microsoft virtual FoxPro 6.03.2数据库架构图汽车站售票管理系统票务管理票价管理车次管理用户管理查询管理车次信息编辑票价信息录入票价信息修改票价信息删除前台售票前台退票用户信息添加票价信息修改票价信息删除车次信息查询票价信息查询3.3数据表生成脚create table Line(LNo char(8) primary key,Ldepart varchar(8)not null,Larrival varchar(8)not null,Ldistance int)gocr

11、eate table Driver(DNo char(8) primary key,Dname varchar(10),Dsex char(2) default 男,Dage int)gocreate table Bus(BNo char(8)primary key,Bload int,Btype char(10),Byear int,DNo char(8) foreign key references Driver(DNo)gocreate table Ticket(TNo char(8) primary key,Tcnt char(5) unique not null,Ttime date

12、time not null,Tprice int,LNo char(8) foreign key references Line(LNo),BNo char(8) foreign key references Bus(BNo)go create table Passenger(PID char(18) primary key,Pname varchar(12),Psex char(2),Page int,Pweight int)gocreate table Conductor(CNo char(8) primary key,Cname varchar(12) default 女,Csex ch

13、ar(2),Cwage int)gocreate table PT(PID char(18),TNo char(8),buytime datetime,buycount intconstraint PT_Prim primary key (PID,TNo),constraint PT_P_Forgn foreign key(PID) references Passenger(PID),constraint PT_T_Forgn foreign key(TNo) references Ticket(TNo)gocreate table CT(CNo char(8),TNo char(8),sel

14、lcount int,constraint CT_Prim primary key (CNo,TNo),constraint CT_C_Forgn foreign key(CNo) references Conductor(CNo),constraint CT_T_Forgn foreign key(TNo) references Ticket(TNo)3.4 初始始数据录入脚本insert into Linevalues(01,西安,咸阳,60)insert into Linevalues(02,北京,宝鸡,130)insert into Linevalues(03,西安,榆林,300)in

15、sert into Linevalues(04,西安,渭南,50)insert into Linevalues(05,西安,铜川,65)insert into Linevalues(06,西安,商洛,200)insert into Drivervalues(D001,张悦山,男,40)insert into Drivervalues(D002,李胜利,男,45)insert into Drivervalues(D003,周静敏,女,37)insert into Drivervalues(D004,张凡,男,42)insert into Drivervalues(D005,周成文,男,39)in

16、sert into Drivervalues(D006,樊城,男,41)insert into Busvalues(B2601,40,大型客车,2010,D001)insert into Busvalues(B2602,30,中型客车,2009,D002)insert into Busvalues(B2603,40,大型客车,2010,D003)insert into Busvalues(B2604,40,大型客车,2010,D004)insert into Busvalues(B2605,40,大型客车,2010,D005)insert into Busvalues(B2606,30,中型客

17、车,2010,D006)insert into Ticketvalues(, DG531, 2012/05/26 01:12:56, 47,01,B2601)insert into Ticketvalues(, DG638, 2012/05/26 14:15:46, 45,04,B2604)insert into Ticketvalues(, DG854, 2012/05/25 04:35:45, 18,03,B2603)insert into Ticketvalues(, DG896, 2012/05/21 17:15:34, 38,01,B2601)insert into Ticketva

18、lues(, DG932, 2012/05/20 23:19:44, 45,05,B2605)insert into Ticketvalues(, DG120, 2012/05/26 13:45:35, 15,01,B2606)insert into Ticketvalues(, DG639, 2012/05/26 09:35:36, 45,02,B2602)insert into Ticketvalues(, DG565, 2012/5/12 10:15:26,23,01,B2601)insert into Conductorvalues(S1,马大波,男,1500)insert into

19、Conductorvalues(S2,张龙,男,1620)insert into Conductorvalues(S3,王子月,女,1400)insert into Conductorvalues(S4,马一山,男,1310)insert into Conductorvalues(S5,刘博,男,1520)insert into Conductorvalues(S6,冯楠,男,1600)insert into Passengervalues(,莫子谦,男,22,5)insert into Passengervalues(,张若谷,女,32,0)insert into Passengervalu

20、es(,刘龙,男,20,12)insert into Passengervalues(,岳山,女,33,20)insert into Passengervalues(,冯建坤,男,42,2)insert into Passengervalues(,范喜良,男,63,13)insert into PTvalues(,2012/5/10 10:15:26,1)insert into PTvalues(,2012/5/12 12:34:38,2)insert into PTvalues(,2012/5/10 13:45:56,3)insert into PTvalues(,2012/5/12 15:

21、25:46,2)insert into PTvalues(,2012/5/9 09:45:36,4)insert into PTvalues(,2012/5/12 02:19:36,2)insert into PTvalues(,2012/5/11 17:39:46,3)insert into PTvalues(,2012/5/12 23:14:24,2)insert into CTvalues(S1,25)insert into CTvalues(S2,15)insert into CTvalues(S3,60)insert into CTvalues(S4,54)insert into C

22、Tvalues(S5,35)insert into CTvalues(S6,75)insert into CTvalues(S1,25)insert into CTvalues(S3,26)3.5 测试数据库3.5.1 查询乘客莫子谦出行信息(即出发站点,到达站点)。select LDepart,Larrival from Line where LNo=(select LNo from Ticket where TNo=(select TNo from PT where PID=(select PID from Passenger where Pname=莫子谦)运行结果:3.5.2 查询售票

23、员姓名和销售总票数,并按销售总票数降序排列。select Cname,totalcountfrom (select CNo,sum(sellcount) as totalcount from CTgroup by CNo)as r1,(select CNo,Cname from Conductor)as r2where r1.CNo=r2.CNoorder by totalcount desc运行结果:3.5.3 从西安出发的乘客都有哪些,输出其姓名及乘坐车次,发车时间。select Pname,Tcnt,Ttimefrom (select PID,Tcnt,Ttime from (selec

24、t TNo,Tcnt,Ttime from Ticket where LNo in (select LNo from Line where Ldepart=西安) as r1,PT where r1.TNo=PT.TNo) as r2,(select PID,Pname from Passenger) as r3where r2.PID=r3.PID运行结果:3.5.4 购票数大于等于5的乘客身份证号及姓名。select Pname,r1.PID,totalcountfrom (select PID,sum(buycount) as totalcount from PT group by PI

25、D having sum(buycount)=5) as r1,Passengerwhere r1.PID=Passenger.PID运行结果:3.5.5 修改Ticket表使得到咸阳的车票半折出售。update Ticketset Tprice=0.5*Tpricewhere LNo in (select LNo from Line where Larrival=咸阳)四、数据库运行以及维护4.1 建立索引为售票员表即Conductor在Cname上创建聚集索引。create cluster index CI on Conductor(Cname)4.2 建立视图4.2.1 创建视图为用户查

26、询已定票的部分信息创建语句:CREATE VIEW ALLTICKETMESSAGEAS SELECT TNo,Tcnt,Ttime,Tprice,Ticket.LNo,Ticket.BNo,Bus.DNo,Dname,Ldepart,LarrivalFROM Ticket,Bus,Driver,LineWHERE Ticket.LNo=Line.LNo AND Ticket.BNo=Bus.BNo AND BUS.DNo=Driver.DNo结果4.2.2 创建语句CREATE VIEW PaMESSAGEAS SELECT Ticket.TNo,Tcnt,Tprice,buytime,Pa

27、ssenger.PIDFROM Ticket,Passenger,PTWHERE Ticket.TNO=PT.TNo AND PT.PID=Passenger.PID4.3 数据库运行以及维护说明书 4.3.1 账户及权限设置 1)账户设置 (1) 在系统正式使用前,数据库管理员应修改系统默认密码,并对不需要的帐号进行删除或锁定。 (2) 数据库管理员具有最高数据库管理权限,其他人员需要直连访问数据库或需要具有一定数据库操作权限,由数据库管理员告知用户权限等信息。其他人员通过业务系统访问数据库. (3) 数据库管理员为每一个数据库用户根据需要的权限建立专门的账号,以区分责任,提高系统的安全性,

28、用户必须使用自己的账号登录数据库。 (4) 对账号权限的设置遵从最小化原则。 (5)普通数据库用户账户与数据库管理员帐户分离。 4.3.2 用户类型 1) 系统管理员:能够管理数据库系统中的所有组件及所有数据库。 2) 数据库管理员:能够管理相关数据库中的账户、对象及数据。 3) 数据库用户:只能以特定的权限访问特定的数据库对象,不具有数据库管理权限。 4.3.3 用户权限按最小权限原则设置包括如下几种权限: 1) 系统管理权限:包括账户管理、服务管理、数据库管理等。 2) 数据库管理权限:包括创建、删除、修改数据库等。 3) 数据库访问权限:包括插入、删除、修改数据库特定表记录等。4.3.4

29、 数据库系统备份还原1) 数据库备份策略、要求 (1) 完全备份:对备份的内容进行整体备份。 (2) 差异备份:仅备份相对上一次完全备份之后新增加和修改的数据。 (3) 必须根据各个应用所能接受的恢复时间去选择对系统和数据的备份方式,并采取相应的备份策略。 (4)结合使用在线备份、逻辑备份和物理备份等多种方式,并且自动方式和手动方式相结合。 (5)数据备份应根据系统情况和备份内容,采用不同的备份方式及策略,并做好记录。 (6)对数据库的数据要求定时自动备份。 (7)必须建立备份文件档案及档案库,详细记录备份数据的信息。要做好数据备份的文卷管理,所有备份应有明确标识,包括卷包、运行环境、备份人。

30、卷名需按统一的规则来命名。4.4 数据库备份具体方案 4.4.1 方案一: 常用方案在SQL Server备份窗口,可以通过调度设置,将当前进行的备份处理设置为定时自动处理的作用。具体的步骤如下: 1. 展开一个服务器组。 2. 展开一个服务器( SQL Server实例)。3. 展开【数据库】,右单击要备份的数据库,在弹出的菜单中选择【所有任务】【备份数据库】命令。 4. 在随后打开的SQL Server备份窗口中,设置备份的相关选项。参见前面的备份方案 单击【常规】选项卡,在【调度】项中,选中【调度】复选框,然后单击【调度】复选框后的【】按钮。在随后出现的【编辑调度】对话框中,设置时间调度

31、安排。 5. 设置完成后,单击【确定】按钮,SQL Server将执行备份操作,同时在【SQL Server 代理】【作业 】中自动建立对应的作业。6. 在【SQL Server 代理】【作业 】窗口中,可以像处理普通作业一样修改或删除数据库备份窗口中定义的备份计划。4.4.2 方案二:数据转换法(DTS) 1. 打开企业管理器,选择SQLServer 服务器的数据库,单击鼠标右键,选择“所有任务”,并点选“导入数据”或“导出数据”。 如果是在主服务器上进行操作,选导出数据;在备份服务器上进行操作,则选导入数据。 2. 第一步操作后,调出“数据转换服务导入/ 导出向导”界面,单击“下一步”,进

32、入“DTS 导入/ 导出向导”的选择数据源界面,选择“目的”,选择“制定表复制或查询”,选择要复制的对象。 弱做选择时,首先根据具体的客户端选择数据源,如果是OLE DB客户端,选择“用于SQL Server的Microsoft提供的OLEDB 程序”。然后选择提供数据源的服务器,接下来选择进入数据库的方式,可选择“使用Windows 身份验证”或“使用SQL Server 身份验证”。 如果选“使用SQL Server 身份验证”,须填写SQL Server 认可并对数据有修改权的用户,一般可选“SA”及其密码。最后选择要复制的数据库。 3. 在“制定表复制和查询”中,选择“在SQL Ser

33、ver数据库之间复制对象和数据”,然后单击下一步。选择具体复制对象和相应的选项等等.。 4. 通过保存调度和复制包,定制进行复制的时间和频率。 5. 全部设置完成后,提示会列出源、目的、采用的方式、数据库等选项,由你确认完成。如果设置结束后要进行定制时间修改,在企业管理器中,通过服务器、数据库、管理、SQL server 代理、作业,然后选择具体的作业,调出界面进行修改。4.4.3 方案三:复制订阅SQL Server 的复制功能基本上是使用“发布服务器(Publisher) ”和“订阅服务器”(Subscriber)的结构,这整个结构中包含了数个不同的组件。(1) 发布服务器(Publish

34、er):在复制中,发布服务器就是负责发布数据库内容给其他服务器的SQL Server (一般的我们把主服务器当作发布服务器,形象一点比喻发布服务器就好像是一本书的作者)(2) 订阅服务器(Subscriber):订阅服务器就是指受发布服务器所发布数据的SQL SERVER,通常发布服务器只有一个,但订阅服务器可以有多个。(形象比喻订阅服务就像是读者,购买相同图书的读者可以有很多。) (3) 分发服务器(Distributor):除了发布服务器和订阅服务器这两个基本外,另一个可以由 SQL SERVER 在整个复制结构中扮演的角色就是分发服务器。分发服务器是负责将发布服务器所发布的数据库发布、传

35、输到各订阅服务器的服务器。在简单的复制结构中,发布服务器和分发服务器通常是使用同一个 SQL SERVER。设置为分发服务器的 SQL SERVER,会有个名为 distribution 的系统数据库存放复制信息。(4) 发布项(Article):发布服务器所发布的数据称为发布项,发布项是进行复制时的复制单位,发布项可以是表或存储过程等数据库对象,也可以知识表中的某几列或某几项数据。 (5) 发布(Publish):一组特定的发布项组合就称为发布,也就是 SQL SERVER进行复制时所复制的数据合。当订阅服务器向发布服务器订阅数据时,是以发布为单位,而不是以发布项为单位的。即,订阅服务器只能

36、接收整个发布中的所有 article。而不能只选择其中几个发布项类订阅,每个发布只有来自单一数据库的内容,但我们可以为数据库设置多个发布。(6) 为适应不同的复制需求,SQL SERVER提供了发送(Push)和请求(Pull)两种不同的订阅方式。4.4.4 方案四:脚本实现备份(.表示名称) (1)完全备份(完全备份会备份数据库的所有数据文件、数据对象和数据) backup database . To . with init -完全备份 backup database . to . with noinit (2)差异备份(备份自最近一次完全备份以来的所有数据库改变) backup datab

37、ase . to . with init,name=. create table .(c 1 int not null,. char(10) not null) backup database . to . with differential,name=.1 insert . values(1,.) . restore headeronly from .4.5 数据库还原具体方案 4.5.1 从备份中还原 restore headeronly from . restore database . from . with file=2 从完全备份中恢复 restore headeronly fro

38、m . 从差异备份中恢复 restore database . from . with file=1,norecovery restore database . from . with file=5,recovery restore database .from . with file=1,norecover恢复到指定时间 restore log . from . with file=2,norecovery restore log . from . with file=3,norecovery restore log .from . with file=4,recovery,stopat=t

39、ime4.5.2 用企业管理器S Q L E M进行数据库恢复 打开企业管理器 SQLEM, 展开数据库 , 选中 数据 库右击I 所有任务I 还原数据库。选择还原的文件。 4.6 数据库崩溃恢复方案 在恢复的时候,最理想的情况就是你的数据文件和日志文件都完好无损.这样只需要sp_attach_db,把数据文件附加到新的数据库上即可。 一般数据库崩溃的时候系统是未必能有时间把未完成的事务和脏页等写入磁盘的,这样的情况sp_attach_db就会失败。DBA制定了一个良好的灾难恢复计划。按照你的恢复计划,还原最新的完全备份,增量备份或者事务日志备份,然后如果你的活动事务日志还能读得出来,就可以还原到崩溃前的状态。 首先可以试一下sp_attach_single_file_db,试着恢复一下你的数据文件。可以试着重新建立一个log,先把数据库设置为emergency mode,sysdatabases的status为32768 就表示数据库处于此状态。 设置:Use Master Go sp_configure allow updates, 1 reconfigure with override Go 然后 update sysdatabases set status = 32768 where name = 先把SQ

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁