코딩두의 포트폴리오

CRUD 실습 (feat. c) 본문

카테고리 없음

CRUD 실습 (feat. c)

코딩두 2025. 8. 6. 17:25

C언어로 -> 사용자 정보를 저장하고 CRUD 하기

- id, 이름, 나이 저장

- 최대 사용자 수는 100명까지로 제한

 

#include <stdio.h>
#include <string.h>

#define MAX_USERS 100

// 사용자 구조체 정의
typedef struct {
    int id;
    char name[50];
    int age;
} User;

User users[MAX_USERS];
int userCount = 0;

// Create 함수
void createUser() {
    if (userCount >= MAX_USERS) {
        printf("⚠️ 사용자 최대 수를 초과했습니다.\n");
        return;
    }

    User newUser;
    printf("ID 입력: ");
    scanf("%d", &newUser.id);
    printf("이름 입력: ");
    scanf("%s", newUser.name);
    printf("나이 입력: ");
    scanf("%d", &newUser.age);

    users[userCount++] = newUser;
    printf("✅ 사용자 등록 완료!\n");
}

// Read 함수
void listUsers() {
    printf("\n📋 사용자 목록:\n");
    for (int i = 0; i < userCount; i++) {
        printf("%d: %s (%d세)\n", users[i].id, users[i].name, users[i].age);
    }
    printf("\n");
}

// Update 함수
void updateUser() {
    int targetId;
    printf("수정할 사용자 ID 입력: ");
    scanf("%d", &targetId);

    for (int i = 0; i < userCount; i++) {
        if (users[i].id == targetId) {
            printf("새 이름: ");
            scanf("%s", users[i].name);
            printf("새 나이: ");
            scanf("%d", &users[i].age);
            printf("🔄 수정 완료!\n");
            return;
        }
    }
    printf("❌ 해당 ID의 사용자를 찾을 수 없습니다.\n");
}

// Delete 함수
void deleteUser() {
    int targetId;
    printf("삭제할 사용자 ID 입력: ");
    scanf("%d", &targetId);

    for (int i = 0; i < userCount; i++) {
        if (users[i].id == targetId) {
            // i번째 요소 삭제 → 뒤의 요소들 앞으로 한 칸씩 이동
            for (int j = i; j < userCount - 1; j++) {
                users[j] = users[j + 1];
            }
            userCount--;
            printf("🗑️ 삭제 완료!\n");
            return;
        }
    }
    printf("❌ 해당 ID의 사용자를 찾을 수 없습니다.\n");
}

int main() {
    int choice;

    while (1) {
        printf("\n==== 사용자 관리 시스템 ====\n");
        printf("1. 사용자 등록 (Create)\n");
        printf("2. 사용자 목록 조회 (Read)\n");
        printf("3. 사용자 정보 수정 (Update)\n");
        printf("4. 사용자 삭제 (Delete)\n");
        printf("0. 종료\n");
        printf("선택: ");
        scanf("%d", &choice);

        switch (choice) {
            case 1: createUser(); break;
            case 2: listUsers(); break;
            case 3: updateUser(); break;
            case 4: deleteUser(); break;
            case 0: return 0;
            default: printf("❌ 잘못된 선택입니다.\n"); break;
        }
    }

    return 0;
}