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

更新时间:2023-08-13 19:40:01 阅读量: IT计算机 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

-

停车场管理系统

需求分析与概要设计

说明书

实验名称:停车场管理系统

总结

-

目录

一引言

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、需求分析

五系统功能模块图和程序流程图

六概要设计

总结

-

总结 一、引言

本说明书主要描述如何实现停车场管理系统,以及该系统的实现目的、X 围、功能。供概要实际人员和软件开发人员参考。

1.1、目的

停车场管理系统是为了提高停车场的运行效率、加强安全性以及与智能交通系统的信息互动,把相关科学技术发展领域的最新成果合理有效的应用到停车场管理系统的完善和发展中。

1.2、背景

我国数字化技术应用现已逐渐应用到社会的各个领域中;为了节约大量的人力、物力、财力。本设计针对目前停车场管理存在的介质落后、集成自动化程度低、安全性差、人性化和运行效率低下的不足,结合目前科学技术领域的最新研究成果,设计了一种技术较先进、性能可靠、自动化程度较高的停车场管理系统。本设计的指导思想立足于提高停车场管理系统的可靠性、安全性和高效性,对目前我国各大中城市所面临的“停车难”问题的解决,具有一定得促进作用。

1.3、参考资料

(1)李云清,杨庆红.数据结构(C 语言版).:人民邮电,2004.

(2)严蔚敏,X 伟民.数据结构(C 语言版).:清华大学出版.1997.

(3)严蔚敏,X 伟民.数据结构(C 语言版).:清华大学出版.1997.

(4)周海英,马巧梅,靳雁霞.数据结构与算法设计.:国防工业,2007.

(5)X 海藩. 软件工程导论. :清华大学.2003.

(6)许志才,方贤文,X 士喜.数据库、数据结构、软件工程课程设计指导及习题解答.北 京:XX 大学.2011

1.4、数据字典

表 1.1 用户名 表 1.2 车位明细

表1.3 现金明细

-

二、任务概述

2.1、问题描述

设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车场。停车场内如有某辆车要开走,在他之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆在依原来

的次序进场。每辆车在离开停车场时,都应依据它在停车场内停留的时间长短交费。如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆的次序。编制一程序模拟该停车场的管理。

2.2、目的

具有操作简单、使用方便、功能先进等特点,停车场使用者可以在最短的时间进入或离开停车场,从而提高停车场的管理水平,取得更高的经济效益和良好的社会效益。位于停车通道处等候车位的用户能快速找到车位。用户取车离开时能安全有序的离开。同时辅以智能化设备和完善的管理软件来简化人的劳动,实现停车场车辆进入、场内监控以及计费收费等全过程的完全无人化管理;另一方面通过网络化管理实现能够在一个相对广阔的地域内(例如一个城市)了解多个停车场情况,提前了解停车情况,最终实现“随意”停车。

2.3、系统(或用户)特点

停车场管理系统利用现代科技技术管理车辆,提高了车辆管理的高效性、实用性、安全性、可靠性和车辆自动化管理的能力。有效的减少了人工的参与,从而最大限度的减少了人员费用以及由人员失误或人员舞弊造成的损失,大大提高整个停车场的经济性、安全性与使用效率。

2.4、假定和约束

(1)该软件开发运行的最短寿命为5年

(2)开发软件投入使用的最长时间是两个礼拜。

2.5、基本要求

以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。每一组输入数据包括三个数据列:汽车“到达”或“离去”信息,汽车牌照以及到达或离去的时刻。对每一组输入数据进行操作后的输出信息为:在停车场内停留的时间和应缴纳的费用(在便道上停留的时间不收费)。栈以顺序结构实现,队列以链表结构实现。

三、需求规定

3.1、对功能的规定

《停车场管理系统》的总功能如下:

车辆的驶入过程;

车辆的驶出过程;

3.1.1、车辆的驶入过程

根据提示的信息,点击存放车辆界面,输入车辆的信息,输入车辆的户主名和车牌号,界面会显示车辆的基本信息,点击确认,如果停车场停满车辆,则界面会出现信息提示你停车场已满;否则界面信息提示你存车成功。等待下一车辆存放。

3.1.2、车辆的驶出过程

如果取车,点击取出车辆界面,输入退车的信息,如户主名或车牌号,界面会显示该车辆的基本信息,如车辆停放时间、停放场地、车辆是否需要缴费、需要缴费多少等。

总结

-

确认退车后,是否需要车辆的移动,退车后剩余车辆车辆如何在停车场停放。

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,输入数据:

总结

-

(‘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 系统功能模块图

-

图5.2 程序流程图

六、概要设计

(1)设定栈的抽象数据类型定义为:

ADT stack{

数据对象:D={a i|a i∈charset,i=1,2,…,n,n>=0}

数据关系:R1={<a i-1,a i>/a i-1,a i∈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。

GetT op(S,&e)

总结

-

初始条件:栈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={a i|a i∈ElemSet,i=1,2,…,n,n>=0}

数据关系:R1={<a i-1,a i>/a i-1,a i∈D,i=2,…,n}

约定其中一端为队列头,一端为队列尾。

基本操作

InitQueue(&Q)

操作结果:构造一个空队列Q。

DestroyQueue(&Q)

初始条件:队列Q已经存在。

操作结果:队列Q被销毁,不再存在。

ClearQueue(&Q)

初始条件:队列Q已经存在。

操作结果:将Q清空为空队列。

QueueLength(Q)

初始条件:队列Q已经存在。

操作结果:返回Q的元素个数,即队列的长度。

总结

-

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(循环条件){

接受命令;

处理命令;

总结

-

}

}

else{

接受命令;

处理命令;

}

}

②2个栈模块——实现栈抽象数据类型。

③队列模块——实现队列抽象数据类型。

④各模块之间的调用关系:主程序模块、栈模块以及队列模块之间的关系。

总结

本文来源:https://www.bwwdw.com/article/tohj.html

Top