C#控制台实现停车管理系统

发布于:2023-07-04 ⋅ 阅读:(85) ⋅ 点赞:(0)

停车场项目需求分析

1.头部显示
头部显示
a.当前剩余车位(默认车位100个)
2.显示停车场地图
10*10显示地图(每一车位都有自身的位置)
3.车辆进场
输入入场车牌
刷新地图
a.显示头部(剩余车位)
b.显示车辆的车牌与车辆的位置
4.车辆出场
输入出场车牌
刷新地图
a.显示头部(剩余车位)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 停车管理系统
{
    class Program
    {
        static string[,] parking = new string[10, 10];
        static bool[,] parkTag = new bool[10, 10];
        static void Main(string[] args)
        {
            //停车位置内容
            ParkingText();
            //头部
            HeadTitle();
            //停车地图
            DrawParking();
            Console.ReadLine();

            while (true)
            {
                Console.WriteLine("请选择车辆出使状态:A--->入场    B--->出场");
                string choose = Console.ReadLine();
                while (true)
                {
                    //入场
                    if (choose == "A")
                    {
                        Console.WriteLine("请输入进场的车牌号:");
                        string plant = Console.ReadLine();
                        string location = SetParkCar(plant);
                        Console.Clear();
                        HeadTitle();
                        Console.WriteLine("--------------------欢迎【{0}】入场,您的车位是【{1}】-------------------", plant, location);
                        Console.WriteLine("----------------------------------------------------------------------------");
                        DrawParking();
                        Console.ReadLine();
                        break;
                    }
                    //出场
                    else if (choose == "B")
                    {
                        Console.WriteLine("请输入出场的车牌号:");
                        string plant = Console.ReadLine();
                        Console.Clear();
                        SetOutParking(plant);
                        HeadTitle();
                        Console.WriteLine("--------------------欢迎车牌号为【{0}】下次光临-------------------", plant);
                        Console.WriteLine("----------------------------------------------------------------------------");
                        DrawParking();
                        Console.ReadLine();
                        break;
                    }
                }
            }
        }


        /// <summary>
        /// 车位内容
        /// </summary>
        private static void ParkingText()
        {
            //行
            string rows = "";
            for (int i = 0; i < parking.GetLength(0); i++)
            {
                for (int j = 0; j < parking.GetLength(1); j++)
                {
                    switch (i)
                    {
                        case 0:
                            rows = "A";
                            break;
                        case 1:
                            rows = "B";
                            break;
                        case 2:
                            rows = "C";
                            break;
                        case 3:
                            rows = "D";
                            break;
                        case 4:
                            rows = "E";
                            break;
                        case 5:
                            rows = "F";
                            break;
                        case 6:
                            rows = "J";
                            break;
                        case 7:
                            rows = "H";
                            break;
                        case 8:
                            rows = "I";
                            break;
                        case 9:
                            rows = "G";
                            break;
                        default:
                            break;
                    }
                    parking[i, j] = String.Format("车位{0}", rows + (j + 1));
                    parkTag[i, j] = true;
                }
            }
        }

        /// <summary>
        /// 画地图
        /// </summary>
        private static void DrawParking()
        {
            for (int i = 0; i < parking.GetLength(0); i++)
            {
                for (int j = 0; j < parking.GetLength(1); j++)
                {
                    Console.Write(parking[i,j]+"   \t");
                }
                Console.WriteLine();
            }
        }

        /// <summary>
        /// 计算剩余的空车位
        /// </summary>
        private static int CountNull()
        {
            int count = 0;
            for (int i = 0; i < parking.GetLength(0); i++)
            {
                for (int j = 0; j < parking.GetLength(1); j++)
                {
                    //判断为ture时,是空车位
                    if (parkTag[i,j])
                    {
                        count++;
                    }
                }
            }
            return count;
        }

        /// <summary>
        /// 头部内容
        /// </summary>
        private static void HeadTitle()
        {
            int count = CountNull();
            Console.WriteLine("----------------------------------------------------------------------------");
            Console.WriteLine("-------------------------------欢迎进入停车场-------------------------------");
            Console.WriteLine("----------------------------当前剩余空车位:{0}-----------------------------",count);
            Console.WriteLine("----------------------------------------------------------------------------");
        }


        /// <summary>
        /// 计算剩余车位,显示车位
        /// </summary>
        private static string SetParkCar(string plant)
        {
            string str = "";
            for (int i = 0; i < parking.GetLength(0); i++)
            {
                for (int j = 0; j < parking.GetLength(1); j++)
                {
                    //从A1 - J10车位一个接一个进行判断寻找空车位,找到则提示
                    if (parkTag[i, j] == true)
                    {
                        str = parking[i, j];
                        //显示车位
                        str = str.Substring(2);
                        parking[i, j] = plant;
                        parkTag[i, j] = false;
                        return str;
                    }
                }
            }
            return "车位已满!";
        }

        /// <summary>
        /// 设置车辆出场,清理车位
        /// </summary>
        /// <param name="plant"></param>
        private static void SetOutParking(string plant)
        {
            string rows = "";
            //找到其当时的车位,将车位状态改成空车位状态
            for (int i = 0; i < parking.GetLength(0); i++)
            {
                for (int j = 0; j < parking.GetLength(1); j++)
                {
                    if (parking[i,j]==plant)
                    {
                        parkTag[i, j] = true;
                        switch (i)
                        {
                            case 0:
                                rows = "A";
                                break;
                            case 1:
                                rows = "B";
                                break;
                            case 2:
                                rows = "C";
                                break;
                            case 3:
                                rows = "D";
                                break;
                            case 4:
                                rows = "E";
                                break;
                            case 5:
                                rows = "F";
                                break;
                            case 6:
                                rows = "G";
                                break;
                            case 7:
                                rows = "H";
                                break;
                            case 8:
                                rows = "I";
                                break;
                            case 9:
                                rows = "J";
                                break;
                            default:
                                break;
                        }
                        parking[i, j] = String.Format("车位{0}", rows + (j + 1));
                    }
                }
            }
        }
    }
}