1、 1 *学院学院 本科生课程设计报告书本科生课程设计报告书 题题 目目 停车场管理系统停车场管理系统 姓姓 名名 学学 号号 学学 院院 专专 业业 计算机科学与技术计算机科学与技术 指导教师指导教师 完成日期:完成日期: 2009-7-10 2 一.需求分析 明确规定:汽车停车场共有 n 个车位,且只有一个门可供汽车进出,汽车按车辆到达 时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的 最北端)若车场内己停满,后来的车在外边的便道等候,若车场内有车开走,则外边车由 第一辆开始按顺序进入车场内;当车场内有车离开时,在它之后进入的车辆必须先退出 车场为它让路,待该辆
2、车开出大门外,其他车辆再按原次序进入车场,每辆停放在车场 的车在它离开停车场时必须按它停留的时间长短交纳费用。 1、输入的形式和输入值的范围; 停入(in)汽车的车牌号码 停入时间 离开(out)汽车停车位置 选择汽车停入或者离开(in or out) 输入停入停车场(in)的汽车车牌号码、停入的时间 输入停在停车场里离开(out)汽车的停车位置 2、输出的形式; 停入(in) 汽车的车牌号码 停入时间 停入地点(1-n) 离开(out)汽车的车牌号码 停留时间 缴纳费用 3、程序所能达到的功能; 完成停车的进入(in)和离开(out) 4、测试数据 车场: 位置 到达时间 车牌号码 1 1
3、12345 2 2 23456 二概要设计 3 为实现上述程序功能,需要两个抽象数据类型:栈和队列。 1. 栈的抽象数据类型定义为: ADT Stack 数据对象:D=ai|aiElemSet,i=1,2,.,n, n 0 数据关系:Rl=|ai-1,aiD,i=2,.,n 基本操作: InitStack ( int reachtime; int leavetime; CarNode; /*车辆信息结点*/ typedef struct NODE CarNode *stackMAX+1; int top; SeqStackCar; /*模拟车站*/ typedef struct car Car
4、Node *data; struct car *next; 6 QueueNode; typedef struct Node QueueNode *head; QueueNode *rear; LinkQueueCar; /*模拟通道*/ /*-*/ void InitStack(SeqStackCar *); /*初始化栈*/ int InitQueue(LinkQueueCar *); /*初始化便道*/ int Arrival(SeqStackCar *,LinkQueueCar *); /*车辆到达*/ void Leave(SeqStackCar *,SeqStackCar *,Li
5、nkQueueCar *); /*车辆离开*/ void List(SeqStackCar,LinkQueueCar); /*显示存车信息*/ void PRINT(CarNode *p) ; /*-*/ void main() SeqStackCar Enter,Temp; 7 LinkQueueCar Wait; int ch; InitStack( /*初始化车站*/ InitStack( /*初始化车站*/ InitQueue( /*初始化通道*/ 主页面选择车辆进入、离开或车辆信息: while(1) printf(“nnttt1. 车辆到达 选择 1“); printf(“nnttt2. 车辆离开 选择 2“); printf(“nnttt3. 车辆信息 选择 3“); printf(“nnttt4. 退出系统 选择 4“); printf(“nnttt 请选择 : “); while(1) scanf(“%d“, printf(“n“); if(ch=1