第二章 算法的需求分析
2.1 需求分析的编写目的
本需求分析的目的是规范化本软件的编写,整合本软件的基本结构和所需要实现的基本功能,旨在于推进软件开发的进度,便于对软件开发过程中的控制与管理,同时提出了本停车场管理系统的软件开发过程,便于程序员与客户之间的交流、协作,让用户加深对本软件的了解,以期能够获得更大范围的应用。明确软件开发的方向,保证软件开发稳定性和有序性。
2.2 产品背景明细
软件名称:停车场管理系统
用户:停车场管理人员
设计要求:
设计一个停车场管理系统,模拟停车场的运作,通过此程序具备以下功能:
1.要求以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理;
2.要求处理的数据元素包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码及到达或离去的时刻;
3.该系统完成以下功能:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费);
4.要求栈以顺序结构实现,队列以链表实现。
2.3 缩写及缩略语
l 停车场管理系统:基本元素为构成停车场管理及其相关行为所必须的各个部分:“车辆到达和离开停车场的信息更新管理”,“车辆到达和离开停车场便道的信息更新管理”,“停车场车辆停靠信息总览”,及“停车场便道停靠车辆信息总览”。
l 模块:在程序设计中,为完成某一功能所需的一段程序或子程序;在软件系统中存在多个不同的模块,分别实现不同的功能。
2.4 项目描述
本停车场管理系统的实现较为简单,只能称为一个不成熟的半成品。软件的设计要求虽然已经达到,但是本停车场管理系统的局限性是很明显的。随着时代和人才的发展,日益更新的编程技术,对于软件的要求不再局限于功能的实现,对于软件的界面包装是软件成功的第一步,这是本停车场管理系统的不足之处。总的来说,本软件是学习和初步应用性质比较浓重的开发,作为一项课程设计是有其启发和突破意义的。
2.4.1 软件的开发目标
1.完善现实中的停车场管理,节省人工成本,提高管理的便捷,使停车场的管理更加信息化,符合时代发展的要求。
2.将自己的所学应用到实践之中,提高自身的动手能力,使自身能够切实掌握一门技能,联系数据结构初窥软件工程的实现流程。
2.4.2 应用范围
1.可用于开发人员的交流和学习。
2.理论上能够实现实现生活中停车场的车辆管理,其目的在于实时地将车辆的到达和离开的信息进行收集和更新,并将其直观的显示出来以期实现完善日常生活中人工管理可能出现的错漏,不准确,效率低的各种缺陷。
第三章 算法概要设计
3.1 软件结构
1.停车场管理系统概念详见:2.3缩写及缩略语
2.本停车场管理系统按功能主要分为三大模块:停车场车辆管理,便道车辆管理,信息总览。
3.处理流程及模块的层次结构和调用关系如图1所示:
3.2 数据结构
3.2.1 逻辑结构设计
这里将给出本系统内所使用的每个数据结构的名称、标识符以及它们之中每个数据项、记录、文卷和系的标识、定义、长度及它们之间的层次的或表格的相互关系。
列名 |
数据类型 |
可否为空 |
|
carNum |
int |
Not NULL |
车牌号 |
location |
int |
Not NULL |
停车位 |
isReach |
int |
NULL |
车辆是否到达 |
isLeave |
int |
NULL |
车辆是否离开 |
isEmpty |
int |
NULL |
停车位是否为空 |
rawtime |
int |
NULL |
车辆到达时间 |
leaveTime |
int |
NULL |
车辆离开时间 |
cost |
int |
NULL |
停车费用 |
sCost |
int |
Not NULL |
停车费用单价 |
停车场车辆信息表格
列名 |
数据类型 |
可否为空 |
|
S |
SqStack * |
Not NULL |
栈数据结构 |
Q |
dat * |
Not NULL |
队列数据结构 |
信息存储数据结构
列名 |
数据类型 |
可否为空 |
|
carNum |
int |
Not NULL |
车牌号 |
location |
int |
Not NULL |
停车位 |
isReach |
int |
NULL |
车辆是否到达 |
isLeave |
int |
NULL |
车辆是否离开 |
isEmpty |
int |
NULL |
停车位是否为空 |
rawtime |
int |
NULL |
车辆到达时间 |
leaveTime |
int |
NULL |
车辆离开时间 |
stayTime |
int |
NULL |
车辆停留时间 |
便道车辆信息表格
列名 |
数据类型 |
可否为空 |
|
InitQueue(dat *Q) |
int |
NULL |
队列创建 |
InitStack(SqStack *S) |
int |
NULL |
栈创建 |
QSearch(dat *Q,int e) |
Int |
NULL |
队列数据查找 |
Search(SqStack *S,int CarNumber) |
Int |
NULL |
栈数据查找 |
StopInput(SqStack *S) |
void |
|
车辆进入停车场 |
StopToLoad(dat *Q,int tempCarNumber) |
void |
|
车辆从停车场转入便道 |
StopLeave(SqStack *S,dat *Q) |
void |
|
车辆离开停车场 |
LoadInput(dat *Q) |
void |
|
车辆到达便道 |
LoadToStop(SqStack *S,int tempCarNumber) |
void |
|
车辆从便道转入停车场 |
LoadLeave(dat *Q,SqStack *S) |
void |
|
车辆离开便道 |
menu(SqStack *S,dat *Q) |
void |
|
功能界面菜单 |
需要实现的主要功能方法表格