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
출퇴근 상태: 퇴근 중
==================
'코딩 > 셀프 체크' 카테고리의 다른 글
| 다중 for 으로 구구단 만들기 / 다중 for 제어문 (5) | 2023.10.19 |
|---|---|
| JAVA / 학교 학생 정보 관리 시스템 & 초급 프로젝트 / ArrayList & Scanner (0) | 2023.10.07 |
| 고객 정보 + 구매정보 입력하는 클래스 작성하며 복습을!! (0) | 2023.10.01 |
| 동물병원으로 복습해본 결과물!! (0) | 2023.10.01 |