1、1 设计设计:停车场管理停车场管理 1 问题描述 设停车场是一个可停放 n辆汽车的狭长通道,且只有一个门可供出入。汽车在停 车场内按车辆到达时间的先后顺序,依次由北向南排列(门在最南端,最先到达的第 一辆车停放在车场的最北端) ,若车场内已停满 n 辆汽车,则后来的汽车只能在门外 的便道上等候,一旦有车开走,则排在便道上的第一辆汽车即可开入;当停车场内某 辆车要离开时, 在它之后进入的车辆必须先退出车场为它让路, 待该辆车开出大门外, 其他车辆再按原顺序进入车场, 每辆停放在车场的车在它离开停车场时必须按它停留 的时间长短交纳费用。 2 需求分析 (1)根据车辆到达停车场到车辆离开停车场时所停
2、留的时间进行计时收费。 (2)当有车辆从停车场离开时,等待的车辆按顺序进入停车场停放。实现停车 场的调度功能。 (3)用顺序栈来表示停车场,链队表示停车场外的便道。 (4)显示停车场信息和便道信息。 (5)程序执行的命令为:1车辆进入停车场 2车辆离开停车场 3显示停车 场的信息。 3 概要设计 31 抽象数据类型定义 (1)栈的抽象数据类型定义 AST Stack 数据对象:D=ai|aiElemSet,i=1,2,.,n, n0 数据关系:R1=|ai-1,aiD,i=2,.,n 约定an端为栈顶,a1端为栈底。 基本操作: InitStack( /*定义一个全局变量用来存储车库最大容量*
3、/ float price;/* 定义一个全局变量用来存储每车每小时的费用*/ typedef struct time int hour; int min; Time; /*时间结点*/ typedef struct node char num10; Time reach; Time leave; Car; /*车辆信息结点*/ typedef struct NODE Car *stack100; int top; SqStack; /*停车站*/ typedef struct car Car *data; struct car *next; QNode; typedef struct Nod
4、e 6 QNode *head; QNode *rear; LinkQueue; /*通道*/ 42 主要模块的算法描述 本程序主要分为四部分: (1)主函数及程序框架、 (2)车辆到达模块、 (3)车 辆离开模块、 (4)显示车辆信息模块, (1)主函数 void main() SqStack In,Out; LinkQueue Wait; int ch; InitStack( /*初始化停车站*/ InitStack( /*初始化让路的临时栈*/ InitQueue( /*初始化通道*/ while(1) printf(“-欢迎使用停车场管理系统 -n“); printf(“t本系统由5011工作室开发,作者:邓春国、段庆龙、梁伟明、丁 磊。nn“); printf(“请输入停车场的容量:“); scan