出租车管理系统Word文档下载推荐.docx

上传人:b****6 文档编号:19570112 上传时间:2023-01-07 格式:DOCX 页数:19 大小:123.69KB
下载 相关 举报
出租车管理系统Word文档下载推荐.docx_第1页
第1页 / 共19页
出租车管理系统Word文档下载推荐.docx_第2页
第2页 / 共19页
出租车管理系统Word文档下载推荐.docx_第3页
第3页 / 共19页
出租车管理系统Word文档下载推荐.docx_第4页
第4页 / 共19页
出租车管理系统Word文档下载推荐.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

出租车管理系统Word文档下载推荐.docx

《出租车管理系统Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《出租车管理系统Word文档下载推荐.docx(19页珍藏版)》请在冰豆网上搜索。

出租车管理系统Word文档下载推荐.docx

司机编号 姓名 性别地址身份证号 驾驶证号发证时间驾龄

租赁表

定义了租赁的有关信息

司机编号车牌号 期限开始日期 截止日期租赁费 车保费

违章表

定义了违章的有关信息

司机编号姓名 扣分 违章时间

违章地点

出车记录表

定义了每天哪些司机的出车情况

司机编号车牌号    出车日期

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图

图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)

列标示

数据类型

长度

约束

列意义

DriverNumber

char

6

主键

司机编号

Name

char

10

不为空

姓名

Sex

bit

默认

性别

Address

varchar

40

地址

IDumber

20

身份证号

LincenseNumber

char

驾驶证号

CertificateDate

datetime

发证时间

DriverAge

tinyint

驾龄

表3-8出租车表(Taxi)

TaxiNumber

车牌号

StartDate

datetime

入户时间

TaxiShape

车型

Color

颜色

RentSituation

bit

出租情况

BusinessTime

tinyint

营业时间

表3-9租赁表(Rent)

DriverNumber

TaxiNumber

char

LimitTime

tinyint

期限

StartDate

datetime

开始日期

EndDate

datetime

截止日期

RentFee

float

租赁费

ProtectionFee

Float

车保费

表3-10违章表(Violate)

DriverNumber

Name

char

Points

tinyint

扣分

ViolateDate

违章时间

ViolateAddress

varchar

违章地点

表3-11出车记录表(Notes)

DriverNumber

Name

char

10

DriveDate

datetime

出车日期

3.5 数据库的实施

3.5.1.创建表

/*创建数据库*/

CREATEDATABASETAXIﻩﻩ/*数据库名*/

ON

NAME=TAXI_DATA,

'

D:

\MicrosoftSQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\TAXI.mdf'

SIZE=10MB,

MAXSIZE=100MB,

LOGONﻩﻩﻩ

ﻩNAME='

TAXI_log'

,ﻩﻩﻩﻩﻩ/*日志*/

ﻩ'D:

\MicrosoftSQLServer\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\TAXI_Log.ldf'

SIZE=10MB,

MAXSIZE=100MB,

/*创建基本表*/

/*创建司机表*/

USETAXI

CREATETABLEDriver

DriverNumber char(6)NOT NULLPRIMARYKEY, ﻩ/*司机编号*/

Name char(10),ﻩﻩﻩﻩ /*姓名*/

SexbitNOT NULL,ﻩﻩﻩﻩ /*性别*/

Addressvarchar(40)NOTNULL, ﻩ/*地址*/

ﻩIDNumber char(18)NOTNULL,ﻩﻩ/*身份证号*/

ﻩlicenseNumber char(10)NOT NULL,ﻩﻩ ﻩ/*驾驶证号*/

ﻩCertificateDatedatetime NOTNULL,ﻩﻩ /*发证时间*/

DriverAge tinyintNOTNULLﻩﻩﻩﻩ/*驾龄*/

/*创建出租车表*/

CREATETABLETaxi

ﻩTaxiNumberchar(6)NOTNULLPRIMARY KEY,ﻩ/*车牌号*/

ﻩStartDate datetimeNOT NULL,ﻩﻩﻩ/*入户时间*/

TaxiShapechar(10)NOTNULL,ﻩ/*车型*/

ﻩColorchar(10)NOTNULL,ﻩﻩ/*颜色*/

RentSituationbitNOTNULLDEFAULT 1,ﻩ/*出租情况*/

ﻩBusinessTimetinyint NOTNULLﻩﻩﻩ/*营业时间*/

/*创建租赁表*/

CREATETABLERent

DriverNumberchar(6)NOTNULL,ﻩ/*司机编号*/

ﻩTaxiNumberchar(6)NOT NULL,ﻩ/*车牌号*/

LimitTimetinyintNOTNULL,ﻩﻩ/*期限*/

StartDatedatetimeNOTNULL,ﻩ/*开始日期*/

EndDatedatetimeNOTNULL,ﻩﻩﻩﻩ/*截止日期*/

RentFeefloat NOTNULL,ﻩﻩ/*租赁费*/

ProtectionFeefloat NOTNULL,ﻩﻩﻩ/*车保费*/

PRIMARYKEY(DriverNumber,TaxiNumber)

/*创建违章表*/

CREATE TABLEViolate

DriverNumberchar(6)NOTNULLPRIMARYKEY,ﻩ/*司机编号*/

ﻩNamechar(10),ﻩﻩﻩﻩﻩ /*姓名*/

PointstinyintNOTNULL,ﻩﻩﻩ/*扣分*/

ViolateDatedatetimeNOT NULL,ﻩﻩ /*违章时间*/

ViolateAddressvarchar(40)NOTNULL/*违章地点*/

/*创建出车表*/

CREATETABLENotes

DriverNumberchar(6)NOTNULL,/*司机编号*/

ﻩTaxiNumber char(6)NOTNULL,ﻩﻩ/*车牌号*/

DriverDate datetimeNOTNULLﻩﻩﻩ/*出车日期*/

3.5.2.创建主要视图

ﻩ视图是从一个或多个表导出的表。

视图是数据库的用户使用数据库的观点。

司机和出租车是主要的实体,而这两个实体的信息又在不同的表中,作为出租车公司对司机和出租车有时关心的数据又是不同的,即使是相同的数据,也可能又不同的操作。

有时候仅有的表的列属性名是不能满足需求的,于是根据不同的需求,在物理的数据库上定义他们对数据库所要求的数据结构。

(1)创建Driver_VIEW视图,包含司机所有的信息

USE TAXI

GO

CREATE VIEWDriver_VIEW(司机编号,姓名,性别,地址,身份证号,驾驶证号,发证时间,驾龄)

AS

SELECT* FROMDriver

GO

(2)创建Taxi_VIEW视图,包含出租车的所有信息。

USETAXI

CREATEVIEWTaxi_VIEW(车牌号,入户时间,车型,颜色,出租情况,每天营业时长)

ﻩAS

SELECT*FROMTaxi

(3)创建Rent_VIEW视图,包含租赁的所有信息。

USETAXI

CREATEVIEWRent_VIEW(司机编号,车牌号,期限,开始日期,截止日期,租赁费,车保费)

ﻩSELECT*FROMRent

(4)建租赁表平均租赁费视图Violate_VIEW_AVG,列名为平均租赁费,试图中列名为RentFee_avg。

USETAXI

CREATEVIEWViolate_VIEW_AVG(平均租赁费)

AS

SELECTAVG(RentFee)

FROMRent

3.5.3.创建索引

ﻩ索引是根据表中一列或若干列按照一定顺序建立的列值与记录行之间的对应关系表。

(1)为Driver表的姓名创建唯一索引Driver_name

USE TAXI

CREATEUNIQUE INDEXDriver_name

ﻩONDriver(Name)

(2)根据Rent表的司机编号和车牌号创建复合索引。

USETAXI

CREATE INDEXRent_IND

ON Rent(DriverNumber,TaxiNumber)

GO

3.5.4.创建表字段的约束关系

数据完整性包括实体完整性,域完整性和参照完整性。

租赁表中的期限的取值肯定要有一定的范围,违章表中的扣分也有范围,租赁表的截止日期必须在开始日期的之后,都可以通过CHECK约束来实现,这就体现了域的完整性。

租赁表中的司机编号和车牌号都由司机表和出租车表中对应,当删除或修改司机表中的司机编号和出租车表中的车牌号也应当对应修改租赁表中的司机编号和车牌号,这体现了表与表之间的参照完整性。

(1)添加Rent表中期限的约束条件。

USE TAXI

ALTERTABLERent

ADDCONSTRAINT LimitTime_constraintCHECK(LimitTime>

=0ANDLimitTime<

=10)

(2)添加Violate表中扣分的约束条件。

USETAXI

GO

ALTERTABLEViolate

ﻩADDCONSTRAINTPoints_constraintCHECK(Points>

=0AND Points<

=12)

(3)在Rent表中的TaxiNumber列添加外键约束,参照Taxi表中的列

USETAXI

GO

ALTERTABLERent

ﻩADDCONSTRAINTFK_TaxiNumber FOREIGNKEY(TaxiNumber)REFERENCES Taxi(TaxiNumber)ﻩﻩﻩﻩ

(4)在Rent表中添加日期的约束。

3.5.5.创建存储过程

存储过程分为系统存储过程、扩展存储过程和用户存储过程。

存储过程可以接收参数、返回表格或标量结果和消息,执行存储过程后,就驻留在高速缓冲存储器,在以后的操作中,只需从高速缓冲存储器中调用已编译好的二进制代码执行,提高了系统性能。

当给定了一个司机的编号或出租车的车牌号时想直接返回该司机或该出租车的信息情况,不需要任何参数,或者使用给定的参数返回信息。

(1)创建返回000001司机的信息情况。

CREATE PROCEDURE driver_info

AS

ﻩSELECT *FROMDriverWHERE DriverNumber='

000001'

/*执行存储过程driver_info*/

EXECUTEdriver_info

/*或者*/

driver_info

(2)创建返回出租车的信息情况。

USE TAXI

CREATE PROCEDUREtaxi_info

ﻩAS 

ﻩSELECT*FROMTaxi WHERETaxiNumber='

010001'

/*执行存储过程taxi_info*/

EXECUTEtaxi_info

(3)从Rent表中查询指定司机编号的租赁信息

USE TAXI

CREATEPROCEDURErent_info@numberchar(6)

AS

SELECT*FROMRentWHEREDriverNumber=@number

/*执行存储过程rent_info*/

EXECUTErent_info'

000002'

(4) 从Violate表中查询指定司机编号的违章情况

USE TAXI

CREATEPROCEDUREviolate_info@numberchar(10)='000001'

AS

ﻩSELECTPointsAS'扣分'

FROMViolate WHERE DriverNumber=@number

/*执行存储过程*/

EXECUTEviolate_infoﻩﻩ/*参数私用默认值*/

EXECUTE violate_info'000002'

ﻩ/*传递给@number的实参为*/

3.5.6.创建触发器

ﻩ当查询一个表中是否存在信息时,或者向表中添加数据时,想显示有无要查的信息或想知道到底有没有执行,可以用触发器对相应的表做更改和显示操作与否。

(1)在Drivr表上创建触发器,每次修改操作时,定义一个变量,让它显示插入成功。

USETAXI

CREATE TRIGGER driver_update

ﻩONDriverAFTERUPDATE

ﻩBEGIN

ﻩDECLARE@strchar(20)

ﻩﻩSET@str='

修改成功'

ﻩﻩPRINT@str

ﻩEND

/*对Driver表更新信息*/

UPDATEDriverSETIDNumber='

372929199106033619'

WHEREDriverNumber='

000004'ﻩ

(2)当修改Driver表中的司机编号时,修改Rent表中对应的司机编号,同时修改Violate表和Notes表中的司机编号。

USETAXI

CREATE TRIGGERrent_update1

ﻩONDriverAFTER UPDATE

ﻩAS

BEGIN

DECLARE@old_numberchar(6),@new_numberchar(6)

ﻩSELECT@old_number=DriverNumber FROM deleted

ﻩSELECT @new_number=DriverNumberFROMinserted

ﻩUPDATERentSETDriverNumber=@new_numberWHEREDriverNumber=@old_number

ﻩﻩUPDATEViolate SETDriverNumber=@new_numberWHEREDriverNumber=@old_number

ﻩUPDATENotesSET DriverNumber=@new_number WHEREDriverNumber=@old_number

ﻩﻩ

GO 

/*对Taxi表更新信息*/

UPDATEDriversetDriverNumber='

000009'

WHERE DriverNumber='000001'

查看三个表中的变化。

3.5.7.创建用户定义的函数和表值函数

当用户在编程时常常需要将一个或多个T-SQL语句组成子程序,以便反复调用。

这就要用到用户定义的标量值函数和表值函数。

标量值函数返回一个标量值,表值函数返回一个整表。

当想计算得出Rent表中出租车的平均车保费时可以创建一个标量值函数,当想通过给定的司机编号查询已经创建好的Driver_VIEW视图上给定司机编号的相关信息时可以创建一个返回整个表或视图的表值函数来实现。

(1)创建用户定义函数,实现计算出租车的平均车保费。

USETAXI

CREATE FUNCTIONProtectorFee()RETURNSint

AS

BEGIN

DECLARE @fee int

SELECT@fee=

ﻩSELECT avg(ProtectionFee)FROMRent

ﻩRETURN@fee

END

/*调用定义的ProtectionFee函数。

*/

DECLARE@fee int

SELECT@fee=dbo.ProtectorFee()

SELECT@fee AS'出租车的平均租赁费'

(2)创建一个表值函数,实现查询给定司机编号的相关信息。

USETAXI

CREATEFUNCTIONfn_view(@numberchar(6))

RETURNStable

ASRETURN

SELECT司机编号,姓名,性别,地址,身份证号,驾驶证号FROMTAXI.dbo.Driver_VIEW

ﻩWHERE司机编号=@number

/*调用定义好的标志函数*/

SELECT*FROMfn_view('

000003')

3.5.8.创建数据库的安全管理角色

数据库的安全性管理是数据库服务器应实现的重要功能和之一。

对用户登录进行身份验证,当用户登录到数据库系统时,系统对该用户的账户和口令进行验证,包括确认用户账户是否有效以及能否访问数据库系统。

对用户进行的操作进行权限控制,当用户登录到数据库后,只能对数据库中的数据在允许的权限内进行操作。

(1)创建SQLServer登录名sql_tao,密码为123456。

USETAXI

CREATELOGINsql_tao

WITHPASSWORD='

123456'

DEFAULT_DATABASE=TAXI

/*将sql_tao用户添加到sysadmin固定服务器角色中。

EXECsp_addsrvrolemember'

sql_tao'

'

sysadmin'

(2)创建数据库用户david

CREATEUSER david

FORLOGINsql_tao

ﻩWITHDEFAULT_SCHEMA=dbo

/*将david用户添加到sysadmin固定数据库角色中db_owner。

*/

EXECsp_addrolemember'

db_owner'

david'

(3) 在TAXI数据库上的用户david授予创建表的权限*/

USETAXI

GRANTCREATE TABLETOd

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 成考

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

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