package xyz.itwill.util;
import java.util.Collections;
import java.util.List;
//학생관리 프로그램
public class StudentManagerApp {
public static void main(String[] args) {
StudentManager manager=new StudentManager();
//학생정보를 전달하여 저장매체(콜렉션 필드)에 저장하는 메소드 호출
manager.addStudent(new Student(1000, "홍길동"));
manager.addStudent(new Student(2000, "임꺽정"));
manager.addStudent(new Student(3000, "전우치"));
manager.addStudent(new Student(4000, "일지매"));
boolean result=manager.addStudent(new Student(5000, "장길산"));
if(result) {
System.out.println("[메세지]학생정보를 성공적으로 저장 하였습니다.");
} else {
System.out.println("[메세지]이미 저장된 학번의 학생정보이므로 저장되지 않습니다.");
}
System.out.println("=====================================================");
//학번이 [2000]인 학생정보를 저장매체에서 검색하여 출력
Student searchStudent=manager.getStudent(2000);
if(searchStudent==null) {//검색된 학생정보가 없는 경우
System.out.println("[메세지]해당 학번의 학생정보를 찾을 수 없습니다.");
} else {//검색된 학생정보가 없는 경우
System.out.println(searchStudent);//학생정보 출력
}
System.out.println("=====================================================");
//저장매체에서 학번이 [2000]인 학생의 이름을 [임걱정]으로 변경
searchStudent.setName("임걱정");
manager.modifyStudent(searchStudent);
System.out.println("[메세지]학생정보를 성공적으로 변경 하였습니다.");
System.out.println("=====================================================");
//학번이 [4000]인 학생정보를 저장매체에서 삭제
if(manager.removeStudent(4000)) {//삭제된 학생정보가 있는 경우
System.out.println("[메세지]학생정보를 성공적으로 삭제 하였습니다.");
} else {
System.out.println("[메세지]해당 학번의 학생정보를 찾을 수 없습니다.");
}
System.out.println("=====================================================");
//저장매체에 저장된 모든 학생정보를 반환하는 메소드 호출
List<Student> students=manager.getStudentList();
for(Student student:students) {
//Student.toString() 메소드 자동 호출 - 필드값을 반환받아 출력
System.out.println(student);
}
System.out.println("=====================================================");
//List 객체에 저장된 요소를 정렬하여 출력
//Collections.sort(List<T> list) 메소드의 매개변수에 전달되는 List 객체는 요소값을
//비교하기 위한 기능의 compareTo() 메소드가 오버라이드 선언되지 않은 경우 에러 발생
Collections.sort(students);
for(Student student:students) {
//Student.toString() 메소드 자동 호출 - 필드값을 반환받아 출력
System.out.println(student);
}
System.out.println("=====================================================");
}
}
package xyz.itwill.util;
import java.util.ArrayList;
import java.util.List;
//학생정보를 관리(저장,변경,삭제,검색 - CRUD)하는 기능을 제공하는 클래스
//→ BO(Business Object) 클래스 - Manager 클래스
public class StudentManager {
//다수의 학생정보를 저장하기 휘한 콜렉션 필드 - 저장매체
private List<Student> studentList=new ArrayList<Student>();
//학번을 전달받아 콜렉션 필드에 저장된 요소의 학번과 비교하여 같은 요소의 첨자를 반환하는 메소드
private int getStudentIndex(int num) {
int index=-1;
//콜렉션 필드에 저장된 모든 요소에 일괄처리 하기 위한 반복문
for(int i=0;i<studentList.size();i++) {
//콜렉션 필드에 저장된 요소의 학번과 매개변수로 전달받아 학번이 같은 경우
if(studentList.get(i).getNum()==num) {
index=i;//변수의 요소의 첨자 저장
break;
}
}
return index;//요소의 첨자 반환 - 콜렉션 필드에서 요소가 미검색된 경우 -1 반환
}
//학생정보를 전달받아 콜렉션 필드의 요소로 추가하고 처리 결과를 반환하는 메소드
//→ false 반환 : 콜렉션 필드의 요소 추가 실패, true : 콜렉션 필드의 요소 추가 성공
//→ 전달받은 학생정보의 학번이 이미 콜렉션 필드에 저장된 요소의 학번과 같은 경우
추가되지 않도록 작성 - 중복 저장 방지
public boolean addStudent(Student student) {
//콜렉션 필드에 저장된 학번의 학생정보인 경우
if(getStudentIndex(student.getNum())!=-1) {
return false;
}
studentList.add(student);
return true;
}
//학생정보를 전달받아 콜렉션 필드의 요소를 변경하고 처리 결과를 반환하는 메소드
//→ false 반환 : 콜렉션 필드의 요소 변경 실패, true : 콜렉션 필드의 요소 변경 성공
//→ 전달받은 학생정보의 학번이 이미 콜렉션 필드의 저장된 요소의 학번이 아닌 경우 변경 실패
public boolean modifyStudent(Student student) {
int index=getStudentIndex(student.getNum());
//콜렉션 필드에 저장된 학번의 학생정보가 아닌 경우
if(index==-1) {
return false;
}
studentList.set(index, student);
return true;
}
//학번을 전달받아 콜레션 필드의 요소를 삭제하고 처리 결과를 반환하는 메소드
//→ false 반환 : 콜렉션 필드의 요소 삭제 실패, true : 콜렉션 필드의 요소 삭제 성공
//→ 전달받은 학번이 콜렉션 필드의 저장된 요소의 학번이 아닌 경우 삭제 실패
public boolean removeStudent(int num) {
int index=getStudentIndex(num);
//콜렉션 필드에 저장된 학번의 학생정보가 아닌 경우
if(index==-1) {
return false;
}
studentList.remove(index);//List 객체에서 첨자위치의 요소를 삭제하는 메소드 호출
return true;
}
//학번을 전달받아 콜렉션 필드의 요소를 검색하여 반환하는 메소드
public Student getStudent(int num) {
int index=getStudentIndex(num);
//콜렉션 필드에 저장된 학번의 학생정보가 아닌 경우
if(index==-1) {
return null;//검색된 학생정보가 없는 경우 null 반환
}
return studentList.get(index);//List 객체에서 첨자위치의 요소를 반환하는 메소드 호출
}
//콜렉션 필드에 저장된 모든 학생정보를 반환하는 메소드
public List<Student> getStudentList(){
return studentList;
}
}