[JAVA] 성적 처리 UI 작성 (만들기) 3차
by mini_min◾ 기능
1. 등록
2. 수정
3. 삭제
4. 리스트
5. 이름검색
6. 학번검색
7. 종료
◾ 입력 받기 BufferedReader
BufferedReader를 이용해서 입력을 편하게 받아야한다.
private BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
◾ UI의 상속?
인터페이스는 꼭 하위클래스를 통해 구현해야한다. Score 인터페이스를 구현하기 위해 new ScoreImpl(); 하위클래스로 구현해줌!
private Score ss = new ScoreImpl();

⭐ 메뉴 만들기
메뉴 : 계속 돌아가야함. while(true)문 이용하기 -> 종료 숫자 입력시, return 으로 while문 빠져나오기
입력받은 숫자로 switch 문 실행하기!!
public void menu() { //기능 : 버튼 만들기. //try catch + while + switch int ch; while(true) try {System.out.print("1.등록 2.수정 3.삭제 4.리스트 5.이름검색 6.학번검색 7.종료 => "); ch = Integer.parseInt(br.readLine()); if(ch == 7) { return; } switch(ch) { case 1: input(); break; case 2: update(); break; case 3: delete(); break; case 4: printAll(); break; case 5: findByName(); break; case 6: findByHak(); break; } } catch (Exception e) { }}}
⭐ 메뉴 만들기
등록 : 학생 정보를 하나하나 입력 받을 것. 입력 받을 때, 값을 저장할 ScoreVO 객체를 생성하고, vo 객체에 있는 set 메소드를 이용한다. (vo 객체 쓰고 싶으면 vo 에 '.' 찍기!
try catch 로 입력 받을 때 발생하는 예외를 받으면 된다.
ScoreVO vo = new ScoreVO(); try { System.out.print("학번 ? "); vo.setHak(br.readLine()); System.out.print("이름 ? "); vo.setName(br.readLine()); System.out.print("국어 ? "); vo.setKor(Integer.parseInt(br.readLine())); System.out.print("영어 ? "); vo.setEng(Integer.parseInt(br.readLine())); System.out.print("수학 ? "); vo.setMat(Integer.parseInt(br.readLine())); ss.insertScore(vo); System.out.println("등록 완료"); } catch (MyDuplicationException e) { System.out.println(e.getMessage()); } catch (NumberFormatException e) { System.out.println("점수만 입력 가능"); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } System.out.println(); }
⭐ 메뉴 만들기
수정 : 학점을 받아서, 일치하는 학번의 정보를 다시입력 받기.
String hak;
try catch 를 기본적으로 이용하고!!! 인터페이스에 만들어둔, readScore() 클래스를 이용한다.
ss.readScore(hak) <- 입력받은 hak 을 넣어서 vo 객체로 만들기~!
System.out.print("수정할 학생 학번 "); hak = br.readLine(); ScoreVO vo = ss.readScore(hak); //학번으로 읽기 if(vo==null) { System.out.println("등록된게 없음"); return; } System.out.print("이름 ? "); vo.setName(br.readLine()); System.out.print("국어 ? "); vo.setKor(Integer.parseInt(br.readLine())); System.out.print("영어 ? "); vo.setEng(Integer.parseInt(br.readLine())); System.out.print("수학 ? "); vo.setMat(Integer.parseInt(br.readLine())); System.out.println("수정 완료"); } catch (NumberFormatException e) { e.printStackTrace(); }catch (IOException e) { e.printStackTrace(); }catch (Exception e) { e.printStackTrace(); } }
◾ 아래는 readScore() 인터페이스 구현 클래스!!(참조하기)
public ScoreVO readScore(String hak) { for(ScoreVO vo : list) { if(vo.getHak().equals(hak)) { return vo; } } return null; }
⭐ 메뉴 만들기
삭제 : 학점을 받아서, 일치하는 학번의 정보를 삭제하면 된다.
(deleteScore 인터페이스의 구현 클래스 이용하기.)
String hak;
ss.deleteScoe(hak) 이 만약, false(true)라면, 그대로 return 해서 빠져나오고,
만약 데이터가 있다면, 삭제 시켜버리기.
try { System.out.println("삭제할 학번? "); hak = br.readLine(); if(! ss.deleteScore(hak)) { System.out.println("등록된 학번 아님"); return; } System.out.println("자료가 삭제되었습니다.\n"); } catch (Exception e) { // TODO: handle exception } }
⭐ 메뉴 만들기
이름검색 : 이름을 받아서, listScore(name) 인터페이스의 구현 클래스를 이용한다.
◾ 아래는 이름검색 인터페이스의 구현 클래스 !!
List<ScoreVO> finds = new ArrayList<>(); for(ScoreVO vo : list) { if(vo.getName().indexOf(name)>=0) { find.add(vo) } } return finds;
UI 에서도, finds 라는 List<ScoreVO> 객체를 만든다.
ss.listScore(namt) 에서 받은 정보를 finds 에 넣고 결과 값으로 출력할 것이기 때문에!
(finds 가 예전에 for 문에서 크기값 비교할 때 사용하던 temp 와 비슷하다고 보면 된다!)
List<ScoreVO> finds = ss.listScore(name); if(finds.size()==0) { System.out.println("등록된 자료가 없습니다."); return; } for(ScoreVO vo : finds) { System.out.print(vo.getHak() + "\t"); System.out.print(vo.getName() + "\t"); System.out.print(vo.getKor() + "\t"); System.out.print(vo.getEng() + "\t"); System.out.print(vo.getMat() + "\t"); System.out.print(vo.getTot() + "\t"); System.out.print(vo.getAve());
⭐ 메뉴 만들기
학번검색 : 학번 검색을 위해 만들어놓은 인터페이스는 reasScore 인터페이스이다.
ss.readScore(hak) 으로 인터페이스의 구현 클래스에서 값을 받고, Score vo 객체에 저장해서 올바른 정보를 추출한다.
System.out.println("검색할 학번은 ? "); hak = br.readLine(); ScoreVO vo = ss.readScore(hak); if(vo == null) { System.out.println("자료없음"); return;
블로그의 정보
개발자 미니민의 개발로그
mini_min