java实现停车场管理系统

本文实例为大家分享了java停车场管理系统的具体代码,供大家参考,具体内容如下

//车的类

public class car{
 public String number;//车牌号
 public int inhour;  //进入小时
 public int inminute; //进入分
 public int insecond; //进入秒
 public int outhour; //开出小时
 public int outminute; //开出分
 public int outsecond; //开出秒
 public int count; //倒车次数
 public car link;  //队列的指针

//构造方法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;

 }

//构造方法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;

}

}

++++++++++++++++++++++

//停车场基于顺序存储结构 栈//停车场基于顺序存储结构 栈

import java.util.Date;

public class mylist{
 public int Length1;
 public int Length2;
 public car[] carStark1; //停车场
 public car[] carStark2; //用于倒车的临时栈

 //构造方法
 public mylist(){
 carStark1 =new car[5]; //5个车位的停车场 即栈1
 carStark2 =new car[5]; //倒车的临时栈 车位也为5 即栈2
 Length1=0;
 Length2=0;
 }

//入栈 同时将系统时间压入
 public void push(String value){
 car newcar=new car(value);
 int n=Length1;
 carStark1[n]=newcar;
 Date now = new Date(); //时间类
 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--;
 }

 //有时间的出栈1 并且暂时入栈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);
 }
 }

++++++++++++++++++++++++++++++

//队列基于单向链式存储结构

import java.lang.*;
import java.util.*;

//队列
public class myQueue
{

 car header;
 car current;
 int size;

 //构造方法:建立一个空表
 public myQueue()
 {
 header=new car("");
 current=header;
 size = 0;
 }

 //把当前位置之后插入一个新结点
 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("停车场已满,您现在在等待中,您的位置是"+size+"个位置");
 System.out.println("*********************************************");
 }

 //删除当前位置结点后面的结点
 public void delete(){
 car replace;
 replace = current.link;
 if (replace == null) return;
 current.setLink(replace.link);
 replace=null;
 size -= 1;
 }

 //删除第i个结点
 public void delete(int i) {
 if(i>size || i<=0) return;
 locate(i-1);
 delete();
 }

 //由当前结点到下一个结点
 public car getNext(){
 if(current == null) return null;
 current=current.link;
 return current;
 }

 //得到队列的左后一辆车
 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("找不到需要的数!!!!");
  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;
 }

 //队列里有多少车
 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();
 }
 }
 }

+++++++++++++++++++++++++

//执行程序

import java.io.*;
import java.lang.*;

public class DemoParking{
 public mylist parking; //停车场
 public myQueue waiting; //队列
 public String x1;  //选择
 public String x2;  //开入的车牌号
 public String x3;  //开出的车牌号

  //构造方法
 public  DemoParking(){
  parking=new mylist();  //初始化栈
  waiting=new myQueue();  //初始化队列
  x1="";
  x2="";
  x3="";
 }

   // 成员方法:菜单
 public void menu(){
 System.out.println("                      ");
 System.out.println("                      ");
   System.out.println("       欢迎进入停车场系统       ");
 System.out.println("*********************************************");
 System.out.println("*  本停车场每秒收费1元 停车场内有5个车位  *");
 System.out.println("*    倒车一次返回2元(最少不收费!)    *");
 System.out.println("*********************************************");
 System.out.println("    1:开进");
 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{  //输入不符合规定 返回菜单
   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("进入停车场时间:"+parking.getTop1().inhour+":"+parking.getTop1().inminute+":"+parking.getTop1().insecond);
  System.out.println("*********************************************");
 }else{
  waiting.insertcar(value); //入队列
 }
 }

  //成员方法:开出车
 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(); //开出这辆车 进入栈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);
  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("     您的费用:"+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{
  //看在队列还是在栈里
  while(parking.getNum(i).equals(value)==false){ //栈
   i--;
   if(i==0){ //检验队列
   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("     进入时间:"+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);
   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; //费用最少为0
   }
   System.out.println("     您的费用:"+s); //利用时间计算费用
   System.out.println("     欢迎下次再来!@_@再见");
   System.out.println("*********************************************");
   parking.pop3();
   for(;c<b;c++){
   parking.push2();
   }
   parking.push(waiting.getHeader().number);  //队列的第一个元素入栈
    waiting.delete(1); //删除队列的第一个元素

  }
   }
 }

 //查询车位情况 包括栈中和队列中的
 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{ //应用!!
 DemoParking demo=new DemoParking();
 demo.menu();

}

}

更多学习资料请关注专题《管理系统开发》。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • java设计简单学生管理系统

    本文实例为大家分享了java学生成绩管理系统,供大家参考,具体内容如下 要求: 完善Student类,Student类包含学号.姓名.年级.专业.三门功课的成绩(英语.高数.计算机)的成员变量,完善成绩录入方法.设计按学号查找方法.按姓名查找方法.按单科成绩排序的方法. 设计主类,实例化包含5个学生信息的学生数组,查找某一个学生的信息并打印出来,同时打印这5个学生按某一科成绩的按高到低的排序信息(学号.姓名.成绩):输出所有学生的三门单科平均成绩. 首先先创建一个student类 使用构造方法来

  • java实现图书馆管理系统

    本文实例为大家分享了java实现图书馆管理系统的具体代码,供大家参考,具体内容如下 思路:所有包都在book_manage包里 利用面向对象的多态特性去除了很多if-else的判断,不同的子类在父类所对应的方法不同. 1.首先建立一个book包 包里面有2个类,一个是Book,这个类里面包含一本书的全部信息 另外一个类是BookList,这个类是用来管理每一个书,通过这个类来寻找每一本书. private Book[] books = new Book[100]; Book数组里面存放所有的书.

  • java实现超市库存管理系统

    本文实例为大家分享了java库存管理系统的具体代码,供大家参考,具体内容如下 模拟真实的库存管理逻辑,完成超市管理系统的日常功能实现. 经过分析,首先需要一个功能菜单,然后输入所选的功能后,调用序号对应的功能方法,实现想要的操作. 具体的步骤如下: 1.完成超市商品初始化.创建商品,将商品添加到集合 2.显示来到超市能做的操作,也就是显示主菜单 3.根据接收到的功能选项,执行对应的功能 3.1.库存货物查询 3.2.添加新货物 3.3.删除货物 3.4.修改货物 3.5.退出系统,结束main方

  • Java+Mysql学生管理系统源码

    最近正在学java和数据库,想起以前写的学生管理系统,都是从网上下载,敷衍了事.闲来无事,也就自己写了一个,不过功能实现的不是很多. 开发语言:java: 开发环境:Mysql, java: 开发工具:eclipse 开发此案例,首先得在电脑上有java开发环境和Mysql, java开发环境与Mysql的搭建,就不再叙述了,如果需要,请联系我最下面的联系方式:dingyelf@aliyun.com 此次系统比较简易:数据库中只有一个表:stu;功能:能够对学生增加.删除.修改. 开发步骤:  

  • java实现商品信息管理系统

    超市商品管理系统,供大家参考,具体内容如下 题目要求 超市中商品分为四类,分别是食品.化妆品.日用品和饮料.每种商品都包含商品名称.价格.库存量和生产厂家.品牌等信息.主要完成对商品的销售.统计和简单管理.这个题目相对简单,可以用一张表实现信息的保存和处理,因此不再给出数据库设计参考. 功能要求 (1)销售功能. 购买商品时,先输入类别,然后输入商品名称,并在库存中查找该商品的相关信息.如果有库存量,输入购买的数量,进行相应计算.如果库存量不够,给出提示信息,结束购买. (2)商品简单管理功能.

  • java实现商品管理系统

    本文实例为大家分享了java实现商品管理系统的具体代码,供大家参考,具体内容如下 功能要求: 完成"小商品管理系统"的架构设计 要求:利用集合存储若干商品对象 ----小商品管理系统---- 0. 退出 1. 录入商品基本信息 2. 显示商品信息 3. 商品入库(增加数量) 4. 商品出库(减少数量) 5. 修改商品价格 6. 所有产品的总价格(单价*数量) import java.util.ArrayList; import java.util.Scanner; public cla

  • java控制台输出图书馆管理系统

    java控制台输出图书馆管理系统(只用java代码不用数据库和GUI,java入门的新手秒懂) 在个项目中,我只用数组保存数据,和只用for循环和if条件语句来完成,连数组工具类都没用,所以导致要用到很多的条件语句,虽然比较局限,但可以让新手快速体验一下做小项目的乐趣,也可以练练for和if这些语句,练练一下它们之间嵌套的逻辑关系等,因为时间有限所以没有去优化了,主要还是让新手们体验下做java项目的面向对象编程思想(OOP),给新手们体验一下做项目的乐趣,嘿嘿! 话不多说了,直接切入正题. 设

  • 用java实现学生信息管理系统

    用java写的学生信息管理系统,供大家参考,具体内容如下 使用到了集合类ArrayLisat 来对Student类的对象进行存储. StudentManagerTest为主类,Student类里面进行了相应数据的封装.里面用了很多循环来写,并且运用了很多标记来进行判断是否退出循环,如flag和index. 创建集合类对象格式: ArrayList array= new ArrayList();在传递方法的时候需要在形参列表中用<>对传递的类型进行明确 主类 package zjh; impor

  • 图书管理系统java版

    本文的目的就是通过图书管理系统掌握数据库编程技术,能正确连接数据库,能对数据库中信息进行查询.插入.删除.修改. 内容:在数据库中创建一张书目信息表,包括书名.作者.出版社.出版日期.书号.价格字段.设计一个GUI界面进行书目管理.在该界面上有四个选项卡,分别是查询.插入.删除.修改.点击查询选项卡,出现的界面上有书名.作者.出版社.书号四个文本框,一个按钮和一个只读文本区.文本框内容可以为空,输入相应的查询信息后(例如根据书名查询可以仅输入书名),点击界面上的"查询"按钮,可以在界面

  • java实现学生信息管理系统

    JAVA简单写学生信息管理系统,实现学生信息的输入.查询.修改.删除操作 package Week; import jdk.internal.util.xml.impl.Input; import java.util.HashSet; import java.util.Scanner; public class StudentMs { Scanner sc = new Scanner(System.in); public int getID() { return ID; } public Str

随机推荐