停車(chē)場(chǎng)停車(chē)系統(tǒng)太差勁!看我用Java手?jǐn)]一個(gè)停車(chē)場(chǎng)系統(tǒng)!
來(lái)源:blog.csdn.net/weixin_43951778
現(xiàn)開(kāi)發(fā)一個(gè)停車(chē)系統(tǒng),用戶(hù)根據(jù)車(chē)位停車(chē),主要實(shí)現(xiàn)以下4個(gè)常用功能:
1)車(chē)主查看現(xiàn)在有無(wú)車(chē)位(最多100個(gè)車(chē)位),給車(chē)主隨機(jī)分配一個(gè)車(chē)位,如果該位置上有車(chē),不能停
2)按停車(chē)時(shí)間收費(fèi),3小時(shí)以?xún)?nèi)不收費(fèi),3小時(shí)以外,每小時(shí)2元,最大20元
3)車(chē)主可以查看自己停車(chē)的車(chē)位和收費(fèi),以及停車(chē)的時(shí)長(zhǎng)
4)查看歷史停車(chē)記錄
管理員:
查看現(xiàn)有的剩余車(chē)位
查看已停車(chē)的車(chē)位
查看停在車(chē)位上的車(chē)以及歷史繳費(fèi)








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("****歡迎進(jìn)入停車(chē)系統(tǒng)****");System.out.println("***1.請(qǐng)輸入您的車(chē)牌***");System.out.println("***2.管理員");System.out.println("***3.退出****");int choice = Integer.parseInt(scanner.nextLine().trim());switch (choice) {case 1:System.out.println("請(qǐng)輸入您的車(chē)牌");String chepai = scanner.nextLine().trim();User a = userserviceimpl.login(new User(chepai));if (a != null) {System.out.println("車(chē)牌登記成功");Menu2(carparkingservice, userserviceimpl, scanner, a);} else {System.out.println("車(chē)牌登記失敗");}break;case 2:Menu_Manger(carparkingservice, userserviceimpl);default:break;}}}//管理員的登錄注冊(cè)private static void Menu_Manger(CarParkingServiceimpl carparkingservice, UserServiceimpl userserviceimpl) {AdminServiceImpl adminserviceimpl = AdminServiceImpl.getAdminSeriver();while (true) {System.out.println("1.管理員登錄");System.out.println("2.管理員注冊(cè)");System.out.println("返回上一級(jí)");Scanner scanner = new Scanner(System.in);int chose = Integer.parseInt(scanner.nextLine().trim());switch (chose) {case 1:System.out.println("請(qǐng)輸入管理員賬號(hào)");String name = scanner.nextLine().trim();System.out.println("請(qǐng)輸入管理員密碼");String password = scanner.nextLine().trim();if (adminserviceimpl.login(name, password) != null) {System.out.println("登錄成功");Menu_Manger2(carparkingservice, userserviceimpl, adminserviceimpl);//進(jìn)行管理員操作} else {System.out.println("登錄失敗");return;}break;case 2:System.out.println("請(qǐng)輸入注冊(cè)賬號(hào)");name = scanner.nextLine().trim();System.out.println("請(qǐng)輸入注冊(cè)密碼");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("***歡迎進(jìn)入管理員操作***");System.out.println("1.查看現(xiàn)有停車(chē)位");System.out.println("2.查看停車(chē)位上的車(chē)以及繳費(fèi)");System.out.println("3.返回上一級(jí)");Scanner scanner = new Scanner(System.in);int chose = Integer.parseInt(scanner.nextLine().trim());switch (chose) {case 1:carparkingservice.showlist();//顯示目前所有的空的車(chē)位break;case 2:carparkingservice.show();break;case 3:return;default:System.out.println("輸入錯(cuò)誤");break;}}}private static void Menu2(CarParkingServiceimpl carparkingservice, UserServiceimpl userserviceimpl, Scanner scanner,User a) {while (true) {System.out.println("歡迎車(chē)牌為:" + a.getCarid() + "車(chē)主" + "請(qǐng)選擇您要的服務(wù)");System.out.println("1.停車(chē)");System.out.println("2.離開(kāi)并繳費(fèi)");System.out.println("3.查看停車(chē)車(chē)位");System.out.println("4.停車(chē)時(shí)長(zhǎng)");System.out.println("0.返回上一級(jí)");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); //隨機(jī)一個(gè)車(chē)位if (carparkingservice.parkcar(random, a.getCarid())) {System.out.println("停車(chē)成功,停車(chē)位置為:" + random);break;} else {System.out.println("當(dāng)前車(chē)位有車(chē)");}}break;case 2:if (carparkingservice.leavecar(a.getCarid())) {System.out.println("請(qǐng)繳費(fèi)");} else {System.out.println("該車(chē)未停");}break;case 3:carparkingservice.showlist();//顯示目前所有的空的車(chē)位break;case 4:carparkingservice.showcartime(a.getCarid());//顯示停車(chē)時(shí)長(zhǎng)break;case 0:return;default:System.out.println("輸入錯(cuò)誤");break;}}}}
Admin
package com.gem.entity;import java.util.ArrayList;import lombok.AllArgsConstructor;import lombok.Getter;import lombok.NoArgsConstructor;import lombok.Setter;public class Admin {private String username;private String password;private double money;private ArrayList<String> list = new ArrayList<String>();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;public class CarParking { //車(chē)位public static String getLishi() {return lishi;}public static void setLishi(String lishi) {CarParking.lishi = lishi;}private int id; //停車(chē)的編號(hào)private double money;//錢(qián)的計(jì)算private String state; //當(dāng)前停車(chē)狀態(tài)private Date stime;//停車(chē)時(shí)間private Date etime;//停車(chē)結(jié)束private static double allmoney;private static String lishi = "";public void setEtime() {//停車(chē)結(jié)束時(shí)間etime = new Date();SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");String time = dateFormat.format(this.etime);}public void setStime() {//停車(chē)開(kāi)始時(shí)間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 stubthis.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;public class User {private String carid; //車(chē)牌登錄public String toString() {return "車(chē)牌為" + carid;}}
AdminService
package com.gem.service;/** 管理員業(yè)務(wù)接口** */import com.gem.entity.Admin;public interface AdminService {//登錄Admin login(String username, String password);//注冊(cè)boolean register(Admin admin);}
AdminServiceImpl
package com.gem.service.impl;import java.util.ArrayList;import com.gem.entity.Admin;import com.gem.service.AdminService;/** 管理員類(lèi)實(shí)現(xiàn)類(lèi)* */public class AdminServiceImpl implements AdminService {private ArrayListadminList = new ArrayList (); //單例餓漢模式private static final AdminServiceImpl adminSeriver = new AdminServiceImpl();public static AdminServiceImpl getAdminSeriver() {return adminSeriver;}private AdminServiceImpl() {}//管理員登錄public Admin login(String username, String password) {//登錄for (Admin admin : adminList) {if (admin.getUsername().equals(username) && admin.getPassword().equals(password)) {return admin;}}return null;}//添加管理員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); //停車(chē)void showlist();//顯示所有列表boolean leavecar(String carid); //離開(kāi)}
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 ArrayListcarpaking = new ArrayList (); {for (int i = 1; i <= 10; i++) {carpaking.add(new CarParking(i, "當(dāng)前車(chē)位為空")); // 為100個(gè)車(chē)位賦予編號(hào) 和狀態(tài)}}private static CarParkingServiceimpl carparkingservice = new CarParkingServiceimpl();public static CarParkingServiceimpl getCarparkingservice() {return carparkingservice;}public CarParkingServiceimpl() {}//停車(chē)過(guò)來(lái)的信息,車(chē)牌,還有車(chē)位,還有更改狀態(tài),利用車(chē)位編號(hào)來(lái)改變內(nèi)容@Overridepublic boolean parkcar(int id, String carid) {// TODO Auto-generated method stubfor (CarParking car : carpaking) {if (id == car.getId() && car.getState().equals("當(dāng)前車(chē)位為空")) {car.setState(carid);car.setStime();return true; //停車(chē)成功}}return false;//當(dāng)前車(chē)位有車(chē)}@Override //顯示所有停車(chē)系統(tǒng)的信息public void showlist() {// TODO Auto-generated method stubfor (CarParking car : carpaking) {System.out.println(car.getId() + "\t" + car.getState());}}public void showcartime(String carid) {// TODO Auto-generated method stubfor (CarParking car : carpaking) {if (car.getState().equals(carid)) {car.setEtime();Date time1 = car.getEtime();//得到當(dāng)前的查詢(xún)時(shí)間Date time2 = car.getStime();//得到開(kāi)始時(shí)間System.out.println("車(chē)位為:" + car.getId() + "車(chē)牌為" + car.getState());System.out.println("停車(chē)時(shí)間為:" + car.getStime());System.out.println("當(dāng)前時(shí)間為:" + car.getEtime());System.out.println("已經(jīng)停車(chē)時(shí)間為:" + (time1.getTime() - time2.getTime()) / (1000 * 60 * 60));}}}public boolean leavecar(String carid) {// TODO Auto-generated method stubfor (CarParking car : carpaking) {if (car.getState().equals(carid)) {car.setEtime();Date time1 = car.getEtime();//得到當(dāng)前的查詢(xún)時(shí)間Date time2 = car.getStime();//得到開(kāi)始時(shí)間long t = (time1.getTime() - time2.getTime()) / (1000 * 60 * 60);System.out.println("車(chē)位為:" + car.getId() + "車(chē)牌為" + car.getState());System.out.println("停車(chē)時(shí)間為:" + car.getStime());System.out.println("當(dāng)前時(shí)間為:" + car.getEtime());System.out.println("已經(jīng)停車(chē)時(shí)間為:" + t);if (t <= 3) {car.setMoney(0);car.setAllmoney(car.getAllmoney() + car.getMoney()); //錢(qián)累加} else if (t > 3 && t <= 13) {car.setMoney(2 * (t - 3));car.setAllmoney(car.getAllmoney() + car.getMoney()); //錢(qián)累加} else if (t > 13) {car.setMoney(20);car.setAllmoney(car.getAllmoney() + car.getMoney()); //錢(qián)累加}car.setLishi(car.getLishi() + "車(chē)位:" + car.getId() + "收入金額為:" + car.getMoney() + "\n");System.out.println("停車(chē)費(fèi)為:" + car.getMoney());car.setState("當(dāng)前車(chē)位為空");return true;}}return false;}public void show() {// TODO Auto-generated method stubfor (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("車(chē)輛正在停使中");return true;}}return false;}}
UserService
package com.gem.service;import com.gem.entity.User;public interface UserService {//用車(chē)牌登錄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 ArrayListuser = new ArrayList (); private static UserServiceimpl userserviceimpl = new UserServiceimpl(); //單例private UserServiceimpl() {}public static UserServiceimpl getUserserviceimpl() {return userserviceimpl;}public User login(User a) { //把車(chē)牌錄入user.add(a);return a;}}
-END- 我是武哥,最后給大家免費(fèi)分享我寫(xiě)的 10 萬(wàn)字 Spring Boot 學(xué)習(xí)筆記(帶完整目錄)以及對(duì)應(yīng)的源碼。這是我之前在 CSDN 開(kāi)的一門(mén)課,所以筆記非常詳細(xì)完整,我準(zhǔn)備將資料分享出來(lái)給大家免費(fèi)學(xué)習(xí),相信大家看完一定會(huì)有所收獲(下面有下載方式)。
可以看出,我當(dāng)時(shí)備課非常詳細(xì),目錄非常完整,讀者可以手把手跟著筆記,結(jié)合源代碼來(lái)學(xué)習(xí)。現(xiàn)在免費(fèi)分享出來(lái),有需要的讀者可以下載學(xué)習(xí),就在下面的公眾號(hào)Java禿頭哥里回復(fù):筆記,就行。
如有文章對(duì)你有幫助,
在看和轉(zhuǎn)發(fā)是對(duì)我最大的支持!
關(guān)注Java禿頭哥
只有禿頭才能更強(qiáng)
點(diǎn)贊是最大的支持?
評(píng)論
圖片
表情





