数据结构课程设计-停车场管理

该博客介绍了一个停车场管理系统的课程设计,系统利用栈模拟停车场,队列模拟便道,实现车辆进出的管理。当车辆到达时,显示其在停车场或便道的位置;车辆离开时,需要计算并显示收费(未实际实现)。
摘要由CSDN通过智能技术生成

停车场管理系统

问题描述:

  • 若车辆到达,则显示汽车在停车场内或便道上的停车位置
  • 车辆离去,则显示骑车在停车场的收费(没做,请自己完成)

基本要求:

  • 用栈模拟停车场,用队列模拟便道

- 代码如下

#include <stdio.h>
#include <stdlib.h>
/**
 * 具体要求请看C语言数据结构课程设计 3.4.1:停车场管理系统
 * 思路:
 * 进:
 *  1. 车按照顺序先进去通道(入队列)
 *  2. 给出指定,让先进去通道的车进入停车场(先出队列后入栈)
 * 出:
 *  1. 最后一个进停车场的车(栈头)出栈,进入队列(入队列)
 *  2. 车出队列
 *  3. 至于停车时间,可以根据该车入栈和出栈的位置差来决定 / 或者搞一个时间函数记录(我选择前者)
 */

/**
 * 队列使用链表实现
 * 使用队列模拟通道
 * 也就是车在排队,其实就是车的链表,使用 id 记录车的信息
 */
typedef struct Cars{
   
    int id ;
    struct Cars *next;
}*Cars,Car;

/**
 * 栈使用顺序表实现
 * 使用栈模拟停车场
 */
typedef struct Parking{
   
    int carId[50];
    int top;
}*Parking;

//初始化停车场
Parking initParking(){
   
    Parking parking;
    parking = malloc(sizeof(Parking));
    if (parking == NULL){
   
        printf("停车场初始化失败!");
        return NULL;
    }
    parking->top = 0;
    return parking;
}

//初始化车链表的表头
Cars initCar(){
   
    Cars cars ;
    cars = malloc(sizeof(Cars));
    if (cars == NULL){
   
        printf("通道初始化失败!");
        return NULL;
    }
    cars->id = 0;
    cars->next = NULL;
    return cars;
}

//车进入通道,也就是形成链表
实验二 停车场管理 班级:A0712 学号:12 姓名:冷清淼 成绩:__________ 指导教师签名:__________ 一、问题描述 设停车场是一个可停放n辆车的狭长通,且只有一个大门可供汽车进出。在停车场汽车到达的先后次序,由北向南依次排列(假设大门在最南端)。若停车场已停满 n辆车,则后来的汽车需在门外的便上等候,当有车开走时,便上的第一辆车即可开 入。当停车场某辆车要离开时,在它之后进入的车辆必须先退出停车场为它让路,待该 辆车开出大门后,其他车辆再按原次序返回车场。每辆车离开停车场时,应按其停留时 间的长短交费(在便上停留的时间不收费)。 设计要求: 1.模拟上述管理过程。要求以顺序栈模拟停车场,以链队列模拟便。 2.从终端读入汽车到达或离去的数据,每组数据包括三项: (1)是"到达"还是"离开"; (2)汽车牌照; (3)"到达"或"离开"的时刻。 3.与每组输入信息相应的输出信息为:如果是到达车辆,则输出其在停车场中或 便上的位置;如果是离去的车辆,则输出其在停车场中停留的时间和应交的费用。 二、算法说明 1.数据结构说明 (1)用到两个堆栈:一个为车场栈;另一个为临时栈temp typedef struct NODE{ CarNode *stack[MAX+1]; int top; }SeqStackCar; /*模拟车场*/ 一个队列结构,存储便车辆信息: typedef struct Node{ QueueNode *head; QueueNode *rear; }LinkQueueCar; /*模拟便*/ 2.算法说明 (1) 功能模块说明:停车场管理系统含有三个模块,即:车辆到达、离开、列表显示 图1 (2)以模块为单位分析算法 1、"到达"模块:到达时有两种情况,即车场是否满,未满则直接进入停车场;满时,到 便等待。如图2。 图2 2."离开"模块:离开时,当车库为空时,提示没有车,结束;否则车辆离开。如图3。 图3 3. "显示"模块:显示模块有两个显示选项,即:车场与便。如图4。 图4 三、测试结果 (一)测试用例(说明:测试用例要合理并且足够,既要有正确用例,也要有错误用例 ,同时检验程序的正确性和强壮性) 1.第一组测试用例 (1)测试输入:停车场车辆离开,如下表: "服务选择 "车牌号/车位 "到达/离开时间 " "1 "QH058 "15:25 " "1 "AB123 "18:45 " "1 "EA642 "23:15 " "2 "2 "0:30 " "2 "1 "0:65(错误) " (2)测试目的:测试离开方法时间格式控制以及费用计算是否正确。 (3)正确输出:第一次离开的是AB123,应交费3.45元。第二次时,当在输入65时, 应该提示输入错误,重输。 (4)实际输出: (5)错误原因:第一个错误是在计算时,一个数字错了;第二个是没有对时间格式 控制。 (6)当前状态:已改正 2.第二组测试用例 (1)测试输入:连续6辆车到达,如下表: " 服务选 " 车牌号 " 到达时间 " "择 " " " "1 "A8828 "7:56 " "1 "S2296 "8:25 " "1 "WW666 "8:45 " "1 "HK456 "15:50 " "1 "GH999 "12:30 " "1 "DD555 "13:40 " 测试目的:测试到达方法与列表显示方法能否正确完成。 (3)正确输出:先到达的五辆车先进入停车场,最后到达的一辆在便等候。 (4)实际输出: (5)错误原因:没有作出时间先后的判断,而是先输入先进入。 (6)当前状态:待修改 3.第三组测试用例 (1)测试输入:接上一步输入离开信息,下表: "服务选择"离开车位"离开时间"便车进入时 " " " " "间 " "2 "3 "13:30 "13:40 " (2)测试目的:测试离开方法功能是否成功以及便进入车场是否正确。 (3)正确输出:输出3号车位的车辆离开信息清单,便1号车进入停车场。 (4)实际输出: 错误原因:没有错误。 (6)当前状态:通过 (二)测试结果分析 此停车管理系统基本可能实现一个小的停车场管理,其"到达"与"离开"方法都相对比 较完整,以及结算清单明了。尽管在时间先后上有出现混乱,但当其用到实际应用时, 那个时间先后就可以避免了。但在输入数据时,要按照严格的格式输入,否则有可能出 现死去或崩溃。若本系统能加上保存功能就更好了,因为一个系统在使用过程中总会关 机等,而此系统的缺点却是没有保存功能,关闭之后就要重新建立了。会慢慢完善。 附录:源代码 ///系统说明:本系统适应于小型停车场,且停车时间在一天之的短期停放停车场。 //在此系统中,车库容量设置为5,便于测
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值