도라에몽주머니

[Java/Eclipse] Java 19 - 21일차 본문

Study/Java

[Java/Eclipse] Java 19 - 21일차

에몽쓰 2022. 10. 17. 16:49

Java

 

예제

전체 20개 품목의 상품을 관리하려고 한다.
품명, 수량, 단가, 총액에 대하여 함수를 만들어서 처리하시오. 

[처리조건]
1. main함수
public static void main(String args[]) {
// 필요한 변수와 1차원 배열 만들기
// menu()함수를 호출하여, 번호를 입력 받으시오.
// in_goods()함수를 호출하여, 품명, 수량, 단가를 입력 받으시오
// out_goods()함수를 호출하여, 품명, 수량을 입력 받으시오
// compute()함수를 호출하여 총액을 저장하시오
// output_list() 함수를 호출하여 결과를 아래와 같이 출력하시오
}
2. compute()함수에서 계산된 결과를 저장하시오
(계산방법 : 총액 = 수량 * 단가)
3. 한번 입고한 품명은 다시 입고하지 않는다. (간단히 연습하기 위해서)

<실행 결과>
상품 관리 프로그램
**************
1. 입고
2. 출고
3. 목록
4. 종료
**************
메뉴 :

-- 1번인 경우
품명 : 사과
수량 : 10
단가 : 1200 

-- 2번인 경우
품명 : 사과
수량 : 5

-- 3번인 경우
품명   수량 단가(원) 총액(원)
사과   5   1200    6000
바나나  5   5000   25000
배    20   3000   60000

import java.util.Scanner;

public class Prac9 {
	static int menu() {
		Scanner sc = new Scanner(System.in);
		int menu_num = 0;

		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("*************");
		System.out.print("메뉴 : ");
		menu_num = sc.nextInt();

		return menu_num;
	}

	// 입고
	static int in_goods(int cnt, String[] goods_name, int[] num, int[] price) {
		Scanner sc = new Scanner(System.in);
		if (cnt < 20) {
			System.out.print("품명 : ");
			goods_name[cnt] = sc.next();
			System.out.print("수량 : ");
			num[cnt] = sc.nextInt();
			System.out.print("단가 : ");
			price[cnt] = sc.nextInt();
			cnt++; // 품목 갯수 1증가
		} else {
			System.out.println("품목은 20개까지만 저장할 수 있습니다.");
		}
		return cnt;
	}

	// 출고
	static void out_goods(int cnt, String[] goods_name, int[] num) {
		Scanner sc = new Scanner(System.in);
		String name = " ";
		int amount = 0;
		int flag = 0; // 플래그 변수 : 현재 상태를 저장하는 용도
						// 0 : 없음, 1: 있음

		System.out.print("품명 : ");
		name = sc.next();
		System.out.print("수량 : ");
		amount = sc.nextInt();

		// 저장되어있는 품목인 지 검사
		for (int i = 0; i < cnt; i++) {
			if (name.equals(goods_name[i])) {
				if ((num[i] - amount) >= 0) {
					num[i] = num[i] - amount;
				} else {
					System.out.println("재고량이 부족합니다.");
				}
				flag = 1;
			}
		}

		if (flag == 0) {
			System.out.println("품명이 존재하지 않습니다.");
		}
	}

	// 총액 = 수량 * 단가
	static void compute(int cnt, int[] num, int[] price, int[] sum) {
		for (int i = 0; i < cnt; i++) {
			sum[i] = num[i] * price[i];
		}
	}

	static void output_list(int cnt, String[] goods_name, int[] num, 
							int[] price, int[] sum) {
		System.out.println("품명\t수량\t단가(원)\t총액(원)  ");
		
		for (int i = 0; i < cnt; i++) {			
			System.out.printf("%s\t%s\t%s\t%s\n", 
					goods_name[i], num[i], price[i], sum[i]);
		}
		
		System.out.println();
	}

	public static void main(String[] args) {
		// 선언
		String[] goods_name = new String[20]; // 품명
		int[] num = new int[20]; // 수량
		int[] price = new int[20]; // 단가
		int[] sum = new int[20]; // 총액
		int menu_num = 0; // 메뉴 번호
		int cnt = 0; // 입고된 품목의 갯수 저장

		while (true) {
			menu_num = menu();

			System.out.println();
			switch (menu_num) {
			case 1: // 입고
				cnt = in_goods(cnt, goods_name, num, price);
				compute(cnt, num, price, sum);
				break;
			case 2: // 출고
				out_goods(cnt, goods_name, num);
				compute(cnt, num, price, sum);
				break;
			case 3: // 목록
				output_list(cnt, goods_name, num, price, sum);
				break;
			case 4: // 종료
				System.out.println("프로그램 종료");
				System.exit(0);
			}
			System.out.println();
		}
	}
}

 

 

클래스(Class)

: 객체를 정의하는 틀, 설계도. 객체의 모든 속성과 기능이 정의되어 있다.

 

 

예제

Java 12일차에서의 Prac10.java 코드를 활용해  PlusGame 클래스를 작성하시오.

import java.util.Scanner;

class PlusGame {
	int min=10, max=99, score, count, result, num1, num2;
	String con="";
	
	void setRandNum() {
		num1 = (int)(Math.random()*(max - min + 1) + min);
		num2 = (int)(Math.random()*(max - min + 1) + min);
	}
	
	void question(int i) {
		Scanner sc = new Scanner(System.in);
		System.out.printf("[%d] %d + %d = ", i, num1, num2);
		result = sc.nextInt();
	}
	
	void check(int i) {
		
		if(result == num1+num2) {
			System.out.println("딩동뎅");
			score += 20;
			count++;
		} 
		else {
			System.out.println("틀렷따..");
			question(i);
			
			if(result == num1+num2) {
				System.out.println("딩동뎅");
				score += 20;
				count++;
			} else System.out.println("틀렷따.. 정답 : " + (num1+num2));
		}
	}
	
	void output() {
		System.out.printf("당신은 총 %d문제를 맞추셔서 %d점입니다.\n", count, score);
	}
	
	void stop() {
		Scanner sc = new Scanner(System.in);
		
		do {
			System.out.print("continue(y/n) : ");
			con = sc.next();
		} while (!(con.equals("y") || con.equals("n")));

		if (con.equals("n")) {
			System.out.println("프로그램을 종료합니다.");
			System.exit(0);
		}
	}
	
	void setResult(int c, int s) {
		count = c;
		score = s;
	}
	
}


public class Prac4 {
	public static void main(String[] args) {
		PlusGame game = new PlusGame();
		
		while(true) {
			game.setResult(0, 0);
			for(int i=1; i<=5; i++) {
				game.setRandNum();
				game.question(i);
				game.check(i);
			}
			System.out.println();
			game.output();
			System.out.println();
			game.stop();
			
		}
	}
}

'Study > Java' 카테고리의 다른 글

[Java/Eclipse] Java 23일차  (0) 2022.10.18
[Java/Eclipse] Java 22일차  (0) 2022.10.17
[Java/Eclipse] Java 18일차  (0) 2022.10.11
[Java/Eclipse] Java 17일차  (0) 2022.10.07
[Java/Eclipse] Java 15, 16일차  (0) 2022.10.06