• 发愁没项目?用Java开发一个停车场系统【附源码】


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


    1)车主查看现在有无车位(最多100个车位),给车主随机分配一个车位,如果该位置上有车,不能停
    2)按停车时间收费,3小时以内不收费,3小时以外,每小时2元,最大20元
    3)车主可以查看自己停车的车位和收费,以及停车的时长
    4)查看历史停车记录

    管理员:
    查看现有的剩余车位
    查看已停车的车位
    查看停在车位上的车以及历史缴费








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

    来源:blog.csdn.net/weixin_43951778

    PS:如果觉得我的分享不错,欢迎大家随手点赞、在看。

    在这里插入图片描述

    往期推荐
    很快呀,马保国语录 “耗子尾汁”被抢注商标

    IntelliJ IDEA 超实用技巧分享,大大提高效率

    64岁Python之父自称退休太无聊?正式加入微软搞开源!

    因为 “扫一扫” 功能,支付宝被起诉了!

    2020年10月GitHub上最热门的开源项目

    11月全国程序员平均工资出炉,网友:我又丢了同行的脸~

    图解计算机网络(1):带你搞懂5 个基础知识

    别乱提交代码了,你必须知道的 Git 分支开发规范!

    5千字帮你搞定 JAVA 集合类/枚举

    Java 常用类库,用好大大提高生产力

  • 相关阅读:
    【get√】发现一个redis zset的新玩法:用ZINTERSTORE把value都置0
    【记录一个问题】golang神坑,明明返回了接口指针类型的nil值,却无法用if判断
    【记录一个问题】神坑,自定义一个golang的error类型,居然运行崩溃了
    【解决了一个小问题】golang protocol buffers 3中去掉json标签中的omitempty
    【转载】select case break引发的血案
    【记录一个问题】redis中执行事务出现错误“EXECABORT Transaction discarded because of previous errors”
    【get√】golang中实现从腾讯云CVM查询网卡流量的两种方法
    【get√】golang新手理解了一点点context
    【get√】golang新手理解了一点点gin框架的中间件
    1066. 图像过滤(15)
  • 原文地址:https://www.cnblogs.com/junge-mike/p/14007893.html
Copyright © 2020-2023  润新知