Java开发停车场系统,非常适合刚学者!

简介: Java开发停车场系统,非常适合刚学者!

现开发一个停车系统,用户根据车位停车

1)车主查看现在有无车位(最多100个车位),给车主随机分配一个车位,如果该位置上有车,不能停

2)按停车时间收费,3小时以内不收费,3小时以外,每小时2元,最大20元

3)车主可以查看自己停车的车位和收费,以及停车的时长

4)查看历史停车记录

管理员:

查看现有的剩余车位

查看已停车的车位

查看停在车位上的车以及历史缴费

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

Client

package com.gem.client;
import java.util.Scanner;
import com.gem.entity.Admin;
import com.gem.entity.User;
import com.gem.service.impl.AdminServiceImpl;
import com.gem.service.impl.CarParkingServiceimpl;
import com.gem.service.impl.UserServiceimpl;
public class Client {
  public static void main(String[] args) {
    CarParkingServiceimpl carparkingservice = CarParkingServiceimpl.getCarparkingservice();
    UserServiceimpl userserviceimpl = UserServiceimpl.getUserserviceimpl();
    Scanner scanner = new Scanner(System.in);
    Menu1(carparkingservice, userserviceimpl, scanner);
  }
  private static void Menu1(CarParkingServiceimpl carparkingservice, UserServiceimpl userserviceimpl,
      Scanner scanner) {
    while (true) {
      System.out.println("****欢迎进入停车系统****");
      System.out.println("***1.请输入您的车牌***");
      System.out.println("***2.管理员");
      System.out.println("***3.退出****");
      int choice = Integer.parseInt(scanner.nextLine().trim());
      switch (choice) {
      case 1:
        System.out.println("请输入您的车牌");
        String chepai = scanner.nextLine().trim();
        User a = userserviceimpl.login(new User(chepai));
        if (a != null) {
          System.out.println("车牌登记成功");
          Menu2(carparkingservice, userserviceimpl, scanner, a);
        } else {
          System.out.println("车牌登记失败");
        }
        break;
      case 2:
        Menu_Manger(carparkingservice, userserviceimpl);
      default:
        break;
      }
    }
  }
  //管理员的登录注册
  private static void Menu_Manger(CarParkingServiceimpl carparkingservice, UserServiceimpl userserviceimpl) {
    AdminServiceImpl adminserviceimpl = AdminServiceImpl.getAdminSeriver();
    while (true) {
      System.out.println("1.管理员登录");
      System.out.println("2.管理员注册");
      System.out.println("返回上一级");
      Scanner scanner = new Scanner(System.in);
      int chose = Integer.parseInt(scanner.nextLine().trim());
      switch (chose) {
      case 1:
        System.out.println("请输入管理员账号");
        String name = scanner.nextLine().trim();
        System.out.println("请输入管理员密码");
        String password = scanner.nextLine().trim();
        if (adminserviceimpl.login(name, password) != null) {
          System.out.println("登录成功");
          Menu_Manger2(carparkingservice, userserviceimpl, adminserviceimpl);//进行管理员操作
        } else {
          System.out.println("登录失败");
          return;
        }
        break;
      case 2:
        System.out.println("请输入注册账号");
        name = scanner.nextLine().trim();
        System.out.println("请输入注册密码");
        password = scanner.nextLine().trim();
        adminserviceimpl.register(new Admin(name, password));
        break;
      case 3:
        return;
      default:
        return;
      }
    }
  }
  //管理员操作
  private static void Menu_Manger2(CarParkingServiceimpl carparkingservice, UserServiceimpl userserviceimpl,
      AdminServiceImpl adminserviceimpl) {
    while (true) {
      System.out.println("***欢迎进入管理员操作***");
      System.out.println("1.查看现有停车位");
      System.out.println("2.查看停车位上的车以及缴费");
      System.out.println("3.返回上一级");
      Scanner scanner = new Scanner(System.in);
      int chose = Integer.parseInt(scanner.nextLine().trim());
      switch (chose) {
      case 1:
        carparkingservice.showlist();//显示目前所有的空的车位
        break;
      case 2:
        carparkingservice.show();
        break;
      case 3:
        return;
      default:
        System.out.println("输入错误");
        break;
      }
    }
  }
  private static void Menu2(CarParkingServiceimpl carparkingservice, UserServiceimpl userserviceimpl, Scanner scanner,
      User a) {
    while (true) {
      System.out.println("欢迎车牌为:" + a.getCarid() + "车主" + "请选择您要的服务");
      System.out.println("1.停车");
      System.out.println("2.离开并缴费");
      System.out.println("3.查看停车车位");
      System.out.println("4.停车时长");
      System.out.println("0.返回上一级");
      int chose = Integer.parseInt(scanner.nextLine().trim());
      switch (chose) {
      case 1:
        if (carparkingservice.chack(a.getCarid())) {
          break;
        }
        while (true) {
          int random = (int) (Math.random() * 10); //随机一个车位
          if (carparkingservice.parkcar(random, a.getCarid())) {
            System.out.println("停车成功,停车位置为:" + random);
            break;
          } else {
            System.out.println("当前车位有车");
          }
        }
        break;
      case 2:
        if (carparkingservice.leavecar(a.getCarid())) {
          System.out.println("请缴费");
        } else {
          System.out.println("该车未停");
        }
        break;
      case 3:
        carparkingservice.showlist();//显示目前所有的空的车位
        break;
      case 4:
        carparkingservice.showcartime(a.getCarid());//显示停车时长
        break;
      case 0:
        return;
      default:
        System.out.println("输入错误");
        break;
      }
    }
  }
}

Admin

package com.gem.entity;
import java.util.ArrayList;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
public class Admin {
  private String username;
  private String password;
  private double money;
  private ArrayList<String> list = new ArrayList<String>();
  @Override
  public String toString() {
    return username + "\t" + password;
  }
  public Admin(String username, String password) {
    super();
    this.username = username;
    this.password = password;
  }
}

CarParking

package com.gem.entity;
import java.text.SimpleDateFormat;
import java.util.Date;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
@AllArgsConstructor
@NoArgsConstructor
@Getter
public class CarParking { //车位
  public static String getLishi() {
    return lishi;
  }
  public static void setLishi(String lishi) {
    CarParking.lishi = lishi;
  }
  private int id; //停车的编号
  private double money;//钱的计算
  private String state; //当前停车状态
  private Date stime;//停车时间
  private Date etime;//停车结束
  private static double allmoney;
  private static String lishi = "";
  public void setEtime() {//停车结束时间
    etime = new Date();
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
    String time = dateFormat.format(this.etime);
  }
  public void setStime() {//停车开始时间
    stime = new Date();
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
    String time1 = dateFormat.format(this.stime);
  }
  public String toString() {
    return id + "\t" + money + "\t" + stime;
  }
  public CarParking(int id, String state) {
    this.id = id;
    this.state = state;
  }
  public void CarPark(int id, String carid) {
    // TODO Auto-generated method stub
    this.id = id;
    this.state = carid;
  }
  public int getId() {
    return id;
  }
  public void setId(int id) {
    this.id = id;
  }
  public double getMoney() {
    return money;
  }
  public void setMoney(double money) {
    this.money = money;
  }
  public String getState() {
    return state;
  }
  public void setState(String state) {
    this.state = state;
  }
  public static double getAllmoney() {
    return allmoney;
  }
  public static void setAllmoney(double allmoney) {
    CarParking.allmoney = allmoney;
  }
}

User

package com.gem.entity;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@AllArgsConstructor
@Setter
@NoArgsConstructor
@Getter
public class User {
  private String carid; //车牌登录
  @Override
  public String toString() {
    return "车牌为" + carid;
  }
}

AdminService

package com.gem.service;
/*
 * 管理员业务接口
 * 
 * */
import com.gem.entity.Admin;
public interface AdminService {
  //登录
  Admin login(String username, String password);
  //注册
  boolean register(Admin admin);
}

AdminServiceImpl

package com.gem.service.impl;
import java.util.ArrayList;
import com.gem.entity.Admin;
import com.gem.service.AdminService;
/*
 * 管理员类实现类
 * */
public class AdminServiceImpl implements AdminService {
  private ArrayList<Admin> adminList = new ArrayList<Admin>();
  //单例饿汉模式
  private static final AdminServiceImpl adminSeriver = new AdminServiceImpl();
  public static AdminServiceImpl getAdminSeriver() {
    return adminSeriver;
  }
  private AdminServiceImpl() {
  }
  @Override //管理员登录
  public Admin login(String username, String password) {//登录
    for (Admin admin : adminList) {
      if (admin.getUsername().equals(username) && admin.getPassword().equals(password)) {
        return admin;
      }
    }
    return null;
  }
  @Override //添加管理员
  public boolean register(Admin admin) {
    boolean flag = adminList.add(admin);//添加管理员
    return flag;
  }
}

CarParkingService

package com.gem.service;
public interface CarParkingService {
  boolean parkcar(int id, String carid); //停车
  void showlist();//显示所有列表
  boolean leavecar(String carid); //离开
}

CarParkingServiceimpl

package com.gem.service.impl;
import java.util.ArrayList;
import java.util.Date;
import com.gem.entity.CarParking;
import com.gem.service.CarParkingService;
public class CarParkingServiceimpl implements CarParkingService {
  private ArrayList<CarParking> carpaking = new ArrayList<CarParking>();
  {
    for (int i = 1; i <= 10; i++) {
      carpaking.add(new CarParking(i, "当前车位为空")); // 为100个车位赋予编号 和状态
    }
  }
  private static CarParkingServiceimpl carparkingservice = new CarParkingServiceimpl();
  public static CarParkingServiceimpl getCarparkingservice() {
    return carparkingservice;
  }
  public CarParkingServiceimpl() {
  }
  //停车过来的信息,车牌,还有车位,还有更改状态,利用车位编号来改变内容
  @Override
  public boolean parkcar(int id, String carid) {
    // TODO Auto-generated method stub
    for (CarParking car : carpaking) {
      if (id == car.getId() && car.getState().equals("当前车位为空")) {
        car.setState(carid);
        car.setStime();
        return true; //停车成功
      }
    }
    return false;//当前车位有车
  }
  @Override //显示所有停车系统的信息
  public void showlist() {
    // TODO Auto-generated method stub
    for (CarParking car : carpaking) {
      System.out.println(car.getId() + "\t" + car.getState());
    }
  }
  public void showcartime(String carid) {
    // TODO Auto-generated method stub
    for (CarParking car : carpaking) {
      if (car.getState().equals(carid)) {
        car.setEtime();
        Date time1 = car.getEtime();//得到当前的查询时间
        Date time2 = car.getStime();//得到开始时间
        System.out.println("车位为:" + car.getId() + "车牌为" + car.getState());
        System.out.println("停车时间为:" + car.getStime());
        System.out.println("当前时间为:" + car.getEtime());
        System.out.println("已经停车时间为:" + (time1.getTime() - time2.getTime()) / (1000 * 60 * 60));
      }
    }
  }
  public boolean leavecar(String carid) {
    // TODO Auto-generated method stub
    for (CarParking car : carpaking) {
      if (car.getState().equals(carid)) {
        car.setEtime();
        Date time1 = car.getEtime();//得到当前的查询时间
        Date time2 = car.getStime();//得到开始时间
        long t = (time1.getTime() - time2.getTime()) / (1000 * 60 * 60);
        System.out.println("车位为:" + car.getId() + "车牌为" + car.getState());
        System.out.println("停车时间为:" + car.getStime());
        System.out.println("当前时间为:" + car.getEtime());
        System.out.println("已经停车时间为:" + t);
        if (t <= 3) {
          car.setMoney(0);
          car.setAllmoney(car.getAllmoney() + car.getMoney()); //钱累加
        } else if (t > 3 && t <= 13) {
          car.setMoney(2 * (t - 3));
          car.setAllmoney(car.getAllmoney() + car.getMoney()); //钱累加
        } else if (t > 13) {
          car.setMoney(20);
          car.setAllmoney(car.getAllmoney() + car.getMoney()); //钱累加
        }
        car.setLishi(car.getLishi() + "车位:" + car.getId() + "收入金额为:" + car.getMoney() + "\n");
        System.out.println("停车费为:" + car.getMoney());
        car.setState("当前车位为空");
        return true;
      }
    }
    return false;
  }
  public void show() {
    // TODO Auto-generated method stub
    for (CarParking car : carpaking) {
      System.out.println(car.getLishi());
      return;
    }
  }
  public boolean chack(String carid) {
    for (CarParking car : carpaking) {
      if (car.getState().equals(carid)) {
        System.out.println("车辆正在停使中");
        return true;
      }
    }
    return false;
  }
}

UserService

package com.gem.service;
import com.gem.entity.User;
public interface UserService {
  //用车牌登录
  User login(User a);
}

UserServiceimpl

package com.gem.service.impl;
import java.util.ArrayList;
import com.gem.entity.User;
import com.gem.service.UserService;
public class UserServiceimpl implements UserService {
  private ArrayList<User> user = new ArrayList<User>();
  private static UserServiceimpl userserviceimpl = new UserServiceimpl(); //单例
  private UserServiceimpl() {
  }
  public static UserServiceimpl getUserserviceimpl() {
    return userserviceimpl;
  }
  @Override
  public User login(User a) { //把车牌录入
    user.add(a);
    return a;
  }
}


目录
相关文章
|
3月前
|
设计模式 消息中间件 传感器
Java 设计模式之观察者模式:构建松耦合的事件响应系统
观察者模式是Java中常用的行为型设计模式,用于构建松耦合的事件响应系统。当一个对象状态改变时,所有依赖它的观察者将自动收到通知并更新。该模式通过抽象耦合实现发布-订阅机制,广泛应用于GUI事件处理、消息通知、数据监控等场景,具有良好的可扩展性和维护性。
336 8
|
3月前
|
安全 前端开发 Java
《深入理解Spring》:现代Java开发的核心框架
Spring自2003年诞生以来,已成为Java企业级开发的基石,凭借IoC、AOP、声明式编程等核心特性,极大简化了开发复杂度。本系列将深入解析Spring框架核心原理及Spring Boot、Cloud、Security等生态组件,助力开发者构建高效、可扩展的应用体系。(238字)
|
3月前
|
移动开发 监控 小程序
java家政平台源码,家政上门清洁系统源码,数据多端互通,可直接搭建使用
一款基于Java+SpringBoot+Vue+UniApp开发的家政上门系统,支持小程序、APP、H5、公众号多端互通。涵盖用户端、技工端与管理后台,支持多城市、服务分类、在线预约、微信支付、抢单派单、技能认证、钱包提现等功能,源码开源,可直接部署使用。
275 24
|
3月前
|
安全 前端开发 Java
使用Java编写UDP协议的简易群聊系统
通过这个基础框架,你可以进一步增加更多的功能,例如用户认证、消息格式化、更复杂的客户端界面等,来丰富你的群聊系统。
186 11
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
Java与生成式AI:构建内容生成与创意辅助系统
生成式AI正在重塑内容创作、软件开发和创意设计的方式。本文深入探讨如何在Java生态中构建支持文本、图像、代码等多种生成任务的创意辅助系统。我们将完整展示集成大型生成模型(如GPT、Stable Diffusion)、处理生成任务队列、优化生成结果以及构建企业级生成式AI应用的全流程,为Java开发者提供构建下一代创意辅助系统的完整技术方案。
239 10
|
3月前
|
人工智能 监控 Java
Java与AI智能体:构建自主决策与工具调用的智能系统
随着AI智能体技术的快速发展,构建能够自主理解任务、制定计划并执行复杂操作的智能系统已成为新的技术前沿。本文深入探讨如何在Java生态中构建具备工具调用、记忆管理和自主决策能力的AI智能体系统。我们将完整展示从智能体架构设计、工具生态系统、记忆机制到多智能体协作的全流程,为Java开发者提供构建下一代自主智能系统的完整技术方案。
505 4
|
3月前
|
机器学习/深度学习 分布式计算 Java
Java与图神经网络:构建企业级知识图谱与智能推理系统
图神经网络(GNN)作为处理非欧几里得数据的前沿技术,正成为企业知识管理和智能推理的核心引擎。本文深入探讨如何在Java生态中构建基于GNN的知识图谱系统,涵盖从图数据建模、GNN模型集成、分布式图计算到实时推理的全流程。通过具体的代码实现和架构设计,展示如何将先进的图神经网络技术融入传统Java企业应用,为构建下一代智能决策系统提供完整解决方案。
388 0
|
4月前
|
JavaScript Java 大数据
基于JavaWeb的销售管理系统设计系统
本系统基于Java、MySQL、Spring Boot与Vue.js技术,构建高效、可扩展的销售管理平台,实现客户、订单、数据可视化等全流程自动化管理,提升企业运营效率与决策能力。
|
4月前
|
消息中间件 人工智能 Java
抖音微信爆款小游戏大全:免费休闲/竞技/益智/PHP+Java全筏开源开发
本文基于2025年最新行业数据,深入解析抖音/微信爆款小游戏的开发逻辑,重点讲解PHP+Java双引擎架构实战,涵盖技术选型、架构设计、性能优化与开源生态,提供完整开源工具链,助力开发者从理论到落地打造高留存、高并发的小游戏产品。
|
4月前
|
存储 Java 关系型数据库
Java 项目实战基于面向对象思想的汽车租赁系统开发实例 汽车租赁系统 Java 面向对象项目实战
本文介绍基于Java面向对象编程的汽车租赁系统技术方案与应用实例,涵盖系统功能需求分析、类设计、数据库设计及具体代码实现,帮助开发者掌握Java在实际项目中的应用。
177 0