1、停车场收费系统数据库原理与应用课程设计论文题 目:收费停车场管理系统 1.需求分析1.1目标通过调查了解分析停车管理的现状,弄清用户对开发的数据库应用系统确实切要求,以及停车场管理的流程,系统的具体功能和数据库中数据信息。1.2具体任务1处理对象系统处理的对象包括车辆信息、车位信息、停车信息、收费记录以及费率等五个方面:车辆信息:车牌号、车主、车辆颜色、车辆品牌;车位信息:车位编号、车位位置、车位类型、车牌号码、车主、车辆品牌、车辆颜色、 、联系 、车位余额;停车信息:车位编号、车牌号码、进入时间、离开时间、时间段;收费记录:车位编号、车牌号码、停车时间、停车费用、发票编号;费率:停车时段、时
2、段费率;2处理功能要求整个系统具体包括三个子系统,分别为:停车处理子系统、车位综合管理子系统以及收费子系统。处理的功能包括:车辆信息的查询以及更新;空闲车位信息的查询;固定车位信息的查询;进出车辆记录的更新和收费信息的查询与更新等。3安全性与完整性要求 安全性可以通过视图机制来完成,对不同用户设置不同权限,不同的用户只能访问授权的视图,这样可以提高一定的程度的安全性。还可以通过存取控制机制:即定义用户权限,并将用户权限登记到数据字典中以及合法的权限检查来保障安全性。 完整性可以通过声明完整性,即在定义表时声明数据完整性和过程完整性,在服务器端编写触发器来实现。(4)数据项清单:表2-1数据项清
3、单名称代码域数据类型长度停车时段TimetypeVariable characters (20)20停车时间CartimeFloat (20)20停车费用CarpayFloat (20)20是否在车位CaratBoolean票据号码invoiceVariable characters (20)20离开时间CaroutDate & Time费率ratetimeFloat (20)20车主地址CaraddVariable characters (20)20车主CnameVariable characters (20)20车主 CartelVariable characters (20)20车位位置
4、ClspaceVariable characters (20)20车位余额ClbalanceVariable characters (20)20车位号ClnoVariable characters (20)20车位类型CltypeVariable characters (20)20车牌号CnoVariable characters (20)20车牌子CbrandVariable characters (20)20车颜色CcolorVariable characters (20)20进入时间CarinDate & Time5数据结构:表2-2数据结构数据结构编号数据结构名数据结构定义组成D-1C
5、ar车辆信息Carno、Carname、Carbrand、CarcolorD-2lot车位信息Clno、Clspace、Cltype、Carno、Carname、Carcolor、Carbrand、Caradd、Cartel、ClbalanceD-3park停车信息Clno、Carno、Carat 、Carin、Carout 、TimetypeD-4charge收费记录Clno、Carno、Cartime、Carypay、invoiceD-5rate费率Timetype、ratetiem2概念模型设计设计过程1选择中层数据流为切入点,通常选择实际系统中的子系统;2设计分E-R图,即各子模块的E
6、-R图;3生成初步E-R图,通过合并方法,做到各子系统实体、属性、联系统一;4生成全局E-R图,通过消除冲突等方面。2.2 E-R图分E-R图:图2-1 进入车位E-R图图2-2 离开车位E-R图总E-R图:图2-3 总体ER图E-R图属性如下所示:车辆:Car (Carno、Carname、Carbrand、Carcolor) Carno是主码;车位:lot (Clno、Clspace、Cltype、Carno、Carname、Carcolor、Carbrand、Caradd、Cartel、Clbalance) Clno是主码;停车:park (Clno、Carno、Carat 、Carin
7、、Carout 、Timetype) Clno和Carno是外码;收费:charge(Clno、Carno、Cartime、Carypay、invoice) Clno和Carno是外码;费率:rate(Timetype、ratetiem) Timetype是主码;3.逻辑模型设计3.1 E-R图向关系模型转换E-R图向关系模型转换的结果是:车辆:Car (Carno、Carname、Carbrand、Carcolor) Carno是主码;车位:lot (Clno、Clspace、Cltype、Carno、Carname、Carcolor、Carbrand、Caradd、Cartel、Clbal
8、ance) Clno是主码;停车:park (Clno、Carno、Carat 、Carin、Carout 、Timetype) Clno和Carno是外码;被参照表lot和Car;收费:charge(Clno、Carno、Cartime、Carypay、invoice) Clno和Carno是外码,被参照表是lot和Car;费率:rate(Timetype、ratetiem) Timetype是主码;3.2 数据库模式定义表3-1车辆信息列名数据类型是否为主码是否为外码取值范围可否为空含义说明CarnoChar是否否车牌号码CarbrandChar否否可车辆品牌CarcolorChar否否可
9、车辆颜色Carnamechar否否可车主表3-2车位信息列名数据类型是否为主码是否为外码取值范围可否为空含义说明ClnoChar是否否车位编号ClspaceChar否否否车位位置CltypeChar否否否车位类型CarnoChar否否可车牌号码CarnameChar否否可车主CarbrandChar否否可车牌号码CarcolorChar否否可车辆颜色CaraddChar否否可 CartelChar否否可联系 ClbalanceFloat否否100-200否车位余额表3-3停车信息列名数据类型是否为主码是否为外码取值范围可否为空含义说明ClnoChar否是否车位编号CarnoChar否是否车牌号
10、码CaratBit否否否在位情况Carindatetime否否否进入时间Caroutdatetime否否可离开时间TimetypeChar是否高峰、一般、低谷否时间段表3-4费率信息列名数据类型是否为主码是否为外码取值范围可否为空含义说明TimetypeChar(6)是否高峰、一般、低谷否时间段ratetimeFloat否否大于0否收费费率表3-5收费记录列名数据类型是否为主码是否为外码取值范围可否为空含义说明ClnoChar否是否车位编号CarnoChar否是否车牌号码CartimeFloat否否大于0否停车时间CarpayFloat 否否大于0可停车费用invoiceChar否否可发票编号
11、表3-4费率信息表4-6 用户子模式定义序号视图名称视图定义视图作用V-1Carinformation车位号,车牌号查询在位车辆信息V-2Carfixedtion车位号,车牌号,车主,车名,车色,车照,地址, ,余额查询在固定车位停车的车辆信息V-3carfreetion车位号,车牌号,车名,车色查询在自由车位停车的车辆信息V-4Carinouttion车位号、车牌号、进入时间、离开时间、时间段查询车辆进出记录V-5moneytime时间段、费率查询及修改收费费率V-6Moneytion总收费查询停车场总收费v-7Carmoney车牌号、缴费总额查询每辆车的缴费额功能模块图 图3-1 功能模块
12、图4.物理模型设计 PDM图图4-1 PDM图5.2 存储过程表4-1 存储过程编号存储过程名称作用P-1Sof1查询固定车位总数P-2Sof2查询自由车位总数P-3Sof3查询空闲自由车位数目P-4Sof4查询车位总数P-5Sof5在charge中查询任意车辆的收费P-6Sof6在Car中插入一组信息P-7Sof7在lot中插入一组信息P-8Sof8在park中插入一组信息P-9Sof9在chargee中插入一组信息P-10Sof10查询车辆Car信息P-11Sof11查询车位lot信息P-12Sof12查询停车park信息P-13Sof13查询收费charge信息P-14Sof14删除一条
13、收费charge记录P-15Sof15修改固定车位车辆余额Clbarance5.3 触发器表4-2 触发器编号存储过程名称作用T-1insert_or_update_clbalance限定余额值必须大于等于120的触发器P-2tri_charge限制修改charge中大于50的触发器P-3tri_del_mo限制删除moneynote表中大于70的数据5. 建立数据库并测试5.1建立数据库1 建立数据库、数据表、视图、索引等a建立数据库定义语句;b建立数据表定义语句;c建立视图定义语句;d建立索引定义语句。2 数据入库系统包括共有5张基本表, 然后使用语句将数据导入SQL Server 200
14、5 数据库调试与测试对收费停车场管理系统的具体功能进行测试,测试包括:1测试各视图的功能,测试结果2测试各存储过程的功能,测试结果3测试各触发器的功能,测试结果一建立基本表:create table Car(Carno char(20) primary key,/车牌号Carname char(20),/车主Carcolor char(20),/车颜色Carbrand char(20),/车牌子);create table lot(Clno char(20) primary key,/车位编号Clspace char(20) not null,车位位置Cltype char (20) not
15、null,车位类型Carno char(20),/车牌号Carname char(20),/车主Carcolor char(20),/车颜色Carbrand char(20),/车牌子Caradd char(20),/车主地址Cartel char(20),/车主 Clbalance float check(Clbalance =100 and Clbalance0),/费用invoice char(20),/收费表序列号primary key(Carno,Clno),foreign key(Carno) references Car(Carno),foreign key(Clno) refe
16、rences lot(Clno);create table rate(Timetype char(6) primary key,/时段类型 ratetime float not null check(Montime=1 or Montime=2 or Montime=1.5),);/费率二.建立视图 V-1用于查询在位车辆信息的视图定义如下:create view Carinformation(车位号,车牌号)asfrom park,lotwhere park.Clno=park.Clno and Carat=1V-2用于查询固定车位停车车辆信息的视图定义如下:create view Carf
17、ixedtion(车位号,车牌号,车主,车名,车色,地址, ,余额)asselect park.Clno,park.Carno,Carname,Carbrand,Carcolor,Caradd,Cartel,Carbalabcefrom park,lotwhere park.Clno=lot.Clno and Cltype=固定 and Carat=1V-3用于查询自由车位停车车辆信息的视图定义如下:create view carfreetion(车位号,车牌号,车名,车色)asfrom park,Car,lotwhere park.Carno=Car.Carno and park.Clno=
18、lot.Clno and Cltype=自由 and Carat=1V-4用于查询车辆进出记录的视图定义如下:create view Carinouttion(车位号,车牌号,进入时间,离开时间,时间段)asselect Clno,Carno,Carin,Carout,Timetypefrom park检测:select *from Carinouttionorder by 车牌号V-5用于查询及修改收费费率的视图定义如下:create view moneytimeasselect *from rateV-6用于查询停车场总收费的视图定义如下:create view Moneytion(总收费
19、)asselect sum(Carpay)from chargeV-7用于查询任意车辆的缴费总额的视图定义如下:create view carmoney(车牌号,缴费总额)asselect Carno,sum(Carpay)from chatgegroup by Carno三.建立索引:1.create unique index SsClno on park(Clno);2.create unique index SsCarno on charge(Carno);四.建立存储过程P-1create procedure sof1asselect count(Clno) 固定车位总数from lo
20、twhere Cltype=固定P-2create procedure sof2asselect count(Clno) 自由车位总数from lotwhere Cltype=自由P-3create procedure sof3asselect 3-count(lot.Clno) 空闲自由车位from lot,parkwhere lot.Clno=park.Clno and Cltype=自由 and Carat=1P-4create procedure sof4asselect count(Clno) 车位总数from lotP-5create procedure sof5nom char(
21、10)asselect *from chargewhere Carno=nomP-6create procedure sof6s_Carno char(10),s_Carbrand char(10),s_Carcolor char(4)asinsert into Carvalues(s_Carno,s_Carbrand,s_Carcolor)P-7create procedure sof7s_Clno char(20),s_Clspace char(20),s_Cltype char(20),s_Carno char(20),s_Carname char(20),s_Carbrand char
22、(20),s_Carcolor char(20),s_Caradd char(20),s_Cartel char(20),s_Clbalance floatasinsert into lotvalues(s_Clno,s_Clspace,s_Cltype,s_Carno,s_Carname,s_Carbarnd,s_Carcolor,s_Caradd,s_Cartel,s_Clbalance)P-8create procedure sof8s_Clno char(20),s_Carno char(20),s_Carat bit,s_Carin datetime,s_Carout datetim
23、e,s_Timetype char(20)asinsert into parkvalues(s_Clno,s_Carno,s_Carat,s_Carin,s_Carout,s_Timetype)P-9create procedure sof9s_Cwno char(10),s_Carno char(10),s_Cartime float,s_Moneypay float,s_Piece char(10)asinsert into chargevalues(s_Cwno,s_Carno,s_Cartime,s_Moneypay,s_Piece)P-10create procedure sof10
24、asselect *from CarP-11create procedure sof11asselect *from lotP-12create procedure sof12asselect *from parkP-13create procedure sof13asselect *from chargeP-14create procedure sof14s_Carno char(20)asdeletefrom chargewhere Carno=s_CarnoP-15create procedure sof15s_Carno char(20)asupdate lotset Clbalanc
25、e=150where Carno=s_CarnoT-1Create trigger insert_or_update_clbalanceOn lot for insert,updateAsIf exists(select* From lot Where Clbalance100)BeginPrint 最低余额必须大于等于100 RollbackEnd;T-2Create trigger tri_CarpayOn charge for updateAsIf exists(select * From inserted join Deleted on inserted.Carno=deleted.Carno Where inserted.Carpay50)RollbackBeginPrint 禁止无端修改,修改不成功End;T-3Create trigger tri_del_moOn charge for deleteAsIf exists(select * From deleted Where Carpay70)RollbackBeginPrint删除失败End;附录4.数据库测试及功能验证V-
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1