JAVA / 직원 출퇴근 로그 관리 시스템 / 초급 프로젝트

    목차

 

import java.util.ArrayList;

import java.time.LocalDateTime;

import java.util.Scanner;

 

public class Staff {

private String name;

private String position;

private String team;

private String phone;

private boolean isOnline;

 

// 출퇴근 로그를 저장할 리스트

private ArrayList<String> log = new ArrayList<>();

 

public Staff(String name, String position, String team, String phone) {

this.name = name;

this.position = position;

this.team = team;

this.phone = phone;

this.isOnline = false;

}

 

 

 

public String getName() {

return name;

}

 

public String getPosition() {

return position;

}

 

public String getTeam() {

return team;

}

 

public String getPhone() {

return phone;

}

 

public boolean isOnline() {

return isOnline;

}

 

public void setOnline(boolean isOnline) {

this.isOnline = isOnline;

}

 

public void setPosition(String position) {

this.position = position;

}

 

public void setTeam(String team) {

this.team = team;

}

 

public void setPhone(String phone) {

this.phone = phone;

}

 

public void logIn() {

log.add("출근: " + LocalDateTime.now());

}

 

public void logOut() {

log.add("퇴근: " + LocalDateTime.now());

}

 

public void showLog() {

System.out.println("==== 출퇴근 로그 ====");

for (String entry : log) {

System.out.println(entry);

}

System.out.println("=====================");

}

 

// 출근 메서드

public void checkIn() {

System.out.println("출근 처리되었습니다.");

this.setOnline(true);

logIn(); // 출근 로그 추가

}

 

// 퇴근 메서드

public void checkOut() {

System.out.println("퇴근 처리되었습니다.");

this.setOnline(false);

logOut(); // 퇴근 로그 추가

}

 

public void showStaffInfo() {

// 직원 정보를 표시

System.out.println("==== 직원 정보 ====");

System.out.println("이름: " + this.name);

System.out.println("직위: " + this.position);

System.out.println("부서: " + this.team);

System.out.println("연락처: " + this.phone);

System.out.println("출퇴근 상태: " + (this.isOnline ? "출근 중" : "퇴근 중"));

System.out.println("==================");

}

 

public void input() {

Scanner sc = new Scanner(System.in);

System.out.println("이름을 입력하세요: ");

this.name = sc.nextLine();

 

System.out.println("직위를 입력하세요: ");

this.position = sc.nextLine();

 

System.out.println("부서를 입력하세요: ");

this.team = sc.nextLine();

 

System.out.println("연락처를 입력하세요: ");

this.phone = sc.nextLine();

 

// 출근 여부 초기화

this.isOnline = false;

 

System.out.println("직원 정보가 추가되었습니다.");

}

}

 

 

 

 

 

import java.util.ArrayList;

import java.util.Scanner;

 

public class StaffManager {

private ArrayList<Staff> staffList = new ArrayList<>();

 

public void addStaff(Staff staff) {

staffList.add(staff);

System.out.println(staff.getName() + " 직원 정보가 추가되었습니다.");

}

 

public void deleteStaff(String name) {

Staff staffToDelete = null;

for (Staff staff : staffList) {

if (staff.getName().equals(name)) {

staffToDelete = staff;

break;

}

}

 

if (staffToDelete != null) {

staffList.remove(staffToDelete);

System.out.println(name + " 직원이 삭제되었습니다.");

} else {

System.out.println("해당 이름의 직원을 찾을 수 없습니다.");

}

}

 

public Staff getStaffByName(String name) {

for (Staff staff : staffList) {

if (staff.getName().equals(name)) {

return staff;

}

}

return null;

}

 

public void changeStaff(Staff staff, String position, String team, String phone) {

staff.setPosition(position);

staff.setTeam(team);

staff.setPhone(phone);

System.out.println(staff.getName() + " 직원 정보가 수정되었습니다.");

}

 

public void showAllStaff() {

System.out.println("==== 전체 직원 목록 ====");

for (Staff staff : staffList) {

System.out.println(staff.getName());

}

System.out.println("=======================");

}

}

 

 

 

import java.util.Scanner;

import java.util.ArrayList;

 

public class Test {

public static void main(String[] args) {

StaffManager staffManager = new StaffManager();

Scanner scanner = new Scanner(System.in);

 

while (true) {

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) 직원 출퇴근 로그 조회");

System.out.println("8) 전체 직원 목록 조회");

System.out.println("0) 프로그램 종료");

System.out.println("==== 숫자 키를 입력하세요 >>>");

 

int choice;

if (scanner.hasNextInt()) {

choice = scanner.nextInt();

scanner.nextLine();

} else {

System.out.println("잘못된 입력입니다. 숫자를 입력하세요.");

scanner.nextLine();

continue;

}

 

switch (choice) {

case 1:

Staff newStaff = inputStaffInfo(scanner);

staffManager.addStaff(newStaff);

break;

case 2:

System.out.println("이름을 입력하세요: ");

String staffName = scanner.nextLine();

staffManager.deleteStaff(staffName);

break;

case 3:

System.out.println("이름을 입력하세요: ");

String staffInfoName = scanner.nextLine();

Staff staffToShow = staffManager.getStaffByName(staffInfoName);

 

if (staffToShow != null) {

staffToShow.showStaffInfo();

} else {

System.out.println("해당 이름의 직원을 찾을 수 없습니다.");

}

break;

case 4:

System.out.println("이름을 입력하세요: ");

String staffChangeName = scanner.nextLine();

Staff staffToChange = staffManager.getStaffByName(staffChangeName);

 

if (staffToChange != null) {

System.out.println("새로운 직위를 입력하세요: ");

String newPosition = scanner.nextLine();

System.out.println("새로운 부서를 입력하세요: ");

String newTeam = scanner.nextLine();

System.out.println("새로운 연락처를 입력하세요: ");

String newPhone = scanner.nextLine();

 

staffManager.changeStaff(staffToChange, newPosition, newTeam, newPhone);

} else {

System.out.println("해당 이름의 직원을 찾을 수 없습니다.");

}

break;

case 5:

System.out.println("이름을 입력하세요: ");

String staffCheckInName = scanner.nextLine();

Staff staffToCheckIn = staffManager.getStaffByName(staffCheckInName);

 

if (staffToCheckIn != null) {

staffToCheckIn.checkIn();

} else {

System.out.println("해당 이름의 직원을 찾을 수 없습니다.");

}

break;

case 6:

System.out.println("이름을 입력하세요: ");

String staffCheckOutName = scanner.nextLine();

Staff staffToCheckOut = staffManager.getStaffByName(staffCheckOutName);

 

if (staffToCheckOut != null) {

staffToCheckOut.checkOut();

} else {

System.out.println("해당 이름의 직원을 찾을 수 없습니다.");

}

break;

case 7:

System.out.println("이름을 입력하세요: ");

String staffLogName = scanner.nextLine();

Staff staffWithLog = staffManager.getStaffByName(staffLogName);

 

if (staffWithLog != null) {

staffWithLog.showLog();

} else {

System.out.println("해당 이름의 직원을 찾을 수 없습니다.");

}

break;

case 8:

staffManager.showAllStaff();

break;

case 0:

System.out.println("프로그램을 종료합니다.");

scanner.close();

System.exit(0);

break;

default:

System.out.println("올바른 선택이 아닙니다. 다시 선택하세요.");

}

}

}

 

private static Staff inputStaffInfo(Scanner scanner) {

System.out.println("이름을 입력하세요: ");

String name = scanner.nextLine();

System.out.println("직위를 입력하세요: ");

String position = scanner.nextLine();

System.out.println("부서를 입력하세요: ");

String team = scanner.nextLine();

System.out.println("연락처를 입력하세요: ");

String phone = scanner.nextLine();

 

return new Staff(name, position, team, phone);

}

}

 

 

직원 정보를 추가

==== 숫자 키를 입력하세요 >>>

1

이름을 입력하세요:

김영민

직위를 입력하세요:

팀장

부서를 입력하세요:

디자인팀

연락처를 입력하세요:

010-3232-3232

김영민 직원 정보가 추가되었습니다.

 

만약 등록안된 직원이름을 입력한다면??

3

이름을 입력하세요:

몰라

해당 이름의 직원을 찾을 수 없습니다.

 

등록된 직원 정보 찾기

==== 숫자 키를 입력하세요 >>>

3

이름을 입력하세요:

김영민

==== 직원 정보 ====

이름: 김영민

직위: 팀장

부서: 디자인팀

연락처: 010-3232-3232

출퇴근 상태: 퇴근 중

==================

 

 

퇴근중이라고 뜨는데 출근한다면??

==== 숫자 키를 입력하세요 >>>

5

이름을 입력하세요:

김영민

출근 처리되었습니다.

 

출근하고 난다음 정보 출력

3

이름을 입력하세요:

김영민

==== 직원 정보 ====

이름: 김영민

직위: 팀장

부서: 디자인팀

연락처: 010-3232-3232

출퇴근 상태: 출근 중

==================

정상표시 됩니다~

 

 

해당직원의 출퇴근 로그 확인한다면??

==== 숫자 키를 입력하세요 >>>

7

이름을 입력하세요:

김영민

==== 출퇴근 로그 ====

출근: 2023-10-10T11:37:49.922191300

=====================

정상 출력됩니다~

 

 

퇴근처리~

==== 숫자 키를 입력하세요 >>>

6

이름을 입력하세요:

김영민

퇴근 처리되었습니다.

==== 숫자 키를 입력하세요 >>>

7

이름을 입력하세요:

김영민

==== 출퇴근 로그 ====

출근: 2023-10-10T11:37:49.922191300

퇴근: 2023-10-10T11:39:20.954851

=====================

퇴근 정상처리 됩니다

 

 

전체 직원 목록

==== 숫자 키를 입력하세요 >>>

8

==== 전체 직원 목록 ====

김영민

콜킴

=======================

 

 

 

직원 삭제

==== 숫자 키를 입력하세요 >>>

2

이름을 입력하세요:

콜킴

콜킴 직원이 삭제되었습니다.

정상적으로 삭제되었습니다

==== 전체 직원 목록 ====

김영민

=======================

 

 

 

정보수정

4

이름을 입력하세요:

김영민

새로운 직위를 입력하세요:

회장

새로운 부서를 입력하세요:

디자인팀

새로운 연락처를 입력하세요:

010-3232-3232

김영민 직원 정보가 수정되었습니다.

정상적으로 수정되었습니다.

==== 숫자 키를 입력하세요 >>>

3

이름을 입력하세요:

김영민

==== 직원 정보 ====

이름: 김영민

직위: 회장

부서: 디자인팀

연락처: 010-3232-3232

출퇴근 상태: 퇴근 중

==================