문제) 성적 처리 -> ArrayList 컬렉션, RecordDTO 클래스 이용. 메뉴 구성 추가

여러명의 이름, 국어, 영어, 수학 입력 받아서 총점, 평균 계산해서 출력. 출력시 이름 오름차순 정렬해서 출력.


실행 예)

======== 성적 처리 ==============

1. 성적 입력

2. 성적 전체 출력

3. 이름 검색 출력

4. 성적 수정

5. 성적 삭제

선택(1~5, -1 종료)->1


1번 학생 성적 입력(이름 국어 영어 수학)?park 80 75 60

2번 학생 성적 입력(이름 국어 영어 수학)?hong 100 90 80

3번 학생 성적 입력(이름 국어 영어 수학)?kim 80 85 80

4번 학생 성적 입력(이름 국어 영어 수학)?-1


======== 성적 처리 ==============

1. 성적 입력

2. 성적 전체 출력

3. 이름 검색 출력

4. 성적 수정

5. 성적 삭제

선택(1~5, -1 종료)->2


 이름   국어  영어  수학  총점  평균

 hong    100   90    80    XXX  XXX.X

 kim      80   85    80    XXX  XXX.X

 park     80   75    60    XXX  XXX.X



======== 성적 처리 ==============

1. 성적 입력

2. 성적 전체 출력

3. 이름 검색 출력

4. 성적 수정

5. 성적 삭제

선택(1~5, -1 종료)->3

검색하려는 이름?kim

 이름   국어  영어  수학  총점  평균

 kim      80   85    80    XXX  XXX.X



======== 성적 처리 ==============

1. 성적 입력

2. 성적 전체 출력

3. 이름 검색 출력

4. 성적 수정

5. 성적 삭제

선택(1~5, -1 종료)->3

검색하려는 이름?choi

검색 결과가 없습니다.


======== 성적 처리 ==============

1. 성적 입력

2. 성적 전체 출력

3. 이름 검색 출력

4. 성적 수정

5. 성적 삭제

선택(1~5, -1 종료)->-1


프로그램이 종료되었습니다.


//ScoreDTO.java

//Process.java

//Class70.java








이름과 전화번호를 저장할 수 있는 자료형 만들기.

MemberDTO 클래스, ArrayList 컬렉션


출력시 이름 오름차순 출력


=======  회원 관리  ========

1. 회원 입력

2. 회원 전체 출력

3. 이름 검색 출력


실행 예)

이름 전화번호(1)?홍길동 010-123-1234

이름 전화번호(2)?김길동 010-222-3333


--------------------

이름   전화번호

--------------------

홍길동 010-123-1234

김길동 010-222-3333

--------------------


//문제임 알아서 풀어보세용~ㅋㅋ










ScoreDAO, ScoreDTO 클래스. 

ArrayList 컬렉션


======== 성적 처리 ==============

1. 성적 입력

2. 성적 전체 출력

3. 이름 검색 출력

4. 성적 수정

5. 성적 삭제

선택(1~5, -1 종료)->3



//ScoreDTO.java -> 자료 처리 전용 클래스

//ScoreDAO.java -> 데이터 엑세스 전용 클래스

//Process2.java -> 메뉴 액션 처리 전용 클래스

//Class72.java -> main() 메소드 추가. 메뉴 출력








Map 인터페이스를 구현한 TreeMap 클래스


1. 컬렉션 종류

◆ Collection 인터페이스

- Value의 집합체

- 특정 Value를 얻기 위해서는 검색 과정 필요.


◆ Map 인터페이스

- Key, Value의 집합체.

- Key을 제시하면 Value를 얻을 수 있는 구조.


**개별정리내용**

TreeMap에서 자동인덱스가 아닌 키값 구분 인덱스 이기때문에 단일 출력에는 편리하나,

전체출력을 할 경우 while 문을 통해 출력해야 하며, 이때 , Iterator클래스를 사용해야 함.

ex)

Iterator<Integer> it = tm.keySet().iterator(); //Integer > 키자료형

while(it.hasNext()) {

int key = it.next();

System.out.printf("%d %s %d %d %d %d %.1f %n"

, key

, tm.get(key).getName()

, tm.get(key).getKor()

, tm.get(key).getEng()

, tm.get(key).getMat()

, tm.get(key).getTotal()

, tm.get(key).getAve());

}





//Class73.java ->TreeMap에서의 선언, 자료 입력, 출력.







문제) 성적 처리 -> TreeMap 컬렉션, ScoreDTO 클래스, ScoreDAO 클래스 이용,

메뉴 구성 추가. 


여러명의 학번, 이름, 국어, 영어, 수학 입력 받아서 총점, 평균 계산해서 출력. 

학번은 Key로 사용하고, 이름~평균은 ScoreDTO 객체로 만들어서 Value로 사용한다.

실행 예)

======== 성적 처리 ==============

1. 성적 입력

2. 성적 전체 출력

3. 학번 검색 출력

4. 성적 수정

5. 성적 삭제

선택(1~5, -1 종료)->1


학생 성적 입력(학번 이름 국어 영어 수학)?1 park 80 75 60

학생 성적 입력(학번 이름 국어 영어 수학)?2 hong 100 90 80

학생 성적 입력(학번 이름 국어 영어 수학)?3 kim 80 85 80

학생 성적 입력(학번 이름 국어 영어 수학)?-1


======== 성적 처리 ==============

1. 성적 입력

2. 성적 전체 출력

3. 학번 검색 출력

4. 성적 수정

5. 성적 삭제

선택(1~5, -1 종료)->1


학생 성적 입력(학번 이름 국어 영어 수학)?3 choi 80 80 80

이미 입력된 학번입니다.

학생 성적 입력(학번 이름 국어 영어 수학)?4 choi 80 80 80

학생 성적 입력(학번 이름 국어 영어 수학)?-1


======== 성적 처리 ==============

1. 성적 입력

2. 성적 전체 출력

3. 학번 검색 출력

4. 성적 수정

5. 성적 삭제

선택(1~5, -1 종료)->2


학번 이름   국어  영어  수학  총점  평균

  1  hong    100   90    80    XXX  XXX.X

  2  kim      80   85    80    XXX  XXX.X

  3  park     80   75    60    XXX  XXX.X

  4  choi     80   80    80    XXX  XXX.X


======== 성적 처리 ==============

1. 성적 입력

2. 성적 전체 출력

3. 학번 검색 출력

4. 성적 수정

5. 성적 삭제

선택(1~5, -1 종료)->3

검색하려는 학번?2

학번 이름   국어  영어  수학  총점  평균

  2  kim      80   85    80    XXX  XXX.X


======== 성적 처리 ==============

1. 성적 입력

2. 성적 전체 출력

3. 학번 검색 출력

4. 성적 수정

5. 성적 삭제

선택(1~5, -1 종료)->3

검색하려는 학번?5

검색 결과가 없습니다.



======== 성적 처리 ==============

1. 성적 입력

2. 성적 전체 출력

3. 학번 검색 출력

4. 성적 수정

5. 성적 삭제

선택(1~5, -1 종료)->-1


프로그램이 종료되었습니다.




//ScoreDTO.java -> 동일(학번은 TreeMap의 키로만 사용되므로 DTO에는 학번이 없다)

//ScoreDAO3.java -> 변경(자료저장공간이 ArrayList 에서 TreeMap으로 변경되므로)

//Process3.java -> 변경(자료저장공간이 ArrayList 에서 TreeMap으로 변경되므로 관련 액션 수정)

//Class74.java -> 변경(이름 검색 출력을 학번 검색 출력으로 수정





JAVA SE 과목 끝.


예외처리 배우지 않았으므로 ORACLE 과목 종료되면 배워야함.


WRITTEN BY
빨강꼬마

,

개별정리 내용


* Comparator 인터페이스(오버라이딩 필수) 개별 공부 

* 인터페이스를 new 키워드를 사용하여 객체를 생성한다는 것은 익명클래스로 처리하여 메소드를 오버라이딩하여 사용하겠다라는 의미







컬렉션(collection) - 중요 항목


1. 자료구조를 표현하는 방법.

2. 자료구조

-선형구조: 배열, 스택, 큐

-비선형구조: 트리, 그래프


배열 - 자료가 연속적으로 모여져있는 상태

스택 - 자료를 입력하는 입구와 출력하는 출구가 같은 상태. 선입후출 특성을 갖는 자료 구조. FILO

큐 - 자료를 입력하는 입구와 출력하는 출구가 반대 상태. 선입선출 특성을 갖는 자료 구조. FIFO


3. 컬렉션의 종류 (interface)

java.util.Collection - 순서없는 단순한 요소들의 집합(최상위 인터페이스)

java.util.Set - 중복을 허용하지 않는 단순한 요소들의 집합

java.util.List - 순차적 나열, 순서 지정이 가능한 단순한 요소들의 집합

java.util.SortedSet - 값들이 정렬된 Set


java.util.Map - Key와 Value로 구성된 구조(최상위 인터페이스)

java.util.SortedMap - Key가 정렬된 Map



4. Key, Value


Collection 구조-------------------------------------------

Value - 자료구조에 저장되는 데이터(값) 자신. 자동 인덱스

Key - Map 구조에서 사용되는 데이터(값)에 대한 사용자 정의 인덱스.


Value        index->Key의 역할. 자동인덱스

------       -----

홍길동         0

김길동         1  ->자료를 탐색할 때 인덱스를 사용해서 탐색.

박길동         2

...           ...



Map구조---------------------------------------------------

Value         Key ->사용자 정의 인덱스

------       -----

홍길동        hong

김길동        kim  ->자료를 탐색할 때 Key를 사용해서 탐색.

박길동        park

...           ...







ArrayList 클래스


1. Collection 인터페이스를 상속 받은 List 인터페이스를 구현한 클래스.

2. 배열과 비슷한 특성을 가지면서 컬렉션의 특성(크기 지정 필요없음)을 가지고 있다.

3. 형태

-선언

ArrayList 변수 = new ArrayList(); //크기지정 불필요.


-입력

변수.add(값);

변수.add(값);

...


-출력 ->배열과 컬렉션만 지원하는 전용 for문 사용.(확장 for문) 단, 일반for문도 사용 가능.

for(변수의자료형 포문내에서사용할객체명 : 변수) {  // (데이터의자료형 임의의변수명 : 데이터)

System.out.println(obj);

}



//Class60.java -> 배열사용

//Class61.java -> 컬렉션사용








제네릭 표현을 사용한 컬렉션


1. 컬렉션에서 사용할 데이터의 자료형을 한정시키는 것.

2. 메소드나 멤버 변수의 기능은 같지만 그것을 필요로 하는 곳에 따라 넘겨받는 결과의 자료형이 서로 다를 때 틀이 되는 하나의 메소드나 멤버 변수를 정의해놓고 호출하는 쪽에서 요구하는 자료형의 값을 갖도록 하는 것.


//Class62.java -> 제네릭 사용전

//Class63.java -> 제네릭 사용후








제네릭(Generic) 지원 클래스 만들기


1. 제네릭을 지원하기 위해서는 데이터형 인자를 클래스 정의시에 지정해야 하며, 일반적으로 데이터형 인자는 1글자의 영문 대문자로 인자의 수만큼 사용한다.


2. 형태

접근지정자 class 클래스명<데이터형인자, > {


}



//Class64.java







문제) 이름과 전화번호를 저장할 수 있는 자료형 만들기. 컬렉션(ArrayList), Member클래스 이용.

실행 예)

이름 전화번호(1)? hong 111-1111

이름 전화번호(2)? kim 222-2222

이름 전화번호(3)? -1 -> 입력 종료

이름    전화번호

----------------

hong    111-1111

kim     222-2222

park    333-3333

----------------


//MemberDTO.java

//Class65.java








문제) 외부에서 임의의 여러개의 숫자를 입력받고 정렬해서 출력. 컬렉션 이용

실행 예)

숫자 입력(1)?

숫자 입력(2)?

숫자 입력(3)?

숫자 입력(4)?

숫자 입력(5)? -1 > 입력끝 지정 필요

원본:

정렬:


//Class66.java









문제)여러명의 성적을 입력 받고, 점수가 높은 순으로 등수 부여해서 출력. 컬렉션, RecordDTO 이용.

실행 예)

이름 점수(1)?kim 80

이름 점수(2)?park 90

이름 점수(3)?choi 100

이름 점수(4)?hong 70

이름 점수(5)?kang 60->-1 입력끝 지정 필요

-----------------------

1등 choi 100

2등 park 90

3등 kim 80

4등 hong 70

5등 kang 60


//RecordDTO.java

//Class67.java









문제) 여러명의 국,영,수 점수를 입력 받아서 총점, 평균, 판정 결과 출력.

컬렉션, DTO 클래스, Collections.sort(), Comparator 이용.

판정 기준은 

합격 -> 과목별로 40점 이상이면서, 평균이 60점 이상.

과락 -> 과목중 40점 미만이 있고, 평균이 60이상.

불합격 -> 평균이 60점 미만

평균이 60점 이상 -> 합격 또는 과락 -> 국영수 점수가 모두 40점 이상인지 확인.

평균이 60점 이하 -> 불합격

정렬 기준은 총점 기준으로 내림차순 정렬.

실행 예)

성적 입력(이름 국어 영어 수학)?hong 100 100 100

성적 입력(이름 국어 영어 수학)?kim 80 90 80

성적 입력(이름 국어 영어 수학)?-1 -> 입력끝 지정 필요

------------------------------------------

이름  국어  영어  수학  총점   평균   판정

------------------------------------------

hong   100   100   100   300  100.0   합격

kim     80    90    80    ..    ..    합격

------------------------------------------


//ScoreDTO.java

//Class68.java








문제) 여러명의 국,영,수 점수를 입력 받아서 총점, 평균, 판정 결과 출력.

컬렉션, DTO 클래스, Collections.sort(), Comparator 이용.


판정 기준은 

합격 -> 과목별로 40점 이상이면서, 평균이 60점 이상.

과락 -> 과목중 40점 미만이 있고, 평균이 60이상.

불합격 -> 평균이 60점 미만


평균이 60점 이상 -> 합격 또는 과락 -> 국영수 점수가 모두 40점 이상인지 확인.

평균이 60점 이하 -> 불합격


정렬없이 등수를 판별해서 출력.


실행 예)

성적 입력(이름 국어 영어 수학)?hong 100 100 100

성적 입력(이름 국어 영어 수학)?kim 80 90 80

성적 입력(이름 국어 영어 수학)?-1 -> 입력끝 지정 필요


------------------------------------------------

이름  국어  영어  수학  총점   평균   판정  등수

------------------------------------------------

hong   100   100   100   300  100.0   합격   2등

kim     80    90    80    ..    ..    합격   1등

------------------------------------------------


//ScoreDTO.java

//Class69.java



WRITTEN BY
빨강꼬마

,