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