C语言实现的停车场管理系统

需积分: 10 3 下载量 40 浏览量 更新于2024-07-18 收藏 172KB DOC 举报
"停车场管理系统,利用C语言开发,包含栈和队列的数据结构,模拟车辆进出、收费等功能。" 在这个停车场管理系统中,主要运用了数据结构中的栈和队列概念来解决实际问题。栈用于模拟停车场内部的情况,因为它具有后进先出(LIFO)的特性,适合表示车辆进入和离开的顺序。而队列则用于模拟停车场外的便道,因为它是先进先出(FIFO)的数据结构,符合车辆等待进入的逻辑。 系统设计的核心在于处理各种情况,包括车辆到达、离开和系统退出。当车辆到达时,系统会检查停车场是否已满。如果为空或者还有空位,车辆将进入停车场,其信息被压入栈中,并显示车辆在停车场内的位置。如果停车场已满,车辆会被放入队列中,等待进入。车辆离开时,需要从栈顶开始查找并移除所有在该车辆之后进入的车辆,直到找到目标车辆,然后计算其停留时间并收取相应的费用。 程序的输入部分,用户通过键盘输入车辆的操作类型(到达A、离开D、退出E)、车辆编号(整型)和时间(浮点型,精确到分钟)。输出方面,到达的车辆会显示其编号和到达时间,离开的车辆则会显示其编号、离开时间和应缴纳的费用。在测试数据中,包括了多组到达、离开和结束的操作,用于验证系统的正确性。 在数据结构的描述中,栈(ADTstack)的数据对象由字符集构成,数据关系定义了相邻元素之间的关系,即栈中元素的顺序。栈的基本操作包括初始化栈(initstack)和获取栈顶元素(gettop),这两个操作对于实现停车场系统至关重要。初始化栈用于创建一个新的空栈,而获取栈顶元素则能帮助我们追踪最新进入停车场的车辆。 此外,程序还应该包括其他基本操作,如判断栈是否为空、压栈(push)和弹栈(pop),以支持车辆的进出。队列的操作可能包括初始化队列、入队(enqueue)和出队(dequeue),确保车辆能够按照正确的顺序进入停车场。 这个项目不仅锻炼了C语言编程能力,还强化了对数据结构和算法的理解与应用,特别是栈和队列在实际问题中的灵活运用。通过这样的系统,我们可以有效地模拟和管理停车场的运营,包括车辆的停放、收费和流量控制,提供了一个理论与实践相结合的学习案例。
2021-04-19 上传
停车场管理系统 浙江农林大学地理信息科学171班 HMc、FZ、HHb、XHc、ZLl、CC小组 模块 模块名 命名空间 介绍 完成度 模型模块 Park.Model 提供数据库模型 99% 服务模块 Park.Service 提供业务处理方法 99% 管理模块 Park.Admin 提供管理页面供管理员对各种信息进行管理、查看和汇总 80% 用户模块 Park.Mobile 提供手机网站,供用户进行查看账户信息和停车场信息 80% 接口模块 Park.API 为停车场硬件设施和Park.Mobile提供API 80% 车位设计模块 Park.Designer 用于设计停车位地图。由于技术不够,故使用WPF作为设计器框架。 99% 测试模块 Park.Test 用于测试,非单元测试 - 日志 20200329 设计器 基本完成车位设计器的主要功能: 画板网格显示 鼠标绘制停车位、通道 停车区的选择 停车区的新增、删除、重命名 使用鼠标浏览画板 使用鼠标选取对象 配置文件的导入导出 配置文件的自动保存和恢复 20200330 设计器 将通道从矩形改为线 通道支持了非横纵方向 通道支持了朝左上方拉伸 通道支持按Shift进行约束 停车位新增支持旋转 鼠标悬浮样式改为图形显示阴影 支持了删除功能 20200331 管理端 搭建了对车主管理表格的基本页面 核心 增加了停车场业务处理相关方法 测试 增加了测试类 20200401 核心 增加了交易充值业务处理相关方法 测试 增加了非会员进出、会员进出的测试方法 20200402 核心 为数据库添加了显式外键声明 管理端 基本完成车主管理表格 基本完成车位管理表格 20200403 核心 支持了从Json文件(设计器导出)导入停车位的功能 基本完成停车区地图的显示(To Bitmap) 20200404 管理端 显示了车主拥有的车辆数量、交易订单数量,点击车辆数量可以跳转到车辆表 提升了”表格模型“基类和js方法,方便之后的编写 基本完成了停车记录表格 20200406 管理端 完成交易记录表格 重新分离编写停车区和停车位管理页面 核心 增加了”墙体“模型 设计器 支持了”墙体“模型 设备接口 做好准备 20200407 管理端 基本完成模拟界面和逻辑 设备接口 基本完成门卫接口、车位传感器接口 20200410 管理端 新增了一个图表 修改数据库初始化代码,符合本系统 基本完成权限角色的分配 新增数据库管理页面 模型 新增了车主的注册时间、最后登录时间字段,新增车辆的准入字段 服务 分离了数据库创建与生成测试数据 进入停车场返回复合类型 20200501 手机 修改为前后端分离项目,前端使用Vue进行编写,后端使用Park.API 20200502 手机 基本完成主页 完成账户验证 完成车辆管理界面和查看停车记录 20200503 模型 新增Config类型,删除了定价策略的停车区字段 服务 将某些服务的参数CarOwner改为CarOwnerID 手机 完成了车辆的删除和新增功能 新增“充值”页,支持了充值和充月卡 20200504 服务 修复了数据库生成的一些时序问题和没有应用定价策略的问题 手机 基本完成交易记录界面 完成停车场地图的显示 完成账户的注销 20200505 服务 修复了数据库生成的一些时序问题,停车记录时间为1-01-01 8:05的问题 手机 修复了一些小BUG,例如格式化代码不正确、宽度过窄等问题 新增点击标题栏文字返回主页 20200515 管理端 完成了导入停车场设计器生成的JSON的功能 20200605 服务 将用户初始化时的用户名改为非随机、顺序的。 修复了设置密码时,有些加了盐有些没加的BUG 管理端 修改初始化密码为1234而非123456 手机 修复了充值金额可以为负数、非数字、很大的数字的BUG 新增修改密码界面 20200610 服务 优化测试数据创建流程,修改了数量、停车记录生成的时间 管理端 完成了首页的数据大屏 20200611 服务 优化测试数据创建流程,支持设置添加用户数量,支持了停车时修改停车位状态,修改模拟当前时间 管理端 数据大屏新增停车场名称标题、新增每个停车区的车位状态饼状图 新增停车场设置界面 数据库管理界面增加了生成测试数据的用户数量输入框 20200616 管理端 删除了车主界面的新建按钮(没写功能)和停车记录、交易记录页面的删除按钮(防止外键出错) 修改了登录页和菜单的图标 设置强制设置指定的主题,删除主题按钮 删除了一些搜索框 20200616 管理端 在车主管理界面新增了管理按钮,可以一键打开用户手机端界面,并修改用户的一些数据 出自 © 2021 GitHub, Inc.
2008-11-10 上传
初始化停车场(确定停车区个数n,每个停车区的停车位,且初始时,停车场为空),说明:使用一个共享数组(临界资源)存储每个停车区中空闲停车位的个数,每一个停车区使用一个共享缓冲区可容纳一辆车,停车场公共通道允许通过两辆车通过。 停车场入口检查是否有空闲停位,如果有发放相关停车区的停车卡,允许停车。如果不存在空闲车位,等待到有空闲车位止。注,入口处应尽量发放不同停车区的停车卡,以获得更高的效率。停车场过道允许两辆车同时通过。 停车场出口,回收停车卡,并修改相关停车区空闲车位数。注:同一时刻只能有一个车出停车场。 每一个停车区,有一个待车位,供进入停车区车辆进入停车区。停车区只能有一辆车进或出。 每辆车每进入下一环节皆应停留一定时间。每一个用户建立一个窗口,于窗口中显示当前将态。将状态转换可由人工确定亦可自动完成,但进入下状态时需要停留学生一定的时间,以保证多个用户“并行”工作。 本框架由四个类组成,这四个类分别是:InitFrame、WotkFram、carJFrame及carThread,由InitFrame启动。类InitFrame提供停车场初始化功能,完成初始任务后启动类WotkFram界面,执行停车场模拟程序,点击命令按扭“进入停车场”,建立一个线程(线程类名为carThread),线程建立一个carJFrame窗口(车辆进入、离开停车场操作程序)模拟车辆进入或离开停车场。