1、校园停车场管理系统设计说明书 课程名称: 软件工程课程设计 小组成员:- 指导教师: - 课程时间: 2013.08.2709.06 II目录第一章问题定义11.1引言11.2系统名称及概况1第二章 可行性研究12.1系统分析12.2系统组成3第三章 需求分析33.1功能需求分析33.2数据库需求分析63.2.1数据库的概念模型63.2.2数据库的逻辑模型7第四章 总体设计114.1总体设计114.2数据流图114.3业务流程分析124.4系统功能模块134.5系统模块设计144.6数据库的实现脚本154.6.1 定义SQL模式154.6.2 创建基本表154.6.3 创建SQL索引194.6
2、.4 SQL数据控制授予权限19第五章 详细设计205.1软件结构功能模块205.2 程序流程图22第六章 编码与测试266.1 身份验证C+源程序代码266.2 身份验证MFC窗口实现276.3 身份验证模块软件测试28结语28附件1:伸缩门改造目标样式29附件2:校园停车场分布示意图30第一章 问题定义1.1 引言近年来,随着我国经济的快速发展,人们生活水平的不断提高,物质需求和生活方式也发生着深刻的变化,以前属于奢侈品的汽车己经逐步走入了人们的日常生活。伴随汽车消费大众化,校园内车辆数迅速增加,迫切需要规范化的校园停车场管理系统对校园停车进行高效管理。停车是速度为零的交通”,停车场及附属
3、相关设施是静态交通的重要组成部分。目前的多数停车场存在着以下几个问题,管理漏洞、系统的可靠性、独立性强、收费过程比较繁琐、劳动强度高、停车场利用率低下、票款易流失等。针对这些问题,该停车场管理系统从以下几方面进行设计:针对管理进行了优化,采用划卡消费和现金支付相结合,系统计时收费;采用关系数据库标准语言SQL,借助VC+ 6.0软件进行窗口设计。优化后的系统使用方便、服务高效、收费透明、可防止票款的流失,提高可靠性的同时也提高了操作者的工作效率。1.2 系统名称及概况系统名称:校园停车场管理系统建设性质:新建系统及校园出入口伸缩门改造(目标样式见附件1)建设地点:吉林大学南岭校区系统概况:在校
4、园东门和西门安装停车管理及实时监控系统,主要功能包括泊位引导、停车收费、实时监控跟踪等。将校园内停车泊位划分为几个停车场区(见附件2),车辆在入口可以清楚地知道各停车区的泊位利用情况,经过信息登记,在道路标志引导下进入相应停车区的空闲泊位。车辆在入口进行信息登记后,系统可以对车辆进行实时监控,直到车辆在出口进行信息核对并缴费后离开校园。第二章 可行性研究2.1 系统分析系统采用感应卡实施管理,在停车场的出入口各设置一套出入口管理设备,使停车场形成一个相对封闭的场所,进出车辆只需将感应卡在读卡箱前轻晃一下,系统即能瞬时完成检验、记录、核算、收费等工作,挡车道闸自动启闭,实现方便快捷的停车场管理。
5、停车卡可根据车主身份的不同,分别发行月租卡、免费卡和临时卡三种类型的卡。系统支持三种卡类的不同收费方式,以满足按车主身份分别收费的要求。电脑自动计时、计费,免费卡和月租卡自动识别,临时卡人工收取现金,服务快捷高效,电脑显示屏及收费显示屏同时显示停车时间与应收费用,卡上余额或有效期限,收费透明度高,票箱显示屏还提示指导住户使用停车场,并以文明语言问候致意。软件管理实行分级权限制。对出口值班员来讲,其登录后可进入收费管理,期间该出口所有收费均自动记入该值班员名下并存入电脑数据库。由于值班员受权限限制,不能进入系统中更高的软件菜单项,所以对电脑所记录的数据无法干涉;上级管理者可以随时查询,核对或打印
6、一个值班段或任何一段时间乃至整个停车场的工作记录。这样就从根本上杜绝了停车费用流失和财务统计的失误,同时系统自动运行,杜绝了人情车、霸王车造成的经济损失。系统还可在停车场的出入口各安装的1台高解像度彩色固定摄像机、固定支架、自动光圈手动对焦镜头,可24小时监视车辆出入情况,看清车牌号码。当有车辆驶入车场时,摄像机将信号通过视频电缆传输到停车场管理系统中,存入数据库中;当有车辆驶离车场时,车辆除应交纳必要的管理费用外,驶离车辆的所有资料(车牌、型号、颜色等)都必须与驶入车场时的资料对比相同(为人工识别),闸杆才升起,让车辆通过。综上分析,停车场管理系统的车辆进出工作流程为:进场时,驾驶员驱车到入
7、口控制机处,如果是月租卡或免费卡(称为固定卡)用户,直接刷卡就能进入。读卡后,系统会判断卡是否在有效限期内,是否有余额,并且判断是否有在停车场内部未出的记录。如果满足预设条件,则开闸放行,否则语音提示不放行。如果是临时卡,则驾驶员自己取卡,道闸开启,车辆通行。出场时,固定卡,直接刷卡进出;临时卡,操作员收费后,开闸放行。车辆不论是进或者出,在开启道闸的瞬间,摄像系统拍照记录并保存。车辆通过道闸后,道闸自动落杆。停车场管理系统分为入场停车和出场取车两部分。系统流程图如图2-1所示。图 2-1 系统流程图A.入场停车流程(1)入场根据车位实时统计显示系统给出的停车场实时利用信息来控制车辆的入场,停
8、车场在有车位的情况下方能停车。(2)卡审核刷卡或者发放临时卡,系统自动记卡编号、卡号、卡类型、余额、发卡时间、有效时间、卡状态(已发或挂失)等基本信息,刷卡时并判断卡的有效性,若有效,图像系统自动摄录一幅车辆进场图像于电脑,播放欢迎词,并放行车辆。(3)停车系统为用户分配停车位,用户在道路泊位引导标志的指引下,到指定停车位置停车。B.出场取车流程 若用户需要查找停放位置,拨打卡面上提供的帮助电话,操作员在系统中帮忙查找车辆停放位置信息。(1)出场审核 车辆在出口处刷卡或交还临时卡,系统自动记录卡信息。同时系统自动显示该车进场图像,收费员确认无误后收费。(2)收费系统根据车辆信息、卡类型以及停车
9、时间等,依据收费标准计算收费额度实施收费环节。(划卡或人工收取现金)(3)出场交费之后,操作员按确认键,图像系统自动摄录一幅车辆出场图像于电脑,语音系统提示“谢谢,祝您一路平安!”等声音,电动栏杆升起。车辆通过埋在车道下的车辆检测线圈后,电动栏杆自动落下。2.2 系统组成系统分为软件部分和相应的硬件设施。软件部分:停车计费系统、车位实时统计显示系统。硬件设施:感应卡(具备GPS定位功能)、泊位引导标志、校园泊车实时监控摄像系统、自动挡车道闸、车辆检测器(环型感应线圈检测器、超声波检测器、红外检测器、雷达检测器、视频检测器等)、刷卡机箱、控制主板、票据打印机、停车场嵌入式计算机、自动发卡机、自动
10、收卡机。第三章 需求分析3.1 功能需求分析根据停车场管理系统的需求,确定了该系统的用例图如下图所示。图3-1 停车场管理系统用例图图3-2 客户用例图图3-3 系统管理员用例图图3-4 操作员用例图如图3-1所示,该系统主要有超级管理员、管理员和操作员三种角色,不同角色的基本任务如下所述。超级管理员具有最高权限,即对本系统所有权限的操作权和授予权。超级管理员授权给管理员,并赋予管理员应有的权限。管理员可根据需要来维护角色信息,并授权给相应的操作员,进行系统的基本参数设置、权限设置、数据管理和操作员的档案管理。操作员行使管理员赋予的权限,进行档案管理(车辆档案、卡档案管理、用户档案管理)、入场
11、管理、收费管理和出场管理。根据用例图得到的部分类图,如图 3-5图 3-5 类图3.2 数据库需求分析3.2.1 数据库的概念模型如图 3-6所示的系统数据库ER图,制定一个收费标准,要根据卡的类型以及收费的标准(时收费或次收费)来确定。停车场的每一个用户都有唯一的一条卡信息与自己的车信息绑定。停车场的总车位数决定了车位表的总车位,一个车位只能存放一辆车。根据入场时的信息和出场时的信息以及收费标准,综合得出收费金额。交班记录要记下该员工的上、下班时间以及在这段时间内的所有操作。图 3-6 系统数据库ER图根据系统需求,本系统需要设计13张表。卡信息表:存放卡的相关信息。停车场参数表:存放停车场
12、的基本参数。用户表:存放用户的基本信息。车信息表:存放车的基本信息。权限表:存放对应的权限信息和对应的行使该权限人员的相关信息。时收费表:存放按时收费的时间段。次收费表:存放按次收费的时间段。入场表:存放入场时候的一些信息。出场表:存放出场时的相关信息。交班表:存放操作员交接班的相关信息。收费表:存放停车一段时间的收费信息。车位表:用于存放每一个车位上的停车状态。收费标准表:存放收费的统一标准。3.2.2 数据库的逻辑模型针对ER模型中对表的要求,下面给出各个表的详细结构。表3-1 卡信息表字段名描述类型长度是否为空是否主键id自增int4否是cardid卡编号var char20否是card
13、no卡号var char20是否cardtype卡类型var char20是否cardmoney余额money8是否sendtime发卡时间timestamp8是否activetime有效时间timestamp8是否sendflag已发boolean1是否loseflag挂失boolean1是否表3-2 停车场参数表字段名描述类型长度是否为空是否主键id自增int4否是parkname停车场名字var char20是否parktotal总车位int4是否entertotal入口车道数int4是否exittotal出口车道数int4是否parktel停车场电话var char20是否parkad
14、d停车场地址var char20是否表3-3 用户表字段名描述类型长度是否为空是否主键id编号var char20否是username用户名var char20是否usersex性别char2是否usertel电话var char20是否cardno卡号var char20是否carno车牌var char20是否address地址var char20是否表3-4 车信息表字段名描述类型长度是否为空是否主键id自增int4否是carid编号var char20否是carno车牌号var char20是否cartype车类型var char20是否表3-5 权限表字段名描述类型长度是否为空是否主
15、键id自增int4否是poperatorid编号var char20否是poperatorname姓名var char20是否poperatorsex性别char10是否poperatorpsw密码var char20是否poperatorright权限var char20是否表3-6时收费表字段名描述类型长度是否为空是否主键id自增int4否是timeno时间号int4否是starttime开始时间char10是否endtime结束时间char10是否表3-7 次收费表字段名描述类型长度是否为空是否主键id自增int4否是timesno次号int4否是starttime开始时间char10是
16、否endtime结束时间char10是否表3-8 入场表字段名描述类型长度是否为空是否主键id自增int4否是encardid入场编号var char20否否encardno卡号var char20是否encarno车牌var char20是否enway入场车道var char20是否entime入场时间timestamp8是否enposition占用车位var char20是否表3-9 出场表字段名描述类型长度是否为空是否主键id自增int4否是exited出场编号var char20否否excardno卡号var char20是否excarno车牌var char20是否exway出场车道
17、var char20是否extime出场时间timestamp8是否exposition腾出车位var char20是否表3-10 交班表字段名描述类型长度是否为空是否主键id自增int4否是tnoperator操作员var char20否否tnlogintime登录时间timestamp8是否tnturntime交班时间timestamp8是否entimes进场次数int4是否extimes出场次数int4是否totalmoney金额总计money8是否表3-11 收费表字段名描述类型长度是否为空是否主键id自增int4否是chargeid收费编号var char20否否chcardno卡号
18、var char20是否chcarno车牌var char20是否chmoney收费金额money8是否表3-12 车位表字段名描述类型长度是否为空是否主键id自增int4否是cpcarno车牌var char20是否positionstate车位状态var char20是否表3-13 收费标准表字段名描述类型长度是否为空是否主键id自增int4否是chargestid标准编号int4是否cardtype卡类型var char20是否cartype车类型var char20是否chargetype收费类型var char20是否timeno时间编号int4是否unittime单位时间int4是
19、否unitsum单位金额int4是否maxsum最大金额int4是否第四章 总体设计4.1 总体设计首先判断登录的身份,进入相应的操作页面进行需要的操作,最终完成目的操作的功能。本系统UML活动图如图4-1所示。它们的内在关系由数据库和程序来控制。图4-1 UML活动图4.2 数据流图 本软件的顶层数据流图如图4-2所示:图4-2 顶层数据流图4.3 业务流程分析本系统的使用者是停车场的工作人员,为了便于管理并借鉴现有停车场的管理模式,划分成三个角色的用户。工作人员首先登陆系统,经过一系列的身份验证,登陆成功之后进入相应的操作界面,实现各自的管理功能。总体功能分析业务流程图。如图 4-3业务流
20、程图图4-3 业务流程图其中各模块有对应的添加、修改及删除功能。4.4 系统功能模块如图 3-3 系统功能模块划分图 4-4 系统功能模块划分4.5 系统模块设计(1)授权管理模块 具有最高管理权限超级管理员对该模块进行操作,对管理员进行授权,添加、删除、修改管理员。(2)系统设置 由超级管理员授权的管理员行使该功能,主要是对停车场的参数进行设置。(3)操作员档案管理 由管理员行使修改功能,对停车场业务操作员进行管理,添加、删除、修改操作员的信息。(4)数据管理模块 该模块显示了停车场日常运行所产生的数据,场内车辆,进出数据,收费金额以及交班记录的相关信息。(5)档案管理 该部分功能为操作员所
21、使用,主要是对停车场发放的卡进行管理、车档案的管理以及停车场顾客的信息档案管理。他们都有自己的添加、删改、修改的功能。(6)入场管理 该模块是本系统的一个重要的功能模块,主要采集汽车入场时候的一些必要的参数,对参数进行处理和判断,这些获得的参数提交到后台进行相关的处理。(7)出场管理 汽车离场之前对其进行的离场验证和停车时间的数据收集,为下一收费模块提供数据。(8)收费管理 该模块是本系统最重要的一个模块,根据出入场提供的参数结合该模块收费标准的设置计算出收费的金额,完成收费并打印出收费清单。4.6 数据库的实现脚本4.6.1 定义SQL模式 为停车场管理系统定义一个SQL模式,其拥有者为超级
22、管理员。 CREATE SCHEMA PARK AUTHORIZATION administrator;4.6.2 创建基本表1 卡信息表CREATE TABLE PARK.pcard(id int IDENTITY (1, 1) NOT NULL ,cardid var char (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,cardno var char (20) ,cardtype var char (20) COLLATE Chinese_PRC_CI_AS NULL ,cardmoney money NULL ,sendtime timestamp
23、 NULL ,activetime timestamp NULL ,sendflag var char (10) COLLATE Chinese_PRC_CI_AS NULL ,loseflag var char (10) COLLATE Chinese_PRC_CI_AS NULL,PRIMARY KEY (id,cardid);2 停车场参数表CREATE TABLE PARK. parkparameter (id int IDENTITY (1, 1) NOT NULL ,parkname var char (50) COLLATE Chinese_PRC_CI_AS NOT NULL
24、,parktotal int NULL ,entertotal int NULL ,exittotal int NULL ,parkadd var char (50) COLLATE Chinese_PRC_CI_AS NULL ,parktel var char (20) COLLATE Chinese_PRC_CI_AS NULL,PRIMARY KEY (id),);3 用户表CREATE TABLE PARK.users (Id int IDENTITY (1, 1) NOT NULL ,userid var char (20) COLLATE Chinese_PRC_CI_AS NO
25、T NULL ,username var char (20) COLLATE Chinese_PRC_CI_AS NULL ,usersex var char (20) COLLATE Chinese_PRC_CI_AS NULL ,usertel var char (20) COLLATE Chinese_PRC_CI_AS NULL ,usercarid var char (20) COLLATE Chinese_PRC_CI_AS NULL ,usercardid var char (20) COLLATE Chinese_PRC_CI_AS NULL ,useradd var char
26、 (50) COLLATE Chinese_PRC_CI_AS NULL,PRIMARY KEY (id)FOREIGN KEY (usercarid) REFERENCES car(carid),FOREIGN KEY (usercardid) REFERENCES pcard(cardid);4 车信息表CREATE TABLE PARK.car (id int IDENTITY (1, 1) NOT NULL ,carid var char (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,carno var char (20) COLLATE Chine
27、se_PRC_CI_AS NULL ,cartype var char (20) COLLATE Chinese_PRC_CI_AS NULL, PRIMARY KEY (id,carid);5 权限表CREATE TABLE PARK.rateright (Id int IDENTITY (1, 1) NOT NULL ,poperatorid var char (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,poperatorname var char (20) COLLATE Chinese_PRC_CI_AS NULL ,poperatorsex ch
28、ar (10) COLLATE Chinese_PRC_CI_AS NULL ,poperatorpsw var char (20) COLLATE Chinese_PRC_CI_AS NULL, poperatorright var char (20) COLLATE Chinese_PRC_CI_AS NULL ,PRIMARY KEY (id,poperatorid);6 时收费表CREATE TABLE PARK.ptime (Id int IDENTITY (1, 1) NOT NULL ,timeno int NOT NULL ,starttime var char (50) CO
29、LLATE Chinese_PRC_CI_AS NULL ,endtime var char (50) COLLATE Chinese_PRC_CI_AS NULL, PRIMARY KEY (id,timeno);7 次收费表CREATE TABLE PARK.ptimes (id int IDENTITY (1, 1) NOT NULL ,timesno int NOT NULL ,starttimes char (8) COLLATE Chinese_PRC_CI_AS NULL ,endtimes char (8) COLLATE Chinese_PRC_CI_AS NULL, PRI
30、MARY KEY (id, timesno);8 入场表CREATE TABLE PARK.entrance (id int IDENTITY (1, 1) NOT NULL ,encardno var char (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,encardtype var char (20) COLLATE Chinese_PRC_CI_AS NULL ,encarno var char (20) COLLATE Chinese_PRC_CI_AS NULL ,encartype var char (20) COLLATE Chinese_P
31、RC_CI_AS NULL ,enway var char (20) COLLATE Chinese_PRC_CI_AS NULL ,entime timestamp NULL ,enposition var char (20) COLLATE Chinese_PRC_CI_AS NULL ,enchargetype var char (50) COLLATE Chinese_PRC_CI_AS NULL ,enoperator var char (50) COLLATE Chinese_PRC_CI_AS NULL, PRIMARY KEY (id);9 出场表CREATE TABLE PA
32、RK.pexit (id int IDENTITY (1, 1) NOT NULL ,excardno var char (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,excarno var char (20) COLLATE Chinese_PRC_CI_AS NULL ,exway var char (20) COLLATE Chinese_PRC_CI_AS NULL ,extime timestamp NULL,exposition var char (20) COLLATE Chinese_PRC_CI_AS NULL ,PRIMARY KEY (
33、id);10 交班表CREATE TABLE PARK.turn (id int IDENTITY (1, 1) NOT NULL ,tnoperator var char (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,tnlogintime timestamp NULL ,tnturntime timestamp NULL ,entimes int NULL ,extimes int NULL ,totalmoney money NULL, PRIMARY KEY (id);11 收费表CREATE TABLE PARK.charge (id int ID
34、ENTITY (1, 1) NOT NULL ,cardid var char (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,cardtype var char (20) COLLATE Chinese_PRC_CI_AS NULL ,cartype var char (20) COLLATE Chinese_PRC_CI_AS NULL ,carno var char (50) COLLATE Chinese_PRC_CI_AS NULL ,money money NULL, PRIMARY KEY (id);12 车位表CREATE TABLE PARK
35、.carposition (Id int IDENTITY (1, 1) NOT NULL ,cpcarno var char (20) COLLATE Chinese_PRC_CI_AS NULL ,positionstate var char (20) COLLATE Chinese_PRC_CI_AS NULL, PRIMARY KEY (id);13 收费标准表CREATE TABLE PARK.standardcharge (id int IDENTITY (1, 1) NOT NULL ,chargestid int NOT NULL ,cardtype var char (20)
36、 COLLATE Chinese_PRC_CI_AS NULL ,cartype var char (20) COLLATE Chinese_PRC_CI_AS NULL ,chargetype var char (20) COLLATE Chinese_PRC_CI_AS NULL ,timeno int NULL ,unittime int NULL ,unitsum int NULL ,maxsum int NULL, PRIMARY KEY (id);4.6.3 创建SQL索引为了方便用户电话查询车辆停放位置信息,建立入场车辆车牌号索引。CREATE CLUSTER INDEX enc
37、arno_index ON entrance(encarno);4.6.4 SQL数据控制授予权限超级管理员将对数据库的一部分控制权限授予给管理员角色,并把管理员角色授予给所有管理员。 GRANT ALL PRIVILEGES ON TABLE pcard, parkparameter, users,car, rateright, ptime, ptimes, entrance, pexit, turn, carposition TO manager; GRANT SELECT,INDEX ON TABLE charge , standardcharge TO manager; GRANT m
38、anager TO PUBLIC;第五章 详细设计5.1 软件结构功能模块图3-2所示,软件结构功能中操作员功能模块图如图5-1所示:身份验证初始化重新验证非正常退出出消息循环值班管理车位管理用户管理退出正常退出软件介绍信息查询入场停车值班历史查询值班管理记事删除用户添加用户取车并算取费用关于,帮助查询某个日期的情况查询以前的入车情况查询账本图5-1 操作员功能模块图 管理员功能模块图如图5-2所示:身份验证初始化重新验证非正常退出出消息循环权限设置停车场管理数据管理退出正常退出操作员档案管理信息查询停车场使用权限管理操作员权限授予操作员权限更改数据分类统计打印数据报表停车场基本参数设置增加、
39、删除、修改操作员档案查询某个日期的情况查询以前的入车情况查询账本图5-2 管理员功能模块图5.2 程序流程图5.2.1 用户登录模块程序流程图图5-3 用户登录模块程序流程图5.2.2 授权管理模块程序流程图超级管理员对管理员的授权和管理员对操作员的授权,调用同一授权管理模块。图5-4 授权管理模块程序流程图5.2.3档案管理模块程序流程图管理员对操作员档案进行管理和操作员对卡、车、顾客等档案进行管理,调用同一档案管理模块。图5-5 档案管理模块程序流程图5.2.4 收费管理模块程序流程图图5-6 收费管理模块程序流程图第六章 编码与测试本章主要对用户登录模块的实现及测试展开研究,其他模块方法相同。6.1 身份验证C+源程序代码#include PasswordDlg.hBOOL CMyDialog2App:InitInstance()int nCount=0,m=0;while(nCount=3)MessageBox(NULL,输入已经超过3次,请退出!, 错误信息,MB_OK|MB_ICONERROR);return FALSE;6.2 身份验证MFC窗口实现 借助Visual C+ 6.0 编程软件,实现用户登录身份验证,如图6-1。图6-1 用户登录界面当用户名或密码输入有误时,会弹出相应提示信息,并重新输入,如图6-2。图6-2 登录信息错误提