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

2024-05-04 03:36

本文主要是介绍JAVA停车场管理系统(不含GUI图形用户界面),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

任务要求

具体实现 

Parking_Management_System类

Account类

Administrators类 

User类

Tool类


任务要求

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

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

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

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

具体如下图:

具体实现 

本代码分为五个部分

Parking_Management_System类

用于实现主菜单功能

1.进入管理员系统

2.进入用户系统

3.退出系统

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时间,优惠券数量,密码,剩余可购买优惠券数量,停车车牌号,入车时间

import java.util.*;public class Account {private boolean VIP_Card;//是否有vipprivate 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类 

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

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类

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

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类

其他功能实现

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;}
}

这篇关于JAVA停车场管理系统(不含GUI图形用户界面)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/958261

相关文章

Java实现检查多个时间段是否有重合

《Java实现检查多个时间段是否有重合》这篇文章主要为大家详细介绍了如何使用Java实现检查多个时间段是否有重合,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录流程概述步骤详解China编程步骤1:定义时间段类步骤2:添加时间段步骤3:检查时间段是否有重合步骤4:输出结果示例代码结语作

Java中String字符串使用避坑指南

《Java中String字符串使用避坑指南》Java中的String字符串是我们日常编程中用得最多的类之一,看似简单的String使用,却隐藏着不少“坑”,如果不注意,可能会导致性能问题、意外的错误容... 目录8个避坑点如下:1. 字符串的不可变性:每次修改都创建新对象2. 使用 == 比较字符串,陷阱满

Java判断多个时间段是否重合的方法小结

《Java判断多个时间段是否重合的方法小结》这篇文章主要为大家详细介绍了Java中判断多个时间段是否重合的方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录判断多个时间段是否有间隔判断时间段集合是否与某时间段重合判断多个时间段是否有间隔实体类内容public class D

IDEA编译报错“java: 常量字符串过长”的原因及解决方法

《IDEA编译报错“java:常量字符串过长”的原因及解决方法》今天在开发过程中,由于尝试将一个文件的Base64字符串设置为常量,结果导致IDEA编译的时候出现了如下报错java:常量字符串过长,... 目录一、问题描述二、问题原因2.1 理论角度2.2 源码角度三、解决方案解决方案①:StringBui

Java覆盖第三方jar包中的某一个类的实现方法

《Java覆盖第三方jar包中的某一个类的实现方法》在我们日常的开发中,经常需要使用第三方的jar包,有时候我们会发现第三方的jar包中的某一个类有问题,或者我们需要定制化修改其中的逻辑,那么应该如何... 目录一、需求描述二、示例描述三、操作步骤四、验证结果五、实现原理一、需求描述需求描述如下:需要在

Java中ArrayList和LinkedList有什么区别举例详解

《Java中ArrayList和LinkedList有什么区别举例详解》:本文主要介绍Java中ArrayList和LinkedList区别的相关资料,包括数据结构特性、核心操作性能、内存与GC影... 目录一、底层数据结构二、核心操作性能对比三、内存与 GC 影响四、扩容机制五、线程安全与并发方案六、工程

JavaScript中的reduce方法执行过程、使用场景及进阶用法

《JavaScript中的reduce方法执行过程、使用场景及进阶用法》:本文主要介绍JavaScript中的reduce方法执行过程、使用场景及进阶用法的相关资料,reduce是JavaScri... 目录1. 什么是reduce2. reduce语法2.1 语法2.2 参数说明3. reduce执行过程

如何使用Java实现请求deepseek

《如何使用Java实现请求deepseek》这篇文章主要为大家详细介绍了如何使用Java实现请求deepseek功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.deepseek的api创建2.Java实现请求deepseek2.1 pom文件2.2 json转化文件2.2

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.

Spring AI集成DeepSeek的详细步骤

《SpringAI集成DeepSeek的详细步骤》DeepSeek作为一款卓越的国产AI模型,越来越多的公司考虑在自己的应用中集成,对于Java应用来说,我们可以借助SpringAI集成DeepSe... 目录DeepSeek 介绍Spring AI 是什么?1、环境准备2、构建项目2.1、pom依赖2.2