728x90

*Junit단위테스트

 

myBatis , db, dao, service, controller

Junit코드를 만드는데 너무 오래걸린다.

test를 잘짜면 좋다.-실무진들이 좋아함.

2주/ 2주 (test 만들기)  CR입력출력만 구현하기UD수정삭제

차라리 CR을 하고 test를 만들기. 양이 아니라 질이다!

test class만들어놓기!!

 

DateUtil - DateTest

EuclidExam - EuclidTest

 

 

폭포수 모형 : 다시 번복할 수 는 없다.

RUP 개발모델

요구분석 활동 : 사용자 관점에서 시스템이 어떤 기능을 제공해야 하는 가에만 집중한다.

 

우리나라는 '설계'단계가 부족함. 구현만 하려고 함.

Usecase Diagram 그리기! 위아래로 그림**sequence로 안그리게 주의

Class Diagram(분석객체 모델) -도메인만들기

Sequence Diagram(동적모델)

 

 

★★프로젝트

  1. 요구분석 검토

  2. 유스케이스

  3. Concept Domain

  4. Detail Domain - 속성, 오퍼레이션, 관계세분화)

  5. 구현

  6. 클래스마다 테스트하기

  7. 확장(벤치마킹하기)

ppt도 만들기.

 

-Customer

package hotel;

public class Customer {

          //기존 고객, 신규고객의 정보

          private String id;

          private String pwd;

          private String name;

          private String phoneNo;

          private String iden;

          

          public Customer(String id, String pwd, String name, String phoneNo, String iden) {

                     super();

                     this.id = id;

                     this.pwd = pwd;

                     this.name = name;

                     this.phoneNo = phoneNo;

                     this.iden = iden;

          }

          

          public Customer() {}

          

          public String getId() {

                     return id;

          }

          public void setId(String id) {

                     this.id = id;

          }

          public String getPwd() {

                     return pwd;

          }

          public void setPwd(String pwd) {

                     this.pwd = pwd;

          }

          public String getName() {

                     return name;

          }

          public void setName(String name) {

                     this.name = name;

          }

          public String getPhoneNo() {

                     return phoneNo;

          }

          public void setPhoneNo(String phoneNo) {

                     this.phoneNo = phoneNo;

          }

          public String getIden() {

                     return iden;

          }

          public void setIden(String iden) {

                     this.iden = iden;

          }

          @Override

          public String toString() {

                     return "Customer [id=" + id + ", pwd=" + pwd + ", name=" + name + ", phoneNo=" + phoneNo + ", iden=" +  iden

                                         + "]";

          }

}

 

 

-CustomerManagement

package hotel;

 

 

import java.util.LinkedList;

import java.util.List;

import java.util.Scanner;

 

 

public class CustomerManagement {

    

    Scanner sc = new Scanner(System.in);

    LinkedList<Customer>list = new LinkedList<Customer>();

    LinkedList<Customer> login = new LinkedList<Customer>();

    

    public void newCustomer() { //회뤈가입

        

        //고객 리스트

        

        

        System.out.print("id:");

        String id=sc.nextLine();

        System.out.print("비밀번호:");

        String pwd=sc.nextLine();

        System.out.print("이름:");

        String name=sc.nextLine();

        System.out.print("전화번호:");

        String phoneNo=sc.nextLine();

        System.out.print("카드번호:");

        String cardNo=sc.nextLine();

        

        list.add(new Customer(id, pwd, name, phoneNo, cardNo));

        

    }

    

    

    public List<Customer>  name() {

        

        

        int a=-1;

        

        while (a==-1 || login.isEmpty()) {

            System.out.print("1:회원가입  2:로그인 >> ");

            String input=sc.nextLine();

            if(input.equals("1")) {

                newCustomer();

            }else if(input.equals("2")) {

                login = (LinkedList<Customer>) login();

                a=1;

            }

            

        }

        return login;

        

    }

    

    

    

    public List<Customer> login() {

        LinkedList<Customer>list2 = new LinkedList<Customer>();

        

        String id;

        String pwd;

        

        

        for(int i=0;i<list.size();i++) {

            

            

            

            do {

                System.out.print("id:");

                id=sc.nextLine();

                System.out.print("비밀번호:");

                pwd=sc.nextLine();

                

                if(!(list.get(i).getId().equals(id))|| !(list.get(i).getPwd().equals(pwd))){

                    System.out.println("다시 입력하세요.");

                }

        

            } while( !(list.get(i).getId().equals(id))|| !(list.get(i).getPwd().equals(pwd)));

        

            

            

            list2.add(0, new Customer(list.get(i).getId(), list.get(i).getPwd(),

                    list.get(i).getName(), list.get(i).getPhoneNo(), list.get(i).getIden()));

            

                System.out.println(list.get(i).getName()+"님 반갑습니다.");

        

        

        }return list2;

    }

    

    

    

    public void updateCustomer() {  //회원정보 수정

        System.out.print("id:");

        String id=sc.nextLine();

        System.out.print("비밀번호:");

        String pwd=sc.nextLine();

        

        for(int i=0;i<list.size();i++) {

            if(list.get(i).getId().equals(id)&& list.get(i).getPwd().equals(pwd)) {

                //로그인성공

                System.out.print("이름:");

                String name=sc.nextLine();

                System.out.print("전화번호:");

                String phoneNo=sc.nextLine();

                System.out.print("주민등록번호:");

                String iden=sc.nextLine();

                

                list.remove(i);

                list.add(i, new Customer(id, pwd, name, phoneNo, iden));

            }

        }

    }//update메소드 종료

    

    

    public void removeCustomer() {

        System.out.print("id:");

        String id=sc.nextLine();

        System.out.print("비밀번호:");

        String pwd=sc.nextLine();

        

        for(int i=0;i<list.size();i++) {

            if(list.get(i).getId().equals(id)&& list.get(i).getPwd().equals(pwd)) {

                //로그인성공

                System.out.print("정말로 탈퇴하시겠습니까? (1:예 2:아니오) >> ");

                String input =sc.nextLine();

                if(input.equals("1")) {

                    list.remove(i);

                

                }

                else return;

            }

        }

    }//remove 메소드 종료

}

 

 

 

-HotelInfo

package hotel;

public class HotelInfo {

   private String rName;

   private int rPrice;

   private int rLimitNumber;//수용인원

   private int rSpareCount;//남은방갯수

   

   public HotelInfo(String rName, int rPrice, int rLimitNumber, int rSpareCount) {

                super();

                this.rName = rName;

                this.rPrice = rPrice;

                this.rLimitNumber = rLimitNumber;

                this.rSpareCount = rSpareCount;

             }

   public HotelInfo() {}

   

   public String getrName() {

      return rName;

   }

   public void setrName(String rName) {

      this.rName = rName;

   }

   public int getrPrice() {

      return rPrice;

   }

   public void setrPrice(int rPrice) {

      this.rPrice = rPrice;

   }

   public int getrLimitNumber() {

      return rLimitNumber;

   }

   public void setrLimitNumber(int rLimitNumber) {

      this.rLimitNumber = rLimitNumber;

   }

   public int getrSpareCount() {

      return rSpareCount;

   }

   public void setrSpareCount(int rSpareCount) {

      this.rSpareCount = rSpareCount;

   }

   @Override

   public String toString() {

      return "HotelInfo [객실유형:" + rName + ", 가격:" + rPrice + ", 객실 인원:" + rLimitNumber + ", 남은 방 수"

            + rSpareCount + "]\n";

   }

   

}

 

-ReserveInfo

package hotel;

 

import java.util.ArrayList;

import java.util.List;

 

public class ReserveInfo {

   private HotelInfo h;

   private Customer c;

   private String date;//사용날짜

   private int period;//숙박기간

   private int reserveNo;//예약번호

   private int reservecount;//예약수

   private int rOwnNum; //객실

   private int total;

   

   

   public ReserveInfo(HotelInfo h, Customer c, String date, int period, int reserveNo,int reservecount) {

    super();

    this.h = h;

    this.c = c;

    this.date = date;

    this.period = period;

    this.reserveNo = reserveNo;

    this.reservecount = reservecount;

    

}

public ReserveInfo(HotelInfo h, Customer c, String date, int period, int reserveNo, int reservecount, int rOwnNum,int total) {

    super();

    this.h = h;

    this.c = c;

    this.date = date;

    this.period = period;

    this.reserveNo = reserveNo;

    this.reservecount = reservecount;

    this.rOwnNum = rOwnNum;

    this.total = total;

}

public int getTotal() {

    return total;

}

public void setTotal(int total) {

    this.total = total;

}

public int getrOwnNum() {

    return rOwnNum;

}

public void setrOwnNum(int rOwnNum) {

    this.rOwnNum = rOwnNum;

}

 

public Customer getC() {

    return c;

}

public void setC(Customer c) {

    this.c = c;

}

public int getReservecount() {

    return reservecount;

}

public void setReservecount(int reservecount) {

    this.reservecount = reservecount;

}

 

public ReserveInfo() {}

public HotelInfo getH() {

      return h;

   }

   public void setH(HotelInfo h) {

      this.h = h;

   }

   public String getDate() {

      return date;

   }

   public void setDate(String date) {

      this.date = date;

   }

   public int getPeriod() {

      return period;

   }

   public void setPeriod(int period) {

      this.period = period;

   }

 

   public int getReserveNo() {

      return reserveNo;

   }

 

   public void setReserveNo(int reserveNo) {

      this.reserveNo = reserveNo;

   }

 

   @Override

   public String toString() {

      return "ReserveInfo [h=" + h + ", c=" + c + ", date=" + date + ", period=" + period + ", reserveNo=" + reserveNo

            + "]";

   }

}

 

 

-HotelManagement

package hotel;

 

 

import java.lang.reflect.Array;

import java.util.ArrayList;

import java.util.List;

import java.util.Scanner;

 

 

public class HotelManagement {

    

      private int total;

      private int idx;

      private HotelInfo h;

      List<HotelInfo> info;

      List<ReserveInfo> reserves;  //예약정보

      Scanner sc = new Scanner(System.in);

      private int rOwnNum;

      

      

      int num1=5;

      int num2=5;

      int num3=5;

      

      public HotelManagement() {

      info = new ArrayList<HotelInfo>();

      reserves = new ArrayList<ReserveInfo>();

      info.add(new HotelInfo("특실", 100000, 10, num1));

      info.add(new HotelInfo("스위트룸", 70000, 4, num2));

      info.add(new HotelInfo("디럭스룸", 50000, 2, num3));

   }

   

   

    public void print(List<HotelInfo> info) {

         for(int i=0; i<info.size();i++) {

            System.out.print(Array.get(info, i));

            System.out.println();

         }

   }

 

 

    int count;

    int count2=1;

    

    public void reserve(List<HotelInfo> info,List<Customer> cust) {

        

        int reservecount = 0;

 

 

            System.out.print(info.toString());

            System.out.println();

        

            int num;

            System.out.print("어떤 방을 예약하시겠습니까? >> ");

            num = sc.nextInt();

            String str = sc.nextLine();

       

       

       while(info.get(num).getrSpareCount()==0) {

           System.out.print("어떤 방을 예약하시겠습니까? >> ");

           num = sc.nextInt();

           String str2 = sc.nextLine();

            System.out.println("방이 다 찼으니 다른 방을 이용해주세요.");

           

       }

         

       //num번째 방의 남은 방수에 서 -1 해야함

     

       switch (num) {

    case 0:

        num1--;

        info.remove(0);

        info.add(0, new HotelInfo("특실", 100000, 10, num1));

        

        break;

    case 1:

        num2--;

        info.remove(1);

        info.add(1, new HotelInfo("스위트룸", 70000, 4, num2));

        break;

    case 2:

        num3--;

        info.remove(2);

        info.add(2, new HotelInfo("디럭스룸", 50000, 2, num3));

    break;

 

 

    }

       

       System.out.println(info.get(num)+"이 선택되었습니다.");

       

       System.out.print("방문예정일 : ");

       String date = sc.nextLine();

       System.out.print("숙박기간 : ");

       int period = sc.nextInt();

       String str3 = sc.nextLine();

       System.out.print("이용인원 : ");

       int count = sc.nextInt();

       reservecount+=count;

       String str2 = sc.nextLine();

       total=period*info.get(num).getrPrice();

       

       if(count>info.get(num).getrLimitNumber()) {

          System.out.println("추가되는 인원은 " + (count-(info.get(num).getrLimitNumber()))+"명 입니다.");

          System.out.println("1인당 추가금액은 20,000원 입니다. 계속 진행하시겠습니까?(yes/no)");

          String a = sc.nextLine();

          

             if(a.equals("yes")) {

                int p=info.get(num).getrPrice()*period;

                p+=20000*period*(count-info.get(num).getrLimitNumber());

             

                total=p;

                reservecount+=count-(info.get(num).getrLimitNumber());

                

             }else return;

         

       }

       

       System.out.println("예약이 완료되었습니다.");

       int reserveNo=count2++;

       

       rOwnNum = count++;

       

       

       System.out.println("예약번호는 "+reserveNo+"입니다.");

       reserves.add(new ReserveInfo(info.get(num), cust.get(index++), date, period, reserveNo,reservecount,rOwnNum,total));

}

    

    

    public void reserveAssure() {  //예약확인

        System.out.print("예약번호 입력:");

        int reserveNo=sc.nextInt();

        String ss=sc.nextLine();

 

 

        for(int i=0;i<reserves.size();i++) {

            int a= reserves.get(i).getReserveNo();

            

            

            if(reserveNo==a) {

                System.out.println(reserves.toString());

            }

            

        }

    }

    public void checkin() {//체크인

        

        System.out.print("발급받은 예약번호를 입력해주세요: ");

         int w = sc.nextInt();

         String s=sc.nextLine();

         

         for(int i=0;i<reserves.size();i++) {

            if(reserves.get(i).getReserveNo()==w) {

                System.out.println(reserves.get(i).getH().getrName()+"-"+(rOwnNum)+"번 방 객실입니다.좋은 하루 보내십시오^^");

                reserves.get(i).setrOwnNum(rOwnNum);

            

            }

         }  

   }

   int index;

   

   public void checkout() {//체크아웃

      

       System.out.print("객실이름을 입력해주세요: ");

       String r = sc.nextLine();

       for(int i=0;i<reserves.size();i++) {

           String ownnum=reserves.get(i).getH().getrName()+"-"+reserves.get(i).getrOwnNum();

           

   

           if(r.equals(ownnum)) {

               index=i;  //i번째의 객실이용

               System.out.println("체크아웃이 완료되었습니다.");

               System.out.println("계산서를 받아주세요");

               bills();

               reserves.remove(i);

               

               

           }else System.out.println("잘못입력하셨습니다.");

       }

   }

    public void bills()  {

        

        

        System.out.print("결제수단(1:현금  2:카드) >> ");

        String input=sc.nextLine();

        

        //index 번째의 객실 이용

        

        switch (input) {

        case "1"://현금

            //int price =reserves.get(index).getH().getrPrice();

            

            int price=reserves.get(index).getTotal();

            String str = sc.nextLine();

            System.out.println(price+"원을 결제해주세요");

            System.out.print("결제하실 금액: ");

            //int pay = sc.nextInt();

            int re=-1;

 

            while (re<0) {

                System.out.print("결제하실 금액: ");

                int pay = sc.nextInt();

                re= pay-price;

            }

            System.out.println("거스름돈:"+re);

     

            break;

 

        case "2"://카드

            String cardNo="";

        

            int price2=reserves.get(index).getTotal();

            System.out.println(price2+"원을 결제해주세요");

            

            

            while(!(cardNo.equals(reserves.get(index).getC().getIden()))) {

                System.out.print("카드 번호를 입력하세요:");

                cardNo= sc.nextLine();

                if(!(cardNo.equals(reserves.get(index).getC().getIden())))

                    System.out.println("잘못된 카드 번호입니다.");

            }

            System.out.println("결제되었습니다.");

            

            break;

        default:

            System.out.println("잘못 입력하셨습니다.");

            break;

        }

 

    }

 

}//class

 

-Main

package hotel;

 

 

import java.util.LinkedList;

import java.util.List;

import java.util.Scanner;

 

 

public class Main{

    static Scanner sc = new Scanner(System.in);

 

 

    public static void main(String[] args) {

        

        CustomerManagement cm = new CustomerManagement();    

        HotelManagement hm = new HotelManagement();

        

        LinkedList<Customer> list = new LinkedList<Customer>();

        LinkedList<Customer> login = new LinkedList<Customer>();

        List<HotelInfo> list2 = new LinkedList<HotelInfo>();

    

 

 

        login=(LinkedList<Customer>) cm.name();

        

        

        while(true) {

            System.out.println("1.객실조회  2.객실예약  3.내 예약  4.내 회원정보  5:종료");

            //3.예약확인 들어가면 체크인,체크아웃

            //4.내 회원정보 들어가면 회원정보 수정하거나 삭제할수있음

            System.out.print("선택하세요: ");

            String input = sc.nextLine();

            switch(input) {

            case "1"://객실조회

                list2=hm.info;

                System.out.println(list2.toString());

                break;

                

            case "2":

                //객실예약

                list2=hm.info;

                

                hm.reserve(list2, login);

                

                break;

            case "3":

                System.out.println("1:예약정보확인  2:체크인  3:체크아웃");

                String input2=sc.nextLine();

                switch (input2) {

                case "1":

                    //예약정보 확인

                    hm.reserveAssure();

                    break;

                case "2":

                    //예약번호를 가지고 객실을 배정

                    

                    hm.checkin();

                    break;

 

 

                case "3":

                    hm.checkout();

                    break;

                }

 

 

                break;

            case "4":

                System.out.println("1:회원정보 수정  2:회원정보 삭제");

                String input3=sc.nextLine();

                if(input3.equals("1")) {

                    cm.updateCustomer();

                    System.out.println(cm.list.toString());

                }else if(input3.equals("2")) {

                    cm.removeCustomer();

                    System.out.println(cm.list.toString());

                    login.remove();

                }

                

                break;

            case"5":

                System.out.println("프로그램 종료");

                return;

            }    

    }//while문

    

        

    }

}

 

 

 

 

 

LinkedList<Integer> list = new LinkedList<Integer>(Arrays.asList(1,2,3));

 

System.out.println(list.get(0));//0번째 index 출력

                

for(Integer i : list) { //for문을 통한 전체출력

    System.out.println(i);

}

 

Iterator<Integer> iter = list.iterator(); //Iterator 선언

while(iter.hasNext()){//다음값이 있는지 체크

    System.out.println(iter.next()); //값 출력

}

 

 

ArrayList<Integer> list = new ArrayList<Integer>(Arrays.asList(1,2,3));

System.out.println(list.contains(1)); //list에 1이 있는지 검색 : true

System.out.println(list.indexOf(1)); //1이 있는 index반환 없으면 -1

 

728x90

+ Recent posts