반응형
츄르사려고 코딩하는 코집사입니다.
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("구매가 완료되었습니다.");
}
}
}
}
}
반응형
'Language > Java' 카테고리의 다른 글
자바(Java) Queue 클래스 및 예제 (0) | 2021.02.07 |
---|---|
자바(Java) 이론/필기 문제 - 자바(Java) 마스터 가자! (0) | 2021.01.30 |
자바(Java)로 코딩테스트 할 때 활용할 API (0) | 2021.01.26 |
자바(Java) 상속과 다형성, 오버로드, 오버라이드 (0) | 2021.01.26 |
자바(Java) 도서 관리 프로그램 최종 (0) | 2021.01.22 |
자바(Java) 도서 관리 프로그램 - (2) (0) | 2021.01.21 |
자바(Java) 도서 관리 프로그램 - (1) (0) | 2021.01.21 |
자바(Java) 중복없는 로또 번호 프로그램 만들기 (0) | 2021.01.20 |
최근댓글