1 등록 정보 입력: 사원 정보를 등록할 때 사원 수를 등록하라는 메시지가 표시되며 사원 번호가 자동으로 주어진 다음 사원명, 성별, 나이, 학력, 임금, 주소, 연락처 전화를 입력합니다.
2 찾아보기 정보 입력: 작업이 완료되면 회사의 모든 직원에 대한 정보를 찾아볼 수 있습니다.
세 가지 조회 정보 입력: 서로 다른 정보를 기준으로 회사 사원에 대한 정보를 조회할 수 있습니다. 예를 들어 직원 번호, 직원의 학력, 직원의 연락처에 따라. 직원의 한 가지 정보를 이해하면 그의 다른 정보를 찾는 데 도움이 된다. 소량의 정보를 파악하면 관련 정보를 찾을 수 있다는 것을 깨달았다.
4 삭제 정보 입력: 인터페이스를 입력할 때 모든 사원에 대한 정보를 먼저 표시한 다음 삭제할 사원명을 입력합니다. 작업이 완료되면 삭제된 모든 직원 정보를 표시할 수 있습니다.
5 추가 정보 입력: 이 인터페이스를 입력한 후 이전 사원의 정보를 표시하고 정보를 추가할 인원수를 묻는 메시지를 표시한 다음 신규 사원에 대한 정보를 입력합니다. 작업이 끝나면 모든 직원의 정보를 자동으로 표시할 수 있습니다.
정보 수정 6 입력: 인터페이스에 들어가면 모든 직원에 대한 정보를 표시한 다음 수정할 직원의 이름을 묻는 메시지를 표시합니다. 입력하면 해당 직원의 원래 정보가 표시되고 수정 여부를 묻는 메시지가 표시됩니다. 1 수정 입력, 0 을 입력하면 수정하지 않습니다. 수정이 필요한 경우 수정할 옵션의 일련 번호를 묻는 메시지를 표시한 다음 수정합니다. 수정 후 수정된 직원 정보가 자동으로 표시됩니다.
첨부: 사원 정보 관리 시스템 코드
File.c
이 파일에는 주로 파일 읽기 및 쓰기 함수와 관련된 함수가 포함되어 있습니다.
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
/*? 파일:? File.c? */?
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
# 포함? & ltstdio.h & gt
# 포함? & ltwindows.h & gt
# 포함? & lttime.h & gt
# 포함? & ltstring.h & gt
# 정의? N? 100? /* 매크로 정의 */
Struct? 직원
{? Int? Num? /* 직원 번호 */
샤일? 이름 [10]; /* 직원 이름 */
샤일? 성 [4]; /* 직원의 성별 */
샤일? Bir [16]; -응? /* 직원의 생년월일 */
샤일? 이설 [30]; /* 직원 교육 */
Int? 임금; -응? /* 직원 급여 */
샤일? Addr [30]; -응? /* 직원 주소 */
샤일? 전화 [20]; * 직원 전화 번호 */
} em [100]; -응? /* 구조 정의 */
무효화? 메뉴 ()? /* 메뉴 기능 */
{
Printf ("? ☆ ☆ ☆ 정보 관리 및 정보 시스템 ☆ \ n ");
Printf ("\ n");
Printf("B0902? 화성 \ n”);;
Printf ("\ n");
Printf ("* * * * * * * * * * * * * * 직원 정보 관리 * * * * * * * * * * * * * * * * \ n ");
Printf(" 1. 직원 정보 입력);
Printf("2. 직원 정보 찾아보기 \ n ");
Printf("3. 직원 정보 조회);
Printf("4. 직원 정보 삭제 \ n ");
Printf("5. 직원 정보 추가);
Printf("6. 직원 정보 수정 \ n ");
Printf("7. 관리 시스템 종료 \ n ");
Printf ("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * printf
Printf ("\ n");
Printf ("\ n");
}
무효화? 주 ()
{
메뉴 (); -응? /* 메뉴 기능 호출 */
Int? N, 깃발
샤일? 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)
{
사건? 1:printf ("◆◆◆◆◆ 직원 정보 입력 ◆◆ \ n"); Printf ("\ n"); Input (); 깨뜨리다
사건? 2:printf ("? ◆◆\n 직원 정보 찾아보기 ◆◆\ n”);; Printf ("\ n"); 표시 (); 깨뜨리다
사건? 3:printf ("? ◆◆\n 직원 정보 조회 ◆◆\ n”);; Printf ("\ n"); 검색 (); 깨뜨리다 -응?
사건? 4:printf ("? ◆◆\n 직원 정보 삭제 ◆◆\ n”);; Printf ("\ n"); Del (); 깨뜨리다
사건? 5:printf ("? ◆◆\n 직원 정보 추가 ◆◆\ n”);; Printf ("\ n"); Add (); 깨뜨리다
사건? 6:printf ("? ◆◆\n 직원 정보 수정 ◆◆\ 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);
}
}
무효화? 입력 ()/* 입력 함수 */
{
Int? 나, M;
Printf ("정보를 만들어야 하는 직원 수 입력 (1-100): \ n");
Scanf("%d ",& ampm);
뭐 때문에? (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 ",& ampem[i]. 이름);
Getchar ();
Printf ("성별을 입력하십시오:?" " );
Scanf("%s ",& ampem[i]. 성);
Printf ("생년월일 입력:");
Scanf("%s ",& ampem[i]. Bir);
Printf ("학력 입력:?" );
Scanf("%s ",& ampem[i]. 이설);
Printf ("급여를 입력하십시오:?" " );
Scanf("%d ",& ampem[i]. 임금);
Printf ("주소를 입력하십시오:?" );
Scanf("%s ",& ampem[i]. Addr);
Printf ("전화번호 입력:?" );
Scanf("%s ",& ampem[i]. 전화);
Printf ("\ n");
}
Printf(" \ n 생성됨! \ n ");
저장 (m);
}
무효화? 저장 (int? M)/* 파일 저장 기능 */
{
Int? 나;
FILE * FP
만약? ((fp=fopen("employee_list ","WB ")= = NULL)? /* 파일을 만들어 열 수 있는지 확인 */
{
Printf? ("안 돼요? 오픈? 파일 \ n ");
종료 (0);
}
뭐 때문에? (I = 0;; 나 & ltm;; I++)/* 메모리의 직원 정보를 디스크 파일로 출력 */
만약? (fwrite(& amp;; Em[i], sizeof(struct? 직원), 1, FP)! = 1)
Printf ("파일? 써요? 오류 \ n ");
Fclose (FP);
}
Int? 로드 ()/* 가져오기 함수 */
{
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);
}
무효화? Display()/* 찾아보기 함수 */
{
Int? 나;
Int? M = 로드 ();
Printf("\n? 직원 번호 \ tName \ tSex \ 생년월일 \ t 학력 \ t 급여 \ t 주소 \ t 전화 \ n ");
For(I = 0;; 나 & ltm;; I++)/*m 은 입력 부분의 직원 수 */
Printf("\n? % 6d \ t% s \ t% 4s \ t% s \ t% s \ t% d \ t% s \ t% s \ n ",em[i]. Num, em[i] 입니다. 이름, em[i]. 성, em[i]. Bir, em[i] 입니다. 이설, em[i]. 임금, em[i]. 주소, em[i]. 전화); -응?
}
무효화? Del ()? /* 함수 삭제 */
{? Int? M = 로드 ();
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 \ 생년월일 \ t 학력 \ t 나이 \ t 주소 \ t 전화 \ n ");
Printf ("\ n% d \ t% s \ t% s \ t% s \ t% s \ t% d \ t% s \ t% s \ n") Num, em[i] 입니다. 이름, em[i]. 성, em[i]. Bir, 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
Strcpy(em[j]. 성, em[j+ 1]. 성);
Strcpy(em[j].bir, em[j+ 1]. Bir);
Strcpy(em[j]. 이설, 동부 지중해. 이설);
Em[j]. 임금 =em[j+ 1]. 임금; -응?
Strcpy(em[j]. 주소, em[j+ 1]. Addr);
Strcpy(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
}
}
무효화? 추가 ()/* 함수 추가 */
{
FILE * FP
Int? N;
Int? Count = 0;;
Int? 나;
Int? M = 로드 ();
Printf("\n? 원래 직원 정보: \ n”);;
표시 (); -응? /*? 찾아보기 함수 호출 */
Printf ("\ n");
Fp=fopen("emploee_list ","a ");
Printf ("추가할 직원 수 입력: \ n");
Scanf("%d ",& ampn);
뭐 때문에? (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 ",& ampem[i]. 이름);
Getchar ();
Printf ("성별을 입력하십시오:?" " );
Scanf("%s ",& ampem[i]. 성);
Printf ("생년월일 입력:");
Scanf("%s ",& ampem[i]. Bir);
Printf ("학력 입력:?" );
Scanf("%s ",& ampem[i]. 이설);
Printf ("급여를 입력하십시오:?" " );
Scanf("%d ",& ampem[i]. 임금);
Printf ("주소를 입력하십시오:?" );
Scanf("%s ",& ampem[i]. Addr);
Printf ("전화번호 입력:?" );
Scanf("%s ",& 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);
}
무효화? 검색 ()/* 쿼리 함수 */
{
Int? T, 깃발
하다
{
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)
{?
사건? 1:printf ("직원 번호별 쿼리 \ n"); Search_num () 을 참조하십시오. 깨뜨리다
사건? 2:printf ("학력별 조회 \ n"); Search _ 이설 (); 깨뜨리다
사건? 3:printf ("전화 번호로 조회 \ n"); Search _ tel (); 깨뜨리다
사건? 4: 메인 (); 깨뜨리다
기본값: break
}
}
}
무효화? Search_num ()
{
Int? Num
Int? I, t;
Int? M = 로드 ();
Printf ("찾으시는 직원 번호 입력 (20001111-2000999): \
Scanf("%d ",& ampnum);
For(I = 0;; 나 & ltm;; I++)
If(num==em[i]. 숫자)
{?
Printf(" \ n 이 사람을 찾았습니다. 기록은 다음과 같습니다. \ n ");
Printf(" \ n 직원 번호 \ tName \ tSex \ 생년월일 \ t 학력 \ t 나이 \ t 주소 \ t 전화 \ n ");
Printf ("\ n% d \ t% s \ t% s \ t% s \ t% s \ t% d \ t% s \ t% s \ n") Num, em[i] 입니다. 이름, em[i]. 성, em[i]. Bir, em[i] 입니다. 이설, em[i]. 임금, em[i]. 주소, em[i]. 전화); -응?
깨뜨리다
}
If(i==m)?
Printf(" \ n 죄송합니다. 이 사람을 찾지 못했습니다. \ n ");
Printf ("\ n");
Printf ("1 으로 쿼리 기능 반환, 2\n" 으로 직원 번호 쿼리 계속);
Scanf("%d ",& ampt);
스위치 (t)
{?
사건? 1:검색 (); 깨뜨리다
사건? 2:? 깨뜨리다
기본값: break
}
}
무효화? 검색 _ 이설 ()
{
샤일? 이설 [30];
Int? I, t;
Int? M = 로드 ();
Printf ("찾으시는 학력을 입력해 주세요: \ n");
Scanf("%s ",이설);
For(I = 0;; 나 & ltm;; I++)
If(strcmp(em[i]. 이설, 이설) ==0)
{
Printf(" \ n 레코드 발견: \ n ");
Printf(" \ n 직원 번호 \ tName \ tSex \ 생년월일 \ t 학력 \ t 나이 \ t 주소 \ t 전화 \ n ");
Printf ("\ n% d \ t% s \ t% s \ t% s \ t% s \ t% d \ t% s \ t% s \ n") Num, em[i] 입니다. 이름, em[i]. 성, em[i]. Bir, em[i] 입니다. 이설, em[i]. 임금, em[i]. 주소, em[i]. 전화); -응?
}
If(i==m)?
Printf(" \ n 죄송합니다. 이 사람을 찾지 못했습니다. \ n ");
Printf ("\ n");
Printf ("1 으로 쿼리 기능 반환, 2\n" 으로 학력 조회 계속);
Scanf("%d ",& ampt);
스위치 (t)
{?
사건? 1:검색 (); 깨뜨리다
사건? 2: 깨진;
위약? : break
}
}
무효화? Search_tel ()
{
샤일? 전화 [20];
Int? 나? T;
Int? M = 로드 ();
Printf ("찾으려는 전화 번호 입력: \ n");
Scanf("%ld ",& 전화);
For(I = 0;; 나 & ltm;; I++)
If(strcmp(em[i].tel, tel)==0)
{?
Printf(" \ n 이 사람을 찾았습니다. 기록은 다음과 같습니다. \ n ");
Printf(" \ n 직원 번호 \ tName \ tSex \ 생년월일 \ t 학력 \ t 나이 \ t 주소 \ t 전화 \ n ");
Printf ("\ n% d \ t% s \ t% s \ t% s \ t% s \ t% d \ t% s \ t% s \ n") Num, em[i] 입니다. 이름, em[i]. 성, em[i]. Bir, em[i] 입니다. 이설, em[i]. 임금, em[i]. 주소, em[i]. 전화); -응?
깨뜨리다
}
If(i==m)?
Printf(" \ n 죄송합니다. 이 사람을 찾지 못했습니다. \ n ");
Printf ("\ n");
Printf ("1 으로 조회 기능 반환, 2\n" 을 눌러 전화 번호 조회를 계속합니다.)
Scanf("%d ",& ampt);
스위치 (t)
{?
사건? 1:검색 (); 깨뜨리다
사건? 2: 깨진;
위약? : break
}
}
무효화? 수정 ()/* 수정 함수 */
{
Int? Num
샤일? 이름 [10];
샤일? 성 [4]; -응?
샤일? Bir [20];
샤일? 이설 [30];
Int? 임금;
샤일? Addr [30];
샤일? 전화 [20];
Int? B, c, I, n, t, flag?
Int? M = 로드 (); -응? /* 가져온 파일의 정보 */
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 \ 생년월일 \ t 학력 \ t 나이 \ t 주소 \ t 전화 \ n ");
Printf ("\ n% d \ t% s \ t% s \ t% s \ t% s \ t% d \ t% s \ t% s \ n") Num, em[i] 입니다. 이름, em[i]. 성, em[i]. Bir, 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. 생년월일? 5. 학력? 6. 임금? 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 "); -응?
뭐해?
{
스위치 (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 ("성별을 다음으로 변경:? 클릭합니다 );
Scanf("%s ",성);
Strcpy(em[i- 1]). 성, 성);
깨뜨리다 -응?
사건? 4:printf ("생년월일을 다음으로 변경:?" " );
Scanf("%s ",Bir);
Strcpy(em[i- 1]). Bir, Bir);
깨뜨리다 -응?
사건? 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("%s ",전화);
Strcpy(em[i- 1]). 전화, 전화);
깨뜨리다 -응?
}?
Printf ("\ n");
Printf(" \ n 정보를 수정하시겠습니까? \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
}
}