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;
}