您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關(guān)java實(shí)現(xiàn)停車場(chǎng)管理系統(tǒng)的方法的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。
具體內(nèi)容如下
//車的類 public class car{ public String number;//車牌號(hào) 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; } //成員方法;得到車牌號(hào) public String getNum(){ return number; } } ++++++++++++++++++++++ //停車場(chǎng)基于順序存儲(chǔ)結(jié)構(gòu) 棧//停車場(chǎng)基于順序存儲(chǔ)結(jié)構(gòu) 棧 import java.util.Date; public class mylist{ public int Length2; public int Length3; public car[] carStark1; //停車場(chǎng) public car[] carStark2; //用于倒車的臨時(shí)棧 //構(gòu)造方法 public mylist(){ carStark1 =new car[5]; //5個(gè)車位的停車場(chǎng) 即棧1 carStark2 =new car[5]; //倒車的臨時(shí)棧 車位也為5 即棧2 Length2=0; Length3=0; } //入棧 同時(shí)將系統(tǒng)時(shí)間壓入 public void push(String value){ car newcar=new car(value); int n=Length2; 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; Length2++; } //由棧2回到棧1 public void push3(){ int n=Length2; carStark1[n]=getTop2(); Length2++; Length3--; } //出棧1 入棧2 public void pop(){ car temp =getTop1(); int n=Length3; carStark2[n]=temp; carStark2[n].count++; Length2--; Length3++; } //出棧2 public void pop3(){ Length3--; } //有時(shí)間的出棧1 并且暫時(shí)入棧2 public void pop2(){ int n=Length2-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[Length3]=temp; Length2--; Length3++; } //得到棧1頂元素 public car getTop1(){ return carStark1[Length2-1]; } //得到棧2頂元素 public car getTop2(){ return carStark2[Length3-1]; } //停車場(chǎng)里有幾輛車 public int getLength(){ return Length2; } //獲得停車場(chǎng)中第i號(hào)車位的車牌號(hào) public String getNum(int i){ return carStark1[i-1].number; } //察看車位情況 public void print(){ int i=0; for(i=0;i<Length2;i++){ System.out.println(i+1+"號(hào)車位:"+carStark1[i].number); } } ++++++++++++++++++++++++++++++ //隊(duì)列基于單向鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu) import java.lang.*; import java.util.*; //隊(duì)列 public class myQueue { car header; car current; int size; //構(gòu)造方法:建立一個(gè)空表 public myQueue() { header=new car(""); current=header; size = 0; } //把當(dāng)前位置之后插入一個(gè)新結(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("您的車牌號(hào):"+newcar.number); System.out.println("停車場(chǎng)已滿,您現(xiàn)在在等待中,您的位置是"+size+"個(gè)位置"); 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個(gè)結(jié)點(diǎn) public void delete(int i) { if(i>size || i<=0) return; locate(i-1); delete(); } //由當(dāng)前結(jié)點(diǎn)到下一個(gè)結(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; } //由車牌號(hào)找到車 public car find(String value){ current=header; while(current.number!=value) { if (current.link==null) { System.out.println("找不到需要的數(shù)?。。。?quot;); 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; } //取得第一個(gè)元素 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+"號(hào)車位:"+current.getNum()); System.out.println(" "); i++; getNext(); } } } +++++++++++++++++++++++++ //執(zhí)行程序 import java.io.*; import java.lang.*; public class DemoParking{ public mylist parking; //停車場(chǎng) public myQueue waiting; //隊(duì)列 public String x1; //選擇 public String x2; //開入的車牌號(hào) public String x3; //開出的車牌號(hào) //構(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)入停車場(chǎng)系統(tǒng) "); System.out.println("*********************************************"); System.out.println("* 本停車場(chǎng)每秒收費(fèi)1元 停車場(chǎng)內(nèi)有5個(gè)車位 *"); 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("請(qǐng)選擇:"); try{ BufferedReader keyin = new BufferedReader( new InputStreamReader(System.in)); x1 = keyin.readLine(); } catch (IOException e) { System.out.print("出錯(cuò)了"); } choice(); } //成員方法:選擇 public void choice(){ if(x1.equals("1")){ //輸入1 開入 System.out.print("請(qǐng)輸入車牌號(hào):"); try{ BufferedReader keyin1 = new BufferedReader( new InputStreamReader(System.in)); x2 =new String( keyin1.readLine()); } catch (IOException e){ System.out.print("出錯(cuò)了"); } in(x2); menu(); } if(x1.equals("2")){ //輸入2 開出 System.out.print("請(qǐng)輸入車牌號(hào):"); try{ BufferedReader keyin1 = new BufferedReader( new InputStreamReader(System.in)); x3 =new String( keyin1.readLine()); } catch (IOException e){ System.out.print("出錯(cuò)了"); } 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("您的車牌號(hào):"+parking.getTop1().number); System.out.println("進(jìn)入停車場(chǎng)時(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(" 您的車牌號(hào):"+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(" 歡迎下次再來(lái)!@_@再見"); System.out.println("*********************************************"); parking.pop3(); //再?gòu)臈?中彈出 if(i==b){ }else{ for(int n=i;n<b;n++){ //將車倒回棧1 parking.push3(); } } }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(" 您的車牌號(hào):"+waiting.locate(a).number); System.out.println(" 歡迎下次再來(lái)!@_@再見"); 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(" 您的車牌號(hào):"+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(" 歡迎下次再來(lái)!@_@再見"); System.out.println("*********************************************"); parking.pop3(); for(;c<b;c++){ parking.push3(); } parking.push(waiting.getHeader().number); //隊(duì)列的第一個(gè)元素入棧 waiting.delete(1); //刪除隊(duì)列的第一個(gè)元素 } } } //查詢車位情況 包括棧中和隊(duì)列中的 public void Allprint(){ System.out.println("*********************************************"); System.out.println("停車場(chǎng)中:"); 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(); } }
感謝各位的閱讀!關(guān)于“java實(shí)現(xiàn)停車場(chǎng)管理系統(tǒng)的方法”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。