java實(shí)現(xiàn)停車場管理系統(tǒng)
本文實(shí)例為大家分享了java停車場管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
//車的類
public class car{
public String number;//車牌號
public int inhour; //進(jìn)入小時(shí)
public int inminute; //進(jìn)入分
public int insecond; //進(jìn)入秒
public int outhour; //開出小時(shí)
public int outminute; //開出分
public int outsecond; //開出秒
public int count; //倒車次數(shù)
public car link; //隊(duì)列的指針
//構(gòu)造方法1
public car(String num){
this.number=num;
this.inhour=0;
this.inminute=0;
this.insecond=0;
this.outhour=0;
this.outminute=0;
this.outsecond=0;
int count=0;
car link=null;
}
//構(gòu)造方法2
public car(){
this.number="";
this.inhour=0;
this.inminute=0;
this.insecond=0;
this.outhour=0;
this.outminute=0;
this.outsecond=0;
int count=0;
car link=null;
}
//成員方法:得到指針
public car getLink(){
return link;
}
//成員方 法:修改指針
public void setLink(car n){
link=n;
}
//成員方法;得到車牌號
public String getNum(){
return number;
}
}
++++++++++++++++++++++
//停車場基于順序存儲結(jié)構(gòu) 棧//停車場基于順序存儲結(jié)構(gòu) 棧
import java.util.Date;
public class mylist{
public int Length1;
public int Length2;
public car[] carStark1; //停車場
public car[] carStark2; //用于倒車的臨時(shí)棧
//構(gòu)造方法
public mylist(){
carStark1 =new car[5]; //5個車位的停車場 即棧1
carStark2 =new car[5]; //倒車的臨時(shí)棧 車位也為5 即棧2
Length1=0;
Length2=0;
}
//入棧 同時(shí)將系統(tǒng)時(shí)間壓入
public void push(String value){
car newcar=new car(value);
int n=Length1;
carStark1[n]=newcar;
Date now = new Date(); //時(shí)間類
int hour = now.getHours();
int minute = now.getMinutes();
int second = now.getSeconds();
carStark1[n].inhour=hour;
carStark1[n].inminute=minute;
carStark1[n].insecond=second;
Length1++;
}
//由棧2回到棧1
public void push2(){
int n=Length1;
carStark1[n]=getTop2();
Length1++;
Length2--;
}
//出棧1 入棧2
public void pop(){
car temp =getTop1();
int n=Length2;
carStark2[n]=temp;
carStark2[n].count++;
Length1--;
Length2++;
}
//出棧2
public void pop3(){
Length2--;
}
//有時(shí)間的出棧1 并且暫時(shí)入棧2
public void pop2(){
int n=Length1-1;
Date now = new Date();
int hour = now.getHours();
int minute = now.getMinutes();
int second = now.getSeconds();
carStark1[n].outhour=hour;
carStark1[n].outminute=minute;
carStark1[n].outsecond=second;
car temp = getTop1();
carStark2[Length2]=temp;
Length1--;
Length2++;
}
//得到棧1頂元素
public car getTop1(){
return carStark1[Length1-1];
}
//得到棧2頂元素
public car getTop2(){
return carStark2[Length2-1];
}
//停車場里有幾輛車
public int getLength(){
return Length1;
}
//獲得停車場中第i號車位的車牌號
public String getNum(int i){
return carStark1[i-1].number;
}
//察看車位情況
public void print(){
int i=0;
for(i=0;i<Length1;i++){
System.out.println(i+1+"號車位:"+carStark1[i].number);
}
}
++++++++++++++++++++++++++++++
//隊(duì)列基于單向鏈?zhǔn)酱鎯Y(jié)構(gòu)
import java.lang.*;
import java.util.*;
//隊(duì)列
public class myQueue
{
car header;
car current;
int size;
//構(gòu)造方法:建立一個空表
public myQueue()
{
header=new car("");
current=header;
size = 0;
}
//把當(dāng)前位置之后插入一個新結(jié)點(diǎn)
public void insertcar(String value){
car newcar=new car(value);
newcar.setLink(current.link);
current.setLink(newcar);
current=newcar;
size += 1;
System.out.println("*********************************************");
System.out.println("您的車牌號:"+newcar.number);
System.out.println("停車場已滿,您現(xiàn)在在等待中,您的位置是"+size+"個位置");
System.out.println("*********************************************");
}
//刪除當(dāng)前位置結(jié)點(diǎn)后面的結(jié)點(diǎn)
public void delete(){
car replace;
replace = current.link;
if (replace == null) return;
current.setLink(replace.link);
replace=null;
size -= 1;
}
//刪除第i個結(jié)點(diǎn)
public void delete(int i) {
if(i>size || i<=0) return;
locate(i-1);
delete();
}
//由當(dāng)前結(jié)點(diǎn)到下一個結(jié)點(diǎn)
public car getNext(){
if(current == null) return null;
current=current.link;
return current;
}
//得到隊(duì)列的左后一輛車
public car getLast() {
while (current.link!=null)
{
getNext();
}
return current;
}
//由車牌號找到車
public car find(String value){
current=header;
while(current.number!=value)
{
if (current.link==null)
{
System.out.println("找不到需要的數(shù)!?。?!");
current=header;
break;
}
current=current.link;
}
return current;
}
//取得第m 位置的元素
public car locate(int m ){
if (m > size) return null;
current=header;
int i;
for (i=m;i>0;i--)
{
getNext();
}
return current;
}
//取得第一個元素
public car getHeader()
{
return header.link;
}
//隊(duì)列里有多少車
public int getLength()
{
return size;
}
//察看車位
public void print()
{
current=header.getLink();
while(current!=null){
int i=1;
System.out.print(i+"號車位:"+current.getNum());
System.out.println(" ");
i++;
getNext();
}
}
}
+++++++++++++++++++++++++
//執(zhí)行程序
import java.io.*;
import java.lang.*;
public class DemoParking{
public mylist parking; //停車場
public myQueue waiting; //隊(duì)列
public String x1; //選擇
public String x2; //開入的車牌號
public String x3; //開出的車牌號
//構(gòu)造方法
public DemoParking(){
parking=new mylist(); //初始化棧
waiting=new myQueue(); //初始化隊(duì)列
x1="";
x2="";
x3="";
}
// 成員方法:菜單
public void menu(){
System.out.println(" ");
System.out.println(" ");
System.out.println(" 歡迎進(jìn)入停車場系統(tǒng) ");
System.out.println("*********************************************");
System.out.println("* 本停車場每秒收費(fèi)1元 停車場內(nèi)有5個車位 *");
System.out.println("* 倒車一次返回2元(最少不收費(fèi)!) *");
System.out.println("*********************************************");
System.out.println(" 1:開進(jìn)");
System.out.println(" 2:開出");
System.out.println(" 3:車位情況");
System.out.println(" 4:退出"); //+++++++++++++++++++++++++++
System.out.print("請選擇:");
try{
BufferedReader keyin = new BufferedReader(
new InputStreamReader(System.in));
x1 = keyin.readLine();
}
catch (IOException e)
{
System.out.print("出錯了");
}
choice();
}
//成員方法:選擇
public void choice(){
if(x1.equals("1")){ //輸入1 開入
System.out.print("請輸入車牌號:");
try{
BufferedReader keyin1 = new BufferedReader(
new InputStreamReader(System.in));
x2 =new String( keyin1.readLine());
}
catch (IOException e){
System.out.print("出錯了");
}
in(x2);
menu();
}
if(x1.equals("2")){ //輸入2 開出
System.out.print("請輸入車牌號:");
try{
BufferedReader keyin1 = new BufferedReader(
new InputStreamReader(System.in));
x3 =new String( keyin1.readLine());
}
catch (IOException e){
System.out.print("出錯了");
}
out(x3);
}
if(x1.equals("3")){ //輸入3 查詢
Allprint();
menu();
}
if(x1.equals("4")){ //輸入4 退出
}
else{ //輸入不符合規(guī)定 返回菜單
menu();
}
}
//成員方法:開入車
public void in(String value){
if (parking.getLength()<5){ //入棧
parking.push(value);
System.out.println("*********************************************");
System.out.println("您的車牌號:"+parking.getTop1().number);
System.out.println("進(jìn)入停車場時(shí)間:"+parking.getTop1().inhour+":"+parking.getTop1().inminute+":"+parking.getTop1().insecond);
System.out.println("*********************************************");
}else{
waiting.insertcar(value); //入隊(duì)列
}
}
//成員方法:開出車
public void out(String value){
int i=parking.getLength();
int b=parking.getLength();
//只有棧里有車 查找到開出
if(waiting.getLength()==0){
while(parking.getTop1().number.equals(value)==false){
parking.pop(); //開始倒車
i--;
}
parking.pop2(); //開出這輛車 進(jìn)入棧2
System.out.println("*********************************************");
System.out.println(" 您的車牌號:"+parking.getTop2().number);
System.out.println(" 進(jìn)入時(shí)間:"+parking.getTop2().inhour+":"+parking.getTop2().inminute+":"+parking.getTop2().insecond);
System.out.println(" 離開時(shí)間:"+parking.getTop2().outhour+":"+parking.getTop2().outminute+":"+parking.getTop2().outsecond);
System.out.println(" 倒車次數(shù):"+parking.getTop2().count);
int s=((parking.getTop2().outhour-parking.getTop2().inhour)*60+parking.getTop2().outminute-parking.getTop2().inminute)*60+parking.getTop2().outsecond-parking.getTop2().insecond-2*parking.getTop2().count;
System.out.println(" 您的費(fèi)用:"+s+"元");
System.out.println(" 歡迎下次再來!@_@再見");
System.out.println("*********************************************");
parking.pop3(); //再從棧2中彈出
if(i==b){
}else{
for(int n=i;n<b;n++){ //將車倒回棧1
parking.push2();
}
}
}else{
//看在隊(duì)列還是在棧里
while(parking.getNum(i).equals(value)==false){ //棧
i--;
if(i==0){ //檢驗(yàn)隊(duì)列
int a=waiting.getLength();
while(waiting.locate(a).number.equals(value)==false){
a--;
}
System.out.println("*********************************************");
System.out.println(" 您的車牌號:"+waiting.locate(a).number);
System.out.println(" 歡迎下次再來!@_@再見");
System.out.println("*********************************************");
waiting.delete(a);
break;
}
}
if(i>0){ //要開出的車在棧里
int c=i;
for(;i<b;i++){
parking.pop();
}
parking.pop2();
System.out.println("*********************************************");
System.out.println(" 您的車牌號:"+parking.getTop2().number);
System.out.println(" 進(jìn)入時(shí)間:"+parking.getTop2().inhour+":"+parking.getTop2().inminute+":"+parking.getTop2().insecond);
System.out.println(" 離開時(shí)間:"+parking.getTop2().outhour+":"+parking.getTop2().outminute+":"+parking.getTop2().outsecond);
System.out.println(" 倒車次數(shù):"+parking.getTop2().count);
int s=((parking.getTop2().outhour-parking.getTop2().inhour)*60+parking.getTop2().outminute-parking.getTop2().inminute)*60+parking.getTop2().outsecond-parking.getTop2().insecond-2*parking.getTop2().count;
if(s<0){
s=0; //費(fèi)用最少為0
}
System.out.println(" 您的費(fèi)用:"+s); //利用時(shí)間計(jì)算費(fèi)用
System.out.println(" 歡迎下次再來!@_@再見");
System.out.println("*********************************************");
parking.pop3();
for(;c<b;c++){
parking.push2();
}
parking.push(waiting.getHeader().number); //隊(duì)列的第一個元素入棧
waiting.delete(1); //刪除隊(duì)列的第一個元素
}
}
}
//查詢車位情況 包括棧中和隊(duì)列中的
public void Allprint(){
System.out.println("*********************************************");
System.out.println("停車場中:");
parking.print();
if(waiting.getLength()>0){
System.out.println("等待中:");
waiting.print();
}
System.out.println("*********************************************");
}
public static void main(String[] args)throws IOException{ //應(yīng)用?。?
DemoParking demo=new DemoParking();
demo.menu();
}
}
更多學(xué)習(xí)資料請關(guān)注專題《管理系統(tǒng)開發(fā)》。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Java實(shí)現(xiàn)商品管理系統(tǒng)代碼實(shí)例講解
- Java+MySQL實(shí)現(xiàn)圖書管理系統(tǒng)(完整代碼)
- Java實(shí)現(xiàn)寵物商店管理系統(tǒng)
- java實(shí)現(xiàn)商品信息管理系統(tǒng)
- java實(shí)現(xiàn)圖書館管理系統(tǒng)
- java實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)
- java實(shí)現(xiàn)簡單的學(xué)生信息管理系統(tǒng)代碼實(shí)例
- Java+Swing實(shí)現(xiàn)醫(yī)院管理系統(tǒng)的完整代碼
相關(guān)文章
SpringBoot集成Swagger3的實(shí)現(xiàn)
本文主要介紹了SpringBoot集成Swagger3的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12
SpringBoot多模塊打包部署Docker的項(xiàng)目實(shí)戰(zhàn)
本文通過介紹最常見的Maven管理的Spring Boot項(xiàng)目多模塊打包部署Docker來介紹一下項(xiàng)目部署過程中操作流程和幾個需要注意的點(diǎn),具有一定的參加價(jià)值,感興趣的可以了解一下2023-08-08
利用spring?boot+WebSocket實(shí)現(xiàn)后臺主動消息推送功能
目前對于服務(wù)端向客戶端推送數(shù)據(jù),常用技術(shù)方案有輪詢、websocket等,下面這篇文章主要給大家介紹了關(guān)于利用spring?boot+WebSocket實(shí)現(xiàn)后臺主動消息推送功能的相關(guān)資料,需要的朋友可以參考下2022-04-04
spring的構(gòu)造函數(shù)注入屬性@ConstructorBinding用法
這篇文章主要介紹了關(guān)于spring的構(gòu)造函數(shù)注入屬性@ConstructorBinding用法,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12
Java實(shí)現(xiàn)訂單超時(shí)未支付自動取消的8種方法總結(jié)
這篇文章主要為大家介紹了Java實(shí)現(xiàn)訂單超時(shí)未支付自動取消功能的8種不同方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-08-08
Springboot實(shí)現(xiàn)全局自定義異常的方法詳解
這篇文章主要介紹了Springboot實(shí)現(xiàn)全局自定義異常的方法詳解,SpringBoot的項(xiàng)目已經(jīng)對有一定的異常處理了,但是對于我們開發(fā)者而言可能就不太合適了,因此我們需要對這些異常進(jìn)行統(tǒng)一的捕獲并處理,需要的朋友可以參考下2023-11-11
Java編程實(shí)現(xiàn)漢字按字母順序排序的方法示例
這篇文章主要介紹了Java編程實(shí)現(xiàn)漢字按字母順序排序的方法,結(jié)合具體實(shí)例形式分析了java編碼轉(zhuǎn)換及字母排序相關(guān)操作技巧,需要的朋友可以參考下2017-07-07
SpringBoot獲取Request和Response方法代碼解析
這篇文章主要介紹了SpringBoot獲取Request和Response方法代碼解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11

