[ Toad for SQL Server. 버전별 Release ]

 

 

Posted by 농부지기
,
[ Nexacro.Grid-Cell Merge ]

1. 정의 : Grid Cell Merge는 좌/우,  위/아래  로 해서 Merge를 할 수 있다.

2. 이슈
   . Grid cell 속성에 subpress에 값이 정의 되어 있으면 setFakeMerge()함수가 정상적으로
     수행되지 않는다.

3. Merge 해제
   . 한번더 수행 하면 해지 된다.

4. Merge수행 예제

   


Posted by 농부지기
,
[ nexacro.Grid cell drag & drop ]

1. 정의 : Nexacro Grid 에서 Multi cell drag & drop  기능 구현
          (무지 힘들었음 ㅋㅋ)
          (보시고 괜찬으면 답글좀 ^^)

2. 이슈 
   a. drop 되는 위치에서 row, cell의 범위가 넘어가는 경우 존재.
   b. drag가 되고 이동 시 drag된 row범위에 drop 될 경우 이슈. 
      (이 부분은 불가. 테스트 해보면 느껴짐)


3. script   
   


'Nexacro-Grid > Grid' 카테고리의 다른 글

Nexacro.Grid - cell 좌표  (3) 2018.01.16
Nexacro-Grid. format  (0) 2017.08.18
Grid.sort 개발중  (0) 2017.02.24
Nexacro Grid - 한컬럼에 여러줄 보여주기  (0) 2017.01.22
Nexacro Grid -Combo Filter (필터) 처리  (0) 2017.01.22
Posted by 농부지기
,

오전

1. 제품

    1. Toad Data Point :모든 db. Toad for oracle처럼 사용할 수 있음

    2. Toad For oracle : DBA Suite

    3. Dell SQL optimizer for oracle : SQL Tuning

    4. Benchmark Factory for DB    : 테스트용

    5. Spotlight on oracle                : 모니터링, 성능진단

 

    6. Space Manager with Live Re.. : DB Data조각 모임

    7. Oracle VM vierual Box :

 

2. Connection Alias 및 Color 지정 방법

    1. New Connection : 목록에서 Alias지정

    2. Menu : View > Toad Option > Window

                    하단 : Display [v] use alias instead of ...

 

3. Editor창 - 실행

    1. F9 : (/), (;) 기준으로 실행

    2. shift + f9, ctrl+Enter : 빈줄 문장 구분으로 실행

    3. f9 : 여러 sql문장을 순차적으로 실행

 

4. Editor창 - split

    1. 정의 : Editor창을 왼쪽:오른쪽 split해서 관리

        : Editor창 > 마우스 > split editor layout

 

5. ditor창 - Compare

    1. 정의 : sql문장이 동일한지 검사

        : Editor창 > 마우스 > Compare to

 

6. Editor창 - Formatting SQL

    1. 정의 : 작성한 sql문장을 이쁘게 정렬

        : ctrl + shift + f

    2. 양식

        a. Menu : View > Toad Option .. | Formatter

        b. column, Table모두 소문자 : Oracle Formatter options > Case > Identifiers > Lowercase

        c. Comma위치 : List Arragements > Commas

        d. And, or절 정렬 : Operators & Punchtuations > And - OR

        e. 대.소문자 : Case > Identifiers

        f. formatter참고 txt : conf.stistory.com/73

        g.

 

7. Editor창 - Font

    1. Courier new [10] : 가장 적당한 폰트

        : View > Toad Options > Scripts | [Font]버튼

 

8. Editor창 - 단축 key

    1. editor창에서 alt + 마우스 drag : cell단위  text들 선택 가능

    2. Grid : ctrl + end : 모든 data조회

 

9. Editor창 - 주석기울임 제거

    1. editor > 마우스 > editor options > [Languages] [...] 클릭

       (팝업) Highlighting tab > Comments

 

10. Editor창과 Palette 같이 보기

     1. Menu : View > Objects Palette

         - click 및 dragrksmd

     2. show column icon

     3. ..

 

11. Editor창 - Auto optimizer SQL

     1. 마우스 : Optimizer > Auto optimize SQL

     2. option - type

                    - search depth : 단계가 높을 수록 많은 수의 sql문장을 만들어 냄

                    - Limit optimize.. : 시간 설정

     3. oracle Expert이상 version에서만 기능 가능

 

12. Editor창 - Describe

     1. Table명 > 위에서 > F4

 

13. Grid(결과) - Excel

     1.  결과 Grid창 > 마우스 > Export Dataset

          - 대용량일 경우 : Excel file선택

          - ODBC Database : 타 DB에 전송 가능

              . 대용량에는 적합하지 않음 (이유, 속도가느림)

            

14. Grid(결과) - Header컬럼 처리

     1. Column Fix : Grid Header > 마우스 > Column Fix

                             추가하고 싶을 경우 하나씩 drag해서 기 Fix된쪽으로 drop하면 됨

                             (해제시  해제하고 싶은 컬럼은 오른쪽으로 drag and drop하면 됨)

     2. select에 적용된 컬럼목록을 Grid에서 제거 및 다시 조회

         - Grid Header 왼쪽 상탠 [...] icon click : column 목록 선택 및 해제

     3. 컬럼 설정 초기화 : Reset Columns

     4. Column Size : 마우스 > Size columns > ..... 중 하나씩 선택

 

 

15. Grid(결과) - 결과 list에서 숫자 목록 계산

     1. Grid.결과중 숫자 컬럼들만 마우스로 선택 > Grid상단에 [시그마]icon선택 후 함수 선택

 

16. Grid(결과) - 총 레코드수 얻기

     1. 보통 select count(*)로 총 레코드를 얻거나 Grid.결과 목록을 모두 조회해야만 가능하다.

         하지만 Grid.에서 모든 목록을 조회하지 않고도

         Grid > 마우스 > Record count 를 선택 하면 됨

 

17. Grid(결과) - 레코드수 조정

     1. 메뉴 : View > Toad Options | Oracle: General - OCI Array Buffer size[ 원하는레코드수 ]

 

20. Plan

      1. ctrl + E : Plan수행 및 초기에 Table 설정

                       Plan Table Schema :

                       Plan Table name : Toad만을 위한 테이블 생성

                                                     [Seach for Plan Table] Oracle용 plan table

                                  * ctrl + e는 table을 설정하는 창은 딱 한번만 나옴

                                  * oracle default plan table을 이용해도 됨

      2. plan 보는 icon 클릭

      3. Explan Plan Tab에 plan 보기

          - 위 1번을 수행 후 ctrl + E 를 누르면 이젠 Plan 정보가 보임

      4. plan 목록에서

          > 마우스 > Explan plan comparison

      5. 메뉴를 이용한 초기 Plan Table 설정

          : 메뉴 : View > Toad Option > Oracle -> General > Explan Plan에  Table [PLAN_TABLE]

 

30. Schema Brower

     1. 오브젝트별 패널      : LHS - Left hand side

         오브젝트 상세 패널 : RHS - Right hand side

     2. Package, Trigger, TAb등을 Tab형태로 보기

         a. Brower style icon클릭

             > Tabbed (multiline table, single line tabs)..

     3. Package, Trigger, TAb등을 tree형태로 보기

             > Tree view

     4. 필요한 Tab만 조회

         > 마우스 > Configure

 

 

오후

1. Editor창에서 Schema Brower같이 보기
   > 메뉴 : View > Object Palete

2. Editor창에서 기본문법 자동생성
   > Ctrl + Space
   > 메뉴 : View > Toad Options > Edito > Behavior > Code Templates : 추가, 변경, 삭제 가능.
   > 추가 응용방법 : 많이 사용하는 sql문장을 기술 후 사용해도 됨

3. Editor창에서 sql문장을 VB등 Format등으로 변경
   > 어떤 형식인지 선택 (Java, VB등) (목록중 선택된 언어에서 Ctl + P, Ctl+M이 적용 된다.)
     - 메뉴 : View > Options > Editor > Code Assist > [Make Code] 목록에서 선택

   > Make Code
     - sql 문 선택 > Ctl + M 클릭 후 > 신규창에 Ctrl + V 하면 됨
   > Script Code
     - Ctrl + P
     - Menu > Editor > Strip Code Statement
     - Java등으로 되어 있는 sql문장을 선택 후 > Ctrl + P를 하면 자동 변환됨

4. SQL Recall
   > F8
   > Menu > View > SQL Recal
   > 기본 : 정상적으로 수행된 sql문장 남음  (option에서 모두 저장 할 수 있는 option이 있음)
   > 약 500개 이상이 남아 있음
   > [Saved] Tab
     - 남기고 싶은 sql문장들만 보관 가능
     - Recent Tab에서 sql하나 선택 후 > 마우스 > Add To Saved
     - Editor창 > sql선택 > 메뉴 : Editor > Add To Saved SQL  [[ 이곳에서 하면 sql문장 comments(이름)등록 가능 ]]
   > Editor창에서  : Ctrl + M 클릭하면   Saved Tab에 등록된 목록이 팝업창으로 뜸.

5. Editor - sql결과문장 바로 수정
   select rowid, a.* from scott.emp a;
   edit scott.emp a;
   이때 Ctrl + Enter를 해서 조회해야 가능.

6. Project Manager
   1. 정의 : 각 업무별로 자주 사용하는 테이블, PL SQL등을 Group화 해서 조회 및 관리 할 수 있다.
   2. Schema Browser 를 통해서 추가할 수 있다.
      - Toggle Reorder ... : 관련 icon이 클릭 되어져 있으면 안됨.


** Spotlight
1. User생성 : File > Oracle User Wizard
   - id : spotlight/spotlight
   - [v] Alter System : Spotlight로 모니터링시 session이 lock걸릴 경우 session kill 삭제 가능.
                        이 계정으로 실제 Oracle에 User를 생성하는 것이다.
   - [ ] Create/Upgrade.. : 체크 해제
   - 생성
   - (o) Don't Create.... :
2. File > Connect
   - Spotlight On Oracle > Add New Connection
     > Oracle Username : spotlight / spotlight
     > [ ] Monitor ASM
     > [v] Monitor OS
       > OS Server : centos
       > OS Username : oracle/oracle
     > [v] : Connect to OS Spotlight when starting...  : OS도 같이 모니터링 가능.
   
3. Monitoring 창
   - 모니터링 기분 조회 기준 : 15초
   1. Service Group
      - 정의 : Client 정보
      - Response : client요청에 대한 응답 시간
      - Total User : 총 접속사용자 수
      - Active User : 현재 접속자 수
   2. Server Processes
      - EM Agent
        . 보통 설치가 안되어 있음
        . 모니터링 제외 : 메뉴 > View > Options > 
               Data Collection > OEM Monitoring.. 클릭
               [ ] : Monitor Oracle Enter.. (OEM) : 설정 해제
   3. Total CPU Usage
      - 만약, sql문장이 오래 소요 될경우 CPU가 100%까지 치솟는 경우 존재
      - 왼쪽 마우스 클릭 > the OS Performance drilldown 클릭
      - [OS Performance] Tab에 CPU Utilization  조회 됨
      - [OS Processes] 클릭 > Grid Title중.%processor 클릭 : 가장 많이 찾이는 순으로 정렬 됨
      - 맨 위 Row선택 > 마우스 > Top Session 클릭
      - 상단.SID가 선택 되면서 하단에 해당 SQL문이 조됨.
      - 상단.SID 선택 > 마우스 > kill/Disconnect Session > kill Session 클릭
        (Spotlight에서 User생성 시 kill 권한을 부여 했기 때문에 가능함)

4. 모니터링하는 목록을 기준으로 별도 icon만 생성
   - 메뉴 : View > Connection Status Bar 클릭
   - 오른쪽 Window에 icon이 생성됨

* Bechmark..
1. 상단. New icon 클릭
  > TPC-C
  > [new] >
  > user/pw : tpc/tpc  (단, 이미 oracle USER등록이 되어 있어야 됨)
  > ..
  > Benchmark [ 20 ]   ((Test용 data size 생성))
  > Selected User Load 기존거 모두 삭제
  > User Load [ 20 ] 추가  [50] 추가
  [완료]
  >

2. 하단에 대안 Sql문장 목록이 조회 됨
  > 목록이 많이 나오기 때문에   약 상단부터 10개만 drag로 선택
  > 상단.중간에 Y 모양 icon 클릭 > Rewrite 클릭

3. 상단.[compare] Tab클릭
  > 10개 sql문장 클릭 된 거에서 서로 비교 함

'유틸리티 > Toad for Oracle' 카테고리의 다른 글

10. Excel Import  (0) 2018.11.05
Toad.단축키  (0) 2017.02.09
Posted by 농부지기
,

[ 1. Java Iterator 개념 및 사용방법 ]

 

1. 정의

   - Java에서 제공하는 컬렉션(Collection)객체는 보관하고 있는 자료들을 순차적으로 접근하면서 처리할 때 사용하는 Iterator 형식을 제공하고 있다.

   - Iterator는 반복자라고 부르며 컬렉션 종류에 관계없이 같은 방법으로 프로그래밍 할 수 있게 해 준다.

 

2. 사용방법

   - Iterator 개체는 컬렉션 개체의 iterator() 메서드를 호출하여 얻어올 수 있다.

   - hasNext() 메서드로 이동이 가능한지 확인한 후에 next() 메서드로 해당 위치의 보관한 개체를 참조하여 원하는 작업을 수행한다.

 

3. 장.단점

   - 이와 같은 Iterator 개체를 사용하면 size 메서드를 얻어와서 반복 처리하는 것보다 속도에서 불리하다.

   - 이는 Iterator 개체를 사용하는 부분이 있기 때문에 불가피한 사항이다.

     하지만 컬렉션 종류에 관계없이 일관성있게 프로그래밍할 수 있다는 장점을 갖고 있다.

   - 소스 코드에 어떠한 컬렉션을 사용할 지 정해지지 않았지만 컬렉션 내에 보관한 모든 내용을 출력하는 등의 작업을 먼저 하길 원한다면 Iterator를 사용하는 것은 좋은 선택이다.

 

3. 사용가능 객체

 

 

  ArrayList arr = new ArrayList();

  Vector<> vec = new Vector<>();

 LinkedList<Memberlink = new LinkedList<Member>();

 Set<String> st     = new Set<>(String);

 ....

 과 같은 Collection 객체들

 

 

4. Iterator객체 얻기

 

  Iterator it0 = arr.iterator()//vector의 요소를 순차 검색할 객체

  Iterator<> it1 = vec.iterator<>();

  Iterator<Member> it2 = link.iterator<Member>();

  Iterator<String> it3 = st.iterator<String>();

 ...

 

 

5. while 문으로 하나씩 객체 얻기

   - hasNext() : 해당 iterator객체에 값 존재 여부(boolean)

   - next() : iterator객체의 값 얻기.

 

 while (it0.hasNext()){

    String st = (String)it0.next();

 }

 

6. 참고, for문을 통한 객체 얻기

    - 이때는 Iterator객체가 아닌 Collection객체를 사용한다.

    - for 문장이 만나면 자동으로 Collection객체의 요소를 순차적으로 얻어 온다.

 

 

 for(Member mem : link){

    mem.get();

    mem.set();

    ...

 }

 

 

 for(String stOne : st){

    System.out.println(stOne);

    ...

 }

Posted by 농부지기
,

[ 1. Java ArrayList 개념 및 사용방법 ]

 

1. 정의

   - ArrayList<E>는 가변 크기의 배열을 구현한 컬렉션 클래스 이다.

   - Java 언어에서는 순차 리스트를 구현한 ArrayList 클래스를 제공하고 있다.

   - ArrayList는 내부 저장소가 배열처럼 연속적인 메모리 형태이다.

     그리고 저장소의 크기를 변화할 수 있다는 특징이 있다.

     이러한 점은 Vector 클래스와 차이가 없다.

   - 실제 Vector 클래스와 ArrayList 클래스는 거의 모든 부분에서 비슷하다.

 

2. ArrayList와  Vector 차이점

   - ArrayList는 Thread간에 동기화를 지원하지 않기 때문에

      다수의 Thread가 동시에 ArrayList에 요소를 삽입하거나 삭제할 때 총돌의 소지가 있다.

   - Vector는 동기화를 지원한다.

   - ArrayList의 속도가 Vector보다 다소 빠르다고 하지만 큰 의미를 갖는 정도는 아니다.

 

** ArrayList와 Vectory 선언 및 메서드는 거의 동일하다.

 

3. 선언

 

 

  ArrayList tmp = new ArrayList();

  ArrayList<> members = new ArrayList<>();

 ArrayList<Membermembers = new ArrayList<Member>();

 ArrayList<Integer> num     = new ArrayList<>();

 ArrayList<Integer> num2    = new ArrayList<Integer>();

 ArrayList<String>  str     = new ArrayList<String>();

 ArrayList<String>  str2    = new ArrayList<String>(10); //초기 용량 지정

 

4. 요소 추가  (Collection인터페이스 메소드)

    - add()메소드 이용

 

  Member member = new Member(num,name);

  members.add(member); 

  members.add(new Member(10, "농부"));

 members.add(new Member(11, "어부"));

 

 

  num.add(3);

  num.add(null);

  num.add(1, -10);  //요수 중간에 삽입

 

5. 객체 크기 및 특정요소 값 얻기

    - size()메소드 이용 

 

 Member Find(int num){

        int cnt = members.size();              

        for(Member member : members){

               if(member.getNum() == num){

                       return member;

               }

        }

        return null;

 }

 

 

 

for(Integer one : num){

       System.out.println("Integer value=" + one);

}

 

 

 

 Integer obj = num.get(1);

 int i = obj.intValue();

 

 

6. 특정 .요소 삭제

    - remove()메소드 이용  

    - clear()메소드 이용 

 

 Member member = Find(num);

 if(member == null){

        System.out.println("존재하지 않습니다.");

        return;

 }

 members.remove(member); 

 

 

 

 num.remove(1);  //index 1 요소 삭제

 num.removeAllElements();  //method 없음.

 num.clear();  //모든 요소 삭제

 

 

 

 

7. 현재크기 얻기

    - size()메소드 이용  

 

  int size = members.size();      //현 vectory 자료 개수 얻기

 int cap  = members.capacity();  //capacity method 없음.

 

 

 

 

 

Posted by 농부지기
,

[ 1. Java Vector 개념 및 사용방법 ]

 

1. 참고

   - Java 언어에서 배열은 생성할 때 크기를 결정할 수 있어야 한다.

   - 하지만 미리 크게 설정하면 메모리 효율을 떨어지고 작게 설정하면 충분한 개체를 보관할 수 없다.

   - Vector는 확장 가능한 배열로 저장소가 꽉 차면 자동으로 저장소의 크기를 늘려주기 때문에 유연하게 사용할 수 있다.

 

2. 정의

    - Vector 클래스는 Collection 인터페이스를 기반으로 구현한 List 클래스에서 파생한 클래스이다.

    - 따라서 Vector 클래스에는 Collection 인터페이스에 약속한 기능들을 사용할 수 있다.

    - 물론 Vector 클래스에서 추가적으로 제공하는 기능들도 있다.

    - Vectory<E>는 List<E>인터페이스를 구현한 클래스로서 가변개수의 배열이 필요시 적합

    - 요소에 값이 증가되면 자동으로 크기 조절

    - 요소의 값이 중간이 삽입 가능하고, 그 다음 요소들은 한 자리씩 뒤로 이동된다.

 

3. 선언

 

 

  Vector tmp = new Vector();

  Vector<> members = new Vector<>();

 Vector<Membermembers = new Vector<Member>();

 Vector<Integer> num     = new Vector<>();

 Vector<Integer> num2    = new Vector<Integer>();

 Vector<String>  str     = new Vector<String>();

 Vector<String>  str2    = new Vector<String>(10); //초기 용량 지정

 

4. 요소 추가  (Collection인터페이스 메소드)

    - add()메소드 이용

 

  Member member = new Member(num,name);

  members.add(member); 

  members.add(new Member(10, "농부"));

 members.add(new Member(11, "어부"));

 

 

  num.add(3);

  num.add(null);

  num.add(1, -10);  //요수 중간에 삽입

 

5. 객체 크기 및 특정요소 값 얻기

    - size()메소드 이용 

 

 Member Find(int num){

        int cnt = members.size();              

        for(Member member : members){

               if(member.getNum() == num){

                       return member;

               }

        }

        return null;

 }

 

 

for(Integer one : num){

       System.out.println("Integer value=" + one);

}

 

 

 Integer obj = num.get(1);

 int i = obj.intValue();

 

6. 특정 .요소 삭제

    - remove()메소드 이용  

    - removeAllElements()메소드 이용 

 

 Member member = Find(num);

 if(member == null){

        System.out.println("존재하지 않습니다.");

        return;

 }

 members.remove(member); 

 

 

 num.remove(1);  //index 1 요소 삭제

 num.removeAllElements();  //모든 요소 삭제

 

 

 

7. 현재크기 얻기

    - size()메소드 이용  

    - capacity()메소드 이용  : capacity는 기본 10배수로 커짐

 

 

 int size = members.size();      //현 vectory 자료 개수 얻기

 int cap  = members.capacity();  //현 vectory 물리적 크기 얻기

 

 //만약 size가 5이면 cap 은 10

 //     size가 15이면 cap은 20

 

 

Posted by 농부지기
,

[ 1. Java HashMap 개념 및 사용방법 ]

 

1. 정의

    - HashMap 클래스는 Map 인터페이스 기반의 구현 클래스 이다.

    - 그리고 해쉬 테이블 자료 구조를 표현한 클래스 이다.

    - keyvalue를 쌍으로 보관하는 클래스 이다.

    - HashMap 형식 변수 선언 및 개체 생성할 때는 제네릭 형식 인자로 키와 값을 명시하여 표현 한다.

 

2. HashMap 선언

 

 HashMap<String, Book> book_dic = new HashMap<String, Book>();

 

3. HashMap 값 추가 

    - put() 메소드 이용

 

 book_dic.put(isbn, book); 

 

4. HashMap 값 존재 확인

    - containsKey() 메소드 이용

 

 if(book_dic.containsKey(isbn)){

   System.out.println("이미 존재하는 ISBN입니다.");

   return;

 }

 

5. HashMap 한건 삭제

    - remove() 메소드 이용

 

  if(book_dic.containsKey(isbn)){

    book_dic.remove(isbn);

    System.out.println("삭제하였습니다.");

 }else{

     System.out.println("존재하지 않습니다.");

 }

 

6. 특정 Key값 얻기

    - get() 메소드 이용

 

 if(book_dic.containsKey(isbn)){

    Book book = book_dic.get(isbn);

    System.out.println("검색 결과>>"+book.toString());

 }else{

    System.out.println("존재하지 않습니다.");

 }

 

7. 저장된 목록 확인

    - values() 메소드 이용

 

  for(Book book : book_dic.values()){

     System.out.println(book.toString());

 }

 

8. 저장된 Key 목록 얻기

    - keySet() 메소드 이용

 

  for(String isbn : book_dic.keySet()){

     System.out.println(isbn);

 }

 

 

 

 다음 소스는 키를 도서의 ISBN, 값을 도서 개체로 관리하는 프로그램 예제입니다.

 

▷ 소스 3.13 도서 관리 프로그램(HashMap 클래스 이용)

//도서 클래스

public class Book {

        final String isbn;

        String title;

        int price;

        public Book(String isbn, String title,int price){

               this.isbn = isbn;

               this.title = title;

               this.price = price;

        }

        public String ISBN(){

               return isbn;

        }

        public String toString(){

               return String.format("ISBN:%s 이름:%s 가격:%d", isbn, title, price);        }

}

//도서 관리자 클래스

import java.util.HashMap;

import java.util.Scanner;

 

public class BookManager {

        Scanner scan = new Scanner(System.in);

        HashMap<String, Book> book_dic = new HashMap<String, Book>();

        public void Run(){

               int key = 0;

               while((key = selectMenu())!=0){

                       switch(key){

                       case 1: addBook(); break;

                       case 2: removeBook(); break;

                       case 3: searchBook(); break;

                       case 4: listBook(); break;

                       case 5: listISBN(); break;

                       default: System.out.println("잘못 선택하였습니다."); break;

                       }

               }

               System.out.println("종료합니다...");

        }

        int selectMenu(){

               System.out.println("1:추가 2:삭제 3:검색 4:도서 목록 5:ISBN 목록 0:종료");

               int key = scan.nextInt();

               scan.nextLine();

               return key;

        }

        void addBook(){

               String isbn;           

               System.out.print("추가할 도서 ISBN:");

               isbn = scan.nextLine();

               if(book_dic.containsKey(isbn)){

                       System.out.println("이미 존재하는 ISBN입니다.");

                       return;

               }

               String title;

               int price;

               System.out.print("도서 제목:");

               title = scan.nextLine();

               System.out.print("가격:");

               price = scan.nextInt();

               scan.nextLine();

               Book book = new Book(isbn,title,price);

               book_dic.put(isbn, book);

               System.out.println(book.toString()+" 생성하였습니다."); 

              

        }

        void removeBook(){

               String isbn;           

               System.out.print("삭제할 도서 ISBN:");

               isbn = scan.nextLine();

               if(book_dic.containsKey(isbn)){

                       book_dic.remove(isbn);

                       System.out.println("삭제하였습니다.");                 

               }

               else{

                       System.out.println("존재하지 않습니다.");               

               }             

        }

        void searchBook(){

               String isbn;           

               System.out.print("검색할 도서 ISBN:");

               isbn = scan.nextLine();

               if(book_dic.containsKey(isbn)){

                       Book book = book_dic.get(isbn);

                       System.out.println("검색 결과>>"+book.toString());                                           

               }

               else{

                       System.out.println("존재하지 않습니다.");               

               }

        }

        void listBook(){

               System.out.println("도서 목록");

               int cnt = book_dic.size();

               System.out.println("도서 :"+cnt);

               for(Book book : book_dic.values()){

                       System.out.println(book.toString());

               }

        }

        void listISBN(){

               System.out.println("ISBN 목록");

               int cnt = book_dic.size();

               System.out.println("도서 :"+cnt);

               for(String isbn : book_dic.keySet()){

                       System.out.println(isbn);

               }

        }

}

//ISBN 키로 도서 검색(HashMap 클래스 이용)

public class Program {

        public static void main(String[] args){

               BookManager bm = new BookManager();

               bm.Run();

        }

}

 

▷ 소스 3.13 실행 결과

1:추가 2:삭제 3:검색 4:도서 목록 5:ISBN 목록 0:종료

1

추가할 도서 ISBN:1234

도서 제목:Java

가격:2000

ISBN:1234 이름:Java 가격:2000 생성하였습니다.

1:추가 2:삭제 3:검색 4:도서 목록 5:ISBN 목록 0:종료

1

추가할 도서 ISBN:4321

도서 제목:C언어

가격:5000

ISBN:4321 이름:C언어 가격:5000 생성하였습니다.

1:추가 2:삭제 3:검색 4:도서 목록 5:ISBN 목록 0:종료

1

추가할 도서 ISBN:3421

도서 제목:자료구조

가격:2000

ISBN:3421 이름:자료구조 가격:2000 생성하였습니다.

1:추가 2:삭제 3:검색 4:도서 목록 5:ISBN 목록 0:종료

4

도서 목록

도서 :3

ISBN:1234 이름:Java 가격:2000

ISBN:4321 이름:C언어 가격:5000

ISBN:3421 이름:자료구조 가격:2000

1:추가 2:삭제 3:검색 4:도서 목록 5:ISBN 목록 0:종료

5

ISBN 목록

도서 :3

1234

4321

3421

1:추가 2:삭제 3:검색 4:도서 목록 5:ISBN 목록 0:종료

3

검색할 도서 ISBN:1234

검색 결과>>ISBN:1234 이름:Java 가격:2000

1:추가 2:삭제 3:검색 4:도서 목록 5:ISBN 목록 0:종료

2

삭제할 도서 ISBN:4321

삭제하였습니다.

1:추가 2:삭제 3:검색 4:도서 목록 5:ISBN 목록 0:종료

4

도서 목록

도서 :2

ISBN:1234 이름:Java 가격:2000

ISBN:3421 이름:자료구조 가격:2000

1:추가 2:삭제 3:검색 4:도서 목록 5:ISBN 목록 0:종료

5

ISBN 목록

도서 :2

1234

3421

1:추가 2:삭제 3:검색 4:도서 목록 5:ISBN 목록 0:종료

0

종료합니다...

 



출처: http://ehclub.co.kr/3083 [언제나 휴일]

 

Posted by 농부지기
,

https://colorscripter.com/info#e

Posted by 농부지기
,

[ 5. Generic (제너릭) 타입의 상속과 구현 ]

 

발취 : http://palpit.tistory.com/667

Posted by 농부지기
,