2016년 1월 7일 목요일

명품 자바(java) 번외 실습문제(주차장 관리 시스템)


--------------------------------------------------------------------
package State;
import java.util.Date;

public class Box {
Date date = new Date();

String num = "";
String name = "";
String car_num = "";
String in = "";
    String out = "";
public long in_time = System.currentTimeMillis ();
public long out_time = System.currentTimeMillis ();
int charge = 0;

public String getNum() {
return num;
}
public void setNum(String num) {
this.num = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCar_num() {
return car_num;
}
public void setCar_num(String car_num) {
this.car_num = car_num;
}
public String getIn() {
return in;
}
public void setIn(String in) {
this.in = in;
}
public String getOut() {
return out;
}
public void setOut(String out) {
this.out = out;
}
public int getCharge() {
return charge;
}
public void setCharge(int charge) {
this.charge = charge;
}
}
--------------------------------------------------------------------
package State;
import java.util.Date;

public class State {
final static int MAX = 8;
Date date = new Date();
public Box box[] = new Box[MAX];
public State(){
this.create(MAX);
}

public void create(int a){
for(int i=0; i<a; i++){
box[i] = new Box();
}
for(int i=0; i<a; i++){
box[i].setNum("("+i+")");
//나머지 것들 초기값?
}
}
public void print_state(){
System.out.println("==============================================\n << 현재 주차장 상태 >>");
for(int i=0; i<MAX/2; i++){
System.out.print("["+box[i].getNum()+"]");
}
System.out.println();
for(int i=MAX/2; i<MAX; i++){
System.out.print("["+box[i].getNum()+"]");
}
System.out.println();
}
public void init(int a){
box[a].setNum("("+a+")");
box[a].setName("");
box[a].setCar_num("");
box[a].setIn("");
box[a].setOut("");
box[a].setCharge(0);
}
public void charges(int a){
if(box[a].getNum() == " ■ "){
box[a].charge = ((int)((box[a].out_time - box[a].in_time)/100))*10;
}
}
public void charge_inform(int i){
System.out.println("==============================================\n [ "+i+" ]");
System.out.println("주차시간 : "+box[i].getIn());
System.out.println("출차시간 : "+box[i].getOut());
if(box[i].getNum() == " ■ "){
box[i].out_time = System.currentTimeMillis ();
}
charges(i);
System.out.println("주차요금 : "+box[i].getCharge()+"원");
}
public void clear(){
for(int i=0; i<25; i++)
System.out.println();
}
}
--------------------------------------------------------------------
package Menu;
import State.State;
import java.util.Scanner;
import java.util.Date;

public class In {
Date date = new Date();
public In(){
}
void in(State state, Scanner s){
int num = 0;
String name = "";
String car_num = "";
   
System.out.println("==============================================\n 주차 할 곳의 번호를 고르시오.");
   num = s.nextInt();
   
if(state.box[num].getNum() != " ■ "){
System.out.print("이름 : ");
name = s.next();
System.out.print("차량번호 : ");
car_num = s.next();
state.box[num].setName(name);
state.box[num].setCar_num(car_num);
state.box[num].setNum(" ■ ");
state.box[num].setIn(date.toString());
state.box[num].in_time = System.currentTimeMillis ();
state.box[num].out_time = System.currentTimeMillis ();
state.clear();
state.clear();
System.out.println(" ("+num+")번 공간에 차량이 주차되었습니다.");
}
else{
System.out.println("이미 주차가 되어있거나, 잘못된 번호를 누르셨습니다.");
}
state.print_state();
}
}
--------------------------------------------------------------------
package Menu;
import State.State;
import java.util.Scanner;
import java.util.Date;

public class Out {
public Out(){
}
void out(State state, Scanner s){
int num = 0;
   
System.out.println("==============================================\n 주차 했던 곳의 번호를 고르시오.");
   num = s.nextInt();
   
   try {
if(state.box[num].getNum() == " ■ "){
Date date = new Date();
state.box[num].setOut(date.toString());
state.box[num].out_time = System.currentTimeMillis ();
state.clear();
state.clear();
System.out.println(" ("+num+")번 공간의 차량이 출차되었습니다.");

state.charge_inform(num);
state.init(num);
}
else{
System.out.println("이미 출차가 되어있거나, 잘못된 번호를 누르셨습니다.");
}
} catch (Exception e) {
}
state.print_state();
}
}
--------------------------------------------------------------------
package Menu;
import State.State;

public class Manage {
Manage(){
}
void inform(State state){
System.out.println("==============================================\n << 현재 주차 칸 별 정보 >>");
for(int i=0; i<state.box.length; i++){
state.charge_inform(i);
System.out.println("이름 : "+state.box[i].getName());
System.out.println("차량번호 : "+state.box[i].getCar_num());
}
}
}
--------------------------------------------------------------------
package Menu;
import java.util.Scanner;
import State.State;;

public class Menu {
State state = new State();
In in = new In();
Out out = new Out();
Manage manage = new Manage();

public Menu(){
}
public void play(Scanner s){
state.clear();
state.clear();
System.out.println("   << 주차 예약 프로그램 >>");
state.print_state();
select(state, s);
}
public void select(State state, Scanner s){
 int l = 1;
 
 try {
 while(l != 4)
 { 
  System.out.println("==============================================\n 1) 주차\n 2) 출차\n 3) 관리\n 4) 종료");
  l = s.nextInt();
  
  if(l==1){
  state.clear();
  state.clear();
  System.out.println("==============================================\n * 주차를 선택하셨습니다. * ");
state.print_state();
in.in(state, s);
  }  
  else if(l==2){
  state.clear();
  state.clear();
  System.out.println("==============================================\n * 출차를 선택하셨습니다. * ");
state.print_state();
out.out(state, s);
  }
  else if(l==3){
  state.clear();
  System.out.println("==============================================\n * 관리를 선택하셨습니다. * ");
state.print_state();
manage.inform(state);
  }
  else if(l==4){
  state.clear();
  state.clear();
  System.out.println("==============================================\n * 프로그램을 종료합니다. * ");
break;
  }
  else{
  state.clear();
  System.out.println("==============================================\n * 1, 2, 3, 4의 숫자 중에서 고르시오. * ");
  }
}
 }
 catch (Exception e) {
 
 }
}
}
--------------------------------------------------------------------
package Main;
import java.util.Scanner;

import Menu.Menu;

public class Main {
public static void main(String[] args) {
Menu menu = new Menu();
Scanner temp = new Scanner(System.in);
menu.play(temp);
}
}
--------------------------------------------------------------------