반응형

@notepad_jj2

츄르사려고 코딩하는 코집사입니다.


1. ShoppingTest 클래스

- Main 클래스

- Main 클래스 안에 서비스를 시작하는 1줄로만 구현

package online;

public class ShoppingTest {
	public static void main(String[] args) {
		new ShoppingUI().totalService(); 
	}
}

2. Shopping 클래스

- 멤버변수 저장

package online;

//쇼핑몰 주문 및 재고관리
public class Shopping {
	private String no; // 주문번호
	private String title; // 상품정보
	private int price; // 상품가격
	private int amount; // 상품수량
	private int tPrice; // 배송비용

	//getter, setter
	public String getNo() {
		return no;
	}

	public void setNo(String no) {
		this.no = no;
	}

	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

	public int getPrice() {
		return price;
	}

	public void setPrice(int price) {
		this.price = price;
	}

	public int getAmount() {
		return amount;
	}

	public void setAmount(int amount) {
		this.amount = amount;
	}

	public int gettPrice() {
		return tPrice;
	}

	public void settPrice(int tPrice) {
		this.tPrice = tPrice;
	}
	
	// toSTring()
	@Override
	public String toString() {
		return "Shopping [no=" + no + ", title=" + title + ", price=" + price + ", amount=" + amount + ", tPrice="
				+ tPrice + "]";
	}
}

3. ShoppingUI 클래스

- 콘솔 창에 출력되는 UI를 모아 놓음.

package online;
import java.util.*;

public class ShoppingUI {
	Scanner sc = new Scanner(System.in);
	ShoppingManager sm = ShoppingManager.getInstance();
	
	int sel, sel2, sel3;
	public void totalService() {
		while(true) {
			System.out.println("*********당신은 누구십니까?*********");
			System.out.println("1. 판매자");
			System.out.println("2. 구매자");
			System.out.println("0. 종료하기");
			System.out.print("입력 : ");
			int sel = sc.nextInt();
			if(sel==1) {
				sellerService();
			}
			else if(sel==2) {
				buyerService();
			}
			else if(sel==0) {
				quit();
			}
		}
	}
	
	public void quit() {
		System.out.println("*********종료되었습니다.*********");
		System.exit(0);
	}
	
	public void sellerService() {
		do {
			System.out.println("*********판매자 관리시스템입니다.*********");
			System.out.println("***********기능을 선택하세요.***********");
			System.out.println("1. 등록");
			System.out.println("2. 삭제");
			System.out.println("3. 목록");
			System.out.println("4. 검색");
			System.out.println("0. 뒤로가기");
			System.out.println("************************************");
			
			sel2 = sc.nextInt();
			
			if(sel2==1) {
				//등록
				System.out.println("************************************");
				System.out.println("아래 사항을 입력해 주세요.");
				System.out.print("상품번호 : ");
				String no = sc.next();
				
				System.out.print("상품정보 : ");
				String info = sc.next();
				
				System.out.print("상품가격 : ");
				int price = sc.nextInt();
				
				System.out.print("상품수량 : ");
				int amount = sc.nextInt();
				
				System.out.print("배송비용 : ");
				int tPrice = sc.nextInt();
				System.out.println("************************************");
				
				sm.add(no, info, price, amount, tPrice);
			}
			
			else if(sel2==2) {
				//삭제
				System.out.println("************************************");
				System.out.println("삭제할 상품번호를 입력하세요.");
				sc.nextLine();
				String no = sc.nextLine();
				System.out.println("************************************");
				sm.remove(no);
			}
			
			else if(sel2==3) {
				//목록
				sm.list();
			}
			
			else if(sel2==4) {
				//검색
				System.out.println("************************************");
				System.out.println("검색할 상품번호를 입력하세요.");
				String title = sc.nextLine();
				System.out.println("************************************");
				sm.search(title);
			}
			else if(sel2==0) {
				totalService();
			}
		
		}while(sel2!=0);
	}
	
	public void buyerService() {
		do {
			System.out.println("************************************");
			System.out.println("***********구매 시스템입니다.************");
			System.out.println("1. 구매하기");
			System.out.println("0. 뒤로가기");
			System.out.println("************************************");
			sel3 = sc.nextInt();
			
			if(sel3==1) {
				System.out.println("************************************");
				System.out.print("구매할 상품정보를 입력하세요 : ");
				sc.nextLine();
				String title = sc.nextLine();
				sm.search(title);
				
				System.out.print("구매할 갯수를 입력하세요 : ");
				int num = sc.nextInt();
				
				sm.update(title, num);
				
			}
			if(sel3==0) {
				totalService();
			}
		}while(sel3!=0);
	}
}

4. ShoppingManager 클래스

- 각 기능들을 Manager 클래스에 넣어 관리

- 싱글턴패턴 구현

- 등록, 삭제, 목록, 검색, 업데이트 구현

package online;

public class ShoppingManager {
	private static ShoppingManager instance;
	public static ShoppingManager getInstance() {
        if( instance == null )
            instance = new ShoppingManager();
        return instance;
    }
	
	private Shopping[] sh;
	private int MAX_SIZE = 100;
	private int idx;
	
	private ShoppingManager() {
		sh = new Shopping[MAX_SIZE];
		idx= 0;
	}
	
	
	
	//등록
	public void add(String no, String title, int price, int amount, int tPrice) {
		Shopping s = new Shopping();
		s.setNo(no);
		s.setTitle(title);
		s.setPrice(tPrice);
		s.setAmount(amount);
		s.settPrice(tPrice);
		
		sh[idx++] = s;
	}
	
	//삭제
	public void remove(String no) {
		for(int i=0;i<idx;i++) {
			if(sh[i].getNo().equals(no)) {
				for(;i<idx;i++) {
					sh[i] = sh[i+1];
				}
				idx--;
			}
		}
	}
		
	//목록
	public void list() {
		System.out.println("************************************");
		for(int i=0;i<idx;i++)
			System.out.println(sh[i]);
		System.out.println("************************************");
	}
		
	//검색
	public void search(String title) {
		for(int i=0;i<idx;i++) {
			if(sh[i].getTitle().equals(title)) {
				System.out.println(sh[i]);
			}
		}
		
	}
	
	//수량 업데이트
	public void update(String title, int num) {
		for(int i=0;i<idx;i++) {
			if(sh[i].getTitle().equals(title)) {
				
				//sh배열에서 Amount가 0이거나 Amout에서 num을 뺀 값이 음수면 재고가 없다 출력
				if((sh[i].getAmount() == 0) || (sh[i].getAmount()-num)<0) {
					System.out.println("재고가 없습니다.");
				}
				else {
					sh[i].setAmount((sh[i].getAmount()-num));
					System.out.println("구매가 완료되었습니다.");
				}
			}
		}
	}
}
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기