*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(동적모델)
★★프로젝트
-
요구분석 검토
-
유스케이스
-
Concept Domain
-
Detail Domain - 속성, 오퍼레이션, 관계세분화)
-
구현
-
클래스마다 테스트하기
-
확장(벤치마킹하기)
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
'FULLSTACK > JAVA' 카테고리의 다른 글
JAVA 20차시 - 알고리즘 (0) | 2020.11.13 |
---|---|
JAVA 19차시 - (프로젝트)호텔예약시스템 발표, 알고리즘(stack,queue), Tree (0) | 2020.11.13 |
JAVA 17차시 - 네트워크 통신 프로그래밍 (0) | 2020.11.13 |
JAVA 16차시 - File, Thread (0) | 2020.11.12 |
JAVA 15차시 - 복습, 입출력(3가지 카테고리&파일클래스) (0) | 2020.11.12 |