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

相关文章

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

Java进阶13讲__第12讲_1/2

多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

在cscode中通过maven创建java项目

在cscode中创建java项目 可以通过博客完成maven的导入 建立maven项目 使用快捷键 Ctrl + Shift + P 建立一个 Maven 项目 1 Ctrl + Shift + P 打开输入框2 输入 "> java create"3 选择 maven4 选择 No Archetype5 输入 域名6 输入项目名称7 建立一个文件目录存放项目,文件名一般为项目名8 确定