티스토리 뷰

소스 코드


Service.java


package com.emp.service;

import java.sql.Date;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

import com.emp.domain.Department;
import com.emp.domain.Employee;
import com.emp.domain.Job;
import com.emp.domain.Login;
import com.emp.domain.Region;
import com.emp.persistance.DepartmentDAO;
import com.emp.persistance.EmployeeDAO;
import com.emp.persistance.JobDAO;
import com.emp.persistance.LoginDAO;
import com.emp.persistance.RegionDAO;

// 메인 메뉴별 액션 클래스
public class Service {
	
	private String id_;
	private LoginDAO loginDAO = new LoginDAO();
	private EmployeeDAO employeeDAO = new EmployeeDAO();
	private RegionDAO regionDAO = new RegionDAO();
	private DepartmentDAO departmentDAO = new DepartmentDAO();
	private JobDAO jobDAO = new JobDAO();

	public void login(Scanner sc) {
		System.out.print("아이디 > ");
		String id_ = sc.nextLine();
		System.out.print("패스워드 > ");
		String pw_ = sc.nextLine();
		
		int result = this.loginDAO.login(new Login(id_, pw_));
		if(result == 0) {
			System.out.println("아이디 또는 패스워드가 틀렸습니다.");
		} else {
			this.id_ = id_;
			System.out.printf("관리자 '%s' 로그인 되었습니다.\n", this.id_);
			this.main(sc);
		}
	}
	
	private void main(Scanner sc) {
		boolean run = true;
		while (run) {
			System.out.println();
			System.out.println();
			System.out.println();
			System.out.println("--------------");
			System.out.printf("직원관리 v2.0 (관리자:%s)\n", this.id_);
			System.out.println("--------------");
			System.out.println("1.직원관리  2.기초정보관리  3.관리자정보관리");
			System.out.print("선택(0/1) > ");
			
			int selectNum = sc.nextInt();
			sc.nextLine();

			switch (selectNum) {
			case 1:
				this.menu1(sc);
				break;
				
			case 2:
				this.menu2(sc);
				break;
				
			case 3:
				this.menu3(sc);
				break;
				
			case 0:
				run = false;
				System.out.printf("관리자 '%s'가 로그아웃 되었습니다.\n", this.id_);
				this.id_ = null;
				break;
				
			default:
				System.out.println("잘못 입력하셨습니다.");
				break;
			}
		}
	}
	
	private void menu1(Scanner sc) {
		boolean run = true;
		while (run) {
			System.out.println("--------------");
			System.out.printf("직원관리 v2.0 (관리자:%s) > 직원 관리\n", this.id_);
			System.out.println("--------------");
			System.out.println("1.직원입력  2.직원전체출력  3.직원검색  4.직원삭제");
			System.out.print("선택 > ");
			
			int selectNum = sc.nextInt();
			sc.nextLine();
			
			switch(selectNum) {
			
			case 1:
				this.menu1_sub1(sc);
				break;
				
			case 2:
				this.menu1_sub2(sc);
				break;
				
			case 3:
				this.menu1_sub3(sc);
				break;
				
			case 4:
				this.menu1_sub4(sc);
				break;
				
			case 0:
				run = false;
				break;
				
			default:
				System.out.println("잘못 입력하셨습니다.");
				break;
			}
		}
	}
	private void menu1_sub1(Scanner sc) {
		System.out.println("--------------");
		System.out.printf("직원관리 v2.0 (관리자:%s) > 직원 관리 > 직원 입력\n", this.id_);
		System.out.println("--------------");
		System.out.print("이름 > ");
		String name_ = sc.nextLine();
		System.out.print("주민등록번호 > ");
		String ssn = sc.nextLine();
		Date hiredate = null;
		while(true) {
			try {
				System.out.print("입사일 > ");
				hiredate = Date.valueOf(sc.nextLine());
				break;
			} catch (IllegalArgumentException e) {
				System.out.println("날짜 형식이 잘못되었습니다!");
			}
		}		
		System.out.print("전화번호 > ");
		String phone = sc.nextLine();
		System.out.println("--------------");
		this.menu2_sub1_sub2();
		System.out.println("--------------");
		System.out.print("지역번호 > ");
		String regId = sc.nextLine();
		System.out.println("--------------");
		this.menu2_sub2_sub2();
		System.out.println("--------------");
		System.out.print("부서번호 > ");
		String deptId = sc.nextLine();
		System.out.println("--------------");
		this.menu2_sub3_sub2();
		System.out.println("--------------");
		System.out.print("직위번호 > ");
		String jobId = sc.nextLine();
		System.out.print("기본급 > ");
		int basicPay = sc.nextInt();
		sc.nextLine();
		System.out.print("수당 > ");
		int extraPay = sc.nextInt();
		sc.nextLine();
		
		Employee e = new Employee("", name_, ssn, hiredate, phone, regId, deptId, jobId, basicPay, extraPay);
		int result = this.employeeDAO.add(e);
		
		if(result == 1) {
			System.out.println("신규 회원 정보 입력 완료!");
		} else {
			System.out.println("신규 회원 정보 입력 실패!");
		}
	}

	private void menu1_sub2(Scanner sc) {
		boolean run = true;
		while(run) {
			System.out.println("--------------");
			System.out.printf("직원관리 v2.0 (관리자:%s) > 직원 관리 > 직원 전체 출력\n", this.id_);
			System.out.println("--------------");
			System.out.println("1.사번정렬  2.이름정렬  3.지역명정렬  4.부서명정렬  5.직위명정렬");
			System.out.print("선택 > ");
			int selectNum = sc.nextInt();
			sc.nextLine();
			
			switch(selectNum) {
			case 1:
				this.menu1_sub2_sub1(sc);
				break;
				
			case 2:
				this.menu1_sub2_sub2(sc);
				break;
				
			case 3:
				this.menu1_sub2_sub3(sc);
				break;
				
			case 4:
				this.menu1_sub2_sub4(sc);
				break;
				
			case 5:
				this.menu1_sub2_sub5(sc);
				break;
				
			case 0:
				run = false;
				break;
				
			default:
				System.out.println("잘못 입력하셨습니다.");
				break;
			}
		}
	}

	private void menu1_sub2_sub1(Scanner sc) {
		List<Employee> list = new ArrayList<Employee>();
		
		System.out.println("--------------");
		System.out.printf("직원관리 v2.0 (관리자:%s) > 직원 관리 > 직원 전체 출력 > 사번 정렬\n", this.id_);
		System.out.println("--------------");
		
		list = this.employeeDAO.sort("empId","");
		this.menu1_sub2_print(list);
	}

	private void menu1_sub2_sub2(Scanner sc) {
		List<Employee> list = new ArrayList<Employee>();
		
		System.out.println("--------------");
		System.out.printf("직원관리 v2.0 (관리자:%s) > 직원 관리 > 직원 전체 출력 > 이름 정렬\n", this.id_);
		System.out.println("--------------");
		
		list = this.employeeDAO.sort("name_","");
		this.menu1_sub2_print(list);
	}

	private void menu1_sub2_sub3(Scanner sc) {
		List<Employee> list = new ArrayList<Employee>();
		
		System.out.println("--------------");
		System.out.printf("직원관리 v2.0 (관리자:%s) > 직원 관리 > 직원 전체 출력 > 지역명 정렬\n", this.id_);
		System.out.println("--------------");
		
		list = this.employeeDAO.sort("regId","");
		this.menu1_sub2_print(list);
	}

	private void menu1_sub2_sub4(Scanner sc) {
		List<Employee> list = new ArrayList<Employee>();

		System.out.println("--------------");
		System.out.printf("직원관리 v2.0 (관리자:%s) > 직원 관리 > 직원 전체 출력 > 부서명 정렬\n", this.id_);
		System.out.println("--------------");
		
		list = this.employeeDAO.sort("deptId","");
		this.menu1_sub2_print(list);
	}

	private void menu1_sub2_sub5(Scanner sc) {
		List<Employee> list = new ArrayList<Employee>();
		
		System.out.println("--------------");
		System.out.printf("직원관리 v2.0 (관리자:%s) > 직원 관리 > 직원 전체 출력 > 직위명 정렬\n", this.id_);
		System.out.println("--------------");
		
		list = this.employeeDAO.sort("jobId","");
		this.menu1_sub2_print(list);
	}
	
	private void menu1_sub2_print(List<Employee> list) {
		if(list.size() > 0) {
			System.out.printf("전체 인원 : %d명\n", list.size());
			System.out.println("--------------");
			System.out.println("사번 / 이름 / 주민번호 / 입사일 / 전화번호 / 지역명 / 부서명 / 직위명 / 기본급 / 수당 / 급여");
			for(Employee e : list) {
				System.out.println(e.print1());
			}
		} else {
			System.out.println("검색 결과가 없습니다.");
		}
	}


	private void menu1_sub3(Scanner sc) {
		boolean run = true;
		while(run) {
			System.out.println("--------------");
			System.out.printf("직원관리 v2.0 (관리자:%s) > 직원 관리 > 직원 검색\n", this.id_);
			System.out.println("--------------");
			System.out.println("1.사번 검색  2.이름 검색  3.지역명 검색  4.부서명 검색  5.직위명 검색");
			System.out.print("선택 > ");
			int selectNum = sc.nextInt();
			sc.nextLine();
			
			switch(selectNum) {
			case 1:
				this.menu1_sub3_sub1(sc);
				break;
				
			case 2:
				this.menu1_sub3_sub2(sc);
				break;
				
			case 3:
				this.menu1_sub3_sub3(sc);
				break;
				
			case 4:
				this.menu1_sub3_sub4(sc);
				break;
				
			case 5:
				this.menu1_sub3_sub5(sc);
				break;
				
			case 0:
				run = false;
				break;
				
			default:
				System.out.println("잘못 입력하셨습니다.");
				break;
			}
		}
	}
	
	private void menu1_sub3_sub1(Scanner sc) {
		List<Employee> list = new ArrayList<Employee>();

		System.out.println("--------------");
		System.out.printf("직원관리 v2.0 (관리자:%s) > 직원 관리 > 직원 검색 > 사번 검색\n", this.id_);
		System.out.println("--------------");

		System.out.print("사번 > ");
		String empId = sc.nextLine();
		
		list = this.employeeDAO.search("empId", empId);
		this.menu1_sub2_print(list);
	}

	private void menu1_sub3_sub2(Scanner sc) {
		List<Employee> list = new ArrayList<Employee>();

		System.out.println("--------------");
		System.out.printf("직원관리 v2.0 (관리자:%s) > 직원 관리 > 직원 검색 > 이름 검색\n", this.id_);
		System.out.println("--------------");

		System.out.print("이름 > ");
		String name_ = sc.nextLine();
		
		list = this.employeeDAO.search("name_", name_);
		this.menu1_sub2_print(list);
	}

	private void menu1_sub3_sub3(Scanner sc) {
		List<Employee> list = new ArrayList<Employee>();

		System.out.println("--------------");
		System.out.printf("직원관리 v2.0 (관리자:%s) > 직원 관리 > 직원 검색 > 지역명 검색\n", this.id_);
		System.out.println("--------------");

		System.out.print("지역명 > ");
		String reg_name = sc.nextLine();
		
		list = this.employeeDAO.search("reg_name", reg_name);
		this.menu1_sub2_print(list);
	}

	private void menu1_sub3_sub4(Scanner sc) {
		List<Employee> list = new ArrayList<Employee>();

		System.out.println("--------------");
		System.out.printf("직원관리 v2.0 (관리자:%s) > 직원 관리 > 직원 검색 > 부서명 검색\n", this.id_);
		System.out.println("--------------");

		System.out.print("부서명 > ");
		String dept_name = sc.nextLine();
		
		list = this.employeeDAO.search("dept_name", dept_name);
		this.menu1_sub2_print(list);
	}

	private void menu1_sub3_sub5(Scanner sc) {
		List<Employee> list = new ArrayList<Employee>();

		System.out.println("--------------");
		System.out.printf("직원관리 v2.0 (관리자:%s) > 직원 관리 > 직원 검색 > 직위명 검색\n", this.id_);
		System.out.println("--------------");

		System.out.print("직위명 > ");
		String job_title = sc.nextLine();
		
		list = this.employeeDAO.search("job_title", job_title);
		this.menu1_sub2_print(list);
	}

	private void menu1_sub4(Scanner sc) {
		System.out.println("--------------");
		System.out.printf("직원관리 v2.0 (관리자:%s) > 직원 관리 > 직원 삭제\n", this.id_);
		System.out.println("--------------");
		
		System.out.print("사번 > ");
		String empId = sc.nextLine();
		
		int result = this.employeeDAO.remove(empId);
		
		if(result == 1) {
			System.out.println("회원 삭제 성공!");
		} else {
			System.out.println("회원 삭제 실패!");
		}
	}

	private void menu2(Scanner sc) {
		boolean run = true;
		while (run) {
			System.out.println("--------------");
			System.out.printf("직원관리 v2.0 (관리자:%s) > 기초 정보 관리\n", this.id_);
			System.out.println("--------------");
			System.out.println("1.지역관리  2.부서관리  3.직위관리");
			System.out.print("선택 > ");
			
			int selectNum = sc.nextInt();
			sc.nextLine();
			
			switch(selectNum) {
			
			case 1:
				this.menu2_sub1(sc);
				break;
				
			case 2:
				this.menu2_sub2(sc);
				break;
				
			case 3:
				this.menu2_sub3(sc);
				break;
				
			case 0:
				run = false;
				break;
				
			default:
				System.out.println("잘못 입력하셨습니다.");
				break;
			}
		}
	}
	
	private void menu2_sub1_sub1(Scanner sc) {
		System.out.println("--------------");
		System.out.printf("직원관리 v2.0 (관리자:%s) > 기초 정보 관리 > 지역 관리 > 지역 입력\n", this.id_);
		System.out.println("--------------");
		this.menu2_sub1_sub2();
		System.out.println("--------------");
		System.out.print("신규 지역 이름 > ");
		String reg_name = sc.nextLine();
		Region r = new Region("", reg_name);
		
		int result = regionDAO.add(r);
		
		if(result == 1) {
			System.out.println("신규 지역 정보 입력 완료!");
		} else {
			System.out.println("신규 지역 정보 입력 실패!");
		}
	}
	
	private void menu2_sub1_sub2() {
		List<Region> list = new ArrayList<Region>();
		list = this.regionDAO.list1();
		if(list.size() > 0) {
			System.out.println("지역번호 / 지역명");
			for(Region r : list) {
				System.out.print(r.print1());
			}
		} else {
			System.out.println("검색 결과가 없습니다.");
		}
	}
	
	private void menu2_sub1_sub3(Scanner sc) {
		List<Region> list = new ArrayList<Region>();
		list = this.regionDAO.list2();
		if(list.size() > 0) {
			System.out.println("지역번호 / 지역명 / 삭제가능여부");
			for(Region r : list) {
				System.out.print(r.print1());
			}
			
			System.out.print("지역번호 > ");
			String regId = sc.nextLine();
			Region r = new Region(regId, "");
			int result = this.regionDAO.remove(r);
			if(result != 0) {
				System.out.printf("%s 지역이 삭제되었습니다.\n", regId);
			} else {
				System.out.println("삭제에 실패했습니다.");
			}
		} else {
			System.out.println("검색 결과가 없습니다.");
		}
	}
	private void menu2_sub1(Scanner sc) {
		boolean run = true;
		while (run) {
			System.out.println("--------------");
			System.out.printf("직원관리 v2.0 (관리자:%s) > 기초 정보 관리 > 지역 관리\n", this.id_);
			System.out.println("--------------");
			System.out.println("1.지역입력  2.지역출력  3.지역삭제");
			System.out.print("선택 > ");
			
			int selectNum = sc.nextInt();
			sc.nextLine();
			
			switch(selectNum) {
			case 1:
				this.menu2_sub1_sub1(sc);
				break;
				
			case 2:
				this.menu2_sub1_sub2();
				break;
				
			case 3:
				this.menu2_sub1_sub3(sc);
				break;			
				
			case 0:
				run = false;
				break;
				
			default:
				System.out.println("잘못 입력하셨습니다.");
				break;
			}
		}
	}
	
	private void menu2_sub2(Scanner sc) {
		boolean run = true;
		while (run) {
			System.out.println("--------------");
			System.out.printf("직원관리 v2.0 (관리자:%s) > 기초 정보 관리 > 부서 관리\n", this.id_);
			System.out.println("--------------");
			System.out.println("1.부서입력  2.부서출력  3.부서삭제");
			System.out.print("선택 > ");
			
			int selectNum = sc.nextInt();
			sc.nextLine();
			
			switch(selectNum) {
			case 1:
				this.menu2_sub2_sub1(sc);
				break;
				
			case 2:
				this.menu2_sub2_sub2();
				break;
				
			case 3:
				this.menu2_sub2_sub3(sc);
				break;			
				
			case 0:
				run = false;
				break;
				
			default:
				System.out.println("잘못 입력하셨습니다.");
				break;
			}
		}
	}

	private void menu2_sub2_sub1(Scanner sc) {
		System.out.println("--------------");
		System.out.printf("직원관리 v2.0 (관리자:%s) > 기초 정보 관리 > 부서 관리 > 부서 입력\n", this.id_);
		System.out.println("--------------");
		this.menu2_sub2_sub2();
		System.out.println("--------------");
		System.out.print("신규 부서 이름 > ");
		String dept_name = sc.nextLine();
		Department d = new Department("", dept_name);
		
		int result = departmentDAO.add(d);
		
		if(result == 1) {
			System.out.println("신규 부서 정보 입력 완료!");
		} else {
			System.out.println("신규 부서 정보 입력 실패!");
		}
	}

	private void menu2_sub2_sub2() {
		List<Department> list = new ArrayList<Department>();
		list = this.departmentDAO.list1();
		if(list.size() > 0) {
			System.out.println("부서번호 / 부서명");
			for(Department d : list) {
				System.out.print(d.print1());
			}
		} else {
			System.out.println("검색 결과가 없습니다.");
		}
	}

	private void menu2_sub2_sub3(Scanner sc) {
		List<Department> list = new ArrayList<Department>();
		list = this.departmentDAO.list2();
		if(list.size() > 0) {
			System.out.println("부서번호 / 부서명 / 삭제가능여부");
			for(Department d : list) {
				System.out.print(d.print1());
			}
			
			System.out.print("부서번호 > ");
			String deptId = sc.nextLine();
			Department d = new Department(deptId, "");
			int result = this.departmentDAO.remove(d);
			if(result != 0) {
				System.out.printf("%s 부서가 삭제되었습니다.\n", deptId);
			} else {
				System.out.println("삭제에 실패했습니다.");
			}
		} else {
			System.out.println("검색 결과가 없습니다.");
		}
	}

	private void menu2_sub3(Scanner sc) {
		boolean run = true;
		while (run) {
			System.out.println("--------------");
			System.out.printf("직원관리 v2.0 (관리자:%s) > 기초 정보 관리 > 직위 관리\n", this.id_);
			System.out.println("--------------");
			System.out.println("1.직위입력  2.직위출력  3.직위삭제");
			System.out.print("선택 > ");
			
			int selectNum = sc.nextInt();
			sc.nextLine();
			
			switch(selectNum) {
			case 1:
				this.menu2_sub3_sub1(sc);
				break;
				
			case 2:
				this.menu2_sub3_sub2();
				break;
				
			case 3:
				this.menu2_sub3_sub3(sc);
				break;			
				
			case 0:
				run = false;
				break;
				
			default:
				System.out.println("잘못 입력하셨습니다.");
				break;
			}
		}
	}
	
	private void menu2_sub3_sub1(Scanner sc) {
		System.out.println("--------------");
		System.out.printf("직원관리 v2.0 (관리자:%s) > 기초 정보 관리 > 직위 관리 > 직위 입력\n", this.id_);
		System.out.println("--------------");
		this.menu2_sub3_sub2();
		System.out.println("--------------");
		System.out.print("신규 직위 이름 > ");
		String job_title = sc.nextLine();
		System.out.print("최소 기본 급여 > ");
		int min_basicPay = sc.nextInt();
		sc.nextLine();
		Job j = new Job("", job_title, min_basicPay);
		
		int result = this.jobDAO.add(j);
		
		if(result == 1) {
			System.out.println("신규 직위 정보 입력 완료!");
		} else {
			System.out.println("신규 직위 정보 입력 실패!");
		}
	}
	
	private void menu2_sub3_sub2() {
		List<Job> list = new ArrayList<Job>();
		list = this.jobDAO.list1();
		if(list.size() > 0) {
			System.out.println("직위번호 / 직위명 / 최소기본급여");
			for(Job j : list) {
				System.out.print(j.print1());
			}
		} else {
			System.out.println("검색 결과가 없습니다.");
		}
	}
	
	private void menu2_sub3_sub3(Scanner sc) {
		List<Job> list = new ArrayList<Job>();
		list = this.jobDAO.list2();
		if(list.size() > 0) {
			System.out.println("직위번호 / 직위명 / 최소기본급여 / 삭제가능여부");
			for(Job j : list) {
				System.out.print(j.print1());
			}
			
			System.out.print("직위번호 > ");
			String jobId = sc.nextLine();
			Job j = new Job(jobId, "", 0);
			int result = this.jobDAO.remove(j);
			if(result != 0) {
				System.out.printf("%s 직위가 삭제되었습니다.\n", jobId);
			} else {
				System.out.println("삭제에 실패했습니다.");
			}
		} else {
			System.out.println("검색 결과가 없습니다.");
		}
	}
	
	private void menu3(Scanner sc) {
		boolean run = true;
		while(run) {
			System.out.println("--------------");
			System.out.printf("직원관리 v2.0 (관리자:%s) > 관리자정보관리\n", this.id_);
			System.out.println("--------------");
			
			System.out.println("1.관리자추가  2.패스워드변경");
			System.out.print("선택 > ");
			int selectNum = sc.nextInt();
			sc.nextLine();
			
			switch(selectNum) {
			
			case 1:
				this.menu3_sub1(sc);
				break;
				
			case 2:
				this.menu3_sub2(sc);
				break;
				
			case 0:
				run = false;
				break;
				
			default:
				System.out.println("잘못 입력하셨습니다.");
				break;
			}
		}
	}

	private void menu3_sub1(Scanner sc) {
		System.out.print("아이디 > ");
		String id_ = sc.nextLine();
		System.out.print("패스워드 > ");
		String pw_ = sc.nextLine();
		Login l = new Login(id_, pw_);
		int result = this.loginDAO.add(l);
		
		if(result > 0) {
			System.out.printf("신규 관리자 '%s'이(가) 추가되었습니다.\n", id_);
		} else {
			System.out.println("관리자 추가에 실패했습니다.");
		}
	}

	private void menu3_sub2(Scanner sc) {
		System.out.print("현재 패스워드 > ");
		String pw_ = sc.nextLine();
		System.out.print("신규 패스워드 > ");
		String newPw_ = sc.nextLine();
		System.out.print("패스워드를 변경할까요(0/1) > ");
		int selectNum = sc.nextInt();
		sc.nextLine();
		
		if(selectNum == 1) {
			int result = this.loginDAO.change(this.id_, pw_, newPw_);
			
			if(result > 0) {
				System.out.printf("관리자 '%s'의 패스워드가 변경되었습니다.\n", id_);
			} else {
				System.out.println("관리자 패스워드 변경에 실패했습니다.");
			}
		} else {
			System.out.println("취소되었습니다.");
		}
	}
}

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함