行业资讯

公司动态 行业资讯

停车场管理系统需求分析与概要设计

  停车场管理系统需求分析与概要设计_电脑基础知识_IT/计算机_专业资料。停车场管理系统 需求分析与概要设计 说明书 实验名称: 停车场管理系统 1 目录 一 引言 1.1、目的 1.2、背景 1.3、参考资料 1.4、数据字典 二 任务概述 2.1、问题描述

  停车场管理系统 需求分析与概要设计 说明书 实验名称: 停车场管理系统 1 目录 一 引言 1.1、目的 1.2、背景 1.3、参考资料 1.4、数据字典 二 任务概述 2.1、问题描述 2.2、目的 2.3、系统(或用户)特点 2.4、假定和约束 2.5、基本要求 三 需求规定 3.1、对功能的规定 3.1.1、车辆的驶入过程 3.1.2、车辆的驶出过程 3.2、对性能的规定 3.2.1、精度 3.2.2、时间特性要求 3.2.3、灵活性 3.3、故障处理要求 3.4、其他专门要求 四 需求分析 4.1、测试数据 4.2、实现提示 4.3、需求分析 五 六 系统功能模块图和程序流程图 概要设计 2 一、引言 本说明书主要描述如何实现停车场管理系统,以及该系统的实现目的、范围、功能。供 概要实际人员和软件开发人员参考。 1.1、目的 停车场管理系统是为了提高停车场的运行效率、 加强安全性以及与智能交通系统的信息 互动, 把相关科学技术发展领域的最新成果合理有效的应用到停车场管理系统的完善和发展 中。 1.2、背景 我国数字化技术应用现已逐渐应用到社会的各个领域中;为了节约大量的人力、物力、 财力。本设计针对目前停车场管理存在的介质落后、集成自动化程度低、安全性差、人性化 和运行效率低下的不足,结合目前科学技术领域的最新研究成果,设计了一种技术较先进、 性能可靠、 自动化程度较高的停车场管理系统。 本设计的指导思想立足于提高停车场管理系 统的可靠性、安全性和高效性,对目前我国各大中城市所面临的“停车难”问题的解决,具 有一定得促进作用。 1.3、参考资料 (1)李云清,杨庆红.数据结构(C 语言版).北京:人民邮电出版社,2004. (2)严蔚敏,吴伟民.数据结构(C 语言版).北京:清华大学出版.1997. (3)严蔚敏,吴伟民.数据结构(C 语言版).北京:清华大学出版.1997. (4)周海英,马巧梅,靳雁霞.数据结构与算法设计.北京:国防工业出版社,2007. (5)张海藩. 软件工程导论. 北京:清华大学出版社.2003. (6)许志才,方贤文,刘士喜.数据库、数据结构、软件工程课程设计指导及习题解答.北 京:安徽大学出版社.2011 1.4、数据字典 表 1.1 用户名 表 1.2 车位明细 名字:用户名 别名: 描述:标识系统的登录人员 定义:字符、字母 位置:登录管理表 名字:车位明细表 别名: 描述:车位的各明细项目 定义:字符 定义:{数字} 位置:停车系统数据库 表 1.3 现金明细 名字:现金明细表 别名: 描述:现金的各明细项目 定义:字符 定义:{数字} 位置:现金系统数据库 3 二、任务概述 2.1、问题描述 设有一个可以停放 n 辆汽车的狭长停车场,它只有一个大门可以供车辆进出。车辆按到 达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场 的最里面)。如果停车场已放满 n 辆车,则后来的车辆只能在停车场大门外的便道上等待,一 旦停车场内有车开走,则排在便道上的第一辆车就进入停车场。 停车场内如有某辆车要开走, 在他之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆在依 原来的次序进场。每辆车在离开停车场时,都应依据它在停车场内停留的时间长短交费。如 果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道上 等待的车辆的次序。编制一程序模拟该停车场的管理。 2.2、目的 具有操作简单、使用方便、功能先进等特点,停车场使用者可以在最短的时间进入或离 开停车场,从而提高停车场的管理水平,取得更高的经济效益和良好的社会效益。位于停车 通道处等候车位的用户能快速找到车位。 用户取车离开时能安全有序的离开。 同时辅以智能 化设备和完善的管理软件来简化人的劳动, 实现停车场车辆进入、 场内监控以及计费收费等 全过程的完全无人化管理; 另一方面通过网络化管理实现能够在一个相对广阔的地域内 (例 如一个城市)了解多个停车场情况,提前了解停车情况,最终实现“随意”停车。 2.3、系统(或用户)特点 停车场管理系统利用现代科技技术管理车辆,提高了车辆管理的高效性、实用性、安全 性、可靠性和车辆自动化管理的能力。有效的减少了人工的参与,从而最大限度的减少了人 员费用以及由人员失误或人员舞弊造成的损失, 大大提高整个停车场的经济性、 安全性与使 用效率。 2.4、假定和约束 (1)该软件开发运行的最短寿命为 5 年 (2)开发软件投入使用的最长时间是两个礼拜。 2.5、基本要求 以栈模拟停车场, 以队列模拟车场外的便道, 按照从终端读入的输入数据序列进行模拟 管理。每一组输入数据包括三个数据列:汽车“到达”或“离去”信息,汽车牌照号码以及 到达或离去的时刻。 对每一组输入数据进行操作后的输出信息为: 在停车场内停留的时间和 应缴纳的费用(在便道上停留的时间不收费)。栈以顺序结构实现,队列以链表结构实现。 三、需求规定 3.1、对功能的规定 《停车场管理系统》的总功能如下: 车辆的驶入过程; 车辆的驶出过程; 3.1.1、车辆的驶入过程 根据提示的信息,点击存放车辆界面,输入车辆的信息,输入车辆的户主名和车牌 号,界面会显示车辆的基本信息,点击确认,如果停车场停满车辆,则界面会出现信息 提示你停车场已满;否则界面信息提示你存车成功。等待下一车辆存放。 3.1.2、车辆的驶出过程 如果取车,点击取出车辆界面,输入退车的信息,如户主名或车牌号,界面会显示 该车辆的基本信息, 如车辆停放时间、 停放场地、 车辆是否需要缴费、 需要缴费多少等。 4 确认退车后,是否需要车辆的移动,退车后剩余车辆车辆如何在停车场停放。 3.2、对性能的规定 3.2.1、精度 1在计费的处理过程中要求保留一位有效数字。 2停车取车的过程中所考虑的时间是以“分钟”为时间单位的。 3.2.2、时间特性要求 1用到的时间中,为了保证时间的可靠、公正,一律采用服务器的时间为标准。 2在多用户的操作过程中可能会碰到数据并发的问题。 比如在停车前的过程中所查 到的那个空位在他所查的时候还没有停车辆。 但在查询后的任何时候都有可能停放 车辆。可能就在被查之后的那一秒种。所以要确保数据的可靠和实时。 3.2.3、灵活性 该自动化停车场管理系统基于 C 语言编写, 所以同用适应于其他 microsoft 公司的 windows 产品。 3.3、故障处理要求 鉴于车辆流动涉及的数据对于车主和管理员双方的重要性,数据严格有效的恢复机制; 数据必须每天进行一次备份,由于本信息涉及信息量巨大,应以天为周期进增量转储,以月 为周期进行海量转储。 3.4、其他专门要求 (1)所有的查询、 记录、 修改等操作以按钮的形式给出, 且名称一律为取为 “查询” 、 “修 改”“删除”等易于理解的形式; (2)根据车辆流动情况统计信息计算,系统在正常情况下应该支持 200 以上的并行操作 能力,高峰期间(例如周末、节假日)客流量高峰期间,应支持 300 以上并行处理 能力;高峰期间服务器端应支持 600 次以上的信息记录和修改。 四、需求分析 4.1、测试数据 设 n=2 , 输 入 数 据 : (‘A’,1,5),(‘A’,2,15),(‘D’,1,5),(‘A’,3,20),(‘A’,4,25),(‘A’,5,30),(‘ D’,2,35),(‘D’,4,40),(‘E’,0,0)。其中:‘A’表示到达(arrival);‘D’表示离去 (departure);‘E’表示输出(end)。 4.2、实现提示 需要别是一个栈, 临时停放为给要离去的汽车让路二从停车场退出来的汽车, 也用顺序 存储结构实现。输入数据按到达的时刻有序。栈中每一个元素表示一辆汽车,包含两个数据 项:汽车的牌照号码和进入停车场的时刻。 4.3、需求分析 (1)以顺序栈来表示停车场,限定停车场的容量 n。已链队列来表示通道。限制以实型 变量 money 来存放停车场费率。 (2)按照从终端读入的数据序列进行模拟管理。 每辆车需要 3 个数据, 其中车辆数据为: A 表示到达,D 表示离去,E 表示程序结束。车辆牌照为整形数据。进场或离场时间同样为 整形数据。 (3)对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场 内或便道上停车位置; 若是车辆离去, 则输出汽车在停车场内停留的时间和应交纳的费用(在 便道上停留的时间不收费)。 (4)该程序可以模拟停车场的管理过程。 (5) 测 试 数 据 : 设 n=2 , 输 入 数 据 : 5 (‘A’,1,5),(‘A’,2,15),(‘D’,1,5),(‘A’,3,20),(‘A’,4,25),(‘A’,5,30),(‘ D’,2,35),(‘D’,4,40),(‘E’,0,0)。其中:‘A’表示到达(arrival);‘D’表示离去 (departure);‘E’表示输出(end)。 五、系统功能模块图和程序流程图 停车场管 理系统 停车处理 子系统 车位综合管 理子系统 收费系统 核对 车辆 信息 查询 空闲 车位 批准车 辆进入 停车场 查询 停车 信息 查询 收费 记录 固定 车位 收费 处理 便道 车位 收费 图 5.1 系统功能模块图 开始 初 始 化 两 个 栈 Stack 和 Stack2 及一个队列 Queue 进入主菜单 车到达 车离开 列表显示 退出 6 车场是否为空 车场内信息 便道信息 图 5.2 程序流程图 六、概要设计 (1)设定栈的抽象数据类型定义为: ADT stack{ 数据对象:D={aiai∈charset,i=1,2,…,n,n=0} 数据关系:R1={ai-1,ai/ai-1,ai∈D,i=2,…,n} 基本操作 InitStack(&S) 操作结果:构造一个空栈 S。 DestroyStack(&S) 初始条件:栈 S 已经存在。 操作结果:销毁栈 S。 ClearStack(&S) 初始条件:栈 S 已经存在。 操作结果:将 S 清空为空栈。 StackLength(&S) 初始条件:栈 S 已经存在。 操作结果:返回栈 S 的长度。 StackEmpty(&S) 初始条件:栈 S 已经存在。 操作结果:若 S 为空栈,则返回 TURE,否则返回 FALSE。 GetTop(S,&e) 7 初始条件:栈 S 已经存在。 操作结果:若栈 S 不空,则以 e 返回栈顶元素。 Push(&S,e) 初始条件:栈 S 已经存在。 操作结果:在栈 S 的栈顶插入新的栈顶元素 e。 Pop(&S,&e) 初始条件:栈 S 已经存在。 操作结果:删除 S 的栈顶元素,并以 e 返回其值。 StackTraverse(S,visit()) 初始条件:栈 S 已经存在。 操作结果:从栈底到栈顶一次对 S 中的每个元素调用函数 visit()。 }ADT stack (2)设定链式队列的抽象数据类型为: typedef struct Qnode{ QelemType data; Struct Qnode *next; }Qnode,*QueuePtr; typedef struct{ QueuePtr front; QueuePtr teat; } ADT Queue{ 数据对象:D={aiai∈ElemSet,i=1,2,…,n,n=0} 数据关系:R1={ai-1,ai/ai-1,ai∈D,i=2,…,n} 约定其中一端为队列头,一端为队列尾。 基本操作 InitQueue(&Q) 操作结果:构造一个空队列 Q。 DestroyQueue(&Q) 初始条件:队列 Q 已经存在。 操作结果:队列 Q 被销毁,不再存在。 ClearQueue(&Q) 初始条件:队列 Q 已经存在。 操作结果:将 Q 清空为空队列。 QueueLength(Q) 初始条件:队列 Q 已经存在。 操作结果:返回 Q 的元素个数,即队列的长度。 8 QueueEmpty(Q) 初始条件:队列 Q 已经存在。 操作结果:若 Q 为空队列,则返回 TURE,否则返回 FALSE。 GetHead(Q,&e) 初始条件:Q 为非空队列。 操作结果:用 e 返回 Q 队列头元素。 EnQueue(&Q,e) 初始条件:队列 Q 已经存在。 操作结果:插入元素 e 为 Q 的新队尾元素。 DeQueue(&Q,&e) 初始条件:Q 为非空队列。 操作结果:删除 Q 的队头元素,并以 e 返回其值。 QueueTraverse(Q,visit()) 初始条件:队列 Q 已经存在。 操作结果:从队头到队尾,依次对 Q 的每一个数据元素调用函数 visit()。一旦 visit()失 败,则操作失败。 }ADT Queue (3)本程序有 4 个模块 ①主程序模块 main(){ 初始化 while(命令==“1”) 接受命令;/*绘表*/ do{命令;} while(重复条件) if(条件){ If(条件) 接受命令; 处理命令; for(初始值;循环条件;自加运算){} for(初始值;循环条件;自加运算){} else if{ 接受命令; 处理命令; } } if (条件){ 接受命令; 处理命令; do{命令;} while(循环条件){ 接受命令; 处理命令; 9 } } else{ 接受命令; 处理命令; } } ②2 个栈模块——实现栈抽象数据类型。 ③队列模块——实现队列抽象数据类型。 ④各模块之间的调用关系:主程序模块、栈模块以及队列模块之间的关系。 10