G_0910_027

charl hi·2021년 9월 10일
0

국비

목록 보기
27/122

ArrayList 검색 & 삭제

package sample02;

import java.util.ArrayList;
import java.util.Scanner;

public class HaksaProject {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		//********학생/교수/관리자 배열을 만든다.
		ArrayList<StudentDTO> sList = new ArrayList<StudentDTO>();
		ArrayList<ProfessorDTO> pList = new ArrayList<ProfessorDTO>();
		ArrayList<ManagerDTO> mList = new ArrayList<ManagerDTO>();
		//DTO???data transfer object==VO??value Object
		String line = "======";
		String title = " 메뉴선택 ";
		String line1 = "-------------------";
		while(true) {//반복문 시작
			System.out.print(line);
			System.out.print(title);
			System.out.println(line);
			System.out.println("1.등록");
			System.out.println("2.찾기");
			System.out.println("3.삭제");
			System.out.println("4.전체출력");
			System.out.println(line1);
			System.out.println("0.종료");
			System.out.println(line1);
			System.out.print("번호를 선택해 주세요.. ");
			int bunho = sc.nextInt();
			if(bunho==1) {
				System.out.println();
				System.out.print(line);
				System.out.print(title);
				System.out.println(line);
				System.out.println("1.학생");
				System.out.println("2.교수");
				System.out.println("3.관리자");
				System.out.println("4.이전메뉴");//*****주의!!
				System.out.println(line1);
				System.out.print("번호를 선택해 주세요.. ");
				bunho = sc.nextInt();//주의!!
				if(bunho==1) {
					//*****객체배열문제처럼 가리킬 객체를 생성해야 한다!!
					StudentDTO sDTO = new StudentDTO();//sDTO[i]
					//지역변수라 벗어나면 사라짐!
					System.out.print("나이:");
					String age = sc.next();
					System.out.print("이름:");
					String name = sc.next();
					System.out.print("학번:");
					String hakbun = sc.next();
					//여기다가 세팅!!!!***
					sDTO.setAge(age);
					sDTO.setName(name);
					sDTO.setHakbun(hakbun);
					//***?? 사라지기 전에 외부에서 이미 만들어놓은 거에 담아두기
					sList.add(sDTO);
					System.out.println("학생이 등록되었습니다.");
					
				}else if(bunho==2) {
					//****
					ProfessorDTO pDTO = new ProfessorDTO();//pDTO[i]
					System.out.print("나이:");
					String age = sc.next();
					System.out.print("이름:");
					String name = sc.next();
					System.out.print("과목:");
					String subject = sc.next();//버퍼의 문제라 nextline하면 그냥넘어감
					//
					pDTO.setAge(age);
					pDTO.setName(name);
					pDTO.setSubject(subject);
					//
					pList.add(pDTO);
					System.out.println("교수가 등록되었습니다.");
					
				}else if(bunho==3) {
					ManagerDTO mDTO = new ManagerDTO();//mDTO[i]
					System.out.print("나이:");
					String age = sc.next();
					System.out.print("이름:");
					String name = sc.next();
					System.out.print("부서:");
					String part = sc.next();
					//
					mDTO.setAge(age);
					mDTO.setName(name);
					mDTO.setPart(part);
					//
					mList.add(mDTO);
					System.out.println("관리자가 등록되었습니다.");
					
				}else if(bunho==4) {
					continue;//******주의!!! 반복문의 끝으로 가 다음 반복문으로
					//바로 위 전단계로 감
				}else {
					System.out.println("번호가 유효하지 않습니다.");
				}
			}else if(bunho==2) {
				System.out.println("찾을 이름을 입력해 주세요.");
				System.out.print("이름:");
				String name = sc.next();
				System.out.println("1.학생 2.교수 3.관리자");
				char search = sc.next().charAt(0);
				boolean result = false;	
				//***찾을때까지 돌면서 학생이 없다고 뜨니까 flag만들기인가?
				if(search=='1') {//분야를 나누자**
					for(int i=0; i<sList.size(); i++) {
						if(name.equals(sList.get(i).getName())) {
							System.out.print("이름:");
							System.out.print(sList.get(i).getName()+"\t");
							System.out.print("나이:");
							System.out.print(sList.get(i).getAge()+"\t");
							System.out.print("학번:");
							System.out.print(sList.get(i).getHakbun()+"\n");
							result = true;	//***
						}else {
							if(result==false) {//***
								System.out.println("찾으시는 학생이 없습니다.");
								result = true;
							}
						}
					}
				} else if(search=='2') {
					for(int i=0; i<pList.size(); i++) {
						if(name.equals(pList.get(i).getName())) {
							System.out.print("이름:");
							System.out.print(pList.get(i).getName()+"\t");
							System.out.print("나이:");
							System.out.print(pList.get(i).getAge()+"\t");
							System.out.print("과목:");
							System.out.print(pList.get(i).getSubject()+"\n");
							result = true;	//***
						}else {
							if(result==false) {//***
								System.out.println("찾으시는 교수가 없습니다.");
								result = true;
							}
						}
					}
				} else if(search=='3') {
					for(int i=0; i<mList.size(); i++) {
						if(name.equals(mList.get(i).getName())) {
							System.out.print("이름:");
							System.out.print(mList.get(i).getName()+"\t");
							System.out.print("나이:");
							System.out.print(mList.get(i).getAge()+"\t");
							System.out.print("부서:");
							System.out.print(mList.get(i).getPart()+"\n");
							result = true;	//***
						}else {
							if(result==false) {//***
								System.out.println("찾으시는 관리자가 없습니다.");
								result = true;
							}
						}
					}
				}else {
					System.out.println("찾으시는 대상이 없습니다.");
				}
				
				System.out.print("계속하시려면 1, 종료하시려면 0을 입력해 주세요.. ");
				bunho = sc.nextInt();
				if(bunho==1) {	//*******
					continue;
				}else {
					System.exit(0);
				}
			}else if(bunho==3) {
				System.out.println("삭제할 사람의 이름을 입력해 주세요.");
				System.out.print("이름:");
				String name = sc.next();
				System.out.println("1.학생 2.교수 3.관리자");
				char delete = sc.next().charAt(0);
				if(delete=='1') {
					for(int i=0; i<sList.size(); i++) {	//여기도 반복문***
						if(name.equals(sList.get(i).getName())) {
							System.out.println(name+"님을 삭제하였습니다.");
							sList.remove(i);
						}
					}
				}else if(delete=='2') {
					for(int i=0; i<pList.size(); i++) {
						if(name.equals(pList.get(i).getName())) {
							System.out.println(name+"님을 삭제하였습니다.");
							pList.remove(i);
						}
					}
				}else if(delete=='3') {
					for(int i=0; i<mList.size(); i++) {
						if(name.equals(mList.get(i).getName()))	{
							System.out.println(name+"님을 삭제하였습니다.");
							mList.remove(i);
						}
					}
					
				}
				
				
				System.out.print("계속하시려면 1, 종료하시려면 0을 입력해 주세요.. ");
				bunho = sc.nextInt();
				if(bunho==1) {	//*******
					continue;
				}else {
					System.exit(0);
				}
			}else if(bunho==4) {
				for(int i=0; i<sList.size(); i++) {
					//StudentDTO sDTO = sList.get(i); 해서 아래에
					//sDTO.get(i).getName() 하면 가독성이 좋다.
					System.out.print("이름:");
					System.out.print(sList.get(i).getName()+"\t");
					System.out.print("나이:");
					System.out.print(sList.get(i).getAge()+"\t");
					System.out.print("학번:");
					System.out.print(sList.get(i).getHakbun()+"\n");
				}
				for(int i=0; i<pList.size(); i++) {
					System.out.print("이름:");
					System.out.print(pList.get(i).getName()+"\t");
					System.out.print("나이:");
					System.out.print(pList.get(i).getAge()+"\t");
					System.out.print("과목:");
					System.out.print(pList.get(i).getSubject()+"\n");
				}
				for(int i=0; i<mList.size(); i++) {
					System.out.print("이름:");
					System.out.print(mList.get(i).getName()+"\t");
					System.out.print("나이:");
					System.out.print(mList.get(i).getAge()+"\t");
					System.out.print("부서:");
					System.out.print(mList.get(i).getPart()+"\n");
				}
				System.out.print("계속하시려면 1, 종료하시려면 0을 입력해 주세요.. ");
				bunho = sc.nextInt();
				if(bunho==1) {	//*******
					continue;
				}else {
					System.exit(0);
				}
			}else if(bunho==0) {
				System.out.println("프로그램 종료");
				System.exit(0);//주의!!
			}else {
				System.out.println("번호가 유효하지 않습니다.");
			}
		}//반복문 끝
	}

}

0개의 댓글