JavaSE-停车系统

------------------------------------------------Car的类及属性

package com.parking.entity;

import com.parking.util.Tool;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Random;
public class Car {
    private String carNo;//车牌号
    private Date startTime;//开始停车时间
    private Date endTime;//离开时间
    private List costs = new ArrayList();//缴费流水
    private int index = -1;//车位的索引号,默认值为-1

    public int getIndex() {
        return index;
    }

    public void setIndex(int index) {
        this.index = index;
    }

    //停车
    public void parking(ParkingArea area){
        //随机出一个车位
        Random random = new Random();
        //int index = -1;
        while(true) {
            index = random.nextInt(100);
            //获取车位对象
            ParkingLot lot = area.getLots()[index];
            //判断车位上是否已经停有车
            if (lot.getCar() == null){
                lot.setCar(this);//将当前车停在该车位上
                this.setStartTime(new Date());//记录开始停车时间
                break;
            }
        }
    }

    //缴费
    public int cost(ParkingArea area){
        int time = Tool.getSecond(this.getStartTime(),new Date());
        int money = Tool.getParkingCost(time);
        //将缴费加入流水
        costs.add(money);
        //将车位置为空
        area.getLots()[index].setCar(null);
        //将车位索引恢复为默认值
        index = -1;
        return money;
    }

    public String getCarNo() {
        return carNo;
    }

    public void setCarNo(String carNo) {
        this.carNo = carNo;
    }

    public Date getStartTime() {
        return startTime;
    }

    public void setStartTime(Date startTime) {
        this.startTime = startTime;
    }

    public Date getEndTime() {
        return endTime;
    }

    public void setEndTime(Date endTime) {
        this.endTime = endTime;
    }

    public List getCosts() {
        return costs;
    }

    public void setCosts(List costs) {
        this.costs = costs;
    }
}
----------------------------------------------停车场上的属性

package com.parking.entity;
public class ParkingLot {
    private String lotNo;//车位号
    private Car car;//车位上停的车

    public String getLotNo() {
        return lotNo;
    }

    public void setLotNo(String lotNo) {
        this.lotNo = lotNo;
    }

    public Car getCar() {
        return car;
    }

    public void setCar(Car car) {
        this.car = car;
    }
}

----------------------------------------------------停车位的构建方式及查询

package com.parking.entity;
public class ParkingArea {
    private ParkingLot[] lots = new ParkingLot[100];
    private Admin[] admins = new Admin[3];

    public ParkingLot[] getLots() {
        return lots;
    }

    public Admin[] getAdmins() {
        return admins;
    }

    public void setAdmins(Admin[] admins) {
        this.admins = admins;
    }

    //初始化的方法,实例化车位对象
    public void init(){
        for (int i=0;i<lots.length;i++){
            //实例化车位对象
            lots[i] = new ParkingLot();
            //设置车位的编号
            lots[i].setLotNo("NO." + (i+1));
        }
    }
    //根据车牌号,查找该车是否已在车位上
    public Car findCarByCarNo(String carNo){
        for(int i=0;i<lots.length;i++){
            Car car = lots[i].getCar();
            if(car != null){
                if(car.getCarNo().equals(carNo)){
                    return car;
                }
            }
        }
        return null;
    }
    //获取剩余的停车位
    public int getFreeLots(){
        int count = 0;
        for(int i=0;i<lots.length;i++){
            if(lots[i].getCar() == null){
                count ++;
            }
        }
        return count;
    }
}
--------------------------------------------------------用户交互的阶段代码,注册和登录

package com.parking.entity;

import com.parking.util.Tool;

import java.util.Date;
import java.util.Scanner;
public class Admin {
    private String name;
    private String pass;

    //登录
    public boolean login(ParkingArea area){
        Scanner sc = new Scanner(System.in);
        System.out.print("账号:");
        String name = sc.next();
        System.out.print("密码:");
        String pass = sc.next();
        for(int i=0;i<area.getAdmins().length;i++){
            Admin admin = area.getAdmins()[i];
            if(admin != null){
                if(admin.getName().equals(name)&&admin.getPass().equals(pass)){
                    return true;
                }
            }
        }
        return false;
    }

    //注册
    public void regist(ParkingArea area){
        //判断管理员是否有三个
        boolean flag = false;
        int index = -1;
        for(int i=0;i<area.getAdmins().length;i++){
            if(area.getAdmins()[i] == null){
                index = i;
                flag = true;
                break;
            }
        }
        if(flag){//允许注册
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入注册账号:");
            name = sc.next();
            System.out.println("请输入注册密码:");
            pass = sc.next();
            area.getAdmins()[index] = this;
            System.out.println("注册成功!");
        }else{
            System.out.println("已有三个管理员,不允许再注册了");
        }
    }
    //查看现有停车位
    public void show(ParkingArea area){
        //遍历停车场的所有停车位
        for(int i=0;i<area.getLots().length;i++){
            ParkingLot lot = area.getLots()[i];
            System.out.println(lot.getLotNo()+"\t"+
                    ((lot.getCar()==null)?"当前车位为空":lot.getCar().getCarNo()));
        }
    }

    //查看车位上的车以及停车费
    public void showCost(ParkingArea area){
        //遍历所有车位,如果车位上有车,则计算停车费
        for(int i=0;i<area.getLots().length;i++){
            ParkingLot lot = area.getLots()[i];
            //判断车位上是否停车
            if(lot.getCar()!=null){
                Car car = lot.getCar();
                int money = Tool.getParkingCost(Tool.getSecond(car.getStartTime(),new Date()));
                //显示车位号,以及停车费用
                System.out.println("车位:"+lot.getLotNo()+",停车费用为:"+money+"元");
            }
        }
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPass() {
        return pass;
    }

    public void setPass(String pass) {
        this.pass = pass;
    }
}
------------------------------------------------------------------main方法的执行阶段

package com.parking.entity;

import com.parking.util.Tool;
import sun.security.rsa.RSASignature;

import java.util.Date;
import java.util.Scanner;
public class ParkingSystem {
    public static void main(String[] args) {
        //启动停车场
        ParkingArea area = new ParkingArea();
        area.init();//初始化车位信息
        boolean flag = true;
        while(flag) {
            //输出一级菜单
            System.out.println("****欢迎进入停车系统(剩余停车位"+area.getFreeLots()+")****");
            System.out.println("***1、请输入您的车牌***");
            System.out.println("***2、管理员***");
            System.out.println("***3、退出***");
            Scanner sc = new Scanner(System.in);
            int enter = sc.nextInt();
            switch (enter) {
                case 1:
                    System.out.println("请输入您的车牌号:");
                    String carNo = sc.next();
                    //判断该车是否已经在停车位
                    Car car = area.findCarByCarNo(carNo);
                    //创建车的对象
                    if(car == null) {
                        car = new Car();
                        car.setCarNo(carNo);
                        System.out.println("车牌登记成功!");
                    }else{
                        System.out.println(carNo + "已经停在车位上了");
                    }
                    while (true) {
                        System.out.println("欢迎车牌为" + car.getCarNo() + "的车主,请选择您要的服务:");
                        System.out.println("1、停车");
                        System.out.println("2、离开并缴费");
                        System.out.println("3、查看停车车位");
                        System.out.println("4、停车时长");
                        System.out.println("0、返回上一级");
                        int enter1 = sc.nextInt();
                        if (enter1 == 0) {
                            break;
                        } else if (enter1 == 1) {//停车
                            if(area.getFreeLots()==0){
                                System.out.println("对不起,车位已满,无法驶入");
                            }else {
                                car.parking(area);
                                System.out.println("停车成功,停车位置为:" + area.getLots()[car.getIndex()].getLotNo());
                            }
                        } else {
                            if (car.getIndex() == -1) {
                                System.out.println("请您先停好车");
                            } else {
                                if (enter1 == 2) {//离开并缴费
                                    System.out.println("停车时间:" + Tool.dateFormat(car.getStartTime()));
                                    System.out.println("当前时间:" + Tool.dateFormat(new Date()));
                                    System.out.println("已经停车时间:" + Tool.getSecond(car.getStartTime(), new Date()));
                                    System.out.println("停车费:" + car.cost(area) + "元");
                                } else if (enter1 == 3) {//查看停车车位
                                    System.out.println("您的爱车停在:" + area.getLots()[car.getIndex()].getLotNo());
                                } else if (enter1 == 4) {//停车时长
                                    int time = Tool.getSecond(car.getStartTime(), new Date());
                                    System.out.println("您的停车时长为:" + time + "秒");
                                }
                            }
                        }
                    }
                    break;
                case 2://管理员操作部分
                    while(true){
                        System.out.println("1、管理员登录");
                        System.out.println("2、管理员注册");
                        System.out.println("3、退出");
                        int enter2 = sc.nextInt();
                        if(enter2 == 3){
                            break;
                        }
                        Admin admin = new Admin();
                        if(enter2 == 1){//登录
                            if(admin.login(area)){
                                System.out.println("登录成功");
                                while(true) {
                                    System.out.println("***欢迎进入管理员操作***");
                                    System.out.println("1、查看现有停车位");
                                    System.out.println("2、查看停车位上的车以及缴费");
                                    System.out.println("3、返回上一级");
                                    int enter3 = sc.nextInt();
                                    if(enter3 == 3){
                                        break;
                                    }else if(enter3 == 1){
                                        //查看现有停车位
                                        admin.show(area);
                                    }else{
                                        //查看停车位上的车以及缴费
                                        admin.showCost(area);
                                    }
                                }
                            }else{
                                System.out.println("登录失败");
                            }
                        }else{//注册
                            admin.regist(area);
                        }
                    }
                    break;
                case 3:
                    System.out.println("欢迎下次光临");
                    flag = false;
                    break;
            }
        }
    }
}
 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值