基于C#的停车场管理系统实现

news/2025/10/28 12:04:51/文章来源:https://www.cnblogs.com/yu8yu7/p/19171456

一、系统架构设计

// 核心类结构设计
public class ParkingSystem {private ParkingLot _parkingLot;       // 停车场实体private VehicleManager _vehicleMgr;   // 车辆管理private FeeCalculator _feeCalculator; // 计费模块private AccessLog _accessLog;         // 日志系统
}public class ParkingLot {public int TotalSpots { get; set; }public int AvailableSpots { get; set; }public Dictionary<string, Vehicle> ParkedVehicles { get; } = new();
}

二、核心功能实现

1. 数据库交互模块(使用SQL Server)

// DBHelper.cs 数据库操作基类
public class DBHelper {private static string connectionString = "Server=localhost;Database=ParkingDB;Trusted_Connection=True;";public static DataTable Query(string sql, SqlParameter[] parameters = null) {using (SqlConnection conn = new SqlConnection(connectionString))using (SqlCommand cmd = new SqlCommand(sql, conn)) {cmd.Parameters.AddRange(parameters);conn.Open();SqlDataAdapter adapter = new SqlDataAdapter(cmd);DataTable dt = new DataTable();adapter.Fill(dt);return dt;}}public static int ExecuteNonQuery(string sql, SqlParameter[] parameters = null) {using (SqlConnection conn = new SqlConnection(connectionString))using (SqlCommand cmd = new SqlCommand(sql, conn)) {cmd.Parameters.AddRange(parameters);conn.Open();return cmd.ExecuteNonQuery();}}
}

2. 车辆管理模块

// Vehicle.cs 车辆实体类
public class Vehicle {public string LicensePlate { get; set; }  // 车牌号public DateTime EntryTime { get; set; }   // 进入时间public VehicleType Type { get; set; }     // 车辆类型public string ParkingSpot { get; set; }   // 停车位编号
}// VehicleManager.cs 车辆管理
public class VehicleManager {public bool EnterVehicle(Vehicle vehicle) {// 检查车位可用性if (CheckAvailability(vehicle.Type)) {vehicle.EntryTime = DateTime.Now;// 分配车位逻辑AssignParkingSpot(vehicle);return true;}return false;}public decimal CalculateFee(Vehicle vehicle) {TimeSpan duration = DateTime.Now - vehicle.EntryTime;return _feeCalculator.Calculate(duration, vehicle.Type);}
}

3. 智能计费模块

// FeeCalculator.cs 计费引擎
public class FeeCalculator {private decimal _baseRate = 5.00m;  // 基础费率(元/小时)public decimal Calculate(TimeSpan duration, VehicleType type) {decimal rate = _baseRate;// 根据车型调整费率switch (type) {case VehicleType.Large:rate *= 1.5m;break;case VehicleType.Motorcycle:rate *= 0.5m;break;}decimal hours = Math.Ceiling(duration.TotalHours);return hours * rate;}
}

4. 停车位管理模块

// ParkingSpotManager.cs 车位管理
public class ParkingSpotManager {private Dictionary<string, SpotStatus> _spots = new();public void InitializeSpots(int totalSpots) {for (int i = 1; i <= totalSpots; i++) {_spots[$"P{i:00}"] = SpotStatus.Empty;}}public string FindNearestSpot(VehicleType type) {// 优先分配对应车型车位var availableSpots = _spots.Where(s => s.Value == SpotStatus.Empty && (type == VehicleType.Car || s.Key.StartsWith("M"))).ToList();return availableSpots.FirstOrDefault()?.Key ?? "无可用车位";}
}public enum SpotStatus { Empty, Occupied }

三、完整系统实现流程

  1. 系统初始化
static void Main(string[] args) {ParkingSystem system = new ParkingSystem();system.Init(100, 20, 50);  // 总车位100,大车位20,摩托车位50// 加载历史数据var vehicles = DBHelper.Query("SELECT * FROM ParkedVehicles");foreach (DataRow row in vehicles.Rows) {system.LoadVehicle(new Vehicle {LicensePlate = row["Plate"].ToString(),EntryTime = (DateTime)row["EntryTime"]});}
}
  1. 车辆入场流程
public bool ProcessEntry(string plate) {if (!_vehicleMgr.IsVehicleRegistered(plate)) {_accessLog.Record($"未登记车辆尝试进入: {plate}");return false;}Vehicle vehicle = _vehicleMgr.GetVehicle(plate);if (system.AssignSpot(vehicle)) {_accessLog.Record($"车辆入场: {plate},车位 {vehicle.ParkingSpot}");return true;}return false;
}
  1. 车辆离场流程
public decimal ProcessExit(string plate) {Vehicle vehicle = _vehicleMgr.GetVehicle(plate);if (vehicle == null) return 0;decimal fee = _feeCalculator.Calculate(vehicle);_parkingLot.ReleaseSpot(vehicle.ParkingSpot);// 生成电子票据string receipt = GenerateReceipt(vehicle, fee);_accessLog.Record($"车辆离场: {plate},费用 {fee:C},票据已生成");return fee;
}

四、扩展功能实现

1. 车牌识别集成

// 调用百度AI车牌识别API
public string RecognizePlate(string imagePath) {using (var client = new HttpClient()) {var response = client.PostAsync("https://aip.baidubce.com/rest/2.0/ocr/v1/license_plate", new StringContent($"access_token={accessToken}&image={Convert.ToBase64String(File.ReadAllBytes(imagePath))}")).Result.Content.ReadAsStringAsync().Result;JObject json = JObject.Parse(response);return json["words_result"][0]["number"].ToString();}
}

2. 移动支付对接

// 微信支付接口
public bool ProcessWeChatPay(string orderId, decimal amount) {string url = "https://api.mch.weixin.qq.com/pay/unifiedorder";var parameters = new Dictionary<string, string> {{ "appid", wechatAppId },{ "mch_id", mchId },{ "nonce_str", Guid.NewGuid().ToString("N") },{ "body", "停车费支付" },{ "out_trade_no", orderId },{ "total_fee", (amount * 100).ToString() },{ "spbill_create_ip", HttpContext.Connection.RemoteIpAddress.ToString() },{ "notify_url", "https://yourdomain.com/pay/notify" },{ "trade_type", "NATIVE" }};// 签名生成与请求发送逻辑...
}

五、系统部署建议

  1. 环境要求

    • 开发环境:Visual Studio 2022 + .NET 6.0
    • 数据库:SQL Server 2019 或 MySQL 8.0
    • 硬件:支持RFID读卡器/摄像头外设
  2. 安全配置

    <!-- appsettings.json -->
    {"Security": {"DbConnectionString": "EncryptedString","PaymentKey": "RSA加密密钥"}
    }
    
  3. 监控仪表盘

    // 实时车位状态显示
    public void UpdateDashboard() {int occupied = _parkingLot.OccupiedSpots;int available = _parkingLot.TotalSpots - occupied;Console.ForegroundColor = ConsoleColor.Green;Console.WriteLine($"当前车位:{available}/{_parkingLot.TotalSpots}");Console.ResetColor();
    }
    

参考项目代码 c# 停车场管理系统源码 www.youwenfan.com/contentcnk/62680.html

六、技术难点解析

  1. 并发控制

    使用SemaphoreSlim控制同时访问:

    private SemaphoreSlim _parkingLock = new(1, 1);public async Task<bool> SafeEnterVehicle(Vehicle vehicle) {await _parkingLock.WaitAsync();try {return _vehicleMgr.EnterVehicle(vehicle);} finally {_parkingLock.Release();}
    }
    
  2. 数据持久化

    使用Entity Framework Core实现ORM:

    public class ParkingContext : DbContext {public DbSet<Vehicle> Vehicles { get; set; }public DbSet<ParkingSpot> Spots { get; set; }protected override void OnConfiguring(DbContextOptionsBuilder options) {options.UseSqlServer("YourConnectionString");}
    }
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/948664.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为什么大型网站能“秒回”你的用户名?揭秘毫秒级响应背后的“守门人”艺术

我们都经历过那个瞬间:在一个新平台注册时,你满怀期待地输入一个心仪的昵称,比如“ByteMonk”,点击“下一步”…… 几乎在你点击的同一瞬间,页面就弹出了那个让人抓狂的红色提示:“用户名已被占用”。 请暂停一下…

文件同步备份:为什么说“同步盘”是比“普通网盘”更高效、更安全的选择?

还在为文件误删或忘记保存而烦恼吗?本文深度评测2024年主流文件同步软件,助你找到最佳数据备份方案。首选推荐坚果云,其无感自动同步与强大的“文件历史版本”功能,能有效防止数据丢失,是你的终极数据“后悔药”。…

连中五标,中电金信国际化服务助力企业出海

近日,中电金信语言服务业务持续发力,凭借专业的技术实力与定制化服务能力,成功中标涵盖数字支付与金融科技、AI制造、游戏研发与发行、社交电商、互联网高科技等五个重点项目。这一系列合作成果,不仅是市场对中电金…

1195. 交替打印字符串

1195. 交替打印字符串 题目描述编写一个可以从 1 到 n 输出代表这个数字的字符串的程序,但是:如果这个数字可以被 3 整除,输出 "fizz"。如果这个数字可以被 5 整除,输出 "buzz"。如果这个数字…

企业微信ipad协议实现聚合聊天系统、RPA机器人智能回复

企业微信ipad协议实现聚合聊天系统、RPA机器人智能回复一、企业微信iPad协议技术解析 企业微信iPad协议是一种基于企业微信iPad版本的智能接口服务,通过自主研发的中间件技术实现企业微信生态功能的深度集成 。 与依赖…

2025年市面上别墅石材品牌与行业内别墅石材源头厂家推荐榜单及口碑好的别墅石材产品分析

摘要 随着高端住宅市场持续升温,别墅石材行业在2025年迎来新一轮发展机遇。消费者对石材品质、设计美感及供应链可靠性要求显著提升,本文基于市场调研数据及行业洞察,梳理当前别墅石材领域具有竞争力的品牌与企业。…

最近公共祖先 (LCA)

\(update : 2025/10/28\) 最近公共祖先, 即 \(LCA\) (\(Least\; Common\; Ancestor\)), 顾名思义, 用于在一棵树中求两个点的最近公共祖先 方法有很多, 效率和码量各有千秋 倍增法 很经典的 \(lca\) 求法, 主要是好理解…

IP归属地颗粒度和IP应用场景的关系

在我们日常生活中,IP地址归属地定位(即识别IP对应地理位置)的精度(颗粒度)常因使用方式不同而各异。颗粒度指的是位置识别的细致程度,例如国家、省、城市、区县或街道层级。IP地址的应用场景(如家庭宽带或数据中…

ChatGPT API集成测试自动化框架的实践与成效汇报

一、项目背景与目标 随着软件测试复杂度的提升,传统测试流程面临效率瓶颈。2025年,我司测试团队探索将ChatGPT API集成至现有自动化框架,旨在通过自然语言处理能力优化测试用例生成、缺陷定位及报告分析等环节,实现…

[题解]【MX-S8】梦熊 CSP-S 2025 模拟赛

原比赛页面 ~ 官方题解(直播回放) T1. P14308 【MX-S8-T1】斐波那契螺旋 发现方形的边长是斐波那契数列,增长非常快。打表发现,只要 \(91\) 个方形就能覆盖 \([-10^{18},10^{18}]\) 内的所有点。 所以模拟即可。时…

2025四川碳晶板品牌

文章摘要 碳晶板作为现代建筑装饰材料的新兴趋势,近年来在环保、耐用性和安装便捷性方面展现出显著优势,行业年增长率预计达15%以上。本文基于市场调研和用户反馈,整理了2025年碳晶板品牌排名前十的榜单,旨在为读者…

详细介绍:求余运算和数学模运算的知识了解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

基于蚁群算法解决车辆路径问题(VRP)的MATLAB实现

一、算法框架设计 %% 参数设置 m = 31; % 蚂蚁数量(建议取城市数平方根) alpha = 1; % 信息素重要度 beta = 5; % 启发式信息重要度 rho = 0.1; % 信息素挥发系数 Q = 100; % 信息素…

2025 年工业除湿机,恒温恒湿机,精密空调,除湿加湿一体机厂家最新推荐,产能、专利、环保三维数据透视

引言 工业生产与商用场景中,温湿度精准控制直接影响设备寿命与产品品质,潮湿或温湿度失衡可能导致电子元件失效、医药原料变质等问题。随着市场需求升级,相关设备厂家数量激增,但产品性能差异显著,部分设备存在除…

从手动到全自动:我们如何用Dify重构了API回归测试流程

关注 霍格沃兹测试学院公众号,回复「资料」, 领取人工智能测试开发技术合集 在敏捷开发成为主流的今天,API回归测试已成为保障软件质量的关键环节。然而,传统手动回归测试模式在快速迭代中显得力不从心。本文将完整…

2025 年管道除湿机,中央除湿机,新风除湿机,变频除湿机厂家最新推荐,产能、专利、环保三维数据透视

引言 管道、中央、新风及变频除湿机作为精准控湿的核心设备,已广泛应用于工业生产、商业办公及家庭生活等多元场景。但市场调研显示,同类产品除湿量实测值最大相差 41.7%,单位能耗效率差异近一倍,给采购者带来极大…

2025年10月中国管理咨询公司推荐榜:五强数据对比

正在升级产线、准备上市、或是被库存和交付周期反复折磨的制造业老板,最近常把同一句话挂在口头:“有没有真能把方案落到车间、落到报表上的咨询公司?”政策层面,工信部《“十四五”智能制造规划》把“管理提升”写…

条码识别插件 quaggaJS - microsoft

github下载地址 document.querySelector("#barCode").addEventListener(change, function (evt) {const file = evt.target.files[0];const fileURL = URL.createObjectURL(file);// 使用 Quagga 解码条形码…

2025年10月中国管理咨询公司推荐榜:金蓝盟领衔六强对比评测

正在升级产线、谋划上市的制造业老板,常被“选谁做陪跑”困扰:预算有限,又怕方案落不了地;同行推荐五花八门,分不清谁在套模板、谁真懂工厂。工信部数据显示,60%以上制造企业管理系统不完善,产能利用率不足75%,…

基于3GPP LTE标准的信道仿真模型

一、LTE标准信道模型类型 根据3GPP TS 36.104规范,LTE主要采用以下信道模型:静态信道模型AWGN:高斯白噪声信道 EPA(Extended Pedestrian A):行人环境多径衰落 EVA(Extended Vehicular A):车载环境多径衰落 ET…