--------------------------------------------------------------------
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);
}
}





