JAV迷你共享单车项目

JAV迷你共享单车项目

创建公司类 定义好成员变量

package com.qy30.sm.bike;
import javax.swing.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
/**
 * @author:
 * @classname:04
 * @description:
 * @date:2021/3/18 17:14
 * @version:1.8
 */
public class SharedBikeCompany {
    private int bikeCompanyId;// 公司id
    private String bikeCompanyName;// ofo 哈罗 摩拜
    private SharedBike[] sharedBikes;// 公司持有共享单车
    private int sum;//公司单车总量
    private int count;// 公司单车借出次数
    public SharedBikeCompany() {
    }
    //把主要功能写出,准备在子类中重写
    /*
     * 查看功能
     * */
    public void selectAllBike(SharedBikeCompany[] companies) {
    }
    /*
     * 投放功能
     * */

    public void putBike(SharedBikeCompany[] companies) {
    }

    /*
     * 删除功能
     * */
    public void deleteBike(SharedBikeCompany[] companies) {
    }
    /*
     *借出功能
     */

    public void lendingBike(SharedBikeCompany[] companies) {

    }

    /**
     * 归还功能
     */
    public void returnBike(SharedBikeCompany[] companies) {

    }

    /*
     * 排行榜功能
     *
     * */
    public void bikeRank(SharedBikeCompany[] companies) {

    }

    public SharedBikeCompany(Integer bikeCompanyId, String bikeCompanyName, SharedBike[] sharedBikes, Integer sum, Integer count) {
        this.bikeCompanyId = bikeCompanyId;
        this.bikeCompanyName = bikeCompanyName;
        this.sharedBikes = sharedBikes;
        this.sum = sum;
        this.count = count;
    }

    public Integer getBikeCompanyId() {
        return bikeCompanyId;
    }

    public void setBikeCompanyId(Integer bikeCompanyId) {
        this.bikeCompanyId = bikeCompanyId;
    }

    public String getBikeCompanyName() {
        return bikeCompanyName;
    }

    public void setBikeCompanyName(String bikeCompanyName) {
        this.bikeCompanyName = bikeCompanyName;
    }

    public SharedBike[] getSharedBikes() {
        return sharedBikes;
    }

    public void setSharedBikes(SharedBike[] sharedBikes) {
        this.sharedBikes = sharedBikes;
    }

    public Integer getSum() {
        return sum;
    }

    public void setSum(Integer sum) {
        this.sum = sum;
    }

    public Integer getCount() {
        return count;
    }

    public void setCount(Integer count) {
        this.count = count;
    }
}


定义单车类 和成员变量

```java
package com.qy30.sm.bike;

/**
 * @author:
 * @classname:04
 * @description:
 * @date:2021/3/18 17:14
 * @version:1.8
 */
public class SharedBike {
    private Integer bid;// 单车编号
    private String bname;// 单车名称-->ofo 哈罗 摩拜
    private Integer status;// 单车状态--> 0 已借出 1 可借状态
    private String borrowTime;// 单车借出时间

    public SharedBike() {
    }

    public Integer getBid() {
        return bid;
    }

    public void setBid(Integer bid) {
        this.bid = bid;
    }

    public String getBname() {
        return bname;
    }

    public void setBname(String bname) {
        this.bname = bname;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    public String getBorrowTime() {
        return borrowTime;
    }

    public void setBorrowTime(String borrowTime) {
        this.borrowTime = borrowTime;
    }

    public SharedBike(Integer bid, String bname, Integer status, String borrowTime) {
        this.bid = bid;
        this.bname = bname;
        this.status = status;
        this.borrowTime = borrowTime;
    }


}

定义单车公司类 继承公司类(这里只写了一个)

package com.qy30.sm.bike;

/**
 * @author:
 * @classname:04
 * @description:
 * @date:2021/3/18 17:14
 * @version:1.8
 */
public class MoBey extends SharedBike{
    public MoBey() {
    }

    public MoBey(Integer bid, String bname, Integer status, String borrowTime) {
        super(bid, bname, status, borrowTime);
    }
}

创建程序入口,初始化数据

package com.qy30.sm.bike;


import java.security.PublicKey;
import java.util.InputMismatchException;
import java.util.Scanner;

/**
 * @author:
 * @classname:04
 * @description:
 * @date:2021/3/18 17:16
 * @version:1.8
 */
public class SharedBikeMgr {


    private SharedBikeCompany[] companies;
    private SharedBikeCompany sharedBikeCompany;
    private void initial() {
        sharedBikeCompany = new SharedBikeCompany();
        companies = new SharedBikeCompany[3];//初始化3家公司
        companies[0] = new SharedBikeCompany(1, "ofo", new SharedBike[3], 100, 100);//分别赋值
        companies[1] = new SharedBikeCompany(2, "mobey", new SharedBike[3], 100, 100);
        companies[2] = new SharedBikeCompany(3, "hole", new SharedBike[3], 100, 100);
        for (int i = 0; i < companies.length; i++) {//循环为每家公司的单车赋值
            for (int j = 0; j < (companies[i].getSharedBikes().length); j++) {
                companies[i].getSharedBikes()[j] = new SharedBike(j + 1, companies[i].getBikeCompanyName(), 0, "2021-03-12 06:23:00");
            }
        }
    }

    public SharedBikeMgr() {
        initial();
    }

    public void startMenu( SharedBikeCompany sharedBikeCompany) {//程序开始目录

        System.out.println("欢迎使用迷你共享单车管理系统");
        System.out.println("************************************************************");
        System.out.println("                       1.投放Bike");
        System.out.println("                       2.查看Bike");
        System.out.println("                       3.删除Bike");
        System.out.println("                       4.借出Bike");
        System.out.println("                       5.归还Bike");
        System.out.println("                       6.Bike排行榜");
        System.out.println("                       7.退      出");
        System.out.println("************************************************************");
        System.out.println("请选择:");

        Scanner input = new Scanner(System.in);
        int choose = input.nextInt();
        switch (choose) {
            case 1:
                System.out.println("---->1.投放Bike");
                sharedBikeCompany.putBike(companies);//调用公司类中的投放方法
                returnMain();
                break;
            case 2:
                System.out.println("---->2.查看Bike");
                sharedBikeCompany.selectAllBike(companies);
                returnMain();
                break;
            case 3:
                System.out.println("---->3.删除Bike");
                sharedBikeCompany.deleteBike(companies);
                returnMain();
                break;
            case 4:
                System.out.println("---->4.借出Bike");
                sharedBikeCompany.lendingBike(companies);
                returnMain();
                break;
            case 5:
                System.out.println("---->5.归还Bike");
                sharedBikeCompany.returnBike(companies);
                returnMain();
                break;
            case 6:
                System.out.println("---->6.Bike排行榜");
                sharedBikeCompany.bikeRank(companies);
                returnMain();
                break;
            case 7:
                System.out.println("---->7.退   出");
                break;
            default:
                System.out.println("输入错误!");
                break;
        }
    }

    public void returnMain() {
        SharedBikeCompany sharedBikeCompany=new SharedBikeDao();
        Scanner input = new Scanner(System.in);
        System.out.println("输入0返回:");
        int a = input.nextInt();
        if (a == 0) {
            startMenu(sharedBikeCompany);
        }

    }
}

让下面这个类继承公司类,进行方法重写

package com.qy30.sm.bike;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;

/**
 * @author:
 * @classname:04
 * @description:
 * @date:2021/3/18 18:44
 * @version:1.8
 */

public class SharedBikeDao extends SharedBikeCompany {
        private SharedBike[] newBike;
        @Override
    public void selectAllBike(SharedBikeCompany[] companies) {
        for (SharedBikeCompany company : companies) {
            System.out.println("+---------+------------+----------+--------------+");
            System.out.println("| 公司序号 | 公司名称 | 公司单车数量 | 公司单车借出次数");
            System.out.println("+---------+------------+----------+--------------+");
            System.out.println("|     " + company.getBikeCompanyId() + "    |" + company.getBikeCompanyName() + "         |" + company.getSum() + "          |" + company.getCount());
            System.out.println("+---------+------------+----------+--------------+");
            System.out.println("单车序号      单车品牌     单车状态      借出时间");
            SharedBike[] sharedBikes = company.getSharedBikes();
            for (int i = 0; i < company.getSharedBikes().length; i++) {
                SharedBike bike = sharedBikes[i];
                String status = (bike.getStatus() == 1) ? "可借" : "已借出";//判断单车状态 赋值
                String borrowTime = (bike.getBorrowTime() == null) ? "" : bike.getBorrowTime();
                System.out.println("|   " + bike.getBid() + "|   " + bike.getBname() + "|   " + status + "|   " + borrowTime);
            }
        }
    }
    /*
     * 投放功能
     * */
@Override
    public void putBike(SharedBikeCompany[] companies) {
        Scanner input = new Scanner(System.in);
        System.out.println("请选择投放单车的品牌:");
        System.out.println("1.ofo单车");
        System.out.println("2.mobey单车");
        System.out.println("3.hole单车");
        int choose = input.nextInt();
        System.out.println("请录入要投放的数量:");
        int sum = input.nextInt();
        int len = companies[choose - 1].getSharedBikes().length;
        if ((sum + len) > companies[choose - 1].getSum()) {
            System.out.println("空间不足,已参照配置进行扩容");
            try {
                Thread.sleep(2000);//停顿2秒
            } catch (InputMismatchException e) {
                return;
            } catch (Exception e) {
            }
        }
        newBike = Arrays.copyOf(companies[choose - 1].getSharedBikes(), (len + sum));
        System.out.println("成功投放" + sum + "俩单车");
       /* Date doNow=new Date();
        SimpleDateFormat date=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String time =date.format(doNow);*/
        for (int i = 1; i <= sum; i++) {

            SharedBike sharedBikes = null;
            switch (choose) {
                case 1:
                    sharedBikes = new OFO(len + 1, "ofo单车", 1, "");
                    break;
                case 2:
                    sharedBikes = new MoBey(len + 1, "mobey单车", 1, "");
                    break;
                case 3:
                    sharedBikes = new Hole(len + 1, "holo单车", 1, "");
                    break;
            }
            newBike[len] = sharedBikes;
            len++;
        }
        companies[choose - 1].setSum(newBike.length);
        companies[choose - 1].setSharedBikes(newBike);

    }

    /*
     * 删除功能
     * */
    @Override
    public void deleteBike(SharedBikeCompany[] companies) {
        Scanner input = new Scanner(System.in);
        int index;
        System.out.println("请选择删除单车的品牌:");
        System.out.println("1.ofo单车");
        System.out.println("2.mobey单车");
        System.out.println("3.hole单车");
        int choose = input.nextInt();
        SharedBike[] bike = companies[choose - 1].getSharedBikes();
        switch (choose) {
            case 1:
            case 2:
            case 3:
                System.out.println("此" + companies[choose - 1].getBikeCompanyName() + "单车共享单车如下:");
                for (int i = 0; i < bike.length; i++) {
                    String status = (bike[i].getStatus() == 1) ? "可借" : "已借出";
                    System.out.println(bike[i].getBid() + "    " + bike[i].getBname() + "    " + status + "    " + bike[i].getBorrowTime());
                }
                break;
        }
        System.out.println("请输入要删除单车的编号:");
        index = input.nextInt();
        int a = index - 1;
        if (bike[a].getStatus() == 1) {
            System.out.println("删除" + companies[choose - 1].getBikeCompanyName() + "单车公司下的" + bike[index - 1].getBname() + "成功");

            for (int i = index; i <= bike.length; i++) {
                if (index == bike.length) {
                    bike[bike.length - 1] = null;
                } else {
                    bike[index].setBid(index);
                    bike[index - 1] = bike[index];
                    index++;
                }

            }
            newBike = Arrays.copyOf(bike, bike.length - 1);
            companies[choose - 1].setSum(newBike.length);
            companies[choose - 1].setSharedBikes(newBike);
        } else {
            System.out.println("该单车为借出状态不可删除");
        }
    }
    /*
     *借出功能
     */
@Override
    public void lendingBike(SharedBikeCompany[] companies) {
        Scanner input = new Scanner(System.in);
        int index;
        System.out.println("1.ofo单车");
        System.out.println("2.mobey单车");
        System.out.println("3.hole单车");
        System.out.println("请选择借出单车的品牌:");
        int choose = input.nextInt();
        SharedBike[] bike = companies[choose - 1].getSharedBikes();
        switch (choose) {
            case 1:
            case 2:
            case 3:
                System.out.println("此" + companies[choose - 1].getBikeCompanyName() + "单车共享单车如下:");
                for (int i = 0; i < bike.length; i++) {
                    String status = (bike[i].getStatus() == 1) ? "可借" : "已借出";
                    System.out.println(bike[i].getBid() + "    " + bike[i].getBname() + "    " + status + "    " + bike[i].getBorrowTime());
                }
                break;
        }
        System.out.println("请输入要借出单车的编号:");
        index = input.nextInt();
        input.nextLine();
        if (bike[index - 1].getStatus() == 1) {
            bike[index - 1].setStatus(0);
            System.out.println("请录入借车日期(如:2020-12-23 11:23:45):");
            String borrowTime = input.nextLine();
            bike[index - 1].setBorrowTime(borrowTime);
            System.out.println("借出" + companies[choose - 1].getBikeCompanyName() + "单车公司下的" + bike[index - 1].getBname() + "成功");
            int number = companies[choose - 1].getCount();
            number++;
            companies[choose - 1].setCount(number);
        } else {
            System.out.println("该单车已借出");
        }
    }

    /**
     * 归还功能
     */
    @Override
    public void returnBike(SharedBikeCompany[] companies) {
        Scanner input = new Scanner(System.in);
        int index;
        System.out.println("1.ofo单车");
        System.out.println("2.mobey单车");
        System.out.println("3.hole单车");
        System.out.println("请选择归还单车的品牌:");
        int choose = input.nextInt();
        SharedBike[] bike = companies[choose - 1].getSharedBikes();
        System.out.println("请输入要归还的单车编号:");
        index = input.nextInt();
        if (bike[index - 1].getStatus() == 0) {
            bike[index - 1].setStatus(1);
            Date doNow = new Date();
            SimpleDateFormat date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            String borrowTime = date.format(doNow);
            System.out.println("归还日期:");
            System.out.println(borrowTime);
            System.out.println("您的借车时间为:");
            System.out.println(bike[index - 1].getBorrowTime());
            try {
                Calendar returnTime = Calendar.getInstance();
                returnTime.setTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(borrowTime));
                Calendar lendingTime = Calendar.getInstance();
                lendingTime.setTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(bike[index - 1].getBorrowTime()));
                double a = (returnTime.getTimeInMillis() - lendingTime.getTimeInMillis());
                System.out.println(a);
                int hours = (int) (a / (60 * 60 * 1000));
                if (hours < 1) {
                    hours = 1;
                }
                System.out.println("用车时间为" + hours + "小时;需要支付" + hours * 2 + "元");
                System.out.println("归还" + companies[choose - 1].getBikeCompanyName() + "单车公司下的" + bike[index - 1].getBname() + "成功");
                bike[index - 1].setBorrowTime("");
            } catch (ParseException e) {
                System.out.println("输入日期有误" + e);
            }
        } else {
            System.out.println("该单车尚未借出");
        }
    }

    /*
     * 排行榜功能
     *
     * */
    @Override
    public void bikeRank(SharedBikeCompany[] companies) {
        for (int i = 0; i < companies.length; i++) {
            for (int j = i + 1; j < companies.length; j++) {
                SharedBikeCompany temp = null;
                if (companies[i].getCount() < companies[j].getCount()) {
                    temp = companies[i];
                    companies[i] = companies[j];
                    companies[j] = temp;
                }
            }
        }
        System.out.println("公司名称    借车次数");
        for (int i = 0; i < companies.length; i++) {
            System.out.println(companies[i].getBikeCompanyName() + "         " + companies[i].getCount());
        }
    }



}

创建测试类

package com.qy30.sm.bike;

/**
 * @author:
 * @classname:04
 * @description:
 * @date:2021/3/18 17:45
 * @version:1.8
 */
public class Tast {
    public static void main(String[] args) {
        SharedBikeMgr sharedBikeMgr=new SharedBikeMgr();
        SharedBikeCompany sharedBikeCompany=new SharedBikeDao();
        sharedBikeMgr.startMenu(sharedBikeCompany);
    }
}

  • 5
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值