20130522 HCI 과제 완료

학교 실습/HCI 2013. 5. 22. 20:03

/*

 sell 추가

 Buyer 클래스에 sell(Product p) 메서드를 추가하라

 */

package polyargumenttest2;

class Product {

    int price;   // 제품의 가격

    int bonusPoint;  // 제품구매 시 제공하는 보너스점수

    Product(int price) {

        this.price = price;

        bonusPoint = (int) (price / 10.0);

    }

    Product() {

        price = 0;

        bonusPoint = 0;

    }

}

////////////////////////////////////////////////////////상품 추가 부분/////////////////////////////////////////////////////////////////////

// iPad 추가

class iPad extends Product {


    iPad() {

        super(90);

    }


    public String toString() {

        return "iPad";

    }

}

// Tv 추가

class Tv extends Product {


    Tv() {

        super(100);

    }


    public String toString() {

        return "Tv";

    }

}

// Computer 추가

class Computer extends Product {


    Computer() {

        super(200);

    }


    public String toString() {

        return "Computer";

    }

}

// Audio 추가

class Audio extends Product {


    Audio() {

        super(50);

    }


    public String toString() {

        return "Audio";

    }

}

//////////////////////////////////////////////////////////////////////////////////////////////////////////


class Buyer {   // 고객, 물건을 사는 사람


    int money = 1000; // 소유금액

    int bonusPoint = 0; // 보너스점수

    //ArrayList al = new ArrayList();

    Product[] item = new Product[10]; // 구입한 제품을 저장하기 위한 배열

    int i = 0;   // Product배열에 사용될 카운터


    void buy(Product p) {

        if (money < p.price) {

            System.out.println("잔액이 부족하여 물건을 살수 없습니다.");

            return;

        }

        money -= p.price;         // 가진 돈에서 구입한 제품의 가격을 뺀다.

        bonusPoint += p.bonusPoint; // 제품의 보너스 점수를 추가한다.

        item[i++] = p;          // 제품을 Product[] item에 저장한다.

        System.out.println(p + "을/를 구입하셨습니다.");

    }

    // 판매를 진행하되, 물건을 구입한 적이 없으면 판매를 할 수 없음, 그 조건을 반드시 사용하도록 해야됨


    void sell(Product p) {

        int sellcount = 0;

        // 배열 안에서 검색

        System.out.println("[판매] : "+p+" 를 판매합니다. 실제 물품을 가지고 있는지 확인합니다");

        // 배열에서 검색 진행

        for (int i = 0; i < item.length; i++) {

            // 배열에 해당 상품명이 있을 경우

            if (item[i] == p) {

                money += p.price; // 가진 돈에서 구입한 제품의 가격을 더함

                bonusPoint -= p.bonusPoint;   // 제품의 보너스 점수를 뺌

                //System.out.println("해당 상품이 발견된 배열의 위치 : " + i);

                System.out.println("[승인] : 물품 보유를 확인하였습니다.");

                System.out.println("[알림] : "+p + "를 팔았다! 해당 금액은 " + p.price + ", 금액을 환불받아 잔액은 " + money + ", 포인트는 차감되어 다음과 같습니다 : " + bonusPoint);

                sellcount++;

                // 배열 재정렬 진행 (item 배열), i는 상품이 저장된 인덱스를 의미함, 기존 배열 위치에 있던 녀석을 다음 인덱스의 녀석으로 덮어버리고 마지막에 null 처리

                for (int j = i + 1; j <= item.length; j++) {

                    if (item[j] != null) {

                        item[j - 1] = item[j];

                    } else {

                        item[j - 1] = null;

                        break;

                    }

                }

            }

        }

        //위 검색이 끝나고, 판매한 적이 없거나 구매하지 않은 물품일 경우 다음 메시지 출력

        if (sellcount == 0) {

            System.out.println("[오류] : 해당 물품을 구매하지 않았으므로 팔 수 없습니다. 판매룰 중단합니다.");

        }

    }


    void summary() {      // 구매한 물품에 대한 정보를 요약해서 보여 준다.

        int sum = 0;    // 구입한 물품의 가격합계

        String itemList = "";  // 구입한 물품목록 초기화

        // 반복문을 이용해서 구입한 물품의 총 가격과 목록을 만든다.

        // 판매가 아닌 구매의 경우

        for (int i = 0; i < item.length; i++) {

            if (item[i] == null) {

                break;

            }

            sum += item[i].price;

            itemList += item[i] + ", ";

        }

        System.out.println("");

        System.out.println("[상태 확인] - 보유물품 : " + itemList + " 총 물건 가격 : " + sum + ", 잔액 : " + money + " , 보너스 포인트 : " + bonusPoint);

        System.out.println("");

    }

}


class PolyArgumentTest2 {


    public static void main(String args[]) {

        // 바이어 생성

        Buyer b = new Buyer();

        // 제품 생성 부분

        Tv tv = new Tv();

        Computer com = new Computer();

        Audio audio = new Audio();

        iPad ipad = new iPad();

        // 물건 구매 진행

        b.buy(tv);

        b.buy(com);

        b.buy(audio);

        // 내역 확인 및 잔액 포인트 누계

        b.summary();

        // 판매부분

        b.sell(tv);

        b.sell(ipad);

        // 내역 확인 및 잔액 포인트 누계

        b.summary();

    }

}

'학교 실습 > HCI' 카테고리의 다른 글

20130527  (0) 2013.05.27
20130522 HCI  (0) 2013.05.22
130513  (0) 2013.05.13
20130508  (0) 2013.05.08
20130507  (0) 2013.05.07