개발자 미니민의 개발스터디

[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

활동하기