Project

JAVA - 제품 관리 프로그램

코너(Corner) 2020. 11. 19.
반응형

자바 제품 관리 프로그램

 

 

상속과 다형성을 이용하여
제품을 관리하는 소스 구현

 

비지니스 로직을 통해 제품의 판매 수량과 총 매출액 을 파악한다.


 

판매량은 누적 시키며, 판매한 제품의 단가와 그 판매 수량 및 총 가격등을 출력한다.

 

중요 포인트

제품에는 화장품, 가전제품, 사무용품이 있다.

화장품의 품명은 립스틱(2000), 비누(500), 샴프(1000)가 있고 가전제품에는 면도기(1000), 선풍기(50000), 전기담요(300000)가 있다.

사무용품에는 A4용지(10000), 노트(20000), 펜(500)이 있다.

원가는 ( ) 안에 가격이다. 판매가는 원가에다 화장품은 50% 추가 금액이고 가전제품은 원가에다 30%이고
가전제품은 원가에 20%로 책정하였다.

프로그램에서 처리할 수 없는 입력을 하게 되면 프로그램은 중지되지 않고 다시 입력하게 끔 유도하도록
예외처리를 하였다.

 


 

 

Main Class

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		Manager m1 = new Manager();
		int act;
		while(true) {
			try {
			do {
			System.out.println("-------------");
			System.out.println("제품관리 프로그램");
			System.out.println("-------------");
			System.out.print("1.입력, 2.출력, 3.종료\n >");
			act = sc.nextInt();
			} while ( act > 3 || act < 1);
			
			switch (act) {
			case 1: 
				System.out.print("1.화장품 | 2. 가전제품 | 3. 사무용품 \n >");
				act = sc.nextInt();
				if(act == 1 ) {
					System.out.print("1. Soap | 2. Shampoo | 3.Lipstick\n>");
					act = sc.nextInt();
					if(act == 1 ) {
						m1.makeUpInput(new Soap()); 
						break;
					} else if ( act == 2 ) {
						m1.makeUpInput(new Shampoo());
						break;
					} else if ( act == 3 ) {
						m1.makeUpInput(new Lipstic());
						break;
					} else {continue;}
				} else if ( act == 2 ) {
					System.out.print("1. Shave | 2. Fan | 3. electronic Blanket\n >");
					act = sc.nextInt();
					if ( act == 1 ) {
						m1.homeProduct(new Shave());
						break;
					} else if ( act == 2 ) {
						m1.homeProduct(new Fan());
						break;
					} else if ( act == 3 ) {
						m1.homeProduct(new Electronic());
						break;
					} else {continue;}
				} else if (act == 3 ) {
					System.out.print("1. A4 Paper | 2. Note | 3. Pen \n > ");
					act = sc.nextInt();
					if( act == 1 ) {
						m1.officeProduct(new AfourPaper());
						break;
					} else if ( act == 2 ) {
						m1.officeProduct(new Note());
						break;
					} else if ( act == 3 ) {
						m1.officeProduct(new Pen());
						break;
					} else {continue;}
				} else {}
			case 2: continue;
			case 3: System.out.println("\n\n\n시스템 종료!\n\n"); sc.close(); System.exit(0); 
					}
				}catch (Exception e) {
					System.out.println(e.toString());
				}
			}
//		m1.showAll();
		
	}

}

 

PRODUCT - MAKEUP CLASS

// 부모 class
public class MakeupProduct {
	double price;
	int mcnt = 0; // 개수
	
	public MakeupProduct(){}
	public MakeupProduct(double price) {this.price=((price+(price*0.5)));}
	
}

class Lipstic extends MakeupProduct{
	public Lipstic() {super(2000);}
	
	public String toString() {return "립스틱";}
}
class Soap extends MakeupProduct{
	public Soap() {super(500);}
	@Override
	public String toString() {return "비누";}
}
class Shampoo extends MakeupProduct{
	public Shampoo() {super(1000);}
	@Override
	public String toString() {return "샴푸";}
}

PRODUCT - OFFICE CLASS

public class OfficeProduct {
	double price;
	int ocnt = 0;
	public OfficeProduct() {}
	public OfficeProduct(double price){this.price=((price+(price*0.5)));}
	
}
class AfourPaper extends OfficeProduct{
	AfourPaper(){super(10000);}
	@Override
	public String toString() {return "A4용지";}
}
class Note extends OfficeProduct{
	public Note() {super(20000);}
	@Override
	public String toString() {return "노트";}
}
class Pen extends OfficeProduct{
	public Pen() {super(500);}
	@Override
	public String toString() {return "펜";}
}

 

PRODUCT - HOME CLASS

// 부모 클래스
public class HomeProduct {
	double price;
	int hcnt; // 판매량을 기록할 카운트
	public HomeProduct() {}
	public HomeProduct(double price) {this.price=((price+(price*0.5)));}
}

class Shave extends HomeProduct{
	public Shave() {super(1000);}
	
	@Override
	public String toString() {return "면도기";}
}

class Fan extends HomeProduct{
	public Fan() {super(50000);}
	@Override
	public String toString() {return "선풍기";}
}
class Electronic extends HomeProduct{
	public Electronic () {super(300000);}
	@Override
	public String toString() {return "전기담요";}
}

 

BUSINESS LOGIC - MANAGER CLASS

import java.net.MulticastSocket;
import java.util.Scanner;

// 매니저 관리
public class Manager {
	double money; // 총 매출액
	int allMcnt = 0, allHcnt=0, allOcnt=0;
	int Mcnt = 0, Hcnt = 0, Ocnt = 0; // 판매량 누적 ?????
	MakeupProduct[] mpa = new MakeupProduct[Mcnt];
	HomeProduct[] hpa = new HomeProduct[Hcnt];
	OfficeProduct[] opa = new OfficeProduct[Ocnt];

	Scanner sc = new Scanner(System.in);

	// 메이크업 관리 메소드
	void makeUpInput(MakeupProduct p) {
		// 판매 관리
		System.out.print("몇 개 팔았는지 입력 >");
		Mcnt = sc.nextInt();
		mpa = new MakeupProduct[Mcnt]; // 총 판매 개수가 배열 크기
		 allMcnt += Mcnt;
//		p.mcnt = cnt;  // 이렇게 해도 되고 
		int pmoney = (int)(Mcnt*p.price);
		money += (p.price*Mcnt); // 입력받은 개수만큼 * 가격 = 총 판매 누적금액
		
		int Pprice = (int)p.price; // 형변환 출력용 변수 설정 
		// 가격만큼 내 주머니로 집어넣기
//		mpa[Mcnt++] = p;
		System.out.printf("\n| 제품명 : %s | 판매가 : $%,d | 매출액 : $%,d | 판매 수량 : %d\n",p,Pprice,pmoney,Mcnt);
		System.out.printf("화장품 | 총 매출액 : $%,d | 총 판매 수량 : %d\n",(int)money,allMcnt);
	}
	void homeProduct(HomeProduct p) {
		// 판매 관리
		System.out.print("몇 개 팔았는지 입력 >");
		Hcnt = sc.nextInt();
		hpa = new HomeProduct[Hcnt]; // 총 판매 개수가 배열 크기
		allHcnt += Hcnt;
		money += (p.price*Hcnt); // 입력받은 개수만큼 * 가격 = 총 판매 누적금액
		int kmoney = (int)(Hcnt*p.price);
		int Pprice = (int)p.price;
		 // 형변환 출력용 변수 설정
		System.out.printf("\n| 제품명 : %s | 판매가 : $%,d | 매출액 : $%,d | 판매 수량 : %d\n",p,Pprice,kmoney,Hcnt);
		System.out.printf("가전제품 | 총 매출액 : $%,d | 총 판매 수량 : %d\n",(int)money,allHcnt);
		}
	void officeProduct(OfficeProduct p) {
		// 판매 관리
		System.out.print("몇 개 팔았는지 입력 >");
		Ocnt = sc.nextInt();
		opa = new OfficeProduct[Ocnt]; // 총 판매 개수가 배열 크기
//		p.mcnt = cnt;  // 이렇게 해도 되고 
		allOcnt += Ocnt;
		money += (p.price*Ocnt); // 입력받은 개수만큼 * 가격 = 총 판매 누적금액
		int Mmoney = (int)(p.price*Ocnt);
		int Pprice = (int)p.price; // 형변환 출력용 변수 설정
		System.out.printf("\n| 제품명 : %s | 판매가 : $%,d | 매출액 : $%,d | 판매 수량 : %d\n",p,Pprice,Mmoney,Ocnt);
		System.out.printf("사무용품 | 총 매출액 : $%,d | 총 판매 수량 : %d\n",(int)money,allOcnt);
	}

}

 


 

반응형

댓글