java实现停车场系统

本文实例为大家分享了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;
 }

}

更多学习资料请关注专题《管理系统开发》。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 基于java实现停车场管理系统

    本文实例为大家分享了java停车场管理系统的具体代码,供大家参考,具体内容如下 WorkFram.java package com.parking; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; /* * WotkFram.java * * Created on 2008年9月2日, 下午7:57 */ /** * * @author cheng */

  • java实现停车场管理系统

    本文实例为大家分享了java停车场管理系统的具体代码,供大家参考,具体内容如下 //车的类 public class car{ public String number;//车牌号 public int inhour; //进入小时 public int inminute; //进入分 public int insecond; //进入秒 public int outhour; //开出小时 public int outminute; //开出分 public int outsecond; //

  • Java多线程编程小实例模拟停车场系统

    下面分享的是一个Java多线程模拟停车场系统的小实例(Java的应用还是很广泛的,哈哈),具体代码如下: Park类 public class Park { boolean []park=new boolean[3]; public boolean equals() { return true; } } Car: public class Car { private String number; private int position=0; public Car(String number)

  • JAVA实现简单停车场系统代码

    JAVA项目中正号需要一个停车收费系统,就整理出来给大家分享一下,希望对大家有所帮助. <h1 accuse="qTitle" style="margin: 0px; padding: 0px; font-size: 16px; font-stretch: normal; line-height: 26px; font-family: "PingFang SC", "Lantinghei SC", "Microsoft

  • java实现停车场系统

    本文实例为大家分享了java实现停车场系统的具体代码,供大家参考,具体内容如下 现开发一个停车系统,用户根据车位停车 1)车主查看现在有无车位(最多100个车位),给车主随机分配一个车位,如果该位置上有车,不能停 2)按停车时间收费,3小时以内不收费,3小时以外,每小时2元,最大20元 3)车主可以查看自己停车的车位和收费,以及停车的时长 4)查看历史停车记录 管理员: 查看现有的剩余车位 查看已停车的车位 查看停在车位上的车以及历史缴费 Client package com.gem.clien

  • Java获取当前系统事件System.currentTimeMillis()方法

    System.currentTimeMillis()产生一个当前的毫秒,这个毫秒其实就是自1970年1月1日0时起的毫秒数,Date()其实就是相当于Date(System.currentTimeMillis()),因为Date类还有构造Date(longdate),用来计算long秒与1970年1月1日之间的毫秒差. 得到了这个毫秒数,我们自己也可以算起现在的年月日周时,但是这不是我们去计算的,因为有Calendar.Calendar最终结出的结果就是年月日周时时区. System.curre

  • java外卖订餐系统小项目

    本文实例为大家分享了java外卖订餐系统的具体代码,供大家参考,具体内容如下 执行结果: 通过选择功能序号,执行响应的功能: 代码实现: package 外卖订餐系统; /* * 代码优点,使用 循环: * 显示菜单, * 根据用户选择的数字执行相应功能(功能实现:do..while循环.) */ import java.util.Scanner; public class OrderingMsg { public static void main(String[] args) { //数据主题

  • java门禁系统面向对象程序设计

    本文为大家分享了java门禁系统面向对象程序设计,供大家参考,具体内容如下 下面是对门禁系统的介绍: 需求 1.某公司安装了电子门,要设计门禁系统: 2.公司的雇员可以凭借密码.胸卡或指纹进入公司 3.计算机根据雇员的验证方式对其身份进行验证 4.管理员在监控室可以通过按钮直接开启电子门 5.访客可以按门铃请求进入,由管理员为其放行 下面请看代码 /** * 门禁系统 */ package Liu; import java.util.*; import org.apache.log4j.Logg

  • Java简易抽奖系统小项目

    本文实例为大家分享了Java简易抽奖系统的具体代码,供大家参考,具体内容如下 需求: 实现一个抽奖系统 1 注册 2 登录 3 抽奖 必须先注册  再登陆  再抽奖 随机产生4个随机数作为幸运卡号 用户注册后 登录的时候  用户名密码输入判断只有三次机会 需要做到  还有2次   还有1次  三次输入错误 不能再登录 产生10个随机数  将用户注册得到的随机数作为判断 代码如下: import java.util.*; public class Homeworktest { public sta

  • java实现选课系统

    本文实例为大家分享了java实现选课系统的具体代码,供大家参考,具体内容如下 这个程序主要是练习IO(文件读写,序列化),集合框架的使用 学生端可以实现,查找课程,增加选课,删除选课的功能 管理端可以实现对备选课程,学生信息的增删查改 缺点:登陆操作没有实现密码验证和多态. 另外map对象明明put了,可是get的时候竟然会取到null,而且尝试多次,有时候成功,有时候取到null,并不确定.据说这是由多线程引起的map取值为null,因为多线程部分还没开始学习,所以也没做修改. //课程信息

  • java实现订餐系统

    本文实例为大家分享了java实现订餐系统的具体代码,供大家参考,具体内容如下 import java.util.Scanner; public class versionAlliance { public static void main(String[] args) { Scanner in = new Scanner(System.in); String[] names=new String[5];//客户姓名 String[] dishes= {"红烧带鱼","鱼香肉丝

  • Java 获取当前系统时间的三种方法

    准备工作: import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; 方式一: /**  * 获取系统当前时间之方式一  * @explain 使用Calendar实现  * @param format  * @return  */ public static String getSysdateStr(String format) {     Date sysdate = Calend

随机推荐