ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:116.23KB ,
资源ID:3676004      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3676004.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(出租车管理系统.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

出租车管理系统.docx

1、出租车管理系统软 件 学 院课程设计报告书课程名称 SQL Server数据库课程设计 设计题目 出租车管理系统 专业班级 软件工程(1)班 学 号 5123 姓 名 朱阳阳 指导教师 亓春霞 2012年 10月1 设计目的 此设计项目是对学习SQL Server数据库课程后进行的一次全面的综合练习。目的在于加深对数据库基础理论和基本知识的理解,掌握使用数据库进行软件设计的基本方法,提高运用数据库解决实际问题的能力,最终实现对于给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要求和处理要求)。同时,此设计对于将来的毕业设计和具体

2、工作实践将有重要的意义。2 设计任务 出租车管理系统3 设计内容 需求分析任务 3.1.1 需求分析设计 司机和出租车是出租车公司最要的资源,是创造效益的资源。要想提高出租车公司的效益和服务质量,首先从做好对司机和出租车的管理着手。一是对出租车司机的信息的管理,二是对出租车信息和租赁的管理。出租车管理系统将很大程度上解决出租车公司在此工作上的难度。3.1.2 需求分析过程功能需求简介: 针对出租车行业的特点开发的出租车管理系统,实现出租车公司内部及时准确地采集内部各种数据信息,处理高速化和网络办公自动化。实现对出租车公司司机的信息记录,操作,出租车管理,提供精确查询等多种查询方式。3.1.3调

3、查需求基本操作:对出租车信息表、司机信息表、租赁表、违章表的查询、添加、更新、删除等功能。特别操作:对租赁表的功能。3.1.4 系统数据分析表2-1 数据结构定义数据结构名含义说明组成出租车信息表定义了出租车有关信息车牌号 入户时间 车型 颜色 出租情况 营业时间司机信息表定义了司机有关信息司机编号 姓名 性别 地址 身份证号 驾驶证号 发证时间 驾龄租赁表定义了租赁的有关信息司机编号 车牌号 期限 开始日期 截止日期 租赁费 车保费违章表定义了违章的有关信息司机编号 姓名 扣分 违章时间 违章地点出车记录表定义了每天哪些司机的出车情况司机编号 车牌号 出车日期概念结构设计3.2.1 概念结构

4、设计的方法 概念设计阶段我采用自底向上的方法,即自顶向下的进行需求分析,然后再自底向上的进行概念结构设计。对已经细化到无法再分的阶段逐步集成在一起,最终合成一个全局概念模式。3.2.2 概念结构设计的步骤 第一步是进行局部视图的设计:由于高层的数据流图只能反映系统的概貌,而中层流图能较好的反映系统中各局部应用的子系统组成。因此我们先逐一的设计分E-R图。 第二步是进行视图的集成:各子系统的E-R图设计好之后,下一步就是要将所有的分E-R图合成一个系统的总E-R图,一般有两个方式,多个分E-R图一次集成,另一种是一次集成两个分E-R图。我想采用一次集成两个分E-R图的方式。图3-1 出车记录E-

5、R图图3-2 出租车 E-R图图3-3 司机R-R图图3-4 租赁E-R图图3-5 违章E-R图图3-6 总体概念结构E-R图 逻辑结构设计E-R图向关系模型的转换 将上述总体概念结构E-R图转化成关系模型,根据这个关系写出数据依赖,确定数据依赖。 司机与出租车是一对一的关系,司机、出租车与租赁是一对一的关系,司机与违章是一对一的关系。司机(司机编号,姓名,性别,地址,身份证号,驾驶证号,发证时间,驾龄)出租车(车牌号,入户时间,车型,颜色,出租情况,营业时间)租赁表(司机编号,车牌号,期限,开始日期,截止日期,租赁费,车保费)出车记录表(司机编号,车牌号,出车日期)违章表(司机编号,姓名,扣

6、分,违章时间,违章地点) 物理设计物理表结构如下 表3-7司机表(Driver)列标示数据类型长度约束列意义DriverNumberchar6主键司机编号Namechar10不为空姓名Sexbit默认不为空性别Addressvarchar40不为空地址IDumberchar20不为空身份证号LincenseNumberchar10不为空驾驶证号CertificateDatedatetime默认不为空发证时间DriverAgetinyint默认不为空驾龄表3-8出租车表(Taxi)列标示数据类型长度约束列意义TaxiNumberchar6主键车牌号StartDatedatetime默认不为空入户

7、时间TaxiShapechar10不为空车型Colorchar10不为空颜色RentSituationbit默认不为空出租情况BusinessTimetinyint默认不为空营业时间表3-9租赁表(Rent)列标示数据类型长度约束列意义DriverNumberchar6主键司机编号TaxiNumberchar6不为空车牌号LimitTimetinyint默认不为空期限StartDatedatetime默认不为空开始日期EndDatedatetime默认不为空截止日期RentFeefloat默认不为空租赁费ProtectionFeeFloat默认不为空车保费表3-10违章表(Violate)列标

8、示数据类型长度约束列意义DriverNumberchar6主键司机编号Namechar10不为空姓名Pointstinyint默认不为空扣分ViolateDatedatetime默认不为空违章时间ViolateAddressvarchar40不为空违章地点表3-11出车记录表(Notes)列标示数据类型长度约束列意义DriverNumberchar6主键司机编号Namechar10不为空姓名DriveDatedatetime默认不为空出车日期 数据库的实施创建表/*创建数据库*/CREATE DATABASE TAXI /*数据库名*/ON ( NAME=TAXI_DATA, FILENAME

9、=D:Microsoft SQL ServerMSSQLDATA, SIZE=10MB, MAXSIZE=100MB, FILEGROWTH=10%)LOG ON ( NAME=TAXI_log, /*日志*/ FILENAME=D:Microsoft SQL ServerMSSQLDATA, SIZE=10MB, MAXSIZE=100MB, FILEGROWTH=1MB)/*创建基本表*/*创建司机表*/USE TAXICREATE TABLE Driver( DriverNumber char(6)NOT NULL PRIMARY KEY, /*司机编号*/ Name char (10)

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 Taxi( TaxiNumber char(6)NOT NULL PRIMARY KEY, /*车牌号*

11、/ 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, /*车牌号*/ Limit

12、Time tinyint NOT NULL, /*期限*/ StartDate datetime NOT NULL, /*开始日期*/ EndDate datetime NOT NULL, /*截止日期*/ RentFee float NOT NULL, /*租赁费*/ ProtectionFee float NOT NULL, /*车保费*/ PRIMARY KEY(DriverNumber,TaxiNumber)/*创建违章表*/CREATE TABLE Violate( DriverNumber char(6)NOT NULL PRIMARY KEY, /*司机编号*/ Name cha

13、r(10), /*姓名*/ Points tinyint NOT NULL, /*扣分*/ ViolateDate datetime NOT NULL, /*违章时间*/ ViolateAddress varchar(40)NOT NULL /*违章地点*/)/*创建出车表*/CREATE TABLE Notes( DriverNumber char(6)NOT NULL, /*司机编号*/ TaxiNumber char(6)NOT NULL, /*车牌号*/ DriverDate datetime NOT NULL /*出车日期*/)创建主要视图 视图是从一个或多个表导出的表。视图是数据库

14、的用户使用数据库的观点。司机和出租车是主要的实体,而这两个实体的信息又在不同的表中,作为出租车公司对司机和出租车有时关心的数据又是不同的,即使是相同的数据,也可能又不同的操作。有时候仅有的表的列属性名是不能满足需求的,于是根据不同的需求,在物理的数据库上定义他们对数据库所要求的数据结构。(1)创建Driver_VIEW视图,包含司机所有的信息USE TAXIGOCREATE VIEW Driver_VIEW(司机编号,姓名,性别,地址,身份证号,驾驶证号,发证时间,驾龄) AS SELECT * FROM DriverGO (2)创建Taxi_VIEW视图,包含出租车的所有信息。USE TAX

15、IGOCREATE VIEW Taxi_VIEW(车牌号,入户时间,车型,颜色,出租情况,每天营业时长) AS SELECT * FROM TaxiGO(3)创建Rent_VIEW视图,包含租赁的所有信息。USE TAXIGOCREATE VIEW Rent_VIEW(司机编号,车牌号,期限,开始日期,截止日期,租赁费,车保费) AS SELECT * FROM RentGO(4) 建租赁表平均租赁费视图Violate_VIEW_AVG,列名为平均租赁费,试图中列名为RentFee_avg。USE TAXIGOCREATE VIEW Violate_VIEW_AVG(平均租赁费) AS SEL

16、ECT AVG(RentFee) FROM Rent 创建索引 索引是根据表中一列或若干列按照一定顺序建立的列值与记录行之间的对应关系表。(1)为Driver表的姓名创建唯一索引Driver_nameUSE TAXIGOCREATE UNIQUE INDEX Driver_name ON Driver(Name)GO(2)根据Rent表的司机编号和车牌号创建复合索引。USE TAXIGOCREATE INDEX Rent_IND ON Rent(DriverNumber,TaxiNumber)GO创建表字段的约束关系 数据完整性包括实体完整性,域完整性和参照完整性。租赁表中的期限的取值肯定要有

17、一定的范围,违章表中的扣分也有范围,租赁表的截止日期必须在开始日期的之后,都可以通过CHECK约束来实现,这就体现了域的完整性。租赁表中的司机编号和车牌号都由司机表和出租车表中对应,当删除或修改司机表中的司机编号和出租车表中的车牌号也应当对应修改租赁表中的司机编号和车牌号,这体现了表与表之间的参照完整性。(1)添加Rent表中期限的约束条件。USE TAXIGOALTER TABLE Rent ADD CONSTRAINT LimitTime_constraint CHECK(LimitTime=0 AND LimitTime=0 AND Points=12)GO(3) 在Rent表中的Tax

18、iNumber列添加外键约束,参照Taxi表中的列USE TAXIGOALTER TABLE Rent ADD CONSTRAINT FK_TaxiNumber FOREIGN KEY(TaxiNumber)REFERENCES Taxi(TaxiNumber) GO(4)在Rent表中添加日期的约束。创建存储过程 存储过程分为系统存储过程、扩展存储过程和用户存储过程。存储过程可以接收参数、返回表格或标量结果和消息,执行存储过程后,就驻留在高速缓冲存储器,在以后的操作中,只需从高速缓冲存储器中调用已编译好的二进制代码执行,提高了系统性能。当给定了一个司机的编号或出租车的车牌号时想直接返回该司机

19、或该出租车的信息情况,不需要任何参数,或者使用给定的参数返回信息。(1)创建返回000001司机的信息情况。USE TAXIGOCREATE PROCEDURE driver_info AS SELECT * FROM Driver WHERE DriverNumber=000001GO/*执行存储过程driver_info*/EXECUTE driver_infoGO/*或者*/driver_infoGO (2) 创建返回出租车的信息情况。USE TAXIGOCREATE PROCEDURE taxi_info AS SELECT * FROM Taxi WHERE TaxiNumber=0

20、10001GO/*执行存储过程taxi_info*/EXECUTE taxi_infoGO(3) 从Rent表中查询指定司机编号的租赁信息USE TAXIGOCREATE PROCEDURE rent_info number char(6)AS SELECT * FROM Rent WHERE DriverNumber=numberGO/*执行存储过程rent_info*/EXECUTE rent_info 000002(4) 从Violate表中查询指定司机编号的违章情况USE TAXIGOCREATE PROCEDURE violate_info number char(10)=00000

21、1AS SELECT Points AS 扣分 FROM Violate WHERE DriverNumber=numberGO/*执行存储过程*/EXECUTE violate_info /*参数私用默认值*/EXECUTE violate_info000002 /*传递给number的实参为*/GO创建触发器 当查询一个表中是否存在信息时,或者向表中添加数据时,想显示有无要查的信息或想知道到底有没有执行,可以用触发器对相应的表做更改和显示操作与否。(1)在Drivr表上创建触发器,每次修改操作时,定义一个变量,让它显示插入成功。USE TAXIGOCREATE TRIGGER driver

22、_update ON Driver AFTER UPDATE AS BEGIN DECLARE str char(20) SET str=修改成功 PRINT str ENDGO/*对Driver表更新信息*/UPDATE Driver SET IDNumber=372929 WHERE DriverNumber=000004 (2)当修改Driver表中的司机编号时,修改Rent表中对应的司机编号,同时修改Violate表和Notes表中的司机编号。USE TAXIGOCREATE TRIGGER rent_update1 ON Driver AFTER UPDATE AS BEGIN DE

23、CLARE old_number char(6),new_number char(6) SELECT old_number=DriverNumber FROM deleted SELECT new_number=DriverNumber FROM inserted UPDATE Rent SET DriverNumber=new_number WHERE DriverNumber=old_number UPDATE Violate SET DriverNumber=new_number WHERE DriverNumber=old_number UPDATE Notes SET DriverN

24、umber=new_number WHERE DriverNumber=old_number ENDGO /*对Taxi表更新信息*/UPDATE Driver set DriverNumber=000009 WHERE DriverNumber=000001查看三个表中的变化。创建用户定义的函数和表值函数 当用户在编程时常常需要将一个或多个T-SQL语句组成子程序,以便反复调用。这就要用到用户定义的标量值函数和表值函数。标量值函数返回一个标量值,表值函数返回一个整表。当想计算得出Rent表中出租车的平均车保费时可以创建一个标量值函数,当想通过给定的司机编号查询已经创建好的Driver_VIE

25、W视图上给定司机编号的相关信息时可以创建一个返回整个表或视图的表值函数来实现。(1)创建用户定义函数,实现计算出租车的平均车保费。USE TAXIGOCREATE FUNCTION ProtectorFee()RETURNS intASBEGIN DECLARE fee int SELECT fee= ( SELECT avg(ProtectionFee) FROM Rent ) RETURN feeENDGO/*调用定义的ProtectionFee函数。*/USE TAXIGODECLARE fee intSELECT fee=()SELECT fee AS 出租车的平均租赁费(2)创建一个

26、表值函数,实现查询给定司机编号的相关信息。USE TAXIGOCREATE FUNCTION fn_view(number char(6)RETURNS tableAS RETURN( SELECT 司机编号,姓名,性别,地址,身份证号,驾驶证号 FROM WHERE 司机编号=number)GO/*调用定义好的标志函数*/SELECT * FROM fn_view(000003)创建数据库的安全管理角色 数据库的安全性管理是数据库服务器应实现的重要功能和之一。对用户登录进行身份验证,当用户登录到数据库系统时,系统对该用户的账户和口令进行验证,包括确认用户账户是否有效以及能否访问数据库系统。对

27、用户进行的操作进行权限控制,当用户登录到数据库后,只能对数据库中的数据在允许的权限内进行操作。(1)创建SQL Server登录名sql_tao,密码为123456。USE TAXICREATE LOGIN sql_tao WITH PASSWORD=123456, DEFAULT_DATABASE=TAXI/*将sql_tao用户添加到sysadmin固定服务器角色中。*/EXEC sp_addsrvrolemembersql_tao,sysadmin(2)创建数据库用户davidCREATE USER david FOR LOGIN sql_tao WITH DEFAULT_SCHEMA=dbo/*将david用户添加到sysadmin固定数据库角色中db_owner。*/EXEC sp_addrolememberdb_owner,david(3) 在TAXI数据库上的用户david授予创建表的权限*/USE TAXIGOGRANT CREATE TABLE TO davidGO/*在TAXI数据库上的用户yangyang授予Driver表操作的权限*/GRANT UPDATE,INSERT ON Driver TO yangyang WITH GRANT OPTION

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1