# include & ltstdio.h & gt
# include & ltwindows.h & gt
# include & lttime.h & gt
# include & ltstring.h & gt
# 정의 번호 100
구조 직원
{
Int num
문자 이름 [10];
매력적인 섹스
Int age
샤일 이설 [30];
Int 임금
Char addr [30];
Long int tel
} em [100]; /* 구조 정의 */
Voidmenu ();
Void 입력 ();
Void save (int) :
Void 디스플레이 ();
Voiddel ();
Voidadd ();
Voidsearch ();
Voidsearch _ num ();
Void search _ 이설 ();
Voidsearch _ tel ();
Voidmodify (); /* 각 함수 정의 */
Void menu() /* 메뉴 기능 */
{
Printf ("☆☆☆ ☆ 컴퓨터 과학 기술부 ☆ \ n ");
Printf ("\ n");
Printf ("∮ 08802 급 관려하 ∮ \ n");
Printf ("\ n");
Printf ("* * * * * * * * * * * * * * 직원 정보 관리 * * * * * * * * * * * * * * * * \ n ");
Printf(" 1. 직원 정보 입력);
Printf(" 2. 직원 정보 찾아보기 \ n ");
Printf(" 3. 직원 정보 조회);
Printf(" 4. 직원 정보 삭제 \ n ");
Printf(" 5. 직원 정보 추가);
Printf(" 6. 직원 정보 수정 \ n ");
Printf(" 7. 종료 \ n ");
Printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * n ");
Printf ("\ n");
Printf ("\ n");
}
Void main ()
{
메뉴 (); /* 메뉴 기능 호출 */
Int n, flag
Char a;;
하다
{
Printf ("작업이 필요한 단계를 선택하십시오 (1-7): \ n");
Scanf("%d ",& ampn);
(n>= 1) 인 경우. & ampn & lt=7)
{
Flag =1;
깨뜨리다
}
기타
{
Flag = 0;;
Printf ("잘못 입력했습니다. 다시 선택하십시오!" " );
}
}
While (flag = = 0);
While(flag== 1)
{
스위치 (n)
{
Case1:printf ("◆◆◆◆◆ 직원 정보 입력 ◆ \ n"); Printf ("\ n"); Input (); 깨뜨리다
사례 2: printf ("◆◆◆◆ 직원 정보 찾아보기 ◆◆ \ n "); Printf ("\ n"); 표시 (); 깨뜨리다
사례 3: printf ("◆◆◆◆ ◆ 직원 번호별 직원 정보 조회 ◆◆ \ n "); Printf ("\ n"); 검색 (); 깨뜨리다
사례 4: printf ("◆◆◆◆ 직원 정보 삭제 ◆◆ \ n "); Printf ("\ n"); Del (); 깨뜨리다
사례 5: printf ("◆◆◆◆ 직원 정보 추가 ◆◆ \ n "); Printf ("\ n"); Add (); 깨뜨리다
사례 6: printf ("◆◆◆◆◆ 직원 정보 수정 ◆◆ \ n"); Printf ("\ n"); Modify (); 깨뜨리다
사례 7: 수출 (0); 깨뜨리다
기본값: break
}
Getchar ();
Printf ("\ n");
Printf ("계속하시겠습니까 (y 또는 n): \ n");
Scanf("%c ",& AMPA);
If(a=='y')
{
Flag =1;
시스템 ("cls"); /* 화면 비우기 */
메뉴 (); /* 메뉴 기능 호출 */
Printf ("작업이 필요한 단계를 다시 선택하십시오 (1-6): \ n");
Scanf("%d ",& ampn);
Printf ("\ n");
}
기타
종료 (0);
}
}
Void input() /* 입력 함수 */
{
Int I, m;
Printf ("정보를 만들어야 하는 직원 수 입력 (1-100): \ n");
Scanf("%d ",& ampm);
For(I = 0;; 나 & ltm;; I++)
{
Printf ("직원 번호:");
Srand ((int) 시간 (0));
Em[i]. Num = rand ()%10000+20000000;
If(em[i]. Num! =em[i- 1]. 숫자)
Printf("%8d ",em[i]. Num);
Printf ("\ n");
Printf ("이름을 입력하십시오:");
Scanf("%s ",em[i]. 이름);
Getchar ();
Printf ("성별 입력 (F- 여성 m- 남성):");
Scanf("%c ",& ampem[i]. 성);
Printf ("나이를 입력하십시오:");
Scanf("%d ",& ampem[i]. 나이);
Printf ("학력 입력:");
Scanf("%s ",em[i]. 이설);
Printf ("급여 입력:");
Scanf("%d ",& ampem[i]. 임금);
Printf ("주소 입력:");
Scanf("%s ",em[i]. Addr);
Printf ("전화번호 입력:");
Scanf("%d ",& ampem[i]. 전화);
Printf ("\ n");
}
Printf(" \ n 생성됨! \ n ");
저장 (m);
}
Void save(int m) /* 파일 저장 함수 */
{
Int I;;
FILE * FP
If ((FP = fopen ("employee _ list ","WB ")= = null)/* 파일을 만들어 */
{
Printf ("파일을 열 수 없음 \ n");
종료 (0);
}
For(I = 0;; 나 & ltm;; I++) /* 메모리의 직원 정보를 디스크 파일로 출력 */
If (fwrite (& Em[i], sizeof, 1, FP! = 1)
Printf ("파일 쓰기 오류 \ n");
Fclose (FP);
}
Int load() /* 가져오기 함수 */
{
FILE * FP
Int I = 0;;
If((fp=fopen("employee_list ","Rb ")= = NULL)
{
Printf ("파일을 열 수 없음 \ n");
종료 (0);
}
기타
{
하다
{
프레드 (& ampem[i], sizeof(struct employee), 1, FP);
I++;+;
}
While (feof (FP) = = 0);
}
Fclose (FP);
반환 (I-1);
}
Void display() /* 찾아보기 함수 */
{
Int I;;
Intm = 로드 ();
Printf(" \ n 직원 번호 \ tName \ tSex \ tAge \ 교육 \ tSalary \ 주소 \ t 전화 \ n ");
For(I = 0;; 나 & ltm;; I++) /*m 은 입력 부분의 직원 수 */
Printf ("\ n% d \ t% s \ t% c \ t% d \ t% s \ t% d \ t% s \ t% LD \ n Num, em[i] 입니다. 이름, em[i]. 성, em[i]. 나이, em[i]. 이설, em[i]. 임금, em[i]. 주소, em[i]. 전화);
}
Void del() /* 함수 삭제 */
{
Intm = 로드 ();
Int I, j, n, t, flag
차 이름 [20];
Printf(" \ n 원래 직원 정보: \ n ");
표시 (); /* 찾아보기 함수 호출 */
Printf ("\ n");
Printf ("삭제할 직원 이름 입력: \ n");
Scanf("%s ",이름);
For(flag= 1, I = 0;; 깃발 & amp& amp 나 & ltm;; I++)
{
If(strcmp(em[i].name, name)==0)
{
Printf(" \ n 이 사람이 찾았습니다. 원본 레코드는 다음과 같습니다. \ n ");
Printf(" \ n 직원 번호 \ tName \ tSex \ tAge \ 교육 \ tSalary \ 주소 \ t 전화 \ n ");
Printf ("\ n% d \ t% s \ t% c \ t% d \ t% s \ t% d \ t% s \ t% LD \ n Num, em[i] 입니다. 이름, em[i]. 성, em[i]. 나이, em[i]. 이설, em[i]. 임금, em[i]. 주소, em[i]. 전화);
Printf(" \ n 이 개인 정보를 1 또는 0\n "을 눌러 삭제하지 않음);
Scanf("%d ",& ampn);
If(n== 1) /* 삭제하면 다른 모든 정보가 한 줄 위로 이동합니다 */
{
For(j = I;; J<m-1; J++)
{
Strcpy(em[j]. 이름, em[j+ 1]. 이름);
Em[j]. Num=em[j+ 1]. Num
Em[j]. Sex=em[j+ 1]. 섹스;
Em[j]. 나이 =em[j+ 1]. 나이;
Strcpy(em[j]. 이설, 동부 지중해. 이설);
Em[j]. 임금 =em[j+ 1]. 임금;
Strcpy(em[j]. 주소, em[j+ 1]. Addr);
Em[j]. 인텔 = em [j+1]. 전화;
}
Flag = 0;;
}
}
}
만약 (! 깃발)
M = m-1;
기타
Printf(" \ n 죄송합니다. 이 사람이 없습니다! \ n ");
Printf(" \ n 삭제된 모든 직원 정보 찾아보기: \ n ");
저장 (m); /* 저장 함수 호출 */
표시 (); /* 찾아보기 함수 호출 */
Printf(" \ n 1 삭제 계속, 0 을 눌러 삭제 중지 \ n ");
Scanf("%d ",& ampt);
스위치 (t)
{
사례1:del (); 깨뜨리다
사례 0: 깨진;
기본값: break
}
}
Voideadd ()/* 함수 추가 */
{
FILE * FP
Int n;;
Intcount = 0;
Int I;;
Intm = 로드 ();
Printf(" \ n 원래 직원 정보: \ n ");
표시 (); /* 찾아보기 함수 호출 */
Printf ("\ n");
Fp=fopen("emploee_list ","a ");
Printf ("추가할 직원 수 입력: \ n");
Scanf("%d ",& ampn);
For(I = m;; 나< (m+n); I++)
{
Printf(" \ n 새로 추가된 직원에 대한 정보를 입력하십시오. \ n ");
Printf ("직원 번호 입력:");
Srand ((int) 시간 (0));
Em[i]. Num = rand ()%10000+20000000;
If(em[i]. Num! =em[i- 1]. 숫자)
Printf("%8d ",em[i]. Num);
Printf ("\ n");
Printf ("이름을 입력하십시오:");
Scanf("%s ",em[i]. 이름);
Getchar ();
Printf ("성별 입력 (F- 여성 m- 남성):");
Scanf("%c ",& ampem[i]. 성);
Printf ("나이를 입력하십시오:");
Scanf("%d ",& ampem[i]. 나이);
Printf ("학력 입력:");
Scanf("%s ",em[i]. 이설);
Printf ("급여 입력:");
Scanf("%d ",& ampem[i]. 임금);
Printf ("주소 입력:");
Scanf("%s ",em[i]. Addr);
Printf ("전화번호 입력:");
Scanf("%d ",& ampem[i]. 전화);
Printf ("\ n");
Count = count+1;
Printf ("인원 증가: \ n");
Printf("%d\n ",count);
}
Printf(" \ n 추가됨! \ n ");
M = m+ 개수;
Printf(" \ n 추가된 모든 직원 정보 찾아보기: \ n ");
Printf ("\ n");
저장 (m);
표시 ();
Fclose (FP);
}
Void search()/* 쿼리 함수 */
{
Int t, flag
하다
{
Printf(" \ n 직원 번호로 문의하려면1; 학력에 따라 문의하려면 2 를 누르십시오. 전화 번호 조회는 3, 주요 기능은 4 \ n ");
Scanf("%d ",& ampt);
If(t & gt;; = 1 입니다. & ampt & lt=4)
{
Flag =1;
깨뜨리다
}
기타
{
Flag = 0;;
Printf ("잘못 입력했습니다. 다시 선택하십시오!" " );
}
}
While (flag = = 0);
While(flag== 1)
{
스위치 (t)
{
Case 1:printf ("직원 번호별 쿼리 \ n"); Search_num () 을 참조하십시오. 깨뜨리다
사례 2: printf ("학력별 조회 \ n"); Search _ 이설 (); 깨뜨리다
사례 3: printf ("전화 번호로 조회 \ n"); Search _ tel (); 깨뜨리다
사례 4: 메인 (); 깨뜨리다
기본값: break
}
}
}
Void 검색 수 ()
{
Int num
Int I, t;
Intm = 로드 ();
Printf ("찾으시는 직원 번호 입력 (20001111-2000999): \
Scanf("%d ",& ampnum);
For(I = 0;; 나 & ltm;; I++)
If(num==em[i]. 숫자)
{
Printf(" \ n 이 사람을 찾았습니다. 기록은 다음과 같습니다. \ n ");
Printf(" \ n 직원 번호 \ tName \ tSex \ tAge \ 교육 \ tSalary \ 주소 \ t 전화 \ n ");
Printf ("\ n% d \ t% s \ t% c \ t% d \ t% s \ t% d \ t% s \ t% LD \ n Num, em[i] 입니다. 이름, em[i]. 성, em[i]. 나이, em[i]. 이설, em[i]. 임금, em[i]. 주소, em[i]. 전화);
깨뜨리다
}
다음 경우 (i==m)
Printf(" \ n 죄송합니다. 이 사람을 찾지 못했습니다. \ n ");
Printf ("\ n");
Printf ("1 으로 쿼리 기능 반환, 2\n" 으로 직원 번호 쿼리 계속);
Scanf("%d ",& ampt);
스위치 (t)
{
사례1:search (); 깨뜨리다
사례 2: 깨진;
기본값: break
}
}
유효하지 않은 검색 _ 이설 ()
{
샤일 이설 [30];
Int I, t;
Intm = 로드 ();
Printf ("찾으시는 학력을 입력해 주세요: \ n");
Scanf("%s ",이설);
For(I = 0;; 나 & ltm;; I++)
If(strcmp(em[i]. 이설, 이설) ==0)
{
Printf(" \ n 레코드 발견: \ n ");
Printf(" \ n 직원 번호 \ tName \ tSex \ tAge \ 교육 \ tSalary \ 주소 \ t 전화 \ n ");
Printf ("\ n% d \ t% s \ t% c \ t% d \ t% s \ t% d \ t% s \ t% LD \ n Num, em[i] 입니다. 이름, em[i]. 성, em[i]. 나이, em[i]. 이설, em[i]. 임금, em[i]. 주소, em[i]. 전화);
}
다음 경우 (i==m)
Printf(" \ n 죄송합니다. 이 사람을 찾지 못했습니다. \ n ");
Printf ("\ n");
Printf ("1 으로 쿼리 기능 반환, 2\n" 으로 학력 조회 계속);
Scanf("%d ",& ampt);
스위치 (t)
{
사례1:search (); 깨뜨리다
사례 2: 깨진;
기본값: break
}
}
Void search_tel ()
{
Long int tel
Int I, t;
Intm = 로드 ();
Printf ("찾으려는 전화 번호 입력: \ n");
Scanf("%ld ",& 전화);
For(I = 0;; 나 & ltm;; I++)
If(tel==em[i]. 전화)
{
Printf(" \ n 이 사람을 찾았습니다. 기록은 다음과 같습니다. \ n ");
Printf(" \ n 직원 번호 \ tName \ tSex \ tAge \ 교육 \ tSalary \ 주소 \ t 전화 \ n ");
Printf ("\ n% d \ t% s \ t% c \ t% d \ t% s \ t% d \ t% s \ t% LD \ n Num, em[i] 입니다. 이름, em[i]. 성, em[i]. 나이, em[i]. 이설, em[i]. 임금, em[i]. 주소, em[i]. 전화);
깨뜨리다
}
다음 경우 (i==m)
Printf(" \ n 죄송합니다. 이 사람을 찾지 못했습니다. \ n ");
Printf ("\ n");
Printf ("1 으로 조회 기능 반환, 2\n" 을 눌러 전화 번호 조회를 계속합니다.)
Scanf("%d ",& ampt);
스위치 (t)
{
사례1:search (); 깨뜨리다
사례 2: 깨진;
기본값: break
}
}
Void modify() /* 수정 함수 */
{
Int num
문자 이름 [10];
매력적인 섹스
Int age
샤일 이설 [30];
Int 임금
Char addr [30];
Long int tel
Int b, c, I, n, t, flag
Intm = 로드 (); /* 가져온 파일의 정보 */
Printf(" \ n 원래 직원 정보: \ n ");
표시 (); /* 찾아보기 함수 호출 */
Printf ("\ n");
Printf ("수정할 직원 이름 입력: \ n");
Scanf("%s ",이름);
For(flag= 1, I = 0;; 깃발 & amp& amp 나 & ltm;; I++)
{
If(strcmp(em[i].name, name)==0)
{
Printf(" \ n 이 사람이 찾았습니다. 원본 레코드는 다음과 같습니다. \ n ");
Printf(" \ n 직원 번호 \ tName \ tSex \ tAge \ 교육 \ tSalary \ 주소 \ t 전화 \ n ");
Printf ("\ n% d \ t% s \ t% c \ t% d \ t% s \ t% d \ t% s \ t% LD \ n Num, em[i] 입니다. 이름, em[i]. 성, em[i]. 나이, em[i]. 이설, em[i]. 임금, em[i]. 주소, em[i]. 전화);
Printf(" \ n 1 을 눌러 이 사람의 정보를 수정하십시오. 0\n ") 을 눌러 수정하지 않습니다.
Scanf("%d ",& ampn);
(n== 1) 인 경우
{
Printf(" \ n 수정할 옵션 \n 1. 직원 2 호. 이름 3. 성별 4. 다섯 살. 교육. 임금 7. 주소 8. 전화 \ n ");
Printf ("수정할 일련 번호 입력: \ n");
Scanf("%d ",& ampc);
If(c & gt;; 8 | | c< 1)
Printf(" \ n 선택 오류입니다. 다시 선택하십시오! \ n ");
}
Flag = 0;;
}
}
If(flag== 1)
Printf(" \ n 죄송합니다. 이 사람이 없습니다! \ n ");
하다
{
Switch(c) /* 첫 번째 직원을 찾았을 때 for 문 뒤에 1 을 추가했기 때문에 I- 1 인력 */
{
사례 1:printf ("직원 번호 변경");
Scanf("%d ",& ampnum);
Em[i- 1]. Num = num
깨뜨리다
사례 2: printf ("이름을" 로 변경);
Scanf("%s ",이름);
Strcpy(em[i- 1]). 이름, 이름);
깨뜨리다
사례 3: printf ("성별을");
Getchar ();
Scanf("%c ",& 성);
Em[i- 1]. 성 = 성
깨뜨리다
사례 4: printf ("연령은");
Scanf("%d ",& 나이);
Em[i- 1]. 나이 = 나이;
깨뜨리다
사례 5: printf ("학력 변경");
Scanf("%s ",이설);
Strcpy(em[i- 1]). 이설, 이설);
깨뜨리다
사례 6:printf ("급여 변경");
Scanf("%d ",임금);
깨뜨리다
사례 7:printf ("주소는");
Scanf("%s ",addr);
Strcpy(em[i- 1]). Addr, addr);
깨뜨리다
사례 8:printf ("전화 변경");
Scanf("%ld ",& 전화);
Em[i- 1]. 전화 = 전화
깨뜨리다
}
Printf ("\ n");
Printf(" \ n 정보를 수정하시겠습니까? \ 예,1; 아니요, 2 를 눌러 다시 수정하십시오. \ n”);;
Scanf("%d ",& ampb);
}
While (b = = 2);
Printf(" \ n 수정된 모든 직원 정보 찾아보기: \ n ");
Printf ("\ n");
저장 (m);
표시 ();
Printf(" \ n 1 계속 수정, 0\n "을 눌러 수정 중지);
Scanf("%d ",& ampt);
스위치 (t)
{
사례1:modify (); 깨뜨리다
사례 0: 깨진;
기본값: break
}
}