出租车管理系统

上传人:z**** 文档编号:114676397 上传时间:2022-06-29 格式:DOC 页数:29 大小:388.50KB
返回 下载 相关 举报
出租车管理系统_第1页
第1页 / 共29页
出租车管理系统_第2页
第2页 / 共29页
出租车管理系统_第3页
第3页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
ncoIHw-rEOZ5S米M 载MZtHSOSZOOHOZBS)普蓋DIP孙3塀帳圏m卅鬼曲蛊瞿M墨gas 3S1设计目的此设计项目是对学习SQL Server数据库课程后进行的一次全面的综合练习。目的在于加深对数据库基础理论和基本知识的理解,掌握使用数据库进行软件设计的基本方法,提高运用数据库解决实际问题的能力,最终实现对于给定的 应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地 存储数据,满足各种用户的应用需求(信息要求和处理要求)。同时,此设计对于 将来的毕业设计和具体工作实践将有重要的意义。2设计任务出租车管理系统3设计内容3.1需求分析任务需求分析设计司机和出租车是出租车公司最要的资源,是创造效益的资源。要想提高出租 车公司的效益和服务质量,首先从做好对司机和出租车的管理着手。一是对出租 车司机的信息的管理,二是对出租车信息和租赁的管理。出租车管理系统将很大 程度上解决出租车公司在此工作上的难度。需求分析过程功能需求简介:针对出租车行业的特点开发的出租车管理系统,实现出租车公司内部及时准 确地采集内部各种数据信息,处理高速化网络办公自动化。实现对出租车公司 司机的信息记录,操作,出租车管理,提供精确查询等多种查询方式。调直需求基本操作:对出租车信息表、司机信息表、租赁表、违章表的查询、添加、更新、删除等功能。特别操作:对租赁表的功能。系统数据分析表2-1数据结构定义数据结构名含义说明组成出租车信息表走义了出租车有关信息车牌号入户时间车型颜色 出租情况营业时间司机信息表走义了司机有关信息司机编号姓名性别地址身份证 号驾驶证号发证时间驾龄租赁表走义了租赁的有关信息司机编号 车牌号期限 开始日期 截止日期租赁费车保费违章表走义了违章的有关信息司机编号姓名扣分违童时间 违章地点出车记录表走义了每天哪些司机的出车 情况司机编号车牌号出车日期3.2概念结构设计概念结构设计的方法概念设计阶段我采用自底向上的方法,即自顶向下的进行需求分析,然后再自底向上的进行概念结构设计。对已经细化到无法再分的阶段逐步集成在一起, 最终合成一个全局概念模式。概念结构设计的步骤第一步是进行局部视图的设计:由于高层的数据流图只能反映系统的概貌, 而中层流图能较好的反映系统中各局部应用的子系统组成。因此我们先逐一的设 计分E-R图。第二步是进行视图的集成:各子系统的E-R图设计好之后,下一步就是要 将所有的分E-R图合成一个系统的总E-R图,一般有两个方式,多个分E-R图 次集成,另一种是一次集成两个分E-R图。我想采用一次集成两个分E-R图 的方式。图3-1出车记录E-R图出租车图3-2出租车E-R图性别司机图34租赁E-R图图35违章E-R图图3-6总体概念结构E-R图3.3逻辑结构设计E-R图向关系模型的转换将上述总体概念结构E-R图转化成关系模型,根据这个关系写出数据依赖, 确定数据依赖。司机与出租车是一对一的关系,司机、出租车与租赁是一对一的关系,司机 与违章是一对一的关系。司机(司机编号,姓名,性别,地址,身份证号,驾驶证号,发证时间,驾龄) 出租车(车牌号,入户时间,车型,颜色,出租情况,营业时间) 租赁表(司机编号,车牌号,期限,开始日期,截止日期,租赁费,车保费) 出车记录表(司机编号,车牌号,出车日期)违章表(司机编号,姓名,扣分,违章时间,违章地点)3.4物理设计物理表结构如下表3-7司机表(Driver)列标示数据类型长度约束列意义DriverNumberchar6主键司机编号Namechar10不为空姓名Sexbit默认不为空性别Addressvarchar40不为空地址IDumberchar20不为空身份证号Lincen seNumberchar10不为空驾驶证号CertificateDatedatetime默认不为空发证时间DriverAgetinyint默认不为空驾龄表3-8出租车表(Taxi)列标示数据类型长度约束列意义TaxiNumberchar6主键车牌号StartDatedatetime默认不为空入户时间TaxiShapechar10不为空车型Colorchar10不为空颜色RentSituati onbit默认不为空出租情况BusinessTimetinyint默认不为空营业时间表芥9租赁表(Rent)列标示瘫类型长度约束列意义DriverNumberchar6主键司机编号TaxiNumberchar6不为空车牌号LimitTimetinyint默认不为空期限StartDatedatetime默认不为空开始日期EndDatedatetime默认不为空截止日期Ren tFeefloat默认不为空租赁费ProtectionFeeFloat默认不为空车保费表 3-10 违章表(Violate)列标示哋类型长度约束列意义DriverNumberchar6主键司机编号Namechar10不为空姓名Pointstinyint默认不为空扣分ViolateDatedatetime默认不为空违童时间ViolateAddressvarchar40不为空违童地点表3-11出车记录表(Notes)列标示哋类型长度约束列意义DriverNumberchar6主键司机编号Namechar10不为空姓名DriveDatedatetime默认不为空出车日期3.5数据库的实施3.5.1.创建表厂创建数据库*/厂数据库名*/CREATE DATABASE TAXIONNAME 二TAXI_DATA,FILENAME二Q:Microsoft SQLServerMSSQL10_50.SQLEXPRESSMSSQLDATATAXI.mdf:SIZE=10 MB,MAXSIZE 二 100MB,FILEGROWTH = 10%LOG ON(NAME=TAXI Jog;/* 日志*/FILENAME二Q:Microsoft SQLServerMSSQL10_50.SQLEXPRESSMSSQLDATATAXI_Logdf:SIZE=10 MB,MAXSIZE 二 100MB,FILEGROWTH = 1MB)厂创建基本表*/厂创建司机表*/USE TAXICREATE TABLE Driver(DriverNumber char(6)NOT NULL PRIMARY KEY,厂司机编号*/Name char (10),姓名*/Sex bit NOT NULL,厂性别*7Address varchar(40)NOT NULL,/*地址*7IDNumber 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 RentDriverNumber char(6)NOT NULL,/*司机编号*/TaxiNumber char(6)NOT NULL,/*车牌号*/LimitTime tinyint NOT NULL,严期限*/StartDate datetime NOT NULL,厂开始日期/厂截止日期*/RentFee float NOT NULL,/*租赁费*/ProtectionFee float NOT NULL,/*车保费*/End Date datetime NOT NULL,PRIMARY KEDriverNumberJaxiNumber)厂创建违章表*/CREATE TABLE ViolateName char(lO).厂姓名*/Points tinyint NOT NULL,厂扣分*7ViolateDate datetime NOT NULL,厂违章时间*/ViolateAddress varchar(40)NOT NULL厂违章地点*/DriverNumber char(6)NOT NULL PRIMARY KEY,厂司机编号)厂创建出车表*/CREATE TABLE NotesDriverNumber char(6)NOT NULL,厂司机编号*/TaxiNumber charNOT NULL,DriverDate datetime NOT NULL厂出车日期/3.5.2.创建主要视图视图是从一个或多个表导出的表。视图是数据库的用户使用数据库的观点。司机和出租车是主要的实体,而这两个实体的信息又在不同的表中,作为出租车 公司对司机和出租车有时关心的数据又是不同的,即使是相同的数据,也可能又 不同的操作。有时候仅有的表的列属性名是不能满足需求的,于是根据不同的需 求,在物理的数据库上定义他们对数据库所要求的数据结构。创建Driver_VIEW视图,包含司机所有的信息USE TAXIGOCREATE VIEW Driver_VIEW(司机编号,姓名,性别,地址,身份证号,驾驶证号,发证 时间,驾龄)ASSELECT * FROM DriverGO(2)创建Taxi_VIEW视图,包含出租车的所有信息。USE TAXIGOCREATE V圧W Taxi_VIEW(车牌号,入户时间,车型,颜色,出租情况,每天营业时长)ASSELECT * FROM Taxi(3)创建Rent_WEW视图z包含租赁的所有信息。USE TAXIGOCREATE V圧W Rent_VIEW(司机编号,车牌号,期限,开始日期,截止日期,租赁费, 车保费)ASSELECT * FROM RentGO建租赁表平均租赁费视图Violate圧W_AVG洌名为平均租赁费,试图中列名为 Ren tFee_avgoUSE TAXIGOCREATE V圧W Violate_V圧W_AVG(平均租赁费)ASSELECT AVG(RentFee)FROM Rent353创建索引索引是根据表中一列或若干列按照一定顺序建立的列值与记录行之间的对应关系表。(1 )为Driver表的姓名创建唯一索引Driver_nameUSE TAXICREATE UNIQUE INDEX Driver_nameON Driver(Name)GO(2 )根据Rent表的司机编号和车牌号创建复合索引。USE TAXIGOCREATE INDEX RentJNDON Rent(DriverNumber,TaxiNumber)GO3.54创建表字段的约束关系数据完整性包括实体完整性,域完整性和参照完整性。租赁表中的期限的取 值肯定要有一定的范围,违章表中的扣分也有范围,租赁表的截止日期必须在开 始日期的之后,都可以通过CHECK约束来实现,这就体现了域的完整性。租赁 表中的司机编号和车牌号都由司机表和出租车表中对应,当删除或修改司机表中 的司机编号和出租车表中的车牌号也应当对应修改租赁表中的司机编号和车牌 号,这体现了表与表之间的参照完整性。(1 )添加Rent表中期限的约束条件。USE TAXIGOALTER TABLE RentADD CONSTRAINT LimitTime_constraint CHECK(LimitTime=0 AND LimitTime=0 ANDPoints = 12)GO在Rent表中的TaxiNumber列添加夕卜键约束,参照Taxi表中的列USE TAXIGOALTER TABLE RentADD CONSTRAINT FK_TaxiNumber FOREIGN KEY(TaxiNumber)REFERENCESTaxi(TaxiNumber)GO在Rent表中添加日期的约束。355创建存储过程存储过程分为系统存储过程、扩展存储过程和用户存储过程。存储过程可以 接收参数、返回表格或标量结果和消息,执行存储过程后,就驻留在高速缓冲存 储器,在以后的操作中,只需从高速缓冲存储器中调用已编译好的二进制代码执 行,提高了系统性能。当给定了一个司机的编号或出租车的车牌号时想直接返回 该司机或该出租车的信息情况,不需要任何参数,或者使用给定的参数返回信息。(1 )创建返回000001司机的信息情况。OD ojuFixe; biCID3X3/gu !一圧嚼團劉母侑/ 09.TOOOlO.=JequJnN!xe丄 3d3HM 抄丄 lAIOdd 斗 1D313SSV ojux% 3dna3DOd 31V3dD09IXV1 3sn 回虫謎碍 09 ouFjeAup 人皋陋/09 ouFjeAup 31033X3人。ju厂eAu p哥團劉卑马旳J 09 .TOOOOO.=JequJnNJaAUQ 3d3HM-auq |AIOdd * 丄RimsSV opFjeAup 3dna3DOd 31V3dDIXV1 3SCI(3)从Rent表中查询指定司机编号的租赁信息USE TAXIGOCREATE PROCEDURE rent_info number char(6)ASSELECT * FROM Rent WHERE DriverNumber=numberGO厂执行存储过程rentnfo*/EXECUTE rent_info 000002 从Violate表中查询指定司机编号的违章情况USE TAXIGOCREATE PROCEDURE violatejnfo number char(10) = ,000001,ASSELECT Points AS 扣分FROM Violate WHEREDriverNumber= numberGO厂执行存储过程*/EXECUTE violatejnfo/*参数私用默认值*/EXECUTE violatejnfo000002厂传递给217110飭的实参为*/3.56创建触发器当查询一个表中是否存在信息时,或者向表中添加数据时,想显示有无要查的信息或想知道到底有没有执行,可以用触发器对相应的表做更改和显示操作与 否。(1)在Drivr表上创建触发器,每次修改操作时,定义一个变量,让它显示插入成 功。USE TAXIGOCREATE TRIGGER driver_updateON Driver AFTER UPDATEASBEGINDECLARE str char(20)SET str二修改成功PRINT strENDGO厂对Driver表更新信息*/UPDATE Driver SET IDNumber=, 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 _n umberUPDATE Violate SET DriverNumber=new_number WHEREDriverNumber=old _n umberUPDATE Notes SET DriverNumber=new_number WHEREDriverNumber=old _n umberENDGO厂对Taxi表更新信息*7UPDATE Driver set DriverNumber=,000009, WHEREDriverNumber=000001,查看三个表中的变化。357 创建用户定义的函数和表值函数当用户在编程时常常需要将一个或多个T-SQL语句组成子程序,以便反复调用。这就要用到用户定义的标量值函数和表值函数。标量值函数返回一个标量值, 表值函数返回一个整表。当想计算得出Rent表中出租车的平均车保费时可以创 建一个标量值函数,当想通过给定的司机编号查询已经创建好的Driver_VIEW视 图上给定司机编号的相关信息时可以创建一个返回整个表或视图的表值函数来 实现。(1 )创建用户定义函数,实现计算出租车的平均车保费。USE TAXIGOCREATE FUNCTION ProtectorFee()RETURNS intASBEGINDECLARE fee intSELECT fee=(SELECT avg(ProtectionFee) FROM Rent)RETURN feeENDGO厂调用定义的ProtectionFee函数。*7USE TAXIDECLARE fee intSELECT fee=dbo.ProtectorFee()SELECT fee AS 出租车的平均租赁费,(2)创建一个表值函数,实现查询给定司机编号的相关信息。USE TAXIGOCREATE FUNCTION fn_view(number char(6)RETURNS tableAS RETURN(SELECT司机编号,姓名,性别,地址,身份证号,驾驶证号FROMTAXI.dbo.Driver_V 圧 WWHERE 司机编号=number)GO厂调用定义好的标志函数*/SELECT * FROM fn_view(000003)3.5.8 创建数据库的安全管理角色数据库的安全性管理是数据库服务器应实现的重要功能和之一。对用户登 录进行身份验证,当用户登录到数据库系统时,系统对该用户的账户和口令进行 验证,包括确认用户账户是否有效以及能否访问数据库系统。对用户进行的操作 进行权限控制,当用户登录到数据库后,只能对数据库中的数据在允许的权限内进行操作。(1 )创建SQL Server登录名sql_ta。,密码为 123456。USE TAXICREATE LOGIN sql_taoWITH PASSWORD二123456:D E FAULT_DATABAS E 二 TAXI厂将sql_tao用户添加至!Jsysadmin固定服务器角色中。*/EXEC sp-addsrvrolemembersqLtao/sysadmin(2)创建数据库用户davidCREATE USER davidFOR LOGIN sql_taoWITH DEFAULT_SCHEMA=dbo厂将david用户添加到sysadmin固定数据库角色中db_ownero */EXEC sp_addrolememberdb_ownerTdavid在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交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!