JAVA停车场管理系统(不含GUI图形用户界面)

目录

任务要求

具体实现

Parking_Management_System类

Account类

Administrators类

User类

Tool类


任务要求

本代码用于实现一个简单的停车场管理系统,包含数据结构中的栈和队列

栈代表停车场停车的数量,先进后出,因为入口被视为一次只能过一辆车

其次临时栈,如果有车要出停车场,则需要将其他车假设移出停车场,放到临时栈中,之后等待车出停车场后,再使车辆依次归位停车场

队列代表临时便道,如果停车场满,但依然有车希望进入,则进入临时便道等待,直到有车出停车场

具体如下图:

具体实现

本代码分为五个部分

Parking_Management_System类

用于实现主菜单功能

1.进入管理员系统

2.进入用户系统

3.退出系统

java 复制代码
import java.util.*;
public class Parking_Management_System {
    static Scanner sc=new Scanner(System.in);
    static int Capacity=5;
    static Queue<String>Lane=new ArrayDeque<String>();
    static Stack<String>Parking_Space=new Stack<String>();
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("**********************");
        System.out.println("欢迎使用停车场管理系统");
        System.out.println("**********************");
        System.out.println("请选择需要进行的操作:\"管理员系统\"或\"用户系统\"或\"关于我们\"或\"退出系统\"");
        while(sc.hasNext()) {
            String Choose=sc.next();//输入进行选择
            boolean exit=false;//初始化退出状态
            switch (Choose) {
                case "管理员系统": {
                    Administrators.Administrators_System();break;
                }
                case "用户系统": {
                    User.User_System();break;
                }
                case "关于我们": {
                    Tool.Acknowledgement();break;
                }
                case "退出系统": {
                    System.out.println("请选择需要进行的操作:\"确定\"或\"取消\"");
                    exit=Tool.Exit();//调用退出函数
                    if(exit)
                    {
                        System.out.println("系统已经成功关闭");
                        System.out.println("欢迎下次使用!");
                        System.out.println();
                        break;
                    }
                }
            }
            if(exit)//退出系统
            {
                break;
            }
            System.out.println("请选择需要进行的操作:\"管理员系统\"或\"用户系统\"或\"关于我们\"或\"退出系统\"");
        }
    }
}
Account类

用于定义用户注册账号所储存的数据,包括VIP办理情况,停车状态,充值VIP时间,优惠券数量,密码,剩余可购买优惠券数量,停车车牌号,入车时间

java 复制代码
import java.util.*;

public class Account {
    private boolean VIP_Card;//是否有vip
    private boolean Stop;//是否是停车状态
    private Date Time;//VIP充值时间
    private int Coupon;//是否有优惠券
    private String Password;//密码
    private int Coupon_Cnt;//还能买几次优惠券
    private String LicensePlateNumber;//车牌号
    private Date EntryTime;//入车时间

    public boolean isStop() {
        return Stop;
    }

    public void setStop(boolean stop) {
        Stop = stop;
    }

    public boolean isVIP_Card() {
        return VIP_Card;
    }


    public void setVIP_Card(boolean VIP_Card) {
        this.VIP_Card = VIP_Card;
    }

    public Date getTime() {
        return Time;
    }

    public void setTime(Date Time) {
        this.Time = Time;
    }

    public int getCoupon() {
        return Coupon;
    }

    public void setCoupon(int Coupon) {
        this.Coupon = Coupon;
    }

    public String getPassword() {
        return Password;
    }

    public void setPassword(String password) {
        Password = password;
    }

    public int getCoupon_Cnt() {
        return Coupon_Cnt;
    }

    public void setCoupon_Cnt(int coupon_Cnt) {
        Coupon_Cnt = coupon_Cnt;
    }

    public String getLicensePlateNumber() {
        return LicensePlateNumber;
    }

    public void setLicensePlateNumber(String licensePlateNumber) {
        LicensePlateNumber = licensePlateNumber;
    }

    public Date getEntryTime() {
        return EntryTime;
    }

    public void setEntryTime(Date entryTime) {
        EntryTime = entryTime;
    }
}
Administrators类

用于实现管理员功能,查询停车场信息,查询收入情况,查询投放优惠券数,查询用户信息

java 复制代码
import java.text.*;
import java.util.*;

public class Administrators {
    static Scanner sc=new Scanner(System.in);
    static String Income="0";//总收入
    static String VIP_Income="0";//VIP卡收入
    static String Other_Income="0";//购买优惠券收入
    static Map<String,String>administrators=new HashMap<String,String>();
    static String Key="";//注册管理员账号的密钥,只有密钥正确才可注册管理员账号
    public static void Administrators_System()
    {
        if(administrators.isEmpty())
        {
            Initialization();//初始化
        }
        System.out.println("请选择需要进行的操作:\"登录\"或\"注册\"或\"返回\"");
        while(sc.hasNext()) {
            String Choose= sc.next();
            boolean Determine=false;
            switch (Choose) {
                case "登录": {
                    System.out.println("请输入管理员账号:");
                    String Account = sc.next();
                    System.out.println("请输入管理员密码:");
                    String Password = sc.next();
                    if (Administrators_Lon_on(Account, Password)) {
                        System.out.println("登入成功");
                        System.out.println();
                        Administrators_System_Main_Menu();
                    }
                    else{
                        System.out.println("账号或密码错误,请重新尝试");
                        System.out.println();
                    }
                    break;
                }
                case "注册": {
                    System.out.println("请输入注册账号");
                    String Account = sc.next();
                    System.out.println("请输入注册密码");
                    String Password = sc.next();
                    System.out.println("请输入密钥");
                    String Secret_key = sc.next();
                    Register(Account, Password, Secret_key);
                    break;
                }
                case "返回":{
                    Determine=true;
                    System.out.println("返回成功");
                    System.out.println();
                    break;
                }
            }
            if(Determine)
            {
                break;
            }
            System.out.println("请选择需要进行的操作:\"登录\"或\"注册\"或\"返回\"");
        }
    }
    public static void Initialization()//初始化管理员账号
    {
        administrators.put("","");//自行输入
    }
    public static void Register(String Account,String Password,String Secret_key)
    {
        if(!Secret_key.equals(Key))
        {
            System.out.println("密钥错误");
            System.out.println();
        }
        else  if(administrators.get(Account)!=null)
        {
            System.out.println("注册账号已存在");
            System.out.println("注册失败");
            System.out.println();
        }
        else
        {
            administrators.put(Account,Password);
            System.out.println("注册成功");
            System.out.println();
        }
    }
    public static boolean Administrators_Lon_on(String Account,String Password)//账号是否有效
    {
        Set<String>set=administrators.keySet();
        Iterator<String>it=set.iterator();//用于遍历用户账号
        while(it.hasNext())
        {
            String key=it.next();
            String value=administrators.get(key);
            if(Account.equals(key)&&Password.equals(value))
            {
                return true;
            }
        }
        return false;
    }
    public static void Query_Income()//查询收入
    {
        System.out.println("当前总收入:"+Income+"元");
        System.out.println("停车收入:"+(Integer.valueOf(Income)-Integer.valueOf(VIP_Income)-Integer.valueOf(Other_Income))+"元");
        System.out.println("会员收入"+VIP_Income+"元");
        System.out.println("其他收入"+Other_Income+"元");
        System.out.println();
    }
    public static void Query_Coupon()//查询已投放优惠券
    {
        int cnt=0;
        Set<String>set=User.user.keySet();
        Iterator<String>it=set.iterator();
        while(it.hasNext())
        {
            String key= it.next();
            cnt+=User.user.get(key).getCoupon();
        }
        System.out.println("已经有"+cnt+"张优惠券投入市场");
    }
    public static void Query_User()//查询用户信息
    {
        System.out.println("请输入需要查询用户账号");
        String account=sc.next();
        Set<String>set=User.user.keySet();
        Iterator<String>it=set.iterator();
        boolean Determine=false;
        while(it.hasNext())
        {
            String key=it.next();
            if(key.equals(account))
            {
                Determine=true;
                if(User.user.get(account).isStop()) {
                    System.out.println("该账户停车车牌号:"+User.user.get(account).getLicensePlateNumber());
                    SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
                    String s= sdf.format(User.user.get(key).getEntryTime());
                    System.out.println("该用户的入车时间:"+s);
                }
                else
                {
                    System.out.println("该用户暂未停车");
                }
                break;
            }
        }
        if(!Determine)
        {
            System.out.println("该用户不存在");
        }
        System.out.println();
    }
    public static void Query_Parking()
    {
        System.out.println("请选择需要进行的操作:\"查询停车场车辆信息\"或\"查询车位\"或\"等待车辆\"或\"返回\"");
        while(sc.hasNext()) {
            boolean Determine=false;
            String Choose=sc.next();
            switch (Choose) {
                case "查询停车场车辆信息":{
                    Set<String>set=User.user.keySet();
                    Iterator<String> it=set.iterator();
                    System.out.println("用户名        车牌号        入车时间");
                    while(it.hasNext())
                    {
                        String key= it.next();
                        if(User.user.get(key).isStop()) {
                            SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
                            String s= sdf.format(User.user.get(key).getEntryTime());
                            System.out.printf("%-12s %-12s %-58s\n",key,User.user.get(key).getLicensePlateNumber(),s);
                        }
                        else
                        {
                            System.out.println(key + "          " +"暂无停车" + "      "+"暂无停车");
                        }
                    }
                    break;
                }
                case "查询车位": {
                    System.out.println("停车场还剩下" + (Parking_Management_System.Capacity - Parking_Management_System.Parking_Space.size()) + "个空车位");
                    System.out.println();
                    break;
                }
                case "等待车辆":{
                    System.out.println("当前需要等待排队车辆" + Parking_Management_System.Lane.size() + "辆");
                    System.out.println();
                    break;
                }
                case "返回": {
                    Determine=true;
                    System.out.println("返回成功");
                    System.out.println();
                    break;
                }
            }
            if(Determine)
            {
                break;
            }
            System.out.println("请选择需要进行的操作:\"查询车位\"或\"等待车辆\"或\"返回\"");
        }
    }
    public static void Administrators_System_Main_Menu()
    {
        System.out.println("请选择需要进行的操作:\"查询停车场信息\"或\"查询收入\"或\"查询投放优惠券数\"或\"查询用户信息\"或\"返回\"");
        boolean Determine=false;
        while(sc.hasNext())
        {
            String Select=sc.next();
            switch (Select)
            {
                case "查询收入":{
                    Query_Income();
                    break;
                }
                case "查询投放优惠券数":{
                    Query_Coupon();
                    break;
                }
                case "查询用户信息":{
                    Query_User();
                    break;
                }
                case "查询停车场信息":{
                    Query_Parking();
                    break;
                }
                case "返回":{
                    Determine=true;
                    System.out.println("返回成功");
                    System.out.println();
                    break;
                }
            }
            if(Determine)
            {
                break;
            }
            System.out.println("请选择需要进行的操作:\"查询停车场信息\"或\"查询收入\"或\"查询投放优惠券数\"或\"查询用户信息\"或\"返回\"");
        }
    }
}
User类

实现用户功能,查询停车场信息,查询月卡,查询优惠券,停车操作,出车操作

java 复制代码
import java.text.*;
import java.util.*;

public class User {
    static Scanner sc=new Scanner(System.in);
    static String Current_Account;
    static Map<String,Account>user=new HashMap<String,Account>();
    public static void User_System()
    {
        System.out.println("请选择需要进行的操作:\"登录\"或\"注册\"或\"返回\"");
        while(sc.hasNext()) {
            String Choose= sc.next();
            boolean Determine=false;
            switch (Choose) {
                case "登录": {
                    System.out.println("请输入用户账号:");
                    String Account = sc.next();
                    System.out.println("请输入用户密码:");
                    String Password = sc.next();
                    if (User_Lon_on(Account, Password)) {
                        System.out.println("登入成功");
                        System.out.println();
                        Current_Account=Account;
                        User_Main_Menu();
                    }
                    else
                    {
                        System.out.println("账号或密码错误,请重新尝试");
                        System.out.println();
                    }
                    break;
                }
                case "注册": {
                    System.out.println("请输入注册账号");
                    String Account = sc.next();
                    System.out.println("请输入注册密码");
                    String Password = sc.next();
                    Register(Account, Password);
                    break;
                }
                case "返回":{
                    Determine=true;
                    System.out.println("返回成功");
                    System.out.println();
                    break;
                }
            }
            if(Determine)
            {
                break;
            }
            System.out.println("请选择需要进行的操作:\"登录\"或\"注册\"或\"返回\"");
        }
    }
    public static void Register(String Account,String Password) {
        Set<String> set = user.keySet();
        Iterator<String> it = set.iterator();
        boolean Determine=false;
        while (it.hasNext()) {
            String key = it.next();
            if(key.equals(Account))
            {
                Determine=true;
                break;
            }
        }
        if (Determine) {
            System.out.println("注册账号已存在");
            System.out.println("注册失败");
            System.out.println();
        } else {
            Account account = new Account();
            account.setStop(false);
            account.setCoupon(0);
            account.setPassword(Password);
            account.setVIP_Card(false);
            account.setCoupon_Cnt(5);
            user.put(Account, account);
            System.out.println("注册成功");
            System.out.println();
        }
    }
    public static Boolean User_Lon_on(String Account,String Password)
    {
        Set<String>set=user.keySet();
        Iterator<String>it=set.iterator();
        while(it.hasNext())
        {
            String key=it.next();
            String value=user.get(key).getPassword();
            if(Account.equals(key)&&Password.equals(value))
            {
                return true;
            }
        }
        return false;
    }
    public static void Query()//查询车位
    {
        System.out.println("请选择需要进行的操作:\"查询车位\"或\"等待车辆\"或\"返回\"");
        while(sc.hasNext()) {
            boolean Determine=false;
            String Choose=sc.next();
            switch (Choose) {
                case "查询车位": {
                    System.out.println("停车场还剩下" + (Parking_Management_System.Capacity - Parking_Management_System.Parking_Space.size()) + "个空车位");
                    System.out.println();
                    break;
                }
                case "等待车辆":{
                    System.out.println("当前需要等待排队车辆" + Parking_Management_System.Lane.size() + "辆");
                    System.out.println();
                    break;
                }
                case "返回": {
                    Determine=true;
                    System.out.println("返回成功");
                    System.out.println();
                    break;
                }
            }
            if(Determine)
            {
                break;
            }
            System.out.println("请选择需要进行的操作:\"查询车位\"或\"等待车辆\"或\"返回\"");
        }
    }
    public static void VIP_Card() {//查询月卡
    Date date=new Date(Long.valueOf("2592000000"));
    Date Current_date=new Date();
    if(!user.get(Current_Account).isVIP_Card()||(Current_date.getTime()-user.get(Current_Account).getTime().getTime()>date.getTime())) {
        System.out.println("您当前未充值月卡");
        System.out.println("充值月卡即可免费停车,每月只需800元");
        System.out.println("您可以选择\"充值月卡\"或\"返回\"");
        System.out.println();
        while(sc.hasNext()) {
            boolean Determine=false;
            String Choose = sc.next();
            switch (Choose) {
                case "充值月卡": {
                    System.out.println("是否确定充值月卡\"确定\"或\"取消\"");
                    String Select = sc.next();
                    switch (Select) {
                        case "确定": {
                            System.out.println("恭喜您成功充值成为我们的VIP客户");
                            Administrators.VIP_Income=String.valueOf(Double.valueOf(Administrators.VIP_Income)+800);
                            Administrators.Income=String.valueOf(Double.valueOf(Administrators.Income)+800);
                            user.get(Current_Account).setTime(Current_date);
                            user.get(Current_Account).setVIP_Card(true);
                            break;
                        }
                        case "取消": {
                            break;
                        }
                    }
                    break;
                }
                case "返回": {
                    Determine = true;
                    System.out.println("返回成功");
                    System.out.println();
                    break;
                }
            }
            if (Determine||(user.get(Current_Account).isVIP_Card())) {
                break;
            }
            System.out.println("您当前未充值月卡");
            System.out.println("充值月卡即可免费停车,每月只需800元");
            System.out.println("您可以选择\"充值月卡\"或\"返回\"");
            System.out.println();
        }
        }
    else{
        System.out.println("尊敬的VIP用户您好");
        SimpleDateFormat sdf=new SimpleDateFormat("dd天 HH小时mm分钟ss秒");
        String s=sdf.format(date.getTime()-(Current_date.getTime()-user.get(Current_Account).getTime().getTime()));
        System.out.println("您的VIP仅剩"+s+"就到期了");
    }
    }
    public static void Coupon()//优惠券
    {
        System.out.println("请选择需要进行的操作:\"查询剩余优惠券\"或\"购买优惠券\"或\"返回\"");
        while(sc.hasNext())
        {
            boolean Determine=false;
            String Choose=sc.next();
            switch (Choose)
            {
                case "查询剩余优惠券":{
                    System.out.println("您还有"+user.get(Current_Account).getCoupon()+"张优惠券可以使用");
                    break;
                }
                case "购买优惠券":{
                    System.out.println("是否确定花费50元购买7.5折优惠券\"确定\"或\"取消\"");
                    String Select=sc.next();
                    switch (Select) {
                        case "确定": {
                            System.out.println("购买成功");
                            Administrators.Other_Income=String.valueOf(Double.valueOf(Administrators.Other_Income)+50);
                            Administrators.Income=String.valueOf(Double.valueOf(Administrators.Income)+50);
                            user.get(Current_Account).setCoupon(user.get(Current_Account).getCoupon()+1);
                            user.get(Current_Account).setCoupon_Cnt(user.get(Current_Account).getCoupon_Cnt()-1);
                            System.out.println("剩余可购买次数:"+user.get(Current_Account).getCoupon_Cnt());
                            System.out.println();
                            break;
                        }
                        case "取消": {
                            break;
                        }
                    }
                    break;
                }
                case "返回":{
                    Determine=true;
                    System.out.println("返回成功");
                    System.out.println();
                    break;
                }
            }
            if(Determine)
            {
                break;
            }
            System.out.println("请选择需要进行的操作:\"查询剩余优惠券\"或\"购买优惠券\"或\"返回\"");
        }
    }
    public static void Stop()//停车
    {
        if(user.get(Current_Account).isStop())
        {
            System.out.println("本账号已经记录停车车辆或正在排队停车");
            System.out.println("请出车后再使用");
            }
        else{
            System.out.println("请输入车牌号:");
            String LicensePlateNumber = sc.next();
            user.get(Current_Account).setLicensePlateNumber(LicensePlateNumber);
            if(Parking_Management_System.Capacity-Parking_Management_System.Parking_Space.size()>0) {//有空位
                Date date = new Date();
                user.get(Current_Account).setEntryTime(date);
                Parking_Management_System.Parking_Space.push(Current_Account);
                user.get(Current_Account).setStop(true);
                System.out.println("停车成功");
                System.out.println();
            }
            else {//没空位进入等待车道
                System.out.println("停车场已满,请排队");
                System.out.println("您当前是第"+Parking_Management_System.Lane.size()+"位置");
                System.out.println();
                user.get(Current_Account).setStop(true);
                Parking_Management_System.Lane.add(LicensePlateNumber);
            }
        }

    }

    public static void Departure()//出车
    {
        Stack<String>Temporary_AccessRoad=new Stack<String>();
        int cnt=0;
        while(!Parking_Management_System.Parking_Space.isEmpty())
        {
            Temporary_AccessRoad.push(Parking_Management_System.Parking_Space.pop());
            if(Temporary_AccessRoad.peek().equals(user.get(Current_Account).getLicensePlateNumber()))
            {
                Temporary_AccessRoad.pop();
                if(!user.get(Current_Account).isVIP_Card())
                {
                    Date date=new Date();
                    Long Time=(date.getTime()-user.get(Current_Account).getEntryTime().getTime())/1000/60;
                    SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
                    String s1= sdf.format(user.get(Current_Account).getEntryTime());
                    String s=sdf.format(date);
                    System.out.println("本次入车时间:"+s1);
                    System.out.println("本次出车时间:"+s);
                    System.out.println("请选择\"优惠券支付\"或\"正常支付\"");
                    String Choose=sc.next();
                    double sum=0;
                    if(Time<15)
                    {
                        System.out.println("本次停车免费");
                    }
                    else {
                        sum+=(Time-15)*1.5;
                        System.out.printf("本次停车需缴纳%.2f元\n" ,sum );
                        switch (Choose)
                        {
                            case "优惠券支付":
                            {
                                if(user.get(Current_Account).getCoupon()!=0)
                                {
                                    user.get(Current_Account).setCoupon(user.get(Current_Account).getCoupon()-1);
                                    Administrators.Income=String.valueOf(Double.valueOf(Administrators.Income)+sum*0.75);
                                    System.out.printf("支付成功,本次实际缴纳%.2f\n",0.75*sum);
                                }
                                else
                                {
                                    System.out.println("您当前的优惠券数量不足");
                                    Administrators.Income=String.valueOf(Double.valueOf(Administrators.Income)+sum);
                                    System.out.printf("支付成功,本次实际缴纳%.2f元\n",sum);
                                    System.out.println();
                                }
                                break;
                            }
                            case "正常支付":
                            {
                                Administrators.Income=String.valueOf(Double.valueOf(Administrators.Income)+sum);
                                System.out.printf("支付成功,本次实际缴纳%.2f元\n",sum);
                                break;
                            }
                        }
                    }
                }
                else
                {
                    System.out.println("尊敬的VIP客户,本次已为您免单");
                }
                System.out.println("出车完成");
                System.out.println("本次退让次数:"+cnt);
                System.out.println("欢迎下次再来");
                user.get(Current_Account).setStop(false);
                System.out.println();
                break;
            }
            cnt++;
        }
        while(!Temporary_AccessRoad.isEmpty())
        {
            Parking_Management_System.Parking_Space.push(Temporary_AccessRoad.pop());
        }
        while(Parking_Management_System.Parking_Space.size()<Parking_Management_System.Capacity)
        {
            if(Parking_Management_System.Lane.size()==0)
            {
                break;
            }
            Parking_Management_System.Parking_Space.push(Parking_Management_System.Lane.poll());
        }
    }
    public static void User_Main_Menu()
    {
        System.out.println("请选择需要进行的操作:\"查询停车场信息\"或\"查询月卡\"或\"查询优惠券\"或\"停车\"或\"出车\"或\"返回\"");
        while(sc.hasNext())
        {
            boolean Determine=false;
            String Select=sc.next();
            switch (Select)
            {
                case "查询停车场信息":{
                    Query();
                    break;
                }
                case "查询月卡":{
                    VIP_Card();
                    break;
                }
                case "查询优惠券":{
                    Coupon();
                    break;
                }
                case "停车":{
                    Stop();
                    break;
                }
                case "出车":{
                    Departure();
                    break;
                }
                case "返回":{
                    Determine=true;
                    System.out.println("返回成功");
                    System.out.println();
                    break;
                }
            }
            if(Determine)
            {
                break;
            }
            System.out.println("请选择需要进行的操作:\"查询停车场信息\"或\"查询月卡\"或\"查询优惠券\"或\"停车\"或\"出车\"或\"返回\"");
        }
    }
}
Tool类

其他功能实现

java 复制代码
import java.util.*;

public class Tool {
    public static void Acknowledgement()
    {
        System.out.println("本系统由进行研发");
        System.out.println("成员包括:排名不分先后");
        System.out.println("感谢使用!");
        System.out.println();
    }
    public static boolean Exit()
    {
        Scanner sc=new Scanner(System.in);
        String Choose= sc.next();
        switch (Choose){
            case "确定": {
                return true;
            }
            case "取消": {
                return false;
            }
        }
        System.out.println("无效操作");
        return false;
    }
}
相关推荐
湫ccc12 分钟前
《Python基础》之字符串格式化输出
开发语言·python
弗拉唐12 分钟前
springBoot,mp,ssm整合案例
java·spring boot·mybatis
oi7744 分钟前
使用itextpdf进行pdf模版填充中文文本时部分字不显示问题
java·服务器
mqiqe1 小时前
Python MySQL通过Binlog 获取变更记录 恢复数据
开发语言·python·mysql
AttackingLin1 小时前
2024强网杯--babyheap house of apple2解法
linux·开发语言·python
少说多做3431 小时前
Android 不同情况下使用 runOnUiThread
android·java
知兀1 小时前
Java的方法、基本和引用数据类型
java·笔记·黑马程序员
蓝黑20201 小时前
IntelliJ IDEA常用快捷键
java·ide·intellij-idea