본문 바로가기
자바과정/과제물

(Java) 급여 관리 프로그램 [인터페이스 생성]

by Parkej 2021. 2. 15.

- 인터페이스 활용

 

EmManage (인터페이스)

 

import Data.FixedTerm;
import Data.PartTime;
import Data.Permanent;

public interface EmManage {
	public void allSelect(Permanent[] per, FixedTerm[] ft, PartTime[] pt); // 전체 조회
	public void empSelect(Permanent[] per, FixedTerm[] ft, PartTime[] pt); // 개인 조회
	public void empCreate(Permanent[] per, FixedTerm[] ft, PartTime[] pt); // 사원 추가
	public void empUpdate(Permanent[] per, FixedTerm[] ft, PartTime[] pt); // 사원 수정
	public void empDelete(Permanent[] per, FixedTerm[] ft, PartTime[] pt); // 사원 삭제
	public int selectMenu(Permanent[] per, FixedTerm[] ft, PartTime[] pt); // 메뉴선택
	public void menuPrint(); // 메뉴출력
	public int adminPrint(); // 초기화면 출력
}

 

 

EmployeeManage (인터페이스 오버라이딩 작성)

 

import java.util.Scanner;


import Data.FixedTerm;
import Data.PartTime;
import Data.Permanent;

// 기능(관리)
public class EmployeeManage implements EmManage {
	private int index1; 
	private int index2; // ft 기간제
	private int index3; // pt 시간제
	private int cnt1;
	private int cnt2;
	private int cnt3;
	public EmployeeManage() {
		index1 = 0;
		index2 = 0;
		index3 = 0;
		cnt1 = 0;
		cnt2 = 0;
		cnt3 = 0;
	}
	
	@Override
	public int adminPrint() {
		Scanner sc = new Scanner(System.in);
		System.out.println("모드를 선택하세요. ");
		System.out.println("1. 관리자 2. 일반 3. 종료");
		System.out.print("입력 : ");
		int p = sc.nextInt();
		switch(p) {
		case 1:
			System.out.print("비밀번호 입력 : ");
			p = sc.nextInt();
			if(p == 1234) { // 관리자 (팀장 과장)
				return 1;
			}
			else { // 일반
				System.out.println("비밀번호가 틀렸습니다. 사원조회 화면으로 전환됩니다.");
				return 2;
			}
		case 2: return 2; // 일반
		case 3: return 3; // end
		default:
			System.out.println("다시 입력하세요.");
			return 0;
		}
	}
	
	@Override
	public void menuPrint() {
		System.out.println("--- 급여 관리 프로그램 --- ");
		System.out.println("1. 사원 전체 조회");
		System.out.println("2. 사원 조회");
		System.out.println("3. 부서 조회");
		System.out.println("4. 사원 추가");
		System.out.println("5. 사원 수정");
		System.out.println("6. 사원 삭제");
		System.out.println("7. 종료");
	}
	
	@Override
	public int selectMenu(Permanent[] per, FixedTerm[] ft, PartTime[] pt) {
		System.out.println();
		System.out.print("원하는 메뉴의 번호를 입력하세요 : ");
		Scanner sc = new Scanner(System.in);
		int check = sc.nextInt();
		//		sc.close();
		switch(check) {
		case 1:	// 사원 전체 조회
			allSelect(per, ft, pt);
			break;
		case 2:	// 사원 조회
			empSelect(per, ft, pt);
			break;
		case 3: // 부서 조회 (미개발)
			deptSelect(per);
			break;
		case 4: // 사원 추가
			empCreate(per, ft, pt);
			break;
		case 5: // 사원 수정
			empUpdate(per, ft, pt);
			break;
		case 6: // 사원 삭제
			empDelete(per, ft, pt);
			break;
		case 7: // 종료
			System.out.println("종료되었습니다.");
			return 0;
		default:
			System.out.print("올바른 번호를 입력하세요.");
		}

		return 1;


	}

	@Override
	public void allSelect(Permanent[] per, FixedTerm[] ft, PartTime[] pt) {
		// 정규직
		int count1 = 0;
		int count2 = 0;
		int count3 = 0;
		boolean s = false;
		System.out.println("----------- 정규직 -----------");
		for(int i=0; i<index1; i++) { // 사원전체출력
			if(per[i].getName() != null) {
				count1 += 1;
				System.out.println(count1 + ". 사번 : " + per[i].getCf() + per[i].getEmpNo());
				System.out.println(count1 + ". 부서 : " + per[i].getDept());
				System.out.println(count1 + ". 직급 : " + per[i].getPosition());
				System.out.println(count1 + ". 이름 : " + per[i].getName());
				System.out.println(count1 + ". 성과급 : " + per[i].getIncentive());
				System.out.println(count1 + ". 급여 : " + per[i].getSal());
				if(per[i].getPosition().equals("과장")) {
					System.out.println(count1 + ". 과장 총급여 : " + (int)((per[i].getSal() + per[i].getIncentive()+(per[i].getSal()*0.5))));
				}
				else if(per[i].getPosition().equals("팀장")) {
					System.out.println(count1 + ". 팀장 총급여 : " + (int)((per[i].getSal() + per[i].getIncentive()+(per[i].getSal()*0.4))));
				}
				else if(per[i].getPosition().equals("대리")) {
					System.out.println(count1 + ". 대리 총급여 : " + (int)((per[i].getSal() + per[i].getIncentive()+(per[i].getSal()*0.3))));
				}
				else if(per[i].getPosition().equals("사원")) {
					System.out.println(count1 + ". 사원 총급여 : " + (int)((per[i].getSal() + per[i].getIncentive()+(per[i].getSal()*0.2))));
				}
				System.out.println();
				// 총급여

				s = true;
			}
		}

		// 시간제 
		System.out.println("----------- 시간제 -----------");
		for(int i=0; i<index3; i++) {
			if(pt[i].getName() != null) {
				count2 += 1;
				System.out.println(count2 + ". 사번 : " + pt[i].getCf() + pt[i].getEmpNo());
				System.out.println(count2 + ". 이름 : " + pt[i].getName());
				System.out.println(count2 + ". 시간 : " + pt[i].getWorkTime());
				System.out.println(count2 + ". 추가수당 : " + (int)(pt[i].getSal()*pt[i].getExtraSal()));
				System.out.println(count2 + ". 기본급여 : " + pt[i].getSal()*pt[i].getWorkTime());
				System.out.println(count2 + ". 총급여 : " + (int)((pt[i].getSal() * pt[i].getWorkTime()) + ((pt[i].getSal()*pt[i].getExtraSal()))));
				System.out.println();
				s = true;
			}
		}

		// 기간제  
		System.out.println("----------- 기간제 -----------");
		for(int i=0; i<index2; i++) {
			if(ft[i].getName() != null) {
				count3 += 1;
				System.out.println(count3 + ". 사번 : " + ft[i].getCf() + ft[i].getEmpNo());
				System.out.println(count3 + ". 이름 : " + ft[i].getName());
				System.out.println(count3 + ". 기간 : " + ft[i].getWorkTerm());
				System.out.println(count3 + ". 추가수당 : " + (int)(ft[i].getSal()*ft[i].getExtraSal()));
				System.out.println(count3 + ". 기본급여 : " + ft[i].getSal()*ft[i].getWorkTerm());
				System.out.println(count3 + ". 총급여 : " + (int)((ft[i].getWorkTerm()*ft[i].getSal()) + (ft[i].getSal()*ft[i].getExtraSal())));
				System.out.println();
				s = true;
			}
		}
		if(s == false) {
			System.out.println("사원이 존재하지 않습니다. ");
		}
		System.out.println();
	}



	@Override
	public void empSelect(Permanent[] per, FixedTerm[] ft, PartTime[] pt) { // 사원 조회
		// 1이 들어오면 관리자
		// 2가 들어오면 사용자
		char c = 0;
		Scanner sc = new Scanner(System.in);
		System.out.println("--------------------------");
		do {
			System.out.println("A 정규직 B 기간제 C 시간제 4. 종료"); // 정규 1, 비정규 2
			System.out.print(" 입력 : ");
			char che = sc.next().charAt(0);
			switch(che) {
			case 'A': // 정규직 1(cf)
				System.out.print("찾으실 사원번호를 입력하세요. : ");
				int a = sc.nextInt();
				int a1 = 0;
				for(int i=0;i<index1;i++) { 
					if(per[i].getEmpNo() == a) {
						System.out.println("사번 : " + per[i].getCf() + per[i].getEmpNo());
						System.out.println("부서 : " + per[i].getDept());
						System.out.println("직급 : " + per[i].getPosition());
						System.out.println("이름 : " + per[i].getName());
						System.out.println("성과급 : " + per[i].getIncentive());
						System.out.println("급여 : " + per[i].getSal());
						if(per[i].getPosition().equals("과장")) {
							System.out.println("과장 총급여 : " + (int)((per[i].getSal() + per[i].getIncentive()+(per[i].getSal()*0.5))));
						}
						else if(per[i].getPosition().equals("팀장")) {
							System.out.println("팀장 총급여 : " + (int)((per[i].getSal() + per[i].getIncentive()+(per[i].getSal()*0.4))));
						}
						else if(per[i].getPosition().equals("대리")) {
							System.out.println("대리 총급여 : " + (int)((per[i].getSal() + per[i].getIncentive()+(per[i].getSal()*0.3))));
						}
						else if(per[i].getPosition().equals("사원")) {
							System.out.println("사원 총급여 : " + (int)((per[i].getSal() + per[i].getIncentive()+(per[i].getSal()*0.2))));
						}
						System.out.println();
						a1 = 1;
						break; // 포문을 풀로 돌리지않게 해보기
					}
				}
				if(a1 == 0) {
					System.out.println("사원 정보가 존재하지 않습니다.");
				}
				break;
			case 'B': // 기간제 
				System.out.print("찾으실 사원번호를 입력하세요. : ");
				int b = sc.nextInt();
				int b1 = 0;
				for(int i=0;i<index2;i++) {
					if(ft[i].getEmpNo() == b) {
						System.out.println("사번 : " + ft[i].getCf() + ft[i].getEmpNo());
						System.out.println("이름 : " + ft[i].getName());
						System.out.println("기간 : " + ft[i].getWorkTerm());
						System.out.println("추가수당 : " + (int)(ft[i].getSal()*ft[i].getExtraSal()));
						System.out.println("기본급여 : " + ft[i].getSal()*ft[i].getWorkTerm());
						System.out.println("총급여 : " + (int)((ft[i].getWorkTerm()*ft[i].getSal()) + (ft[i].getSal()*ft[i].getExtraSal())));
						System.out.println();
						b1 = 1;
						break;
					}
				}
				if(b1 == 0) {
					System.out.println("사원 정보가 존재하지 않습니다.");
				}
				break;
			case 'C': // 시간제 
				System.out.print("찾으실 사원번호를 입력하세요. : ");
				int d = sc.nextInt();
				int d1 = 0;
				for(int i=0;i<index3;i++) {
					if(pt[i].getEmpNo() == d) {
						System.out.println("사번 : " + pt[i].getCf() + pt[i].getEmpNo());
						System.out.println("이름 : " + pt[i].getName());
						System.out.println("시간 : " + pt[i].getWorkTime());
						System.out.println("추가수당 : " + (int)(pt[i].getSal()*pt[i].getExtraSal()));
						System.out.println("기본급여 : " + pt[i].getSal()*pt[i].getWorkTime());
						System.out.println("총급여 : " + (int)((pt[i].getSal() * pt[i].getWorkTime()) + ((pt[i].getSal()*pt[i].getExtraSal()))));
						System.out.println();
						d1 = 1;
						break;
					}
				}
				if(d1 == 0) {
					System.out.println("사원 정보가 존재하지 않습니다.");
				}
			case '4': // 종료
				c = che;
				break;
			default:
				System.out.print("올바른 번호를 입력하세요.");
			}
		}while(c != '4');
	}



	public void deptSelect(Permanent[] per) { // 부서 조회 (정규직만)
		// 위와 동일
		Scanner sc = new Scanner(System.in);
		String deptest;
		if(index1 == 0) {
			System.out.println("사원이 존재하지 않습니다.");
		}
		else {
			do {
				System.out.print("검색할 부서를 입력하세요 (종료n): ");
				deptest = sc.next();

				System.out.println("-------" + deptest + "-------");
				for(int i=0;i<index1;i++) {
					if(per[i].getDept().equals(deptest)) {
						System.out.println((i+1) + ". 사번 : " + per[i].getCf() + per[i].getEmpNo());
						System.out.println((i+1) + ". 이름 : " + per[i].getName());
						System.out.println((i+1) + ". 직급 : " + per[i].getPosition());
						System.out.println((i+1) + ". 성과 : " + per[i].getIncentive());
						System.out.println((i+1) + ". 급여 : " + per[i].getSal());
						System.out.println();
					}
				}
			}while(!deptest.equals("n"));
		}
	}


	@Override
	public void empCreate(Permanent[] per, FixedTerm[] ft, PartTime[] pt) { // 사원 추가
		Scanner sc = new Scanner(System.in);
		int c;
		// while문 추가
		do {
			System.out.println();
			System.out.println("1. 정규직 2. 기간제 3. 시간제 4. 종료 ");
			System.out.print("번호를 입력하세요. : ");
			c = sc.nextInt();
			switch(c) {
			case 1: // index1 
				if(index1 == per.length) { // 인덱스 비교
					System.out.println("사원을 추가할 수 없습니다. ");
				}
				else {
					System.out.print("추가할 사원의 수를 입력하세요. : ");
					this.cnt1 = sc.nextInt();
					System.out.println();

					if(index1+cnt1 > per.length) {
						System.out.println("최대 사원수를 넘어갑니다. \n다시 입력하세요.");					
					}
					else {
						for(int i=0;i<cnt1;i++) {
							per[index1] = new Permanent();
							// 사번 자동부여 
							System.out.println("사원 정보를 입력하세요. 정규직은 A이며 사원번호가 자동 부여됩니다. ");
							per[index1].setCf("A"); // 구분
							per[index1].setEmpNo(index1 + 1); // 사원번호 : 1번부터 자동부여 되도록
							// 입력정보
							System.out.print((i+1) + "번 사원 이름 : ");
							per[index1].setName(sc.next()); //이름

							System.out.print((i+1) + "번 사원 부서 : ");
							per[index1].setDept(sc.next()); // 부서

							System.out.print((i+1) + "번 사원 직급 : ");
							per[index1].setPosition(sc.next()); // 직급

							System.out.print((i+1) + "번 사원 성과급 : ");
							per[index1].setIncentive(sc.nextInt()); // 인센티브

							System.out.print((i+1) + "번 사원 급여 : ");
							per[index1].setSal(sc.nextInt()); // 급여
							System.out.println();
							index1++;
						}	
					}
				}

				break;

			case 2: // 기간제 index2 
				if(index2 == ft.length) { // 인덱스 비교
					System.out.println("사원을 추가할 수 없습니다. ");
				}
				else {
					System.out.print("추가할 사원의 수를 입력하세요. : ");
					this.cnt2 = sc.nextInt();
					System.out.println();

					if(index2+cnt2 > ft.length) {
						System.out.println("최대 사원수를 넘어갑니다. \n다시 입력하세요.");
					}
					else {
						for(int i=0;i<cnt2;i++) {
							ft[index2] = new FixedTerm();
							// 사번 자동부여 
							System.out.println("사원 정보를 입력하세요. 비정규[기간제]는 B이며 사원번호가 자동 부여됩니다. ");
							ft[index2].setCf("B"); // 구분
							ft[index2].setEmpNo(index2 + 1); // 사원번호 : 1번부터 자동부여 되도록
							// 입력정보
							System.out.print((i+1) + "번 비정규 이름 : ");
							ft[index2].setName(sc.next()); //이름

							System.out.print((i+1) + "번 비정규 추가수당(최대 100%) : ");
							ft[index2].setExtraSal(sc.nextInt());

							System.out.print((i+1) + "번 비정규 일한기간 : ");
							ft[index2].setWorkTerm(sc.nextInt());

							System.out.print((i+1) + "번 비정규 일당 : ");
							ft[index2].setSal(sc.nextInt()); // 급여
							System.out.println();
							index2++;
						}	
					}
				}
				break;

			case 3: // 시간제 index3 
				if(index3 == pt.length) { // 인덱스 비교
					System.out.println("사원을 추가할 수 없습니다. ");
				}
				else {
					System.out.print("추가할 사원의 수를 입력하세요. : ");
					this.cnt3 = sc.nextInt();
					System.out.println();

					if(index3+cnt3 > pt.length) {
						System.out.print("최대 사원수를 넘어갑니다. \n다시 입력하세요.");
					}
					else {
						for(int i=0;i<cnt3;i++) {
							pt[index3] = new PartTime();
							// 사번 자동부여 
							System.out.println("사원 정보를 입력하세요. 비정규[시간제]는 C이며 사원번호가 자동 부여됩니다. ");
							pt[index3].setCf("C"); // 구분
							pt[index3].setEmpNo(index3 + 1); // 사원번호 : 1번부터 자동부여 되도록
							// 입력정보
							System.out.print((i+1) + "번 비정규 이름 : ");
							pt[index3].setName(sc.next()); //이름

							System.out.print((i+1) + "번 비정규 추가수당(최대 100%) : ");
							pt[index3].setExtraSal(sc.nextInt());

							System.out.print((i+1) + "번 비정규 일한시간 : ");
							pt[index3].setWorkTime(sc.nextInt());

							System.out.print((i+1) + "번 비정규 시급 : ");
							pt[index3].setSal(sc.nextInt()); // 급여
							System.out.println();
							index3++;
						}	
					}
				}
				break;

			case 4:
				break;

			default:
				System.out.println("다시 입력하세요. ");
				break;
			}
		}while(c != 4);

	}


	@Override
	public void empUpdate(Permanent[] per, FixedTerm[] ft, PartTime[] pt) { // 사원 수정
		Scanner sc = new Scanner(System.in);
		int up;
		System.out.println();
		do {
			System.out.println("수정할 사원의 종류 번호를 선택하세요. ");
			System.out.println("1. 정규직 2. 기간제 3. 시간제 4. 종료");
			System.out.print("입력 : ");
			up = sc.nextInt(); 

			switch(up) {
			case 1: // 이름 부서 직급 인센 급여
				// 정규직
				if(index1 == 0) { // 인덱스 비교
					System.out.println("수정할 사원이 없습니다. ");
				}
				else {
					System.out.print("수정할 사원번호를 입력하세요 : ");
					up = sc.nextInt();
					for(int i=0;i<index1;i++) {
						if(per[i].getEmpNo() == up) { // 해당되는 사원번호 체크 조건문

							do {
								System.out.println("수정하실 필드명을 선택하세요. ");
								System.out.print("1. 이름 2. 부서 3. 직급 4. 성과급 5. 급여 (종료 : 6) : ");
								up = sc.nextInt();
								System.out.println();

								switch (up) {
								case 1:
									System.out.print("수정할 이름 입력 : ");
									per[i].setName(sc.next());
									System.out.println();
									break;
								case 2:
									System.out.print("수정할 부서 입력 : ");
									per[i].setDept(sc.next());
									System.out.println();
									break;
								case 3:
									System.out.print("수정할 직급 입력 : ");
									per[i].setPosition(sc.next());
									System.out.println();
									break;
								case 4:
									System.out.print("수정할 성과급 입력 : ");
									per[i].setIncentive(sc.nextInt());
									System.out.println();
									break;
								case 5:
									System.out.print("수정할 급여 입력 : ");
									per[i].setSal(sc.nextInt());
									System.out.println();
									break;
								case 6:
									break;
								default:
									System.out.println("올바른 필드명을 입력하세요. ");
									break;
								}
							}while(up != 6);

						}
						break;
					}
				}
				break;

			case 2: // 이름 추가수당 일한기간 급여
				// 기간제 
				if(index2 == 0) { // 인덱스 비교
					System.out.println("수정할 사원이 없습니다. ");
				}
				else {
					System.out.print("수정할 사원번호를 입력하세요 : ");
					up = sc.nextInt();
					for(int i=0;i<index2;i++) {
						if(ft[i].getEmpNo() == up) { // 해당되는 사원번호 체크 조건문
							do {
								System.out.println("수정하실 필드명을 선택하세요. ");
								System.out.print("1. 이름 2. 추가수당 3. 일한기간 4. 급여 (종료 : 5) : ");
								up = sc.nextInt();
								System.out.println();

								switch (up) {
								case 1:
									System.out.print("수정할 이름 입력 : ");
									ft[i].setName(sc.next());
									System.out.println();
									break;
								case 2:
									System.out.print("수정할 추가수당 입력 (최대 100%): ");
									ft[i].setExtraSal(sc.nextInt());
									System.out.println();
									break;
								case 3:
									System.out.print("수정할 기간 입력 : ");
									ft[i].setWorkTerm(sc.nextInt());
									System.out.println();
									break;
								case 4:
									System.out.print("수정할 일당 입력 : ");
									ft[i].setSal(sc.nextInt());
									System.out.println();
									break;
								case 5:
									break;
								default:
									System.out.println("올바른 필드명을 입력하세요. ");
									break;
								}
							}while(up != 5);

						}
						break;
					}
				}
				break;

			case 3: // 이름 추가수당 일한기간 일한시간 급여
				// 시간제
				if(index3 == 0) { // 인덱스 비교
					System.out.println("수정할 사원이 없습니다. ");
				}
				else {
					System.out.print("수정할 사원번호를 입력하세요 : ");
					up = sc.nextInt();
					for(int i=0;i<index3;i++) {
						if(pt[i].getEmpNo() == up) { // 해당되는 사원번호 체크 조건문
							do {
								System.out.println("수정하실 필드명을 선택하세요. ");
								System.out.print("1. 이름 2. 추가수당 3. 일한시간 4. 급여 (종료 : 5) : ");
								up = sc.nextInt();
								System.out.println();

								switch (up) {
								case 1:
									System.out.print("수정할 이름 입력 : ");
									pt[i].setName(sc.next());
									System.out.println();
									break;
								case 2:
									System.out.print("수정할 추가수당 입력 (최대 100%) : ");
									pt[i].setExtraSal(sc.nextInt());
									System.out.println();
									break;
								case 3:
									System.out.print("수정할 시간 입력 : ");
									pt[i].setWorkTime(sc.nextInt());
									System.out.println();
									break;
								case 4:
									System.out.print("수정할 시급 입력 : ");
									pt[i].setSal(sc.nextInt());
									System.out.println();
									break;
								case 5:
									break;
								default:
									System.out.println("올바른 필드명을 입력하세요. ");
									break;
								}
							}while(up != 5);
						}
						break;
					}
				}
				break;
			case 4:
				break;
			default:
				System.out.println("올바른 번호를 입력하세요. ");
				break;
			}
		}while(up != 4);
	}


	@Override
	public void empDelete(Permanent[] per, FixedTerm[] ft, PartTime[] pt) {
		int num;
		Scanner sc = new Scanner(System.in);
		Permanent tmp1 = new Permanent();
		PartTime tmp2 = new PartTime();
		FixedTerm tmp3 = new FixedTerm();
		do {
			int cnt = 0; // 시작점 체크
			int snum = 0; // null 값 체크
			int k = 0;
			System.out.println("삭제할 사원의 종류를 선택하세요. ");
			System.out.println("1. 정규직 2. 시간제 3. 기간제 4. 종료");
			System.out.print("입력 : ");
			num = sc.nextInt();
			switch (num) {

			//// Try catch 문 작성
			//		try {
			//		}catch(Exception e) {
			//		}

			case 1: // 정규직
				if(index1 == 0) { // 인덱스 비교
					System.out.println("삭제할 인원이 없습니다. ");
				}
				else {
					try {
						do {
							System.out.print("삭제할 사원의 번호를 입력하세요 (종료:0) : ");
							num = sc.nextInt();
							for(int i=0;i<index1;i++) {
								if(per[i].getEmpNo() == num) {
									per[i] = new Permanent();
									break;
								}
							}
						}while(num != 0);
					}catch(Exception e){}

					// 배열정리 
					for(int i=0;i<=index1-1;i++) {
						if(per[i].getName() == null) {
							snum++;
						}
					}
					while(k<snum) {
						for(int i=0;i<=index1-1;i++) {
							if(per[i].getName() == null) {
								cnt = i;
								break;
							}
						}

						for(int i=cnt;i<=index1-1;i++) {
								tmp1 = per[i+1];
								per[i+1] = per[i];
								per[i] = tmp1;
						}
						k++;
					}

					index1 -= snum;
					// 사원번호 재부여
					for(int i=0;i<index1;i++) {
						per[i].setEmpNo(i + 1);
					}
					
				}
				break;

			case 2: // 시간제                       
				if(index3 == 0) { // 인덱스 비교
					System.out.println("삭제할 인원이 없습니다. ");
				}
				else {
					try {
						do {
							System.out.print("삭제할 사원의 번호를 입력하세요 (종료:0) : ");
							num = sc.nextInt();
							for(int i=0;i<index3;i++) {
								if(pt[i].getEmpNo() == num) {
									pt[i] = new PartTime();
									break;
								}
							}
						}while(num != 0);}catch(Exception e) {}

					// 배열정리 
					for(int i=0;i<=index3-1;i++) {
						if(pt[i].getName() == null) {
							snum++;
						}
					}
					while(k<snum) {
						for(int i=0;i<=index3-1;i++) {
							if(pt[i].getName() == null) {
								cnt = i;
								break;
							}
						}

						for(int i=cnt;i<=index3-1;i++) {
								tmp2 = pt[i+1];
								pt[i+1] = pt[i];
								pt[i] = tmp2;
						}
						k++;
					}

					index3 -= snum;
					// 사원번호 재부여
					for(int i=0;i<index3;i++) {
						pt[i].setEmpNo(i + 1);
					}
				}
				break;

			case 3: // 기간제 index2; // ft 기간제
				if(index2 == 0) { // 인덱스 비교
					System.out.println("삭제할 인원이 없습니다. ");
				}
				else {
					try {
						do {
							System.out.print("삭제할 사원의 번호를 입력하세요 (종료:0) : ");
							num = sc.nextInt();
							for(int i=0;i<index2;i++) {
								if(ft[i].getEmpNo() == num) {
									ft[i] = new FixedTerm();
									break;
								}
							}
						}while(num != 0);}catch(Exception e) {}

					// 배열정리 
					for(int i=0;i<=index2-1;i++) {
						if(ft[i].getName() == null) {
							snum++;
						}
					}
					while(k<snum) {
						for(int i=0;i<=index2-1;i++) {
							if(ft[i].getName() == null) {
								cnt = i;
								break;
							}
						}

						for(int i=cnt;i<=index2-1;i++) {
								tmp3 = ft[i+1];
								ft[i+1] = ft[i];
								ft[i] = tmp3;
						}
						k++;
					}

					index2 -= snum;
					// 사원번호 재부여
					for(int i=0;i<index2;i++) {
						ft[i].setEmpNo(i + 1);
					}
				}
				break;

			case 4: // 종료
				break;

			default:
				System.out.println("올바른 번호를 입력하세요. ");
				break;
			}
		}while(num != 4);
	}
	
}

반응형

댓글