java實(shí)現(xiàn)停車場(chǎng)系統(tǒng)
本文實(shí)例為大家分享了java實(shí)現(xiàn)停車場(chǎng)系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
現(xiàn)開(kāi)發(fā)一個(gè)停車系統(tǒng),用戶根據(jù)車位停車
1)車主查看現(xiàn)在有無(wú)車位(最多100個(gè)車位),給車主隨機(jī)分配一個(gè)車位,如果該位置上有車,不能停2)按停車時(shí)間收費(fèi),3小時(shí)以內(nèi)不收費(fèi),3小時(shí)以外,每小時(shí)2元,最大20元3)車主可以查看自己停車的車位和收費(fèi),以及停車的時(shí)長(zhǎng)4)查看歷史停車記錄
管理員:
查看現(xiàn)有的剩余車位查看已停車的車位查看停在車位上的車以及歷史繳費(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)入停車系統(tǒng)****'); System.out.println('***1.請(qǐng)輸入您的車牌***'); System.out.println('***2.管理員'); System.out.println('***3.退出****'); int choice = Integer.parseInt(scanner.nextLine().trim()); switch (choice) { case 1: System.out.println('請(qǐng)輸入您的車牌'); 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; } } } //管理員的登錄注冊(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)有停車位'); System.out.println('2.查看停車位上的車以及繳費(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();//顯示目前所有的空的車位 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('歡迎車牌為:' + a.getCarid() + '車主' + '請(qǐng)選擇您要的服務(wù)'); System.out.println('1.停車'); System.out.println('2.離開(kāi)并繳費(fèi)'); System.out.println('3.查看停車車位'); System.out.println('4.停車時(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è)車位 if (carparkingservice.parkcar(random, a.getCarid())) { System.out.println('停車成功,停車位置為:' + random); break; } else { System.out.println('當(dāng)前車位有車'); } } break; case 2: if (carparkingservice.leavecar(a.getCarid())) { System.out.println('請(qǐng)繳費(fèi)'); } else { System.out.println('該車未停'); } break; case 3: carparkingservice.showlist();//顯示目前所有的空的車位 break; case 4: carparkingservice.showcartime(a.getCarid());//顯示停車時(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;@AllArgsConstructor@NoArgsConstructor@Getter@Setterpublic 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@Getterpublic class CarParking { //車位 public static String getLishi() { return lishi; } public static void setLishi(String lishi) { CarParking.lishi = lishi; } private int id; //停車的編號(hào) private double money;//錢的計(jì)算 private String state; //當(dāng)前停車狀態(tài) private Date stime;//停車時(shí)間 private Date etime;//停車結(jié)束 private static double allmoney; private static String lishi = ''; public void setEtime() {//停車結(jié)束時(shí)間 etime = new Date(); SimpleDateFormat dateFormat = new SimpleDateFormat('yyyy-MM-dd'); String time = dateFormat.format(this.etime); } public void setStime() {//停車開(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 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@Getterpublic class User { private String carid; //車牌登錄 @Override public String toString() { return '車牌為' + 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;/* * 管理員類實(shí)現(xiàn)類 * */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); //離開(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 ArrayList<CarParking> carpaking = new ArrayList<CarParking>(); { for (int i = 1; i <= 10; i++) { carpaking.add(new CarParking(i, '當(dāng)前車位為空')); // 為100個(gè)車位賦予編號(hào) 和狀態(tài) } } private static CarParkingServiceimpl carparkingservice = new CarParkingServiceimpl(); public static CarParkingServiceimpl getCarparkingservice() { return carparkingservice; } public CarParkingServiceimpl() { } //停車過(guò)來(lái)的信息,車牌,還有車位,還有更改狀態(tài),利用車位編號(hào)來(lái)改變內(nèi)容 @Override public boolean parkcar(int id, String carid) { // TODO Auto-generated method stub for (CarParking car : carpaking) { if (id == car.getId() && car.getState().equals('當(dāng)前車位為空')) { car.setState(carid); car.setStime(); return true; //停車成功 } } return false;//當(dāng)前車位有車 } @Override //顯示所有停車系統(tǒng)的信息 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();//得到當(dāng)前的查詢時(shí)間 Date time2 = car.getStime();//得到開(kāi)始時(shí)間 System.out.println('車位為:' + car.getId() + '車牌為' + car.getState()); System.out.println('停車時(shí)間為:' + car.getStime()); System.out.println('當(dāng)前時(shí)間為:' + car.getEtime()); System.out.println('已經(jīng)停車時(shí)間為:' + (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();//得到當(dāng)前的查詢時(shí)間 Date time2 = car.getStime();//得到開(kāi)始時(shí)間 long t = (time1.getTime() - time2.getTime()) / (1000 * 60 * 60); System.out.println('車位為:' + car.getId() + '車牌為' + car.getState()); System.out.println('停車時(shí)間為:' + car.getStime()); System.out.println('當(dāng)前時(shí)間為:' + car.getEtime()); System.out.println('已經(jīng)停車時(shí)間為:' + 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('停車費(fèi)為:' + car.getMoney()); car.setState('當(dāng)前車位為空'); 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; }}
更多學(xué)習(xí)資料請(qǐng)關(guān)注專題《管理系統(tǒng)開(kāi)發(fā)》。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. python爬蟲(chóng)實(shí)戰(zhàn)之制作屬于自己的一個(gè)IP代理模塊2. Python編寫(xiě)nmap掃描工具3. Ajax返回值類型與用法實(shí)例分析4. 解決ajax請(qǐng)求后臺(tái),有時(shí)收不到返回值的問(wèn)題5. HTML 絕對(duì)路徑與相對(duì)路徑概念詳細(xì)6. 如何在jsp界面中插入圖片7. 使用FormData進(jìn)行Ajax請(qǐng)求上傳文件的實(shí)例代碼8. .NET6打包部署到Windows Service的全過(guò)程9. .Net Core和RabbitMQ限制循環(huán)消費(fèi)的方法10. 基于javaweb+jsp實(shí)現(xiàn)企業(yè)財(cái)務(wù)記賬管理系統(tǒng)
