[자바] 도서 관리

오늘·2021년 3월 8일
0

문제풀기

목록 보기
11/24

1. 관리해야할 도서도 사람도 1

boolean run = true;
int keyCode = 0;
String title = null;
String writer = null;
int num = 0;

while (run) {
	Scanner sc = new Scanner(System.in);

	if (keyCode != 13 && keyCode != 10) {
		System.out.println("---------------------");
		System.out.println("1.도서 추가(수정) 2.도서 검색 3.도서 삭제 4.도서 출력 5.종료");
		System.out.println("---------------------");
		System.out.println("선택 >");
	}

	keyCode = sc.nextInt();

	switch (keyCode) {
	case 1: // 1을 읽었을 경우
		System.out.println("1.도서추가를 선택하셨네요");
		System.out.print("제목 : ");
		title = sc.next();
		System.out.print("저자: ");
		writer = sc.next();
		System.out.print("도서번호: ");
		num = sc.nextInt();
		break;

	case 2: // 2를 읽었을 경우
		System.out.println("2.도서 검색을 입력하셨네요");
		System.out.println("책 번호를 입력해주세요");

		int what = sc.nextInt();

		if (what == num) {
			System.out.println("제목 : " + title);
			System.out.println("저자 : " + writer);
			break;
		} else {
			System.out.println("잘못 입력한거 같아요");
		}

	case 3:
		System.out.println("3.도서 삭제를 입력하셨네요");
		title = null;
		writer = null;
		num = 0;
		break;

	case 4:
		System.out.println("5.도서 출력 합니다");
		System.out.println("제목 : " + title);
		System.out.println("저자 : " + writer);
		System.out.println("도서번호: " + num);
		break;

	case 5:
		System.out.println("6. 종료합니다");
		run = false;

	}
}

2. 관리 대상은 하나인데, 관리해야할 책이 여러개

import java.util.Scanner;

// 요구사항
// 1. 배열
// 2. 동작 : 입력, 출력, 조회, 수정, 삭제, 종료

// 읽은도서 기록 프로그램
// 본인 이름 입력받기, 읽은 도서들 배열로 입력받기, 이름과 도서 리스트 출력하기, 도서 리스트 수정하기, 도서 리스트 삭제하기, 종료
public class Book {
	public static void main(String[] args) {
		boolean run = true;
		String name = null;
		String book[] = null;
		int num = 0;
		
		Scanner sc = new Scanner(System.in);
		
		while(run) {
			System.out.println("------------------------------------------------------------------");
			System.out.println("1.이름과 권 수 | 2.읽은 도서기록 | 3.출력  | 4.도서리스트수정  | 5.도서리스트 삭제  | 6.종료");
			System.out.println("------------------------------------------------------------------");
			System.out.print("번호 선택 >>");
			
			int select = sc.nextInt();
			
			switch(select) {
			// 본인 이름과 권수 입력받기
			case 1:
				System.out.println("이름을 입력해주세요");
				System.out.print(">>");
				name = sc.next();
				System.out.println("입력 권 수를 입력해주세요");
				System.out.print(">>");
				num = sc.nextInt();
				break;
				
				
			// 읽은 도서 배열로 입력받기
			case 2:
				System.out.println("책 제목을 입력해주세요");
				book = new String[num];
				for (int i = 0; i < book.length; i++) {
					System.out.print((i + 1) + " 권의 이름 : ");
					book[i] = sc.next();
				}
				break;
				
				
			// 이름과 도서 리스트 출력
			case 3:
				System.out.println("정보를 확인하겠습니다");
				System.out.println(name + " 님의 독서 기록입니다");
				for (int i = 0; i < book.length; i++) {
					System.out.println((i + 1) + " : " + book[i]);
				}
				break;
				
			// 도서 리스트 수정
			case 4:
				System.out.println("수정하시겠습니까?");
				System.out.println("수정하겠습니다 : y" + "\t" + "아니요 : n");
				System.out.print(">>");
				
				String click = sc.next();
				
				if(click.equals("n")) {
					System.out.println("메인 메뉴로 돌아갑니다");
					break;
				
				} else if(click.equals("y")) {
					System.out.println("수정할 책 넘버를 입력해주세요");
					System.out.print(">>");
					int number = sc.nextInt();
					
					System.out.println("책 이름을 수정해주세요");
					
					for (int i = 0; i < book.length; i++) {
						if(i == number-1) {
							System.out.print(">>");
						book[i] = sc.next();
						}
					}
					break;
				} else {
					System.out.println("잘못 입력하신거 같아요");
					break;
				}
				
				
			// 정보 삭제
			case 5:
				System.out.println("삭제하시겠습니까?");
				System.out.println("예 : y" + "\t" + "아니요 : n");
				System.out.print(">>");
				
				String click1 = sc.next();
				
				if(click1.equals("n")) {
					System.out.println("메인 메뉴로 돌아갑니다");
					break;
				
				} else if(click1.equals("y")) {
					System.out.println("삭제되었습니다");
					name = null;
					for (int i = 0; i < book.length; i++) {
						book[i] = null;
					}
					break;
				} else {
					System.out.println("잘못 입력하신거 같아요");
					break;
				}
				
				
				
			// 프로그램 종료
			case 6:
				System.out.println("종료를 선택하셨습니다");
				run = false;
				break;
			
			default :
				System.out.println("잘못 입력하셨습니다");
			}
		}
	}
}

3. 도서 판매관리

입력되는 것이 여러개 : 도서 이름, 정가, 주문수량, 판매처 (서점 or 인터넷 ), 구입 방법 (카드 or 현금)

가격 계산(구매 방법에 따라 다른 할인율 계산)

1) 할인율 : 서점은 정가의 10%, 인터넷은 15%, 현금 10%, 카드는 5%입니다.
   만약 서점에서 현금이면 할인율 = 10%+10% 
 
2)  판매금액 = 정가 * (100% -  (10%+10%) 
    판매금액 = 정가 * 80%

3-1. Sale

package book_sale;

import java.util.*;

public class Sale {
	static ArrayList<Account> list = new ArrayList();
	// ArrayList는 저장할 객체 유형을 <> 안에 집어넣어 선언
	static Scanner sc = new Scanner(System.in);

	public static void main(String[] args) {

		boolean run = true;

		while (run) {
			System.out.println("--------------");
			System.out.println("1.도서 구매 | 2.확인 | 3.종료");
			System.out.println("--------------");
			System.out.print("번호 선택 >>");
			
			int selectNo = sc.nextInt();
			
			if(selectNo == 1) {
				// 도서 구매
				bookList();
			} else if(selectNo == 2){
				// 판매 모두 출력
				outPut();
			} else {
				run = false;
			}
		}

		System.out.println("프로그램 종료");
	}
	
	// 구매할 도서 & 결제
	private static void bookList() {
		System.out.print("도서 이름: ");
		String bookName = sc.next();
		System.out.print("정가: ");
		int price = sc.nextInt();
		System.out.print("주문수량: ");
		int orderNum = sc.nextInt();
		System.out.print("판매처 (서점 or 인터넷 ): ");
		String bookStore = sc.next();
		System.out.print("구입 방법 (카드 or 현금): ");
		String howBuy = sc.next();

		Account book = new Account(bookName, price, orderNum, bookStore, howBuy);
		list.add(book);
	}
	
	private static void outPut() {
		Iterator<Account> it = list.iterator();
		//Iterator를 활용해서 list의 모든 값을 불러온다.

		System.out.println("도서명 \t 정가 \t 할인율 \t 주문수량 \t 판매금액 \t 판매처 \t 구입방법");
		
		// hasNext메서드는 Iterator의 메서드
		// it변수의 다음데이터가 남아 있을 때 까지 실행
		while (it.hasNext()) {
			Account result = it.next();
			result.print();
			System.out.println();
		}
	}
}

3-2 Account

package book_sale;

import java.util.*;

public class Account {

	private String bookName;	// 도서명
	private String bookStore;	// 판매점
	private String howBuy;		// 구입 방법
	private int price;			// 정가
	private int orderNum;		// 주문 수량
	private double cut1;		// 서점 인터넷
	private double cut2;		// 카드 현금
	private double pp;			// 할인금액
//	private int pay;			// 할인율
	private int finPrice;

	
	public Account(String bookName, int price, int orderNum, String bookStore, String howBuy) {
		this.bookName = bookName;
		this.price = price;
		this.orderNum = orderNum;
		setBookStore(bookStore);
		setHowBuy(howBuy);
	}
	
	public double getCut1() { return cut1; }
	public void setCut1(double cut1) { this.cut1 = cut1; }
	
	public double getCut2() { return cut2; }
	public void setCut2(double cut2) { this.cut2 = cut2; }
	
	public String getBookStore() {	return bookStore;	}
	public void setBookStore(String bookStore) {
		if (bookStore.equals("서점")) {
			setCut1(0.1);
		} else {
			setCut1(0.15);
		}
		this.bookStore = bookStore;
	}

	public String getHowBuy() {	return howBuy;	}
	public void setHowBuy(String howBuy) {
		if (howBuy.equals("카드")) {
			setCut2(0.05);
		} else {
			setCut2(0.1);
		}
		this.howBuy = howBuy;
	}
	
	
	public void print() {
		// System.out.println("도서명 \t 정가 \t 할인율 \t 주문수량 \t 판매금액 \t 판매처 \t 구입방법");
		System.out.print(bookName + "\t");
		System.out.print(price + "\t");
		System.out.print(((cut1 + cut2)*100) + "% \t");
		System.out.print(orderNum + "\t");
		
		finPrice = price - (int) (price * (cut1 + cut2));
		System.out.print(finPrice + "\t");
		System.out.print(bookStore + "\t");
		System.out.print(howBuy);
	}
}

0개의 댓글