[Java 17-1 StudentManagerApp] 학생 관리 프로그램

임승현·2022년 10월 19일

Java

목록 보기
82/126
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;
	}
}

0개의 댓글