出租车管理系统文档格式.docx

上传人:b****5 文档编号:17768669 上传时间:2022-12-09 格式:DOCX 页数:18 大小:118.67KB
下载 相关 举报
出租车管理系统文档格式.docx_第1页
第1页 / 共18页
出租车管理系统文档格式.docx_第2页
第2页 / 共18页
出租车管理系统文档格式.docx_第3页
第3页 / 共18页
出租车管理系统文档格式.docx_第4页
第4页 / 共18页
出租车管理系统文档格式.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

出租车管理系统文档格式.docx

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

出租车管理系统文档格式.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

10

不为空

姓名

Sex

bit

默认

性别

Address

varchar

40

地址

IDumber

20

身份证号

LincenseNumber

驾驶证号

CertificateDate

datetime

发证时间

DriverAge

tinyint

驾龄

表3-8出租车表(Taxi)

TaxiNumber

车牌号

StartDate

入户时间

TaxiShape

车型

Color

颜色

RentSituation

出租情况

BusinessTime

营业时间

表3-9租赁表(Rent)

LimitTime

期限

开始日期

EndDate

截止日期

RentFee

float

租赁费

ProtectionFee

Float

车保费

表3-10违章表(Violate)

Points

扣分

ViolateDate

违章时间

ViolateAddress

违章地点

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

DriveDate

出车日期

3.5数据库的实施

3.5.1.创建表

/*创建数据库*/

CREATEDATABASETAXI/*数据库名*/

ON

NAME=TAXI_DATA,

FILENAME='

D:

\MicrosoftSQLServer\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\TAXI.mdf'

SIZE=10MB,

MAXSIZE=100MB,

FILEGROWTH=10%

LOGON

NAME='

TAXI_log'

/*日志*/

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

FILEGROWTH=1MB

/*创建基本表*/

/*创建司机表*/

USETAXI

CREATETABLEDriver

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

Namechar(10),/*姓名*/

SexbitNOTNULL,/*性别*/

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

IDNumberchar(18)NOTNULL,/*身份证号*/

licenseNumberchar(10)NOTNULL,/*驾驶证号*/

CertificateDatedatetimeNOTNULL,/*发证时间*/

DriverAgetinyintNOTNULL/*驾龄*/

/*创建出租车表*/

CREATETABLETaxi

TaxiNumberchar(6)NOTNULLPRIMARYKEY,/*车牌号*/

StartDatedatetimeNOTNULL,/*入户时间*/

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

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

RentSituationbitNOTNULLDEFAULT1,/*出租情况*/

BusinessTimetinyintNOTNULL/*营业时间*/

/*创建租赁表*/

CREATETABLERent

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

TaxiNumberchar(6)NOTNULL,/*车牌号*/

LimitTimetinyintNOTNULL,/*期限*/

StartDatedatetimeNOTNULL,/*开始日期*/

EndDatedatetimeNOTNULL,/*截止日期*/

RentFeefloatNOTNULL,/*租赁费*/

ProtectionFeefloatNOTNULL,/*车保费*/

PRIMARYKEY(DriverNumber,TaxiNumber)

/*创建违章表*/

CREATETABLEViolate

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

Namechar(10),/*姓名*/

PointstinyintNOTNULL,/*扣分*/

ViolateDatedatetimeNOTNULL,/*违章时间*/

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

/*创建出车表*/

CREATETABLENotes

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

TaxiNumberchar(6)NOTNULL,/*车牌号*/

DriverDatedatetimeNOTNULL/*出车日期*/

3.5.2.创建主要视图

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

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

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

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

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

GO

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

AS

SELECT*FROMDriver

GO

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

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

SELECT*FROMTaxi

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

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

SELECT*FROMRent

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

CREATEVIEWViolate_VIEW_AVG(平均租赁费)

SELECTAVG(RentFee)

FROMRent

3.5.3.创建索引

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

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

CREATEUNIQUEINDEXDriver_name

ONDriver(Name)

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

CREATEINDEXRent_IND

ONRent(DriverNumber,TaxiNumber)

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

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

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

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

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

ALTERTABLERent

ADDCONSTRAINTLimitTime_constraintCHECK(LimitTime>

=0ANDLimitTime<

=10)

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

ALTERTABLEViolate

ADDCONSTRAINTPoints_constraintCHECK(Points>

=0ANDPoints<

=12)

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

ALTERTABLERent

ADDCONSTRAINTFK_TaxiNumberFOREIGNKEY(TaxiNumber)REFERENCESTaxi(TaxiNumber)

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

3.5.5.创建存储过程

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

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

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

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

CREATEPROCEDUREdriver_info

AS

SELECT*FROMDriverWHEREDriverNumber='

000001'

/*执行存储过程driver_info*/

EXECUTEdriver_info

/*或者*/

driver_info

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

CREATEPROCEDUREtaxi_info

SELECT*FROMTaxiWHERETaxiNumber='

010001'

/*执行存储过程taxi_info*/

EXECUTEtaxi_info

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

CREATEPROCEDURErent_info@numberchar(6)

AS

SELECT*FROMRentWHEREDriverNumber=@number

/*执行存储过程rent_info*/

EXECUTErent_info'

000002'

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

CREATEPROCEDUREviolate_info@numberchar(10)='

SELECTPointsAS'

扣分'

FROMViolateWHEREDriverNumber=@number

/*执行存储过程*/

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

EXECUTEviolate_info'

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

3.5.6.创建触发器

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

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

CREATETRIGGERdriver_update

ONDriverAFTERUPDATE

BEGIN

DECLARE@strchar(20)

SET@str='

修改成功'

PRINT@str

END

/*对Driver表更新信息*/

UPDATEDriverSETIDNumber='

372929199106033619'

WHEREDriverNumber='

000004'

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

CREATETRIGGERrent_update1

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

SELECT@old_number=DriverNumberFROMdeleted

SELECT@new_number=DriverNumberFROMinserted

UPDATERentSETDriverNumber=@new_numberWHEREDriverNumber=@old_number

UPDATEViolateSETDriverNumber=@new_numberWHEREDriverNumber=@old_number

UPDATENotesSETDriverNumber=@new_numberWHEREDriverNumber=@old_number

/*对Taxi表更新信息*/

UPDATEDriversetDriverNumber='

000009'

查看三个表中的变化。

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

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

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

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

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

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

CREATEFUNCTIONProtectorFee()RETURNSint

BEGIN

DECLARE@feeint

SELECT@fee=

SELECTavg(ProtectionFee)FROMRent

RETURN@fee

END

/*调用定义的ProtectionFee函数。

*/

DECLARE@feeint

SELECT@fee=dbo.ProtectorFee()

SELECT@feeAS'

出租车的平均租赁费'

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

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。

CREATELOGINsql_tao

WITHPASSWORD='

123456'

DEFAULT_DATABASE=TAXI

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

EXECsp_addsrvrolemember'

sql_tao'

'

sysadmin'

(2)创建数据库用户david

CREATEUSERdavid

FORLOGINsql_tao

WITHDEFAULT_SCHEMA=dbo

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

EXECsp_addrolemember'

db_owner'

david'

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

GRANTCREATETABLETOdavid

/*在TAXI数据库上的用户yangyang授予Driver表操作的权

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

当前位置:首页 > 高中教育 > 其它课程

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

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