#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct PhoneBook
{
char name[10]; //이름
int age; //나이
char p_num[15]; //전화번호
char add[25]; //주소
int authority; //권한
} PhoneBook;
typedef struct Member
{
char id[10]; //ID
char pw[10]; //PW
int authority; //권한
} Member;
Member mem[3] = {{"ma", "nager", 1}, {"as", "sistance", 2}, {"ge", "neral", 3}};
PhoneBook pb[10];
char id[10];
char pw[10];
int i;
int authority, c_menu, m_count = 0;
void Run()
{
system("mode con cols=100 lines=24");
Login();
Menu();
}
void Login()
{
system("cls");
printf(" -------------\n");
printf("| LOGIN |\n");
printf(" -------------\n");
printf("ID : ");
scanf(" %s", &id); //ID입력
printf("PW : ");
scanf("%s", &pw); //PW입력
//ID, PW 확인
for(i=0; i<sizeof(mem)/sizeof(Member); i++)
{
if(strcmp(id, mem[i].id)==0 && strcmp(pw, mem[i].pw)==0)
{
authority = mem[i].authority; //권한 부여
break;
}//if(strcmp(id, mem[i].id)==0 && strcmp(pw, mem[i].pw)==0)
else if(i == sizeof(mem)/sizeof(Member)-1)
{
printf("ID 또는 PW가 잘못되었습니다.\n\n");
system("pause"); //아무키 입력 받기
Run();
}//else if(i == sizeof(mem)/sizeof(Member)-1)
}//for(i=0; i<sizeof(mem)/sizeof(Member); i++)
}
void Menu()
{
system("cls");
printf("\n ------------------\n");
printf("|1. 전화번호부 입력|\n");
printf("|2. 전화번호부 출력|\n");
printf("|3. 전화번호부 수정|\n");
printf("|4. 전화번호부 검색|\n");
printf("|5. 전화번호부 삭제|\n");
printf("|6. 메인화면 |\n");
printf("|7. 종료 |\n");
printf(" ------------------\n");
printf("입력 : ");
scanf("%d", &c_menu); //메뉴 입력
printf("\n");
if(c_menu == 1)
{
//남은 자리 확인
if(m_count < 10)
{
Input();
}//if(m_count < 10)
else
{
printf("더 이상 입력할 수 없습니다.\n");
system("pause");
}
}//if(c_menu == 1)
else if(c_menu == 2)
{
Output();
}//else if(c_menu == 2)
else if(c_menu == 3)
{
Change();
}//else if(c_menu == 3)
else if(c_menu == 4)
{
Search();
}//else if(c_menu == 4)
else if(c_menu == 5)
{
Delete();
}//else if(c_menu == 5)
else if(c_menu == 6)
{
Back();
}//else if(c_menu == 6)
else if(c_menu == 7)
{
End();
}//else if(c_menu == 7)
else
{
printf("잘못 입력하셨습니다.\n");
}
Menu();
}
void Input()
{
system("cls");
char pnum[10]; //입력받을 번호
char def[5] = {"010-"}; //010- 기본 입력
char c; //\n 처리
for(;;)
{
printf("이름(필수) : ");
scanf("%s", &pb[m_count].name); //이름 입력
//한글 기준 2자리 이상 입력
if(strlen(pb[m_count].name)<3)
{
printf("이름은 최소 2자 이상으로 입력해야 합니다.\n");
}//if(strlen(pb[m_count].name)<3)
else
{
break;
}
}//for(;;)
printf("나이(필수) : ");
scanf("%d", &pb[m_count].age); //나이 입력
printf("전화번호(필수) : 010-"); //010- 제외하고 입력
scanf("%s", &pnum); //전화번호 입력
strcat(def, pnum); //입력받은 번호를 010- 뒤에 붙이기
strcpy(pb[m_count].p_num, def);
scanf("%c", &c); //\n 처리
printf("주소(동까지만) : ");
fgets( pb[m_count].add, sizeof(pb[m_count].add), stdin); //주소 선택사항으로 입력
pb[m_count].add[strlen(pb[m_count].add)-1] = '\0'; //마짐가에 \0입력
pb[m_count].authority = authority; //확인용 권한 입력
m_count++; //저장된 전화번호부 수
}
void Output()
{
system("cls");
if(m_count>0)
{
printf(" ----------------------------------------전화번호부--------------------------------------\n");
for(i=0; i<m_count; i++)
{
printf("|이름 : %-8s| 나이 : %2d세| 전화번호 : %-13s| 주소 : %-25s|\n", pb[i].name, pb[i].age, pb[i].p_num, pb[i].add);
printf(" ----------------------------------------------------------------------------------------\n");
}//for(i=0; i<m_count; i++)
}//if(m_count>0)
else
{
printf("전화번호부가 비었습니다.\n");
}
system("pause");
}
void Change()
{
system("cls");
char s_name[10]; //찾을 이름
char c_pnum[10]; //변경할 전화번호
char def[5] = {"010-"}; //010- 사전 입력
char c; //\n 처리
int s_count = 0;
if(m_count>0)
{
printf("수정할 이름을 입력 : ");
scanf("%s", &s_name); //수정할 이름
for(i=0; i<m_count; i++)
{
if(strcmp(pb[i].name, s_name)==0)
{
s_count++;
if(authority == 1) //권한 확인
{
for(;;)
{
printf("이름 : ");
scanf("%s", &pb[i].name);
if(strlen(pb[i].name)<3)
{
printf("이름은 최소 2자 이상으로 입력해야 합니다.\n");
continue;
}//if(strlen(pb[i].name)<3)
printf("나이 : ");
scanf("%d", &pb[i].age);
printf("전화번호 : 010-");
scanf("%s", &c_pnum);
strcat(def, c_pnum);
strcpy(pb[i].p_num, def);
scanf("%c", &c);
printf("주소(동까지만) : ");
fgets( pb[i].add, sizeof(pb[i].add), stdin);
pb[i].add[strlen(pb[i].add)-1] = '\0';
pb[i].authority = 1;
break;
}//for(;;)
break;
}//if(authority == 1)
else if(authority == 2)
{
if(pb[i].authority != 1) //상위 권한 수정 불가
{
for(;;)
{
printf("이름 : ");
scanf("%s", &pb[i].name);
if(strlen(pb[i].name)<3)
{
printf("이름은 최소 2자 이상으로 입력해야 합니다.\n");
continue;
}//if(strlen(pb[i].name)<3)
printf("나이 : ");
scanf("%d", &pb[i].age);
printf("전화번호 : 010-");
scanf("%s", &c_pnum);
strcat(def, c_pnum);
strcpy(pb[i].p_num, def);
scanf("%c", &c);
printf("주소(동까지만) : ");
fgets( pb[i].add, sizeof(pb[i].add), stdin);
pb[i].add[strlen(pb[i].add)-1] = '\0';
pb[i].authority = 2;
break;
}//for(;;)
break;
}//if(pb[i].authority != 1)
else if(pb[i].authority == 1)
{
printf("권한이 없습니다.\n");
system("pause");
break;
}//else if(pb[i].authority == 1)
}//else if(authority == 2)
else if(authority == 3)
{
if(pb[i].authority == 3)
{
printf("수정할 전화번호를 입력하세요 : 010-");
scanf("%s", &c_pnum);
strcat(def, c_pnum);
strcpy(pb[i].p_num, def);
break;
}//if(pb[i].authority == 3)
else if(pb[i].authority != 3)
{
printf("권한이 없습니다.\n");
system("pause");
break;
}//else if(pb[i].authority != 3)
}//else if(authority == 3)
}//if(strcmp(pb[i].name, s_name)==0)
}//for(i=0; i<m_count; i++)
if(s_count == 0)
{
printf("찾는 이름이 없습니다.\n");
system("pause");
}//if(s_count == 0)
}//if(m_count>0)
else
{
printf("전화번호부가 비었습니다.\n");
system("pause");
}
}
void Search()
{
system("cls");
char s_name[10];
int s_count = 0;
if(m_count>0)
{
printf("검색할 이름을 입력하세요 : ");
scanf("%s", &s_name);
for(i=0; i<m_count; i++)
{
if(strcmp(s_name, pb[i].name)==0)
{
s_count++;
printf(" ----------------------------------------------------------------------------------------\n");
printf("|이름 : %-8s| 나이 : %2d세| 전화번호 : %-13s| 주소 : %-25s|\n", pb[i].name, pb[i].age, pb[i].p_num, pb[i].add);
printf(" ----------------------------------------------------------------------------------------\n");
}//if(strcmp(s_name, pb[i].name)==0)
}//for(i=0; i<m_count; i++)
if(s_count==0)
{
printf("찾는 이름이 없습니다.\n");
}//if(s_count==0)
}//if(m_count>0)
else
{
printf("전화번호부가 비었습니다.\n");
}
system("pause");
}
void Delete()
{
char s_name[10]; //삭제할 이름
int dump, j, s_count = 0;
char c_del[5];
system("cls");
if(m_count>0)
{
if(authority == 1) //관리자만 삭제 가능
{
printf("삭제할 이름을 입력하세요 : ");
scanf("%s", &s_name);
for(i=0; i<m_count; i++)
{
if(strcmp(s_name, pb[i].name)==0)
{
s_count++;
printf("삭제 하시겠습니까?(Y/N)");
scanf(" %s", &c_del);
if(stricmp(c_del, "Y") == 0)
//if(stricmp(c_del, "Y") == 0)
{
printf("test1\n");
for(j=i; j<m_count; j++)
{
dump = j+1;
strcpy(pb[j].name, pb[dump].name);
pb[j].age = pb[dump].age;
strcpy(pb[j].p_num, pb[dump].p_num);
strcpy(pb[j].add, pb[dump].add);
pb[j].authority = pb[dump].authority;
}//for(j=i; j<m_count; j++)
m_count--;
break;
}//if(c_del == 'Y' || c_del == 'y')
else if(stricmp(c_del, "N") == 0)
{
Menu();
}//else if(stricmp(c_del, "N") == 0)
else{
printf("잘못 입력하셨습니다.\n");
system("pause");
}
}//if(strcmp(s_name, pb[i].name)==0)
}//for(i=0; i<m_count; i++)
if(s_count == 0)
{
printf("찾는 이름이 없습니다.\n");
system("pause");
}//if(s_count == 0)
}//if(authority == 1)
else if(authority != 1)
{
printf("권한이 없습니다.\n");
system("pause");
}//else if(authority != 1)
}//if(m_count>0)
else
{
printf("전화번호부가 비었습니다.\n");
system("pause");
}
}
void Back()
{
system("cls");
char c_back[5];
printf("로그인 창으로 돌아가시겠습니까?(Y/N)");
scanf(" %s", &c_back);
if(stricmp(c_back, "Y") == 0)
{
Run();
}//if(stricmp(c_back, "Y") == 0)
else if(stricmp(c_back, "N") == 0)
{
Menu();
}//else if(stricmp(c_back, "N") == 0)
else
{
printf("\n잘못 입력하셨습니다.\n");
system("pause");
}
}
void End()
{
system("cls");
char c_end[5];
printf("종료 하시겠습니까?(Y/N)");
scanf( " %s", &c_end);
if(stricmp(c_end, "Y") == 0)
{
exit(1);
}//if(stricmp(c_end, "Y") == 0)
else if(stricmp(c_end, "N") == 0)
{
Menu();
}//else if(stricmp(c_end, "N") == 0)
else
{
printf("\n잘못 입력하셨습니다.\n");
system("pause");
}
}
int main()
{
Run();
return 0;
}
직원 관리 프로그램(C언어) (0) | 2021.01.12 |
---|---|
영화 예매 프로그래밍(C언어) (2) | 2021.01.12 |
출입명부 프로그램(C언어) (0) | 2021.01.12 |