2021-04-19 c++ (2.c++)

2021. 4. 20. 12:26카테고리 없음

//실습
/*
어느 회사는 사원 관리시스템이 있다.
이 출근관리 시스템은 관리자에 의해 사원을 입력받아 등록할 수 있으며
사원은 각가 사원번호, 이름, 성별, 직급 이라는 속성을 갖고있다.
관리자는 모든사원을 한번에 볼 수 있고,
관리자에 의해 사원이 추가될 수 있으며 사원이 퇴사시 관리자에 의해
삭제될수 있다.
삭제는 사원번호를 입력받아 퇴사처리를 할 수 있다.
사원 번호는 시스템에 의해 자동으로 관리되며,
사원번호가 관리되는 방법은 자유롭게 구현할수있다.(100명)
*/

#include "Header2.h"

int main() {
    emp* e[100];
    int count = 0;
    while (true) {
        printf("명령어를 입력하세요\n");
        printf("1. 사원보기\n");
        printf("2. 사원추가\n");
        printf("3. 사원삭제\n");
        printf("4. 프로그램종료\n");
        
        fseek(stdin, 0, SEEK_END);
        int input;
        scanf("%d", &input);

        if (input == 1) {
            //사원보기
            for (int i = 0; i < count; i++) {
                e[i] -> empprint();
            }
        }
        else if (input == 2) {
            //사원추가
            char* name = getstring("사원 이름을 입력해주세요\n");
            int gender = getint("성별을 입력해주세요. 1=남성, 2=여성\n");
            char* jobrank = getstring("직급을 입력해주세요 : ");

            emp* e2 = new emp(name, gender, jobrank);

            delete[] name;
            delete[] jobrank;

            e[count] = e2;
            count++;

        }
        else if (input == 3) {
            //사원삭제
            int number = getint("사원번호를 입력해주세요 \n"); //사원번호 입력받기 위함
            int delIdx = -1;
            for (int i = 0; i < count; i++) {
                if (number == e[i]->emp_no) {
                    delete e[i];
                    delIdx = i;  //삭제에 성공하면 delInx는 -1이 아닌 다른 값이 저장되었을 것이다.
                    break;
                }
            }

            //이 과정을 거치지 않으면 삭제된 인덱스배열에 쓰레기값이 들어가게 되기 때문이다.
            if (delIdx >= 0) { //삭제에 성공하면 -1보다 큰값이 저장될 것 이다.
                for (int i = delIdx; i < count - 1; i++) { //delIdx에서부터 하나 삭제되었으니깐 count에서 -1한것까지 반복하고 삭제된 인덱스 번호를 하나씩 당겨주는것
                    e[i] = e[i - 1];
               }
            }
        }
        else if (input == 4) {
            //프로그램종료
            printf("프로그램을 종료합니다.\n");
            break;
        }
        else {
            printf("올바르지 않은 입력입니다.\n");
        }
    }


    return 0;
}

    int getint(const char* prompt) {  //숫자를 입력받기 위한
        int input;
        printf("%s", prompt);
        fseek(stdin, 0, SEEK_END);
        scanf("%d", &input);
        return input;
    }
    char* getstring(const char* prompt) {
        char* input=new char[100];
        printf("%s", prompt);
        fseek(stdin, 0, SEEK_END);
        scanf("%99[^\n]s", input);   //99개 문자를 받아서 스트링으로 input에 저장
        return input;
    }

728x90