엔터프라이즈용 직원 데이터 관리 시스템

Java 예제

중급 난이도
예제 타입
10/21 등록일

엔터프라이즈용 직원 데이터 관리 시스템

중급
태그
Java 객체지향 엔터프라이즈 동시성 CSV 입력검증
## 프로젝트 개요
직원 정보를 안전하게 저장하고 병렬 처리가 가능한 엔터프라이즈급 데이터 관리 시스템 구현

## 주요 기능
- 직원 등록 및 조회 기능
- 멀티스레드 환경에서의 동시성 보장
- CSV 파일로 데이터 내보내기
- 입력 오류 자동 검증

## 사용 방법
1. 프로그램 실행 후 메뉴를 선택합니다
2. 1번을 선택하면 직원 정보를 등록할 수 있습니다
3. 2번을 선택하면 특정 직원을 조회할 수 있습니다
4. 3번을 선택하면 CSV 파일로 데이터를 내보냅니다
5. 잘못된 입력 시 자동 오류 메시지 표시

## 확장 가능성
- DB 연동 기능 추가
- 보안 권한 관리 시스템 통합
- 실시간 데이터 모니터링 기능 구현
코드 예제
// 직원 정보 관리 시스템
import java.util.*;
import java.io.*;

public class EmployeeManager {
    private static final Map<String, String> employees = new HashMap<>();
    private static final Object lock = new Object();

    // 직원 등록 메서드
    public static void registerEmployee() {
        Scanner scanner = new Scanner(System.in);
        System.out.print("직원 ID: ");
        String id = scanner.nextLine().trim();
        
        // 입력 검증
        if (id.isEmpty()) {
            System.err.println("ID는 공백일 수 없습니다.");
            return;
        }
        
        System.out.print("이름: ");
        String name = scanner.nextLine().trim();
        
        // 멀티스레드 환경에서의 동시성 보장
        synchronized (lock) {
            if (employees.containsKey(id)) {
                System.err.println("이미 등록된 ID입니다.");
                return;
            }
            employees.put(id, name);
            System.out.println("직원 정보가 성공적으로 등록되었습니다.");
        }
    }

    // 직원 조회 메서드
    public static void findEmployee() {
        Scanner scanner = new Scanner(System.in);
        System.out.print("검색할 ID: ");
        String id = scanner.nextLine().trim();
        
        synchronized (lock) {
            String name = employees.get(id);
            if (name == null) {
                System.err.println("등록되지 않은 ID입니다.");
            } else {
                System.out.println("ID: " + id + " / 이름: " + name);
            }
        }
    }

    // CSV 내보내기 메서드
    public static void exportToCSV() {
        try (BufferedWriter writer = new BufferedWriter(new FileWriter("employees.csv"))) {
            writer.write("ID,이름
");
            
            synchronized (lock) {
                for (Map.Entry<String, String> entry : employees.entrySet()) {
                    writer.write(entry.getKey() + "," + entry.getValue() + "
");
                }
            }
            System.out.println("데이터가 employees.csv 파일로 성공적으로 내보내졌습니다.");
        } catch (IOException e) {
            System.err.println("파일 저장 중 오류 발생: " + e.getMessage());
        }
    }

    // 메인 메서드
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (true) {
            System.out.println("
1. 직원 등록 2. 직원 조회 3. 데이터 내보내기 4. 종료");
            System.out.print("선택: ");
            int choice = scanner.nextInt();
            scanner.nextLine(); // 버퍼 클리어
            
            switch (choice) {
                case 1: registerEmployee(); break;
                case 2: findEmployee(); break;
                case 3: exportToCSV(); break;
                case 4: return;
                default: System.err.println("잘못된 선택입니다.");
            }
        }
    }
}
등록일: 2025년 10월 21일 02:37
언어 정보
언어
Java
카테고리
Enterprise
인기도
#3
학습 팁
코드를 직접 실행해보세요
변수를 바꿔가며 실험해보세요
오류가 나도 포기하지 마세요
다른 예제도 찾아보세요