# data[].attributes.body
n명 중에 m명씩 조합 만들기
-중복되지 않게 뽑기

Q. m명씩 k개 만들고 남는 인원(<m) 처리?

# data[].attributes.body
학생의 전체 평균점수에 대한 학점을 출력하는 프로그램

학생의 성적이 90점 이상이면 A, 80점이상이면 B, 70점이상이면 C, 50점이상이면 D 그리고 미만이면 F이다. 평균을 구한 다음 학점을 구하시오

# data[].attributes.body
while (true) 무한 반복문이 재미있었어서 파일내 한글이 깨져나오는듯 하지만, while반복안에서 입력했을때 속도가 증감 하는 예제입니다.
Q. while 구문 안에서 특정 글자나 숫자를 입력했을때 속도를 증가시키고, 마찬가지로 특정 글자나 숫자를 입력 속도를 감소시켜라.
또한 특정한 글자나 숫자를 통해 while구문을 종료시킨다.

# data[].attributes.body
0과 1이 랜덤으로 들어가는 2차원 배열(9x9) 생성

ar[i][j] = 0이면 재시도, 1이면 보물 찾음
보물 찾을 때까지 반복

Q. 0과 1의 개수를 제한할 수 있는지?

# data[].attributes.headline
두 개의 정수를 입력받아서 두 수의 

# data[].attributes.body
두 개의 정수를 입력받아서 두 수의 차를 출력하는 프로그램

무조건 큰 수에서 작은 수를 뺀 결과를 출력해야한다. 예를 들어서 입력된 두 수 순서에 상관없이 12와 5면 7이 출력되어야 함. 출력 결과는 무조건 0이상이 되어야 한다.

# data[].attributes.body
-Start-
노래를 듣고 [ ] 에 들어갈 말을 쓰시오.
영상 링크: ~

1.  0:n초 "가나다라마바사 [      ]파하"
정답 입력받기
정답이면 "정답입니다", 그렇지 않으면 "오답입니다" 출력

2.
3.
(...)

정답 수: n개 오답 수: (전체 문제 수 - n)개
총점은 (정답 비율)점입니다

# data[].attributes.body
정말 작동'만' 되는 코드라 중복 라인도 많고 엄청 지저분하지만ㅠㅠ
당첨 기준, 당첨금 등 숫자 바꿔 가시면서 잘 작동하는지 확인해보시면 좋을 것 같아요. 세 개 이상 일치하는 경우가 잘 나오지 않아서, 1개나 2개가 일치할 때로 바꿔서 실행해보셔도 좋을 것 같습니다!

# data[].attributes.body
Ws1번 파일입니다.

# data[].attributes.attachment_link.readable_text
package teamws;

import java.util.Iterator;
import java.util.Random;
import java.util.Scanner;


public class ws011 {

	public static void main(String[] args) {
		Random r = new Random();
		int i = r.nextInt(100);
		//������ ���� ����
		System.out.println(i); //������ ����
		Scanner sc = new Scanner(System.in);
		int count = 0;
		while(true) 		{
		System.out.println("���� ����������");
		String x = sc.next();
		int a =0;

		if(x.equals("����")) {
			System.out.println("��������������");
			sc.close();
			break;
			}
		try {		
		    a = Integer.parseInt(x);
		    if (a <1 || a > 99) {
		    	count++;
		    	System.out.println("���� �� ����������");
				continue;
				
		    }
		    else if(i > a) {
		    	count++;
				System.out.println("������");
				continue;
			}
			if(i < a) {
				count++;
				System.out.println("����.");
				continue;
			}
			if(i == a) {
				count++;
				System.out.println("����");
				System.out.println(count+"������ ����");
				System.out.println("��������������");
				sc.close();
				return;
			}
			
		}catch(Exception e) {
			System.out.println("������ ��������.");
			continue;
		}
		
		
		sc.close();
		}

	}

}

# data[].attributes.body
김민식

# data[].attributes.attachment_link.title
4.19 전기차,하이브리드 패키지

# data[].attributes.body
정세연

# data[].attributes.body
package oracle;

public class UpdateTestApp {

public static void main(String[] args) throws DuplicatedException {
DAO dao = new CustomerDAO();

CustomerVO c1 = new CustomerVO("id01", "pwd02", "Cake");

try {
dao.insert(c1);
System.out.println(c1);
c1.setName("Flower");
c1.setPwd("pwd02");
dao.update(c1);
System.out.println(c1);
}catch(NotFoundException e) {
System.out.println(e.getMessage());
}finally {
System.out.println("END");
}

}

}

# data[].attributes.attachment_link.readable_text
package oracle;

public class UpdateTestApp {

	public static void main(String[] args) throws DuplicatedException {
		DAO dao = new CustomerDAO();
		
		CustomerVO c1 = new CustomerVO("id01", "pwd02", "Cake");

		
		try {
			dao.insert(c1);
			System.out.println(c1);
			c1.setName("Flower");
			c1.setPwd("pwd03");
			dao.update(c1);
			System.out.println(c1);
		}catch(NotFoundException e) {
			System.out.println(e.getMessage());
		}finally {
			System.out.println("END");
		}

	}

}

# data[].attributes.body
-- 01월과 12월에 입사한 직원들 중 홍씨를 조회 하시오
SELECT * FROM emp
WHERE date_format(hdate, '%m') IN (01, 12)
AND empname LIKE '홍__';

# data[].attributes.headline
-- 가장많은 월급과 가장적은 월급을 가진 사원의 월급과 이름을 출력(홍지훈)

# data[].attributes.subject
-- 가장많은 월급과 가장적은 월급을 가진 사원의 월급과 이름을 출력(홍지훈)

# data[].attributes.body
select empname,salary
from emp
where salary = (SELECT MAX(salary)FROM emp) or salary=(SELECT MIN(salary)FROM emp);

-- deptno가 10이면 서울 20이면 부산 30이면 대구 40이면 대전을 출력
SELECT  empname,DEPTNO,
CASE
WHEN deptno=10 THEN '서울'
WHEN deptno=20  THEN '부산'
WHEN deptno=30 THEN '대구'
ELSE '대전'

END AS '부서지역'
FROM emp;

# data[].attributes.body
-- 이름이 '자'로 끝나거나 두 번째 글자가 '말'인 직원들의 연봉 평균보다 연봉이 적은 직원들의 이름과 연봉 출력하기

WITH temp(avgsalary)
AS
(SELECT AVG(salary) FROM emp WHERE empname LIKE '__자'
OR empname LIKE '_말_')
SELECT empname, salary FROM emp
WHERE salary < (SELECT avgsalary FROM temp);

# data[].attributes.body
1) LottoTestApp: while(true)형 cmd
2) UIApp
테스트해 보시고 수정사항 있으면 피드백 주세요 :)

# data[].attributes.headline
로또 객체지향 최종 수정본

# data[].attributes.subject
로또 객체지향 최종 수정본

# data[].attributes.body
어제 파일과 살짝 다른 부분이 있습니다!

# data[].attributes.attachment_link.title
실습평가1_6조 문설연

# data[].attributes.body
1번 문항의 경우 위의 zip파일과 본 md파일 모두 업로드했고,
2번 문항의 경우 Employee와 Animal DAO 코드를 작성한 날 파일을 압축해서 올렸으니 필요하시면 참고하세요 :)

# data[].attributes.attachment_link.readable_text
## 로또 추첨기

#### 6조(김민식, 문설연, 정세연, 홍지훈)

___

#### 이 추첨기는...

1. 1~45 중 여섯 개의 숫자를 중복되지 않게 랜덤으로 발생시킵니다.

2. 1을 반복한 다음, 1과 2에서 생성된 숫자들을 비교합니다.
3. 로또 복권(ticket) 한 장은 1,000원입니다.
   - 복권을 구매하려면 우선 cash를 충전해야 합니다. 
   - 충전 금액이 0 이하일 경우, 혹은 숫자가 아니라 문자를 입력했을 경우 각각 상황을 설명하는 에러 메시지를 출력합니다.
   - 충전 금액이 1,000원 미만일 경우, 복권 한 장 가격을 재상기시키는 메시지를 출력합니다.
   - 1회 최대 충전 금액은 10만원입니다. 10만 초과의 수를 입력할 경우 에러 메시지를 출력합니다.
4. 복권을 구입하고 남은 잔액은 자동으로 계산됩니다.
5. 소지한 복권 개수가 0이 될 때까지 반복해서 draw할 수 있으며, 당첨금은 누적 계산됩니다.
   - 복권 개수가 0인 상태에서 draw를 시도할 경우 상황을 설명하는 메시지를 출력합니다.
6. UIApp과 LottoTestApp(cmd형)에서 각각 테스트하실 수 있습니다.



#### 제작 과정

ver1. 절차적으로 작성한 코드를 객체지향으로 변경

- Lotto Class(복권 추첨, 등수 및 당첨금 계산 메소드)와 Customer Class(복권 구입, 잔액 계산, 소지한 복권 개수 확인 메소드로 분리하여 Test Class에서 여러 개의 객체를 생성함.

  

ver2. 당첨번호와 일치하는 번호의 개수가 실제보다 +1되어 나오는 경우 해결

- 코드를 다시 점검하여 메소드들의 순서 변경. 



ver3. Array 대신 Set 사용하기

- 중복 제거 절차를 생략하여 코드를 간소화함.



ver4. Lotto Class와 Customer Class에 특정 개체(ticket)가 공통으로 필요한 상황 해결

- Abstract Class를 생성하여 개체를 선언하고 getter와 setter method를 생성한 다음 Lotto Class, Customer Class가 Abstract Class를 상속하도록 함.

  

ver5. cash가 음수가 되는 상황 해결

- 코드 점검을 통해 문제 발견: 보유 현금액이 티켓의 증가량에 해당하는 액수만큼 차감되어야 하는데 총 티켓 수에 해당하는 액수만큼 차감됨을 깨닫고 코드 수정.

  

ver5. UI 연결: 패널에 글씨 넣기

- Label을 생성하고 Alignment를 이용해 가운데 정렬.



ver6. cash를 소수 둘째 자리까지 출력하기

- cash가 double형이라 티켓을 구입한 후의 잔액이 길게 출력되어, String.format을 이용해 간단히 출력함.

# data[].attributes.attachment_link.title
객체 지향 로또 추첨기_6조