首页 >> 大全

java算法——停车场问题

2023-11-25 大全 26 作者:考证青年

停车场是一个可停放 n 辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端)。若停车场内已经停满 n辆车,那么后来的车只能在门外的便道上等候。一旦有车开走,则排在便道上的第一辆车即可开入。当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入车场。每辆停放在车场的车在它离开停车场时必须按它停留的时间长短缴纳费用。试为停车场编制按上述要求进行管理的模拟程序。

_java停车费计算_java停车系统

_java停车费计算_java停车系统

import java.util.Scanner;
public class Park {public static void main(String[] args) {Scanner in=new Scanner(System.in);parks p=new parks();wait w=new wait();int cost=10,conp=3;//每小时停车费cost元,停车场容量conpint n,t,d;String num,day,time,str="";System.out.println("停车场管理系统");System.out.println("A:停车");System.out.println("D:离开");System.out.println("P:显示停车场信息---P 0 0 0");System.out.println("W:显示候车场信息---W 0 0 0");System.out.println("E:退出系统");System.out.println("输入(A/D/P/W/E),车牌号,日,时间(小时)");while(!str.equals("E")) {		str=in.next().toUpperCase();num=in.next();day=in.next();time=in.next();n=Integer.parseInt(num);t=Integer.parseInt(time);d=Integer.parseInt(day);if(d<0||t<0||t>23) {System.out.println("错误!请重新输入!");continue;}switch(str) {case "A":if(conp>p.n) {p.inpark(n,d,t);}else{w.inwait(n);};break;case "D":p.outpark(n,d,t,cost);if(w.empty()==false) {n=w.outwait().num;System.out.println(n+" 进入停车场");p.inpark(n,d,t);}break;case "P":p.show();break;case "W":w.show();break;case "E":;break;default:System.out.println("错误!请重新输入!");break;}}System.out.println("感谢使用!");}
}class car{int num,day,time1,time2;car next;public car(int num,int day,int time1) {this.num=num;this.day=day;this.time1=time1;time2=0;next=null;}
}class parks{int n=0;car head,tp;public parks() {head=new car(0,0,0);tp=new car(0,0,0);}public car findcar(int num) {tp=head;while(tp.next!=null) {if(tp.next.num==num) {			return tp;}tp=tp.next;}return null;}public void inpark(int num,int day,int time){if(findcar(num)==null) {tp=new car(num,day,time);tp.next=head.next;head.next=tp;n++;System.out.println("停车成功");}else {System.out.println("该车已在停车场中");}}public void outpark(int num,int day,int time2,int cost) {if(findcar(num)!=null) {tp=findcar(num);if(day>=tp.next.day) {System.out.println("停车费:"+cost*((day-tp.next.day)*24+time2-tp.next.time1)+"元");tp.next=tp.next.next;n--;}else {System.out.println("日期错误!");}			}else {System.out.println("该车不在停车场中");}}public void show() {System.out.println("停车场内车数量为:"+n);System.out.println("从门口向里为:");tp=head.next;while(tp!=null) {System.out.println("车牌号: "+tp.num+" 停入时间: "+tp.day+"日"+tp.time1+"点");tp=tp.next;}}
}class wait{//.........................候车场int n;car f,r,tw;public wait() {f=r=new car(0,0,0);tw=new car(0,0,0);}public void inwait(int num) {n++;tw=new car(num,0,0);r.next=tw;r=tw;System.out.println("该车进入候车场中");}public car outwait() {n--;tw=f.next;f.next=f.next.next;return tw;}public void show() {	System.out.println("候车场内车数量为:"+n);System.out.println("从门口向外为:");tw=f.next;while(tw!=null) {System.out.println("车牌号: "+tw.num);tw=tw.next;}}public boolean empty() {if(f.next==null) {return true;}else {return false;}}
}

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了