전에 만들 board 객체를 map으로 다시 만들자
//
Scanner sc = new Scanner(System.in);
Map<Integer, BoardDTO> bMap = new HashMap<>();
BoardService bs = new BoardService();
int choice = 0; // 선택용
boolean run = true;
int bnNumber = 1;
while (run) {
System.out.println("------------------------------------------------------");
System.out.println("1.글작성 | 2.전체조회 | 3.상세조회 | 4.글삭제 | 5.글수정 | 6.종료");
System.out.println("------------------------------------------------------");
System.out.print("선택 : ");
choice = sc.nextInt();
switch (choice) {
case 1: { // 글 작성
bMap = bs.boardWrite(bMap, bnNumber);
bnNumber++;
break;
}
case 2: { // 전체글조회
bs.boardListView(bMap);
break;
}
case 3: { // 상세
bMap = bs.boardView(bMap);
break;
}
case 4: { // 글삭제
bMap = bs.boardDelete(bMap);
break;
}
case 5: { // 글수정
bMap = bs.boardUpdate(bMap);
break;
}
case 6: { // 종료
System.out.println("종료 합니다");
run = false;
break;
}
default: {
System.out.println("다시 입력하세요");
}
}// switch 끝
} // while 끝
// 글쓰기 전체글 조회 글삭제 글수정
// Scanner sc = new Scanner(System.in);
// 글쓰기
// 메서드 이름 : boardWrite
// 리턴 타입 : Map<Integer, BoardDTO>
// 매개변수 : Map<Integer, BoardDTO>
// 작성자 제목 내용 비밀번호 입력
// 글번호 자동
Map<Integer, BoardDTO> boardWrite (Map<Integer, BoardDTO> bMap, int bnNumber){
Scanner sc = new Scanner(System.in);
// int max = 0;
System.out.print("작성자 : ");
String writer = sc.nextLine();
System.out.print("제목 : ");
String title = sc.nextLine();
System.out.print("내용 : ");
String contents = sc.nextLine();
System.out.print("비밀번호 : ");
String password = sc.nextLine();
BoardDTO b = new BoardDTO(writer, title, contents, password);
// for (Integer n : bMap.keySet()) {
// if (n>max) {
// max=n; // 여기에 +1을 해서 글번호랑 키값으로 사용하면
// }
// }
b.setBnNumber(bnNumber);
// 사이즈로 하면 글 지우면 글번호 이상해지니 메인에서 관리하자
bMap.put(bnNumber, b);
return bMap;
}
// 전체글조회
// 메서드 이름 : boardListView
// 리턴 타입 : void
// 매개변수 : Map<Integer, BoardDTO>
// 그냥 글 다 나와
//
void boardListView (Map<Integer, BoardDTO> bMap) {
for (Integer b : bMap.keySet()) {
System.out.println(bMap.get(b));
}
}
// 상제글 조회
// 메서드 이름 : boardView
// 리턴 타입 : Map<Integer, BoardDTO>
// 매개변수 : Map<Integer, BoardDTO>
// 원하는 글 조회
// 글 번호를 받아서 찾아서 조회 + 조회수 1추가
// 조회수 넣으려면 리턴해야하잔아
Map<Integer, BoardDTO> boardView (Map<Integer, BoardDTO> bMap) {
Scanner sc = new Scanner(System.in);
System.out.print("글 번호 : ");
int bnNumber = sc.nextInt();
// 키값으로 하는거니 -1 안해도 되잔아?
bMap.get(bnNumber).setHits(bMap.get(bnNumber).getHits()+1);
System.out.println(bMap.get(bnNumber));
return bMap;
}
// 글 삭제
// 메서드 이름 : boardDelete
// 리턴 타입 : Map<Integer, BoardDTO>
// 매개변수 : Map<Integer, BoardDTO>
// 글 번호와 비밀 번호를 입력 받아서 일치하면 글삭제
// 글을 지우면 글이 올라감 글 번호도 올리자
Map<Integer, BoardDTO> boardDelete (Map<Integer, BoardDTO> bMap) {
Scanner sc = new Scanner(System.in);
System.out.println("글 번호 : ");
int bnNumber = sc.nextInt();
sc.nextLine(); // 스캐너용
System.out.println("비밀번호 : ");
String password = sc.nextLine();
if (bMap.get(bnNumber).getPassword().equals(password)) {
bMap.remove(bnNumber);
// Map은 인덱스 이동이 없어서 편하구만
// 아닌가 그럼 사이즈로 해두면 지우고 새로만들면 늘어나잔아
// 글번호 관리를 메인에서 할까
} else {
System.out.println("정보가 일치하지 않습니다. ");
}
return bMap;
}
// 글 수정
// 메서드 이름 : boardUpdate
// 리턴 타입 : Map<Integer, BoardDTO>
// 매개변수 : Map<Integer, BoardDTO>
// 글 번호와 비밀 번호를 입력 받아서 맞으면 제목과 내용 수정
//
Map<Integer, BoardDTO> boardUpdate (Map<Integer, BoardDTO> bMap) {
Scanner sc = new Scanner(System.in);
System.out.println("글 번호 : ");
int bnNumber = sc.nextInt();
sc.nextLine(); // 스캐너용
System.out.println("비밀번호 : ");
String password = sc.nextLine();
if (bMap.get(bnNumber).getPassword().equals(password)) {
System.out.print("제목 : ");
String title = sc.nextLine();
System.out.print("내용 : ");
String contents = sc.nextLine();
bMap.get(bnNumber).setTitle(title);
bMap.get(bnNumber).setConcents(contents);
System.out.println(bMap.get(bnNumber));
} else {
System.out.println("정보가 일치하지 않습니다. ");
}
return bMap;
}
고객 DTO
- 고객번호(clientNumber), 고객이름(clientName), 전화번호(clientPhone)
도서 DTO
- 도서번호(bookNumber), 도서명(bookName), 작가(bookAuthor), 대출여부(bookCheck), 대출회원(clientNumber)
주요기능
- 회원등록
- 도서등록
1. 모든도서는 1권씩있다
- 도서대출
1. 고객번호와 빌리고자 하는 도서번호를 입력받는다.
2. 빌리고자 하는 도서가 대출중이면 대출이 불가능하다.
- 전체 회원목록 출력
- 전체 도서목록 출력
- 도서반납
1. 이건 내가 만듬
특징
Scanner sc = new Scanner(System.in);
Map<Integer, ClientDTO> cMap = new HashMap<>();
Map<Integer, BookDTO> bMap = new HashMap<>();
LibraryService ls = new LibraryService();
int choice = 0;
boolean run = true;
while (run) {
System.out.println("-----------------------------------------------------------------");
System.out.println("1.회원등록 | 2.도서등록 | 3.도서대출 | 4.전체회원 | 5.전체도서 | 6.반납 | 7.종료");
System.out.println("-----------------------------------------------------------------");
System.out.print("선택 : ");
choice = sc.nextInt();
switch (choice) {
case 1: {// 회원등록
cMap = ls.clientJoin(cMap);
break;
}
case 2: {// 도서등록
bMap=ls.bookJoin(bMap);
break;
}
case 3: {// 도서대출
bMap = ls.bookLoan(bMap, cMap);
break;
}
case 4: { // 전체회원목록
ls.clientListView(cMap);
break;
}
case 5: { // 전체 도서목록
ls.bookListView(bMap);
break;
}
case 6: { // 도서 반납
bMap = ls.bookReturn(bMap);
break;
}
case 7: {// 종료
run=false;
System.out.println("종료");
break;
}
}//switch 끝
} // while 끝
// 회원등록 도서등록 도서대출 전체회원목록 전체도서목록
Scanner sc = new Scanner(System.in);
// 회원등록
// 메서드 이름 : clientJoin
// 리턴 타입 : Map<Integer, ClientDTO>
// 매개변수 : Map<Integer, ClientDTO>
//
//
Map<Integer, ClientDTO> clientJoin(Map<Integer, ClientDTO> cMap) {
// Scanner sc = new Scanner(System.in);
System.out.print("이름 : ");
String name = sc.nextLine();
System.out.print("전화번호 : ");
String phone = sc.nextLine();
int clientNumber = cMap.size() + 1;// 1번부터
ClientDTO c = new ClientDTO(clientNumber, name, phone);
cMap.put(clientNumber, c);// 고객번호랑 키값이랑 같다
return cMap;
}
// 도서등록
// 메서드 이름 : bookJoin
// 리턴 타입 : Map<Integer, BookDTO>
// 매개변수 : Map<Integer, BookDTO>
//
//
Map<Integer, BookDTO> bookJoin(Map<Integer, BookDTO> bMap) {
// Scanner sc = new Scanner(System.in);
int bookNumber = bMap.size() + 1; // 1씩 삭제는 없으니 그냥해
System.out.print("도서명 : ");
String name = sc.nextLine();
System.out.print("작가 : ");
String author = sc.nextLine();
BookDTO b = new BookDTO(bookNumber, name, author, false, 0);
// 0번 대출회원은 없어
bMap.put(bookNumber, b); // 도서번호랑 키값이랑 같음
return bMap;
}
// 도서대출
// 메서드 이름 : bookLoan
// 리턴 타입 : Map<Integer, BookDTO>
// 매개변수 : Map<Integer, BookDTO>
// 고객 번호를 받아서 도서 번호를 입력 받는다
// 도서가 대출중이면 불가능하다
// 심심하니 고객번호 체크를 만들어보자
Map<Integer, BookDTO> bookLoan(Map<Integer, BookDTO> bMap, Map<Integer, ClientDTO> cMap) {
boolean bookcheck = false;
int clNum = clientCheck(cMap);// 고객체크
if (clNum > 0) {
int bookNumber = bookCheck(bMap);//
if (bookNumber > 0) {
bookcheck = true;
BookDTO b = null;
b = bMap.get(bookNumber);
b.setBookCheck(bookcheck);
b.setClientNumber(clNum);
}
}
return bMap;
}
// 고객체크
// 메서드 이름 : clientCheck
// 리턴 타입 : int
// 매개변수 : Map<Integer, ClientDTO>
int clientCheck(Map<Integer, ClientDTO> cMap) {
// Scanner sc = new Scanner(System.in);
System.out.print("고객번호 입력 : ");
int clientNumber = sc.nextInt();
int clNum = 0;
boolean check = false;
for (Integer i : cMap.keySet()) {
if (cMap.get(i).getClientNumber() == clientNumber) {
clNum = i;
check = true;
}
}
if (check) {
System.out.print(cMap.get(clNum).getClientName() + "님 대출시작");
} else {
System.out.println("고객번호를 잘못입력했습니다.");
}
return clNum;
}
// 도서체크
// 메서드 이름 : bookCheck
// 리턴 타입 : int
// 매개변수 : Map<Integer, BookDTO>
int bookCheck(Map<Integer, BookDTO> bMap) {
// Scanner sc = new Scanner(System.in);
System.out.print("도서번호 입력 : ");
int bookNumber = sc.nextInt();
int bkNum = 0;
boolean bkCheck = false;
boolean bkCheck2 = false;
for (Integer i : bMap.keySet()) {
if (bMap.get(i).getBookNumber() == bookNumber) { // 도서번호가 맞아
if (!bMap.get(i).isBookCheck()) {// 대출가능
bkNum = i;
bkCheck = true;
}
bkCheck2 = true;
}
}
if (bkCheck2) {
if (bkCheck) {
System.out.println(bMap.get(bookNumber).getBookName() + "님 대출시작");
} else {
System.out.println("이미 대출중입니다.");
}
} else {
System.out.println("도서번호를 잘못입력했습니다.");
}
return bkNum;
}
// 전체 회원목록 출력
// 메서드 이름 : clientListView
// 리턴 타입 : void
// 매개변수 : Map<Integer, clientDTO>
void clientListView(Map<Integer, ClientDTO> cMap) {
for (Integer i : cMap.keySet()) {
System.out.println(cMap.get(i));
}
}
// 전체 도서목록 출력
// 메서드 이름 : bookListView
// 리턴 타입 : void
// 매개변수 : Map<Integer, BookDTO>
void bookListView(Map<Integer, BookDTO> bMap) {
for (Integer i : bMap.keySet()) {
System.out.println(bMap.get(i));
}
}
// 도서 반납
// 메서드 이름 : bookReturn
// 리턴 타입 : Map<Integer, BookDTO>
// 매개변수 : Map<Integer, BookDTO>
// 책 번호를 받아서 대출여부랑 대출고객을 초기화
Map<Integer, BookDTO> bookReturn (Map<Integer, BookDTO> bMap){
System.out.print("도서 번호 : ");
int bkNum = sc.nextInt();
bMap.get(bkNum).setBookCheck(false);
bMap.get(bkNum).setClientNumber(0);
return bMap;
}
// 도서번호 도서명 작가 대출여부 대출회원
private int bookNumber =0;
private String bookName = "";
private String bookAuthor ="";
private boolean bookCheck = false;
private int clientNumber = 0;
BookDTO (){ // 기본
}
public BookDTO(int bookNumber, String bookName, String bookAuthor, boolean bookCheck, int clientNumber) {
super();
this.bookNumber = bookNumber;
this.bookName = bookName;
this.bookAuthor = bookAuthor;
this.bookCheck = bookCheck;
this.clientNumber = clientNumber;
}
public BookDTO(int bookNumber, int clientNumber) {
super();
this.bookNumber = bookNumber;
this.clientNumber = clientNumber;
}
public int getBookNumber() {
return bookNumber;
}
public void setBookNumber(int bookNumber) {
this.bookNumber = bookNumber;
}
public String getBookName() {
return bookName;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
public String getBookAuthor() {
return bookAuthor;
}
public void setBookAuthor(String bookAuthor) {
this.bookAuthor = bookAuthor;
}
public boolean isBookCheck() {
return bookCheck;
}
public void setBookCheck(boolean bookCheck) {
this.bookCheck = bookCheck;
}
public int getClientNumber() {
return clientNumber;
}
public void setClientNumber(int clientNumber) {
this.clientNumber = clientNumber;
}
@Override
public String toString() {
return "BookDTO [bookNumber=" + bookNumber + ", bookName=" + bookName + ", bookAuthor=" + bookAuthor
+ ", bookCheck=" + bookCheck + ", clientNumber=" + clientNumber + "]";
}
// 고객번호 고객이름 전화번호
private int clientNumber =0;
private String clientName ="";
private String clientPhone ="";
ClientDTO (){ //기본
}
public ClientDTO(int clientNumber, String clientName, String clientPhone) {
super();
this.clientNumber = clientNumber;
this.clientName = clientName;
this.clientPhone = clientPhone;
}
public int getClientNumber() {
return clientNumber;
}
public void setClientNumber(int clientNumber) {
this.clientNumber = clientNumber;
}
public String getClientName() {
return clientName;
}
public void setClientName(String clientName) {
this.clientName = clientName;
}
public String getClientPhone() {
return clientPhone;
}
public void setClientPhone(String clientPhone) {
this.clientPhone = clientPhone;
}
@Override
public String toString() {
return "ClientDTO [clientNumber=" + clientNumber + ", clientName=" + clientName + ", clientPhone=" + clientPhone
+ "]";
}
오오 DTO 두개 쓰는 방법은 어렵네
프로젝트로 만들 것 정해야하는데
지금까지 배운거를 활용해서
만들만한?
만드는것도 내가 해야하나
편의점 / 게임? / 쇼핑몰?
재고관리?
편의점이나 해볼까
손님DTO
손님번호 손님이름 돈
물건DTO
물건번호 물건명 가격 재고
물건 등록
물건번호 자동
물건명 가격 재고 받아서 입력
재고 관리
그냥 다 출력
판매
while문으로 물건 여러 개 받아서 가격 더 해서 알려주고 손님돈에서 부족하면 잔액부족
그리고 재고에서 개수만큼 빼고
가방자리도 만들어서 자리부족하면 못사?
게임?
몬스터 DTO
몬스터 번호 hp 공격력 방어력 경험치 점수
캐릭터 DTO
캐릭터 번호 hp 랩 경험치 공격력 방어력 스킬 점수
몬스터등록
캐릭터 등록
몬스터 공격
캐릭터 불러오고
몬스터 불러오고
while 문으로?
몬스터랑 싸움 턴제임?
아 기획은 너무 어려워 내일 다시해야지