




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
出租车管理系统一实验目的1理解和掌握软件工程的设计理念与设计方法。 2掌握某种数据库管理以及可视化编程环境,掌握基于某种编程语言的信息系统或网络通信软件或某种通用总线接口的通信软件的开发设计方法。二实验要求出租车管理系统主要是方便出租车公司员工以及公司外的普通用户对车辆和财务信息进行管理。主要实现以下功能:1.员工信息的发布与共享。2.车辆信息的管理。3.针对公司外的普通用户,设置订车、投诉、和留言功能。三实验开发环境 出租车管理系统的主要开发环境:SQL server数据库四实验步骤4.1 需求分析任务 4.1.1 需求分析设计 司机和出租车是出租车公司最要的资源,是创造效益的资源。要想提高出租车公司的效益和服务质量,首先从做好对司机和出租车的管理着手。一是对出租车司机的信息的管理,二是对出租车信息和租赁的管理。出租车管理系统将很大程度上解决出租车公司在此工作上的难度。4.1.2 需求分析过程功能需求简介: 针对出租车行业的特点开发的出租车管理系统,实现出租车公司内部及时准确地采集内部各种数据信息,处理高速化和网络办公自动化。实现对出租车公司司机的信息记录,操作,出租车管理,提供精确查询等多种查询方式。4.1.3调查需求基本操作:对出租车信息表、司机信息表、租赁表、违章表的查询、添加、更新、删除等功能。特别操作:对租赁表的功能。4.1.4 系统数据分析表2-1 数据结构定义数据结构名含义说明组成出租车信息表定义了出租车有关信息车牌号 入户时间 车型 颜色 出租情况 营业时间司机信息表定义了司机有关信息司机编号 姓名 性别 地址 身份证号 驾驶证号 发证时间 驾龄租赁表定义了租赁的有关信息司机编号 车牌号 期限 开始日期 截止日期 租赁费 车保费违章表定义了违章的有关信息司机编号 姓名 扣分 违章时间 违章地点出车记录表定义了每天哪些司机的出车情况司机编号 车牌号 出车日期4.2概念结构设计4.2.1 概念结构设计的方法 概念设计阶段我采用自底向上的方法,即自顶向下的进行需求分析,然后再自底向上的进行概念结构设计。对已经细化到无法再分的阶段逐步集成在一起,最终合成一个全局概念模式。4.2.2 概念结构设计的步骤 第一步是进行局部视图的设计:由于高层的数据流图只能反映系统的概貌,而中层流图能较好的反映系统中各局部应用的子系统组成。因此我们先逐一的设计分E-R图。 第二步是进行视图的集成:各子系统的E-R图设计好之后,下一步就是要将所有的分E-R图合成一个系统的总E-R图,一般有两个方式,多个分E-R图一次集成,另一种是一次集成两个分E-R图。我想采用一次集成两个分E-R图的方式。 图4-1 出车记录E-R图 图4-2 出租车 E-R图 图4-3 司机R-R图 图4-4 租赁E-R图 图4-5 违章E-R图租赁司机驾驶证号驾龄姓名性别地址司机编号身份证号发证时间出租车颜色出租情况车牌号入户时间车型营业时间租赁表租赁费车牌号期限开始日期司机编号截止日期车保费违章表姓名扣分司机编号违章时间违章地点违章出车记录表车牌号司机编号出车日期出车情况出车情况 图4-6 总体概念结构E-R图4.3 逻辑结构设计E-R图向关系模型的转换将上述总体概念结构E-R图转化成关系模型,根据这个关系写出数据依赖,确定数据依赖。司机与出租车是一对一的关系,司机、出租车与租赁是一对一的关系,司机与违章是一对一的关系。司机(司机编号,姓名,性别,地址,身份证号,驾驶证号,发证时间,驾龄)出租车(车牌号,入户时间,车型,颜色,出租情况,营业时间)租赁表(司机编号,车牌号,期限,开始日期,截止日期,租赁费,车保费)出车记录表(司机编号,车牌号,出车日期)违章表(司机编号,姓名,扣分,违章时间,违章地点)4.4 物理设计物理表结构如下表4-7司机表(Driver)列标示数据类型长度约束列意义DriverNumberchar6主键司机编号Namechar10不为空姓名Sexbit默认不为空性别Addressvarchar40不为空地址IDumberchar20不为空身份证号LincenseNumberchar10不为空驾驶证号CertificateDatedatetime默认不为空发证时间DriverAgetinyint默认不为空驾龄 表4-8出租车表(Taxi)列标示数据类型长度约束列意义TaxiNumberchar6主键车牌号StartDatedatetime默认不为空入户时间TaxiShapechar10不为空车型Colorchar10不为空颜色RentSituationbit默认不为空出租情况BusinessTimetinyint默认不为空营业时间 表4-9租赁表(Rent)列标示数据类型长度约束列意义DriverNumberchar6主键司机编号TaxiNumberchar6不为空车牌号LimitTimetinyint默认不为空期限StartDatedatetime默认不为空开始日期EndDatedatetime默认不为空截止日期RentFeefloat默认不为空租赁费ProtectionFeeFloat默认不为空车保费 表4-10违章表(Violate)列标示数据类型长度约束列意义DriverNumberchar6主键司机编号Namechar10不为空姓名Pointstinyint默认不为空扣分ViolateDatedatetime默认不为空违章时间ViolateAddressvarchar40不为空违章地点 表4-11出车记录表(Notes)列标示数据类型长度约束列意义DriverNumberchar6主键司机编号Namechar10不为空姓名DriveDatedatetime默认不为空出车日期4.5 数据库的实施4.5.1.创建表/*创建数据库*/CREATE DATABASE TAXI/*数据库名*/ON (NAME=TAXI_DATA,FILENAME=D:Microsoft SQL ServerMSSQL10_50.SQLEXPRESSMSSQLDATATAXI.mdf,SIZE=10MB,MAXSIZE=100MB,FILEGROWTH=10%)LOG ON(NAME=TAXI_log,/*日志*/FILENAME=D:Microsoft SQL ServerMSSQL10_50.SQLEXPRESSMSSQLDATATAXI_Log.ldf,SIZE=10MB,MAXSIZE=100MB,FILEGROWTH=1MB)/*创建基本表*/*创建司机表*/USE TAXICREATE TABLE Driver(DriverNumber 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 Taxi(TaxiNumber 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,/*开始日期*/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 char(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/*出车日期*/)4.5.2.创建主要视图视图是从一个或多个表导出的表。视图是数据库的用户使用数据库的观点。司机和出租车是主要的实体,而这两个实体的信息又在不同的表中,作为出租车公司对司机和出租车有时关心的数据又是不同的,即使是相同的数据,也可能又不同的操作。有时候仅有的表的列属性名是不能满足需求的,于是根据不同的需求,在物理的数据库上定义他们对数据库所要求的数据结构。(1)创建Driver_VIEW视图,包含司机所有的信息USE TAXIGOCREATE VIEW Driver_VIEW(司机编号,姓名,性别,地址,身份证号,驾驶证号,发证时间,驾龄)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(4) 建租赁表平均租赁费视图Violate_VIEW_AVG,列名为平均租赁费,试图中列名为RentFee_avg。USE TAXIGOCREATE VIEW Violate_VIEW_AVG(平均租赁费)ASSELECT AVG(RentFee)FROM Rent4.5.3.创建索引索引是根据表中一列或若干列按照一定顺序建立的列值与记录行之间的对应关系表。(1)为Driver表的姓名创建唯一索引Driver_nameUSE TAXIGOCREATE UNIQUE INDEX Driver_nameON Driver(Name)GO(2)根据Rent表的司机编号和车牌号创建复合索引。USE TAXIGOCREATE INDEX Rent_INDON Rent(DriverNumber,TaxiNumber)GO4.5.4.创建表字段的约束关系数据完整性包括实体完整性,域完整性和参照完整性。租赁表中的期限的取值肯定要有一定的范围,违章表中的扣分也有范围,租赁表的截止日期必须在开始日期的之后,都可以通过CHECK约束来实现,这就体现了域的完整性。租赁表中的司机编号和车牌号都由司机表和出租车表中对应,当删除或修改司机表中的司机编号和出租车表中的车牌号也应当对应修改租赁表中的司机编号和车牌号,这体现了表与表之间的参照完整性。(1)添加Rent表中期限的约束条件。USE TAXIGOALTER TABLE Rent ADD CONSTRAINT LimitTime_constraint CHECK(LimitTime=0 AND LimitTime=0 AND Points=12)GO(3) 在Rent表中的TaxiNumber列添加外键约束,参照Taxi表中的列USE TAXIGOALTER TABLE RentADD CONSTRAINT FK_TaxiNumber FOREIGN KEY(TaxiNumber)REFERENCES Taxi(TaxiNumber)GO(4)在Rent表中添加日期的约束。4.5.5.创建存储过程存储过程分为系统存储过程、扩展存储过程和用户存储过程。存储过程可以接收参数、返回表格或标量结果和消息,执行存储过程后,就驻留在高速缓冲存储器,在以后的操作中,只需从高速缓冲存储器中调用已编译好的二进制代码执行,提高了系统性能。当给定了一个司机的编号或出租车的车牌号时想直接返回该司机或该出租车的信息情况,不需要任何参数,或者使用给定的参数返回信息。(1)创建返回司机的信息情况。USE TAXIGOCREATE PROCEDURE driver_infoAS SELECT * FROM Driver WHERE DriverNumber=GO/*执行存储过程driver_info*/EXECUTE driver_infoGO/*或者*/driver_infoGO (2) 创建返回出租车的信息情况。USE TAXIGOCREATE PROCEDURE taxi_infoAS SELECT * FROM Taxi WHERE TaxiNumber=GO/*执行存储过程taxi_info*/EXECUTE taxi_infoGO(3) 从Rent表中查询指定司机编号的租赁信息USE TAXIGOCREATE PROCEDURE rent_info number char(6)ASSELECT * FROM Rent WHERE DriverNumber=numberGO/*执行存储过程rent_info*/EXECUTE rent_info (4) 从Violate表中查询指定司机编号的违章情况USE TAXIGOCREATE PROCEDURE violate_info number char(10)=ASSELECT Points AS 扣分 FROM Violate WHERE DriverNumber=numberGO/*执行存储过程*/EXECUTE violate_info/*参数私用默认值*/EXECUTE violate_info/*传递给number的实参为*/GO4.5.6.创建触发器当查询一个表中是否存在信息时,或者向表中添加数据时,想显示有无要查的信息或想知道到底有没有执行,可以用触发器对相应的表做更改和显示操作与否。(1)在Drivr表上创建触发器,每次修改操作时,定义一个变量,让它显示插入成功。USE TAXIGOCREATE TRIGGER driver_updateON Driver AFTER UPDATEASBEGINDECLARE str char(20)SET str=修改成功PRINT strENDGO/*对Driver表更新信息*/UPDATE Driver SET IDNumber= WHERE DriverNumber=(2)当修改Driver表中的司机编号时,修改Rent表中对应的司机编号,同时修改Violate表和Notes表中的司机编号。USE TAXIGOCREATE TRIGGER rent_update1ON 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 WHERE DriverNumber=old_numberUPDATE Violate SET DriverNumber=new_number WHERE DriverNumber=old_numberUPDATE Notes SET DriverNumber=new_number WHERE DriverNumber=old_numberENDGO /*对Taxi表更新信息*/UPDATE Driver set DriverNumber= WHERE DriverNumber=查看三个表中的变化。4.5.7.创建用户定义的函数和表值函数当用户在编程时常常需要将一个或多个T-SQL语句组成子程序,以便反复调用。这就要用到用户定义的标量值函数和表值函数。标量值函数返回一个标量值,表值函数返回一个整表。当想计算得出Rent表中出租车的平均车保费时可以创建一个标量值函数,当想通过给定的司机编号查询已经创建好的Driver_VIEW视图上给定司机编号的相关信息时可以创建一个返回整个表或视图的表值函数来实现。(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 司机编号,姓名,性别,地址,身份证号,驾驶证号 FROM TAXI.dbo.Driver_VIEWWHERE 司机编号=number)GO/*调用定义好的标志函数*/SELECT * FROM fn_view()4.5.8.创建数据库的安全管理角色 数据库的安
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度房地产项目策划与营销服务合同范本
- 2025年街头奇葩离婚协议书
- 消防车课件制作软件下载
- 联合开发智能产品协议
- 国际学校小升初数学试卷
- 中学体育课外活动方案
- 衡水中学学霸数学试卷
- 广附小升初密考数学试卷
- 海门七年级数学试卷
- 社区生态农业园区建设协议书
- CNAS-CC190-2021 能源管理体系认证机构要求
- 电气类实验室安全培训
- 2025年上半年中国南水北调集团新能源投资限公司抽水蓄能项目岗位公开招聘易考易错模拟试题(共500题)试卷后附参考答案
- 船舶修理行业专业实践操作规范
- 消毒隔离知识培训内容
- 加工厂股东合作合同范例专业版
- 2024年中考化学(湖北卷)真题详细解读及评析
- 市政工程安全文明施工标准化手册
- 银行客服的沟通技巧与专业话术
- 水利水电工程施工机械台班费定额
- 新版《医疗器械经营质量管理规范》(2024)培训试题及答案
评论
0/150
提交评论