package parkingSystemyyyy;
import java.util.*;
import static java.util.Calendar.*;
public class parkingSystemyyyy {
static int ll=0;
static int l=0;
static int nns=0;
static int nnns=0;
static int bs=0;
static int bss=0;
static int bssss=0;
static int bsss=0;
static long kpo=0;
static long kpoi=0;
static int day1=0;
/**
*
* @author zhaoyijie
*
*/
public int upinteger(int a,int b){
return (((double) a/(double) b)>(a/b)?a/b+1:a/b);
}
public static void main(String[] args) {
parkingSystemyyyy parkingsystem=new parkingSystemyyyy();
StackLinked<Long> timearrive= new StackLinked<Long>();
StackLinked<Long> timearriveHold= new StackLinked<Long>();
Scanner scanner= new Scanner(System.in);
System.out.println("欢迎来到计通学院停车场!");
System.out.println("请输入停车场的容量");
int x=scanner.nextInt();
System.out.println("请输入停车场便道的容量");
int y=scanner.nextInt();
QueueArray<Integer> shortcutTail=new QueueArray<Integer>(y);
StackLinked<Integer>CarTail=new StackLinked<Integer>();
StackLinked<Integer>CarTailHold=new StackLinked<Integer>();
System.out.println("目前停车场停了"+ll+"辆车");
System.out.println("目前便道暂时停了"+l+"辆车");
System.out.println("*************************************");
System.out.print("*请选择:");
System.out.println("输入-1:手动输入模式 *");
System.out.println("*输入一个任意数(必须为整数或者0):自动获取系统时间模式*");
System.out.println("*************************************");
int shijian=scanner.nextInt();
if(shijian==-1) {
System.out.println("**********************");
System.out.println("* 请输入操作 *");
System.out.println("* 1;停车 *");
System.out.println("* 2;出车 *");
System.out.println("* 3:查询停车场和便道的情况 *");
System.out.println("* 4;退出系统 *");
System.out.println("* 5;便道等待 *");
System.out.println("**********************");
int qqqq=0;
while(qqqq!=-1) {
int q=scanner.nextInt();
switch(q) {
case 1:
if(ll==x){
System.out.println("停车场已满!请在便道等待。");
System.out.println("**********************");
System.out.println("* 请输入操作 *");
System.out.println("* 1;停车 *");
System.out.println("* 2;出车 *");
System.out.println("* 3:查询停车场和便道的情况 *");
System.out.println("* 4;退出系统 *");
System.out.println("* 5;便道等待 *");
System.out.println("**********************");
break;
}
System.out.println("请输入停车的尾号(必须为整数或者0)");
int abc=scanner.nextInt();
CarTail.push(abc);
int z=0;
while(z!=-1) {
int day=0;
System.out.println("请输入车的到达时间(年)(必须为正整数或者0),如果你输入一个负数将强制转换为正整数");
int year=scanner.nextInt();
int nnp=Math.abs(year);
year=nnp;
System.out.println("请输入车的到达时间(月)(必须为正整数或者0),如果你输入一个负数将强制转换为正整数");
int month=scanner.nextInt();
int nnnp=Math.abs(month);
month=nnnp;
System.out.println("请输入车的到达时间(日)(必须为正整数或者0),如果你输入一个负数将强制转换为正整数");
int a=scanner.nextInt();
int as=Math.abs(a);
a=as;
System.out.println("请输入车的到达时间(小时)(必须为正整数或者0),如果你输入一个负数将强制转换为正整数");
int aa=scanner.nextInt();
int ass=Math.abs(aa);
aa=ass;
System.out.println("请输入车的到达时间(分)(必须为正整数或者0),如果你输入一个负数将强制转换为正整数");
int aaa=scanner.nextInt();
int asss=Math.abs(aaa);
aaa=asss;
System.out.println("请输入车的到达时间(秒)(必须为正整数或者0),如果你输入一个负数将强制转换为正整数");
int aaaa=scanner.nextInt();
int assss=Math.abs(aaaa);
aaaa=assss;
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
day=31;
if(month==4||month==6||month==9||month==11)
day=30;
if(month==2) {
if(((year%4==0)&&(year%100!=0))||(year%400==0))
day=29;
else
day=28;
}
if((aa>=24)||(aaa>60)||(aaaa>60)||(a>day)||(month>12)) {
System.out.println("您输入一个错误的时间,月份不能大于12,部分月份只有28天或者29天或者30天或31天,小时不能超过24,分钟不能超过60,秒数不能超过60");
z=0;
}
else {
Calendar 日历=Calendar.getInstance();
日历.set(year,month,a,aa,aaa,aaaa);
long time7=日历.getTimeInMillis();
long aaaaa=time7/1000;
timearrive.push(aaaaa);
z=-1;
}
}
ll++;
System.out.println("**********************");
System.out.println("* 请输入操作 *");
System.out.println("* 1;停车 *");
System.out.println("* 2;出车 *");
System.out.println("* 3:查询停车场和便道的情况 *");
System.out.println("* 4;退出系统 *");
System.out.println("* 5;便道等待 *");
System.out.println("**********************");
break;
case 5:
if(l==y) {
System.out.println("目前便道已满!不能停车");
break;
}
System.out.println("请输入便道停车的尾号(必须为整数或者0)");
int abcd=scanner.nextInt();
shortcutTail.enQueue(abcd);
System.out.println("您已在便道等待");
Random random=new Random();
int one=(int)random.nextInt(3)+1;
System.out.println("如果您等待时间很无聊,我们将播放广告");
if(one==1) {
System.out.println("下面是广告时间");
System.out.println("广告:");
System.out.println("碧生源减肥茶是碧生源推出的减肥茶,是专门针对于女性所研发的产品。其成分为纯草本组方。不适宜人群为孕期及哺乳期妇女 及儿童/青少年。");
}
if(one==2) {
System.out.println("下面是广告时间");
System.out.println("广告:");
System.out.println("木醋足贴是针对脚病患者而研制的一种外用药贴。");
System.out.println("1.木醋足贴通过对足底及相关经络反射区的作用,木醋精华等成分渗透并参与循环系统,通过部分药物,促进人体的微循环,新陈代谢.");
System.out.println("2.木醋有着除臭杀菌功效,能够有效的抑制脚部的病菌的生长,能够减轻湿气,起到保健的作用。3.木醋足贴的其他药物成分,都有着显著的医用功效。");
}
if(one==3) {
System.out.println("下面是广告时间");
System.out.println("广告:");
System.out.println("六味地黄丸,中成药名。为补益剂,具有滋阴补肾之功效。用于肾阴亏损,头晕耳鸣,腰膝酸软,骨蒸潮热,盗汗遗精,消渴。" );
System.out.println("六味地黄丸,同名方约有4首,现选宋代太医钱乙所著《小儿药证直诀》卷下“地黄丸”方。该方删减医圣张仲景著《金匮要略》中的肾气丸药方当中的附子与桂枝:");
System.out.println("熟地黄八钱,山萸肉、干山药各四钱,泽泻、牡丹皮、白茯苓(去皮)各三钱。上为末,炼蜜为丸,如梧桐子大。每服三丸,空心温水化下。六味地黄丸是一种广泛使用的方剂。");
System.out.println("中医学认为,六味地黄丸具有滋补肾阴的功能,适用于肾虚、头晕耳鸣、腰膝酸软、消渴、遗精等症。");
}
l++;
System.out.println("**********************");
System.out.println("* 请输入操作 *");
System.out.println("* 1;停车 *");
System.out.println("* 2;出车 *");
System.out.println("* 3:查询停车场和便道的情况 *");
System.out.println("* 4;退出系统 *");
System.out.println("* 5;便道等待 *");
System.out.println("**********************");
break;
case 2:
if(ll==0) {
System.out.println("停车场无车,无法出车");
System.out.println("**********************");
System.out.println("* 请输入操作 *");
System.out.println("* 1;停车 *");
System.out.println("* 2;出车 *");
System.out.println("* 3:查询停车场和便道的情况 *");
System.out.println("* 4;退出系统 *");
System.out.println("* 5;便道等待 *");
System.out.println("**********************");
break;
}
int zz=0;
System.out.println("请输入出车的尾号(必须为正整数或者0)");
int j=scanner.nextInt();
while(CarTail.getTop()!=j){
int d=CarTail.getTop();
CarTailHold.push(d);
CarTail.pop();
long dd=timearrive.getTop();
timearriveHold.push(dd);
timearrive.pop();
}
CarTail.pop();
while(zz!=-1) {
System.out.println("请输入车的到达时间(年)(必须为正整数或者0),如果你输入一个负数将强制转换为正整数");
int year=scanner.nextInt();
nns=Math.abs(year);
year=nns;
System.out.println("请输入车的到达时间(月)(必须为正整数或者0),如果你输入一个负数将强制转换为正整数");
int month=scanner.nextInt();
nnns=Math.abs(month);
month=nnns;
System.out.println("请输入车的离开时间(日)(必须为正整数或者0),如果你输入一个负数将强制转换为正整数");
int b=scanner.nextInt();
bs=Math.abs(b);
b=bs;
System.out.println("请输入车的离开时间(小时)(必须为正整数或者0),如果你输入一个负数将强制转换为正整数");
int bb=scanner.nextInt();
bss=Math.abs(bb);
bb=bss;
System.out.println("请输入车的离开时间(分)(必须为正整数或者0),如果你输入一个负数将强制转换为正整数");
int bbb=scanner.nextInt();
bsss=Math.abs(bbb);
bbb=bsss;
System.out.println("请输入车的离开时间(秒)(必须为正整数或者0),如果你输入一个负数将强制转换为正整数");
int bbbb=scanner.nextInt();
bssss=Math.abs(bbbb);
bbbb=bssss;
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
day1=31;
if(month==4||month==6||month==9||month==11)
day1=30;
if(month==2) {
if(((year%4==0)&&(year%100!=0))||(year%400==0))
day1=29;
else {
day1=28;
}
}
kpo=timearrive.getTop();
Calendar 日历1=Calendar.getInstance();
日历1.set(year,month,b,bb,bbb,bbbb);
long time7=日历1.getTimeInMillis();
long bbbbb=time7/1000;
if((bbbbb<=kpo)||(bb>=24)||(bbb>60)||(bbbb>60)||(b>day1)||(month>12)) {
System.out.println("您输入一个错误的时间,请输入车的离开日期(必须为正整数或者0)不能比到达时间还要早,月份不能大于12,部分月份只有28天或者29天或者30天或31天,小时不能超过24,分钟不能超过60,秒数不能超过60");
zz=0;
}
else {
kpoi=bbbbb;
day1=0;
timearrive.pop();
zz=-1;
}
}
int yy=(int) (kpoi-kpo);
kpo=0;
int yyy=parkingsystem.upinteger(yy, 3600);
int yyyyy=yyy-(yy/86400)*24;
System.out.print("车的尾号"+j);
if(yy>900){
if((yyyyy*2)>14) {
yyyyy=7;
}
System.out.print("目前的停车时间为:"+yyy+"小时,不够一个小时算一个小时");
int k=(yy/86400)*14+yyyyy*2;
System.out.println(","+"您应付款"+k+"元");
}
else{
int hu=yy/60;int huj=yy-hu*60;
System.out.println("您目前停车时间为:"+hu+"分"+huj+"秒"+"你停车未超过15分钟,所以,"+"您应付款"+"0元");
}
ll--;
System.out.println("目前停车场的车辆为:"+ll);
if(CarTailHold.getTop()!=null){
int da=CarTailHold.getTop();
CarTail.push(da);
CarTailHold.pop();
long ddd=timearriveHold.getTop();
timearrive.push(ddd);
timearriveHold.pop();
}
if(ll<x){
if(!shortcutTail.isEmpty()){
int ppp=shortcutTail.getFront();
CarTail.push(ppp);
shortcutTail.deQueue();
System.out.println("在便道等待的车尾号为:"+ppp+"您目前到达时间为:"+nns+"年"+nnns+"月"+bs+"日"+bss+"小时"+bsss+"分"+bssss+"秒");
timearrive.push(kpoi);
kpoi=0;
nns=0;
nnns=0;
bs=0;
bss=0;
bsss=0;
bssss=0;
ll++;
l--;
System.out.println("目前停车场的车辆为:"+ll);
System.out.println("目前便道的车辆为:"+l);
}
else{
System.out.println("便道无车停");
l=0;
System.out.println("目前停车场的车辆为:"+ll);
System.out.println("目前便道的车辆为:"+l);
}
}
System.out.println("**********************");
System.out.println("* 请输入操作 *");
System.out.println("* 1;停车 *");
System.out.println("* 2;出车 *");
System.out.println("* 3:查询停车场和便道的情况 *");
System.out.println("* 4;退出系统 *");
System.out.println("* 5;便道等待 *");
System.out.println("**********************");
break;
case 3:
System.out.println("目前停车场停了"+ll+"辆车");
System.out.println("目前便道暂时停了"+l+"辆车");
System.out.println("**********************");
System.out.println("* 请输入操作 *");
System.out.println("* 1;停车 *");
System.out.println("* 2;出车 *");
System.out.println("* 3:查询停车场和便道的情况 *");
System.out.println("* 4;退出系统 *");
System.out.println("* 5;便道等待 *");
System.out.println("**********************");
break;
default:
System.out.println("请输入操作!");
break;
case 4:
qqqq=-1;
System.out.println("您已经退出系统,谢谢惠顾!");
}
}
}
if(shijian!=-1) {
System.out.println("**********************");
System.out.println("* 请输入操作 *");
System.out.println("* 1;停车 *");
System.out.println("* 2;出车 *");
System.out.println("* 3:查询停车场和便道的情况 *");
System.out.println("* 4;退出系统 *");
System.out.println("* 5;便道等待 *");
System.out.println("**********************");
int qqqq=0;
while(qqqq!=-1) {
int q=scanner.nextInt();
Object second;
switch(q) {
case 1:
if(ll==x){
System.out.println("停车场已满!请在便道等待。");
break;
}
System.out.println("请输入停车的尾号(必须为整数或者0)");
int abc=scanner.nextInt();
CarTail.push(abc);
Calendar calendar=Calendar.getInstance();
calendar.setTime(new Date());
int 年=calendar.get(YEAR),
月=calendar.get(MONTH)+1,
日=calendar.get(DAY_OF_MONTH);
int hour=calendar.get(HOUR_OF_DAY);
int minute=calendar.get(MINUTE);
int second1=calendar.get(SECOND);
System.out.println("您目前到达的时间为:");
System.out.print(""+年+"年"+月+"月"+日+"日 ");
System.out.println(" "+hour+"时"+minute+"分"+second1+"秒");
long time2=calendar.getTimeInMillis();
long time3=time2/1000;
timearrive.push(time3);
ll++;
System.out.println("**********************");
System.out.println("* 请输入操作 *");
System.out.println("* 1;停车 *");
System.out.println("* 2;出车 *");
System.out.println("* 3:查询停车场和便道的情况 *");
System.out.println("* 4;退出系统 *");
System.out.println("* 5;便道等待 *");
System.out.println("**********************");
break;
case 5:
if(l==y) {
System.out.println("目前便道已满!不能停车");
break;
}
System.out.println("请输入便道停车的尾号(必须为整数或者0)");
int abcd=scanner.nextInt();
shortcutTail.enQueue(abcd);
System.out.println("您已在便道等待");
Random random=new Random();
int one=(int)random.nextInt(3)+1;
System.out.println("如果您等待时间很无聊,我们将播放广告");
if(one==1) {
System.out.println("下面是广告时间");
System.out.println("广告:");
System.out.println("碧生源减肥茶是碧生源推出的减肥茶,是专门针对于女性所研发的产品。其成分为纯草本组方。不适宜人群为孕期及哺乳期妇女 及儿童/青少年。");
}
if(one==2) {
System.out.println("下面是广告时间");
System.out.println("广告:");
System.out.println("木醋足贴是针对脚病患者而研制的一种外用药贴。");
System.out.println("1.木醋足贴通过对足底及相关经络反射区的作用,木醋精华等成分渗透并参与循环系统,通过部分药物,促进人体的微循环,新陈代谢.");
System.out.println("2.木醋有着除臭杀菌功效,能够有效的抑制脚部的病菌的生长,能够减轻湿气,起到保健的作用。3.木醋足贴的其他药物成分,都有着显著的医用功效。");
}
if(one==3) {
System.out.println("下面是广告时间");
System.out.println("广告:");
System.out.println("六味地黄丸,中成药名。为补益剂,具有滋阴补肾之功效。用于肾阴亏损,头晕耳鸣,腰膝酸软,骨蒸潮热,盗汗遗精,消渴。" );
System.out.println("六味地黄丸,同名方约有4首,现选宋代太医钱乙所著《小儿药证直诀》卷下“地黄丸”方。该方删减医圣张仲景著《金匮要略》中的肾气丸药方当中的附子与桂枝:");
System.out.println("熟地黄八钱,山萸肉、干山药各四钱,泽泻、牡丹皮、白茯苓(去皮)各三钱。上为末,炼蜜为丸,如梧桐子大。每服三丸,空心温水化下。六味地黄丸是一种广泛使用的方剂。");
System.out.println("中医学认为,六味地黄丸具有滋补肾阴的功能,适用于肾虚、头晕耳鸣、腰膝酸软、消渴、遗精等症。");
}
l++;
System.out.println("**********************");
System.out.println("* 请输入操作 *");
System.out.println("* 1;停车 *");
System.out.println("* 2;出车 *");
System.out.println("* 3:查询停车场和便道的情况 *");
System.out.println("* 4;退出系统 *");
System.out.println("* 5;便道等待 *");
System.out.println("**********************");
break;
case 2:
if(ll==0) {
System.out.println("停车场无车,无法出车");
System.out.println("**********************");
System.out.println("* 请输入操作 *");
System.out.println("* 1;停车 *");
System.out.println("* 2;出车 *");
System.out.println("* 3:查询停车场和便道的情况 *");
System.out.println("* 4;退出系统 *");
System.out.println("* 5;便道等待 *");
System.out.println("**********************");
break;
}
System.out.println("请输入出车的尾号(必须为正整数或者0)");
int j=scanner.nextInt();
while(CarTail.getTop()!=j){
int d=CarTail.getTop();
CarTailHold.push(d);
CarTail.pop();
long dd=timearrive.getTop();
timearriveHold.push(dd);
timearrive.pop();
}
CarTail.pop();
Calendar calendar1=Calendar.getInstance();
calendar1.setTime(new Date());
int 年1=calendar1.get(YEAR),
月1=calendar1.get(MONTH)+1,
日1=calendar1.get(DAY_OF_MONTH);
int hour1=calendar1.get(HOUR_OF_DAY);
int minute1=calendar1.get(MINUTE);
int second2 = calendar1.get(SECOND);
System.out.println("您离开的时间为:");
System.out.print(""+年1+"年"+月1+"月"+日1+"日 ");
System.out.println(" "+hour1+"时"+minute1+"分"+second2+"秒");
long time4=calendar1.getTimeInMillis();
long time5=time4/1000;
kpoi=time5;
kpo=timearrive.getTop();
timearrive.pop();
int yy=(int) (kpoi-kpo);
kpo=0;
int yyy=parkingsystem.upinteger(yy, 3600);
int yyyyy=yyy-(yy/86400)*24;
System.out.print("车的尾号"+j);
if(yy>900){
if((yyyyy*2)>14) {
yyyyy=7;
}
System.out.print("目前的停车时间为:"+yyy+"小时,不够一个小时算一个小时");
int k=(yy/86400)*14+yyyyy*2;
System.out.println(","+"您应付款"+k+"元");
}
else{
int hu=yy/60;int huj=yy-hu*60;
System.out.println("您目前停车时间为:"+hu+"分"+huj+"秒"+"你停车未超过15分钟,所以,"+"您应付款"+"0元");
}
ll--;
System.out.println("目前停车场的车辆为:"+ll);
if(CarTailHold.getTop()!=null){
int da=CarTailHold.getTop();
CarTail.push(da);
CarTailHold.pop();
Long ddd=timearriveHold.getTop();
timearrive.push(ddd);
timearriveHold.pop();
}
if(ll<x){
if(!shortcutTail.isEmpty()){
int ppp=shortcutTail.getFront();
CarTail.push(ppp);
shortcutTail.deQueue();
System.out.println("在便道等待的车尾号为:"+ppp+"您目前到达的时间为:");
System.out.print(""+年1+"年"+月1+"月"+日1+"日 ");
System.out.println(" "+hour1+"时"+minute1+"分"+second2+"秒");
timearrive.push(kpoi);
kpoi=0;
ll++;
l--;
System.out.println("目前停车场的车辆为:"+ll);
System.out.println("目前便道的车辆为:"+l);
}
else{
System.out.println("便道无车停");
l=0;
System.out.println("目前停车场的车辆为:"+ll);
System.out.println("目前便道的车辆为:"+l);
}
}
System.out.println("**********************");
System.out.println("* 请输入操作 *");
System.out.println("* 1;停车 *");
System.out.println("* 2;出车 *");
System.out.println("* 3:查询停车场和便道的情况 *");
System.out.println("* 4;退出系统 *");
System.out.println("* 5;便道等待 *");
System.out.println("**********************");
break;
case 3:
System.out.println("目前停车场停了"+ll+"辆车");
System.out.println("目前便道暂时停了"+l+"辆车");
System.out.println("**********************");
System.out.println("* 请输入操作 *");
System.out.println("* 1;停车 *");
System.out.println("* 2;出车 *");
System.out.println("* 3:查询停车场和便道的情况 *");
System.out.println("* 4;退出系统 *");
System.out.println("* 5;便道等待 *");
System.out.println("**********************");
break;
default:
System.out.println("请输入操作!");
break;
case 4:
qqqq=-1;
System.out.println("您已经退出系统,谢谢惠顾!");
}
}
}
System.out.println("请您对本次停车服务点评,五星为很满意!(输入大于5的数转化为5,输入小于0的数转化为0)");
int u=scanner.nextInt();
if(u>5) {
u=5;
}
if(u<0) {
u=0;
}
System.out.println("请您对本次停车服务点评为"+u+"星"+","+"谢谢您对本停车场的大力支持,欢迎您在下次光临!");
}
}
package parkingSystemyyyy;
public class QueueArray<T>{
private int capacity;
public Object[] elements;
private int front;
private int rear;
public QueueArray(int capacity){
this.capacity=capacity;
elements=new Object[capacity];
front=0;
rear=0;
}
public int getSize(){
return (rear-front+capacity)%capacity;
}
public boolean isEmpty(){
return (front==rear)?true:false;
}
public boolean isFull(){
return ((rear+1)%capacity==front)?true:false;
}
public void enQueue(T e){
if((rear+1)%capacity==front)
expandSpace();
elements[rear]=e;
rear=(rear+1)%capacity;
}
private void expandSpace(){
Object[]a=new Object[elements.length*2];
int i=front;int j=0;
while (i!=rear){
a[j++]=elements[i];
i=(i+1)%capacity;
}
elements=a;
capacity=elements.length;
front=0;rear=j;
}
public boolean deQueue(){
if(rear==front){
System.out.println("空队列!无法出队");
return false;
}
else{
elements[front]=null;
front=(front+1)%capacity;
return true;
}
}
public T getFront(){
if(rear==front){
System.out.println("空队列,无队头!");
}
return (T)elements[front];
}
}
package parkingSystemyyyy;
public class StackLinked<T>{
public StackLinkedNode<T> top;
public StackLinked(){
top=new StackLinkedNode<T>();
top.setData(null);
top.setNext(null);
}
public void push(T e) {
StackLinkedNode<T>p=new StackLinkedNode<T>();
p.setData(e);
p.setNext(top.getNext());
top.setNext(p);
}
public boolean pop(){
if(top.getNext()==null){
System.out.printf("栈空,无法出栈!");
return false;
}
StackLinkedNode<T>p=top.getNext();
top.setNext(p.getNext());
return true;
}
public T getTop(){
if(top.getNext()==null){
System.out.print("");
return(null);
}
StackLinkedNode<T>p=top.getNext();
return(p.getData());
}
}
package parkingSystemyyyy;
public class StackLinkedNode<T>{
private T data;
private StackLinkedNode<T>next;
public T getData(){
return data;
}
public void setData(T data){
this.data=data;
}
public StackLinkedNode<T>getNext(){
return next;
}
public void setNext(StackLinkedNode<T>next) {
this.next=next;
}
}
小白,写得可能不好,勿喷。皮一下,便道等待卖一下广告。