出租车管理系统

上传人:无*** 文档编号:30169588 上传时间:2021-10-09 格式:DOCX 页数:32 大小:290.13KB
返回 下载 相关 举报
出租车管理系统_第1页
第1页 / 共32页
出租车管理系统_第2页
第2页 / 共32页
出租车管理系统_第3页
第3页 / 共32页
点击查看更多>>
资源描述
软件学院课程设计报告书课程名称SQLSeryergvt设计题目专业班级学 号姓 名指导教师出租车管理系统软件工程(工)班201002505123朱阳阳亓春霞2012年10月1设计目的此设计项目是对学习SQL Server数据库课程后进行的一次全面的综合练 习。目的在于加深对数据库基础理论和基本知识的理解,掌握使用数据库进行软 件设计的基本方法,提高运用数据库解决实际问题的能力,最终实现对于给定的 应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地 存储数据,满足各种用户的应用需求(信息要求和处理要求)。同时,此设计对于 将来的毕业设计和具体工作实践将有重要的意义。2设计任务出租车管理系统3设计内容3.1 需求分析任务3.1.1 需求分析设计司机和出租车是出租车公司最要的资源,是创造效益的资源。要想提高出租 车公司的效益和服务质量,首先从做好对司机?口出租车的管理着手。一是对出租 车司机的信息的管理,二是对出租车信息和租赁的管理。出租车管理系统将很大 程度上解决出租车公司在此工作上的难度。3.1.2 需求分析过程功能需求简介:针对出租车行业的特点开发的出租车管理系统,实现出租车公司内部及时准 确地采集内部各种数据信息,处理高速化?口网络办公自动化。实现对出租车公司 司机的信息记录,操作,出租车管理,提供精确查询等多种查询方式。3.1.3 调查需求基本操作:对出租车信息表、司机信息表、租赁表、违章表的查询、添加、更新、 删除等功能。特别操作:对租赁表的功能。3.1.4 系统数据分析表2-1数据结构定义数据结构名含义说明组成出租车信息表定义了出租车有关信息车牌号入户时间车型颜色 出租情况营业时间司机信息表定义了司机有关信息司机编号姓名性别地址身份证 号驾驶证号发证时间驾龄租赁表定义了租赁的有关信息司机编号 车牌号期限 开始日期 截止日期租赁费车保费违章表定义了违章的有关信息司机编号姓名扣分违章时间 违章地点出车记录表定义了每天哪些司机的出车 情况司机编号车牌号出车日期3.2 概念结构设计3.2.1 概念结构设计的方法概念设计阶段我采用自底向上的方法,即自顶向下的进行需求分析,然后再 自底向上的进行概念结构设计。对已经细化到无法再分的阶段逐步集成在一起, 最终合成一个全局概念模式。3.2.2 概念结构设计的步骤第一步是进行局部视图的设计:由于高层的数据流图只能反映系统的概貌,而中层流图能较好的反映系统中各局部应用的子系统组成。因此我们先逐一的设 计分E-R图。第二步是进行视图的集成:各子系统的E-R图设计好之后,下一步就是要 将所有的分E-R图合成一个系统的总E-R图,一般有两个方式,多个分E-R图 一次集成,另一种是一次集成两个分E-R图。我想采用一次集成两个分E-R图 的方式。司机编匚)出车记录表图3-1出车记录E-R图时间出租车/ r营业时间:出租情况图3-2出租车E-R图性别图3-3司机R-R图图3-4租赁E-R图图3-5违章E-R图图3-6总体概念结构E-R图3.3 逻辑结构设计E-R图向关系模型的转换将上述总体概念结构E-R图转化成关系模型,根据这个关系写出数据依赖, 确定数据依赖。司机与出租车是一对一的关系,司机、出租车与租赁是一对一的关系,司机 与违章是一对一的关系。司机(司机编号,姓名,性别,地址,身份证号,驾驶证号,发证时间,驾龄) 出租车(车牌号,入户时间,车型,颜色,出租情况,营业时间)租赁表(司机编号,车牌号,期限,开始日期,截止日期,租赁费,车保费) 出车记录表(司机编号,车牌号,出车日期)违章表(司机编号,姓名,扣分,违章时间,违章地点)3.4物理设计物理表结构如下表3-7司机表(Driver)列标示数据类型ixJS约束列意义DriverNumberchar6主键司机编号Namechar10不为空姓名Sexbit默认不为空性别Addressvarchar40不为空地址IDumberchar20不为空身份证号LincenseNumberchar10不为空驾驶证号CertificateDatedatetime默认不为空发证时间DriverAgetinyint默认不为空驾龄表3-8出租车表(Taxi)列标示数据类型ixJS约束列意义TaxiNumberchar6主键车牌号StartDatedatetime默认不为空入户时间TaxiShapechar10不为空车型Colorchar10不为空颜色Rentsituationbit默认不为空出租情况BusinessTimetinyint默认不为空营业时间表3-9租赁表(Rent)列标示数据类型长度约束列意义DriverNumberchar6主键司机编号TaxiNumberchar6不为空车牌号LimitTimetinyint默认不为空期限StartDatedatetime默认不为空开始日期EndDatedatetime默认不为空截止日期RentFeefloat默认不为空租赁费ProtectionFeeFloat默认不为空车保费表 3-10 违章表(Violate)列标示数据类型长度约束列意义DriverNumberchar6主键司机编号Namechar10不为空姓名Pointstinyint默认不为空扣分ViolateDatedatetime默认不为空违章时间ViolateAddressvarchar40不为空违章地点表3-11出车记录表(Notes)列标示数据类型长度约束列意义DriverNumberchar6主键司机编号Namechar10不为空姓名DriveDatedatetime默认不为空出车日期3.5数据库的实施3.5.L创建表/*创建数据库*/CREATE DATABASE TAXI/*数据库名*/ONNAME=TAXI DATA,FILENAME=D:Microsoft SQLServerXMSSQLlO.SO.SQLEXPRESSXMSSQLXDATAXTAXLmdf;SIZE=10MB,MAXSIZE = 100MB,FILEGROWTH = 10%)LOG ON(NAME=TAXI Jog;/* 日志*/FILENAME=D:Microsoft SQLServerMSSQL10_50.SQLEXPRESSMSSQLDATATAXI_Log.ldf,SIZE=10MB,MAXSIZE=100MBzFILEGROWTH = 1MB)/*创建基本表*/*创建司机表*/USE TAXICREATE TABLE DriverDriverNumber char(6)NOT NULL PRIMARY KEY,/*司机编号*/*姓名*/*性别*/*地址*/*身份证号*/*驾驶证号*/Name char (10),Sex bit NOT NULL,Address varchar(40)NOT NULL,IDNumber char(18)NOT NULL,licenseNumber char(10)NOT NULL,CertificateDate datetime NOT NULL,/*发证时间*/DriverAge tinyint NOT NULL/*驾龄*/*创建出租车表*/CREATE TABLE TaxiTaxiNumber char(6)NOT NULL PRIMARY KEY,/*车牌号*/StartDate datetime NOT NULL,/*入户时间*/TaxiShape char(10)NOT NULL,/*车型*/Color char(10)NOT NULL,/*颜色*/Rentsituation bit NOT NULL DEFAULT 1,/*出租情况*/BusinessTime tinyint NOT NULL/*营业时间*/*创建租赁表*/CREATE TABLE Rent(DriverNumber char(6)NOT NULL,TaxiNumber char(6)NOT NULL,LimitTime tinyint NOT NULL,/*司机编号*/*车牌号*/*期限*/StartDate datetime NOT NULL,/*开始日期*/End Date datetime NOT NULL,/*截止日期*/RentFee float NOT NULL,ProtectionFee float NOT NULL,/*租赁费*/*车保费*/PRIMARY KEY(DriverNumber/TaxiNumber)/*创建违章表*/CREATE TABLE ViolateDriverNumber char(6)NOT NULL PRIMARY KEY,/*司机编号*/Name char(10)f/*姓名*/Points tinyint NOTNULUViolateDate datetime NOT NULL,/*扣分*/*违章时间*/ViolateAddress varchar(40)NOT NULL/*违章地点*/)/*创建出车表*/CREATE TABLE NotesDriverNumber char(6)NOT NULL,/*司机编号*/TaxiNumber char(6)NOT NULL,/*车牌号*/DriverDate datetime NOT NULL/*出车日期*/3.52创建主要视图视图是从一个或多个表导出的表。视图是数据库的用户使用数据库的观点。司机和出租车是主要的实体,而这两个实体的信息又在不同的表中,作为出租车 公司对司机和出租车有时关心的数据又是不同的,即使是相同的数据,也可能又 不同的操作。有时候仅有的表的列属性名是不能满足需求的,于是根据不同的需 求,在物理的数据库上定义他们对数据库所要求的数据结构。(1)创建Driver_VIEW视图,包含司机所有的信息USE TAXIGOCREATE VIEW DrivejVIEW(司机编号,姓名,性别,地址,身份证号,驾驶证号,发证 时间,驾龄)ASSELECT * FROM DriverGO(2)创建Taxi_VIEW视图,包含出租车的所有信息。USE TAXIGOCREATE VIEW Taxi_VIEW(车牌号,入户时间,车型颜色,出租情况每天营业时长)ASSELECT * FROM TaxiGO (3)创建Rent_VIEW视图,包含租赁的所有信息。USE TAXIGOCREATE VIEW Rent_VIEW(司机编号,车牌号,期限,开始日期,截止日期,租赁费,车保费)ASSELECT * FROM RentGO建租赁表平均租赁费视图Violate_VIEW_AVG列名为平均租赁费,试图中列 名为 RentFee_avg。USE TAXIGOCREATE VIEW Violate_VIEW_AVG(平均租赁费)ASSELECT AVG(RentFee)FROM Rent353.创建索引索引是根据表中一列或若干列按照一定顺序建立的列值与记录行之间的对 应关系表。(1 )为Driver表的姓名创建唯一索引DrivejnameUSE TAXIGOCREATE UNIQUE INDEX Driver_nameON Driver(Name)GO(2 )根据Rent表的司机编号和车牌号创建复合索引。USE TAXIGOCREATE INDEX RentJNDON Rent(DriverNumber,TaxiNumber)GO354.创建表字段的约束关系数据完整性包括实体完整性,域完整性和参照完整性。租赁表中的期限的取 值肯定要有一定的范围,违章表中的扣分也有范围,租赁表的截止日期必须在开 始日期的之后,都可以通过CHECK约束来实现,这就体现了域的完整性。租赁 表中的司机编号和车牌号都由司机表和出租车表中对应,当删除或修改司机表中 的司机编号和出租车表中的车牌号也应当对应修改租赁表中的司机编号和车牌 号,这体现了表与表之间的参照完整性。(1 )添加Rent表中期限的约束条件。USE TAXIGOALTER TABLE RentADD CONSTRAINT LimitTime_constraint CHECK(LimitTime=0 AND LimitTime=0 ANDPoints = 12)GO(3)在Rent表中的TaxiNumber列添加外键约束,参照Taxi表中的列USE TAXIGOALTER TABLE RentADD CONSTRAINT FK_TaxiNumber FOREIGN KEY(TaxiNumber)REFERENCESTaxi(TaxiNumber)GO在Rent表中添加日期的约束。355.创建存储过程存储过程分为系统存储过程、扩展存储过程和用户存储过程。存储过程可以 接收参数、返回表格或标量结果和消息,执行存储过程后,就驻留在高速缓冲存 储器,在以后的操作中,只需从高速缓冲存储器中调用已编译好的二进制代码执 行,提高了系统性能。当给定了一个司机的编号或出租车的车牌号时想直接返回 该司机或该出租车的信息情况,不需要任何参数,或者使用给定的参数返回信息。(1 )创建返回000001司机的信息情况。USE TAXIGOCREATE PROCEDURE driver_infoASSELECT * FROM Driver WHERE DriverNumber=000001,GO/*执行存储过程drivernfo*/EXECUTE driverjnfoGO/*或者*/driverjnfoGO(2)创建返回出租车的信息情况。USE TAXIGOCREATE PROCEDURE taxi_infoASSELECT * FROM Taxi WHERE TaxiNumber=010001,GO/*执行存储过程taxinf。*/EXECUTE taxijnfo(3)从Rent表中查询指定司机编号的租赁信息USE TAXIGOCREATE PROCEDURE rent_info number char(6)ASSELECT * FROM Rent WHERE DriverNumber=numberGO/*执行存储过程rentnf。*/EXECUTE rent_info 000002,(4)从Vi5ate表中查询指定司机编号的违章情况USE TAXIGOCREATE PROCEDURE violatejnfo number char(10) = ,000001, ASSELECT Points AS W FROM Violate WHEREDriverNumber=numberGO/*执行存储过程*/EXECUTE violatejnfo/*参数私用默认值*/EXECUTE violatejnfo,000002,/*传递给number的实参为*/GO356.创建触发器当查询一个表中是否存在信息时,或者向表中添加数据时,想显示有无要查 的信息或想知道到底有没有执行,可以用触发器对相应的表做更改和显示操作与 否。(1)在Drivr表上创建触发器,每次修改操作时,定义一个变量,让它显示插入成 功。USE TAXIGOCREATE TRIGGER driver_updateON Driver AFTER UPDATEASBEGINDECLARE str char(2O)SET str=修改成功PRINT strENDGO/*对Driver表更新信息*/UPDATE Driver SET IDNumber=372929199106033619 WHEREDriverNumber=000004,(2 )当修改Driver表中的司机编号时,修改Rent表中对应的司机编号,同时修改 Violate表和Notes表中的司机编号。USE TAXIGOCREATE TRIGGER rent_updatelON Driver AFTER UPDATEASBEGINDECLARE old_number char(6),new_number char(6)SELECT old_number=DriverNumber FROM deletedSELECT new_number=DriverNumber FROM insertedUPDATE Rent SET DriverNumber=new_number WHEREDriverNumber=old_numberUPDATE Violate SET DriverNumber=new_number WHEREDriverNumber=old_numberUPDATE Notes SET DriverNumber=new_number WHEREDriverNumber=old_numberENDGO/*对Taxi表更新信息*/UPDATE Driver set DriverNumber=000009 WHEREDriverNumber=000001,查看三个表中的变化。357.创建用户定义的函数和表值函数当用户在编程时常常需要将一个或多个T-SQL语句组成子程序,以便反复调用。这就要用到用户定义的标量值函数和表值函数。标量值函数返回一个标量值, 表值函数返回一个整表。当想计算得出Rent表中出租车的平均车保费时可以创 建一个标量值函数,当想通过给定的司机编号查询已经创建好的DrivejVIEW视 图上给定司机编号的相关信息时可以创建一个返回整个表或视图的表值函数来 实现。(1 )创建用户定义函数,实现计算出租车的平均车保费。USE TAXIGOCREATE FUNCTION ProtectorFee()RETURNS intASBEGINDECLARE fee intSELECT fee=(SELECT avg(ProtectionFee) FROM Rent)RETURN feeENDGO/*调用定义的ProtectionFee函数。*/USE TAXIGODECLARE fee intSELECT fee=dbo.ProtectorFee()SELECT fee AS 出租车的平均租赁费,(2)创建一个表值函数,实现查询给定司机编号的相关信息。USE TAXIGOCREATE FUNCTION fn_view(number char(6)RETURNS tableAS RETURN(SELECT司机编号,姓名,性别,地址,身份证号,驾驶证号FROMTAXI.dbo.Driver_VIEWWHERE司机编号二加01106)GO/*调用定义好的标志函数*/SELECT * FROM fn_view(000003)358.创建数据库的安全管理角色数据库的安全性管理是数据库服务器应实现的重要功能和之一。对用户登 录进行身份验证,当用户登录到数据库系统时,系统对该用户的账户和口令进行 验证,包括确认用户账户是否有效以及能否访问数据库系统。对用户进行的操作 进行权限控制,当用户登录到数据库后,只能对数据库中的数据在允许的权限内进行操作。(1 )创建SQL Server登录名sql_ta。,密码为 123456。USE TAXICREATE LOGIN sql_taoWITH PASSWORD=123456,D EFAULT_DATABAS E = TAXI/*将sql_tao用户添加到sysadmin固定服务器角色中。*/EXEC sp-addsrvrolemembersqLtao/sysadmin(2)创建数据库用户davidCREATE USER davidFOR LOGIN sql_taoWITH DEFAULT_SCHEMA=dbo/*将david用户添加到sysadmin固定数据库角色中db_owner。*/EXEC sp-addrolememberdowner/david(3)在TAXI数据库上的用户david授予创建表的权限*/USE TAXIGOGRANT CREATE TABLE TO davidGO/*在TAXI数据库上的用户yangyang授予Driver表操作的权限*/GRANT UPDATE,INSERT ON Driver TO yangyangWITH GRANT OPTION
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 商业管理 > 营销创新


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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