System.out.println(i+1+"号车位:
"+carStark1[i].number);
}
}
}
myQueue.java
package停车场2;
//队列基于单向链式存储结构
importjava.lang.*;
importjava.util.*;
//队列
publicclassmyQueue
{
carheader;
carcurrent;
intsize;
//构造方法:
建立一个空表
publicmyQueue()
{
header=newcar("");
current=header;
size=0;
}
//把当前位置之后插入一个新结点
publicvoidinsertcar(Stringvalue){
carnewcar=newcar(value);
newcar.setLink(current.link);
current.setLink(newcar);
current=newcar;
size+=1;
System.out.println("*********************************************");
System.out.println("您的车牌号:
"+newcar.number);
System.out.println("停车场已满,您现在在等待中,您的位置是"+size+"个位置");
System.out.println("*********************************************");
}
//删除当前位置结点后面的结点
publicvoiddelete(){
carreplace;
replace=current.link;
if(replace==null)return;
current.setLink(replace.link);
replace=null;
size-=1;
}
//删除第i个结点
publicvoiddelete(inti){
if(i>size||i<=0)return;
locate(i-1);
delete();
}
//由当前结点到下一个结点
publiccargetNext(){
if(current==null)returnnull;
current=current.link;
returncurrent;
}
//得到队列的左后一辆车
publiccargetLast(){
while(current.link!
=null)
{
getNext();
}
returncurrent;
}
//由车牌号找到车
publiccarfind(Stringvalue){
current=header;
while(current.number!
=value)
{
if(current.link==null)
{
System.out.println("找不到需要的数!
!
!
!
");
current=header;
break;
}
current=current.link;
}
returncurrent;
}
//取得第m位置的元素
publiccarlocate(intm){
if(m>size)returnnull;
current=header;
inti;
for(i=m;i>0;i--)
{
getNext();
}
returncurrent;
}
//取得第一个元素
publiccargetHeader()
{
returnheader.link;
}
//队列里有多少车
publicintgetLength()
{
returnsize;
}
//察看车位
publicvoidprint()
{
//current=header.getLink();
while(current!
=null){
inti=1;
System.out.print(i+"号车位:
"+current.getNum());
System.out.println("");
i++;
getNext();
}}}
DemoParking.java
package停车场2;
importjava.io.*;
importjava.lang.*;
publicclassDemoParking{
publicmylistparking;//停车场
publicmyQueuewaiting;//队列
publicStringx1;//选择
publicStringx2;//开入的车牌号
publicStringx3;//开出的车牌号
//构造方法
publicDemoParking(){
parking=newmylist();//初始化栈
waiting=newmyQueue();//初始化队列
x1="";
x2="";
x3="";
}
//成员方法:
菜单
publicvoidmenu(){
System.out.println("");
System.out.println("欢迎进入停车场系统");
System.out.println("*********************************************");
System.out.println("*本停车场每30s收费1元停车场内有5个车位*");
System.out.println("*倒车一次返回1元(最少不收费!
)*");
System.out.println("*********************************************");
System.out.println("1:
开进");
System.out.println("2:
开出");
System.out.println("3:
车位情况");
System.out.println("4:
退出");//+++++++++++++++++++++++++++
System.out.print("请选择:
");
try{
BufferedReaderkeyin=newBufferedReader(
newInputStreamReader(System.in));
x1=keyin.readLine();
}
catch(IOExceptione)
{
System.out.print("出错了");
}
choice();
}
//成员方法:
选择
publicvoidchoice(){
if(x1.equals("1")){//输入1开入
System.out.print("请输入车牌号:
");
try{
BufferedReaderkeyin1=newBufferedReader(
newInputStreamReader(System.in));
x2=newString(keyin1.readLine());
}
catch(IOExceptione){
System.out.print("出错了");
}
in(x2);
menu();
}
if(x1.equals("2")){//输入2开出
System.out.print("请输入车牌号:
");
try{
BufferedReaderkeyin1=newBufferedReader(
newInputStreamReader(System.in));
x3=newString(keyin1.readLine());
}
catch(IOExceptione){
System.out.print("出错了");
}
out(x3);
}
if(x1.equals("3")){//输入3查询
Allprint();
menu();
}
if(x1.equals("4")){//输入4退出
}
else{//输入不符合规定返回菜单
menu();
}
}
publicvoidin(Stringvalue){//成员方法:
开入车
if(parking.getLength()<5){//入栈
parking.push(value);
System.out.println("*********************************************");
System.out.println("您的车牌号:
"+parking.getTop1().number);
System.out.println("进入停车场时间:
"+parking.getTop1().inhour+":
"+parking.getTop1().inminute+":
"+parking.getTop1().insecond);
System.out.println("*********************************************");
}else{
waiting.insertcar(value);//入队列
}
}
//成员方法:
开出车
publicvoidout(Stringvalue){
inti=parking.getLength();
intb=parking.getLength();
//只有栈里有车查找到开出
if(waiting.getLength()==0){
while(parking.getTop1().number.equals(value)==false){
parking.pop();//开始倒车
i--;
}
parking.pop2();//开出这辆车进入栈2
System.out.println("*********************************************");
System.out.println("您的车牌号:
"+parking.getTop2().number);
System.out.println("进入时间:
"+parking.getTop2().inhour+":
"+parking.getTop2().inminute+":
"+parking.getTop2().insecond);
System.out.println("离开时间:
"+parking.getTop2().outhour+":
"+parking.getTop2().outminute+":
"+parking.getTop2().outsecond);
System.out.println("倒车次数:
"+parking.getTop2().count);
ints=(((parking.getTop2().outhour-parking.getTop2().inhour)*60+parking.getTop2().outminute-parking.getTop2().inminute)*60+parking.getTop2().outsecond-parking.getTop2().insecond)/30-1*parking.getTop2().count;
System.out.println("您的费用:
"+s+"元");
System.out.println("欢迎下次再来!
@_@再见");
System.out.println("*********************************************");
parking.pop3();//再从栈2中弹出
if(i==b){
}else{
for(intn=i;n
parking.push2();
}
}
}else{
//看在队列还是在栈里
while(parking.getNum(i).equals(value)==false){//栈
i--;
if(i==0){//检验队列
inta=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){//要开出的车在栈里
intc=i;
for(;i
parking.pop();
}
parking.pop2();
System.out.println("*********************************************");
System.out.println("您的车牌号:
"+parking.getTop2().number);
System.out.println("进入时间:
"+parking.getTop2().inhour+":
"+parking.getTop2().inminute+":
"+parking.getTop2().insecond);
System.out.println("离开时间:
"+parking.getTop2().outhour+":
"+parking.getTop2().outminute+":
"+parking.getTop2().outsecond);
System.out.println("倒车次数:
"+parking.getTop2().count);
ints=((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;//费用最少为0
}
System.out.println("您的费用:
"+s);//利用时间计算费用
System.out.println("欢迎下次再来!
@_@再见");
System.out.println("*************************************