학생 사전 설계

/* 기본 라이브러리 함수 */

# include & ltconio.h & gt

# include & ltstdio.h & gt

# include & ltstdlib.h & gt

# include & ltstring.h & gt

# szWORD 32 정의

# szSTRN 224 정의

# defineszitem sizeof (structtitem)

Char filedict [SZ strn];

Typedef 구조 항목 {

Char word [SZ word];

Char mean [SZ strn];

} 항목

Fpos_t 찾기 (char *word, char *mean)

{

파일 * f = 0;; 첫 번째 항목

Int r = 0;; Fpos _ t p = 0;;

만약 (! 단어) 0 을 반환합니다.

F = fopen(fileDict, "Rb");

만약 (! F) 0 을 반환합니다.

그리고 (! Feof(f))

Fgetpos(f & amp;; P);

R = fread(& amp;; I, szITEM, 1, f);

If(r & lt;; 1) 파위

If(I). 단어 [0] = = 0) 계속;

If (strcmp (i. 단어, 단어)) 계속;

If (평균) strcpy (평균, 즉 평균);

Fclose (f);

P+1을 반환합니다

}

Fclose (f);

0 을 반환합니다

}

무효 추가 (무효)

{

첫 번째 항목 파일 * f = 0;; Fpos _ t p = 0;;

Memset(& amp;; I, 0, szitem);

Printf ("단어를 입력하십시오:"); Scanf ('%s', i.. 단어);

P = lookup (i. 단어, 0);

다음 경우 (p ){

Printf ("이 단어는 사전에 기록되었습니다! \ n ");

반환;

}

Printf ("정의를 입력하고 enter 키를 눌러 종료하십시오:");

Fflush (stdin);

게스 (I). Mean);

F = fopen(fileDict, "ab");

Fwrite(& amp;; I, szITEM, 1, f);

Fclose (f);

Printf ("항목이 추가됨 \ n");

}

유효하지 않은 지우기 (유효하지 않은 지우기)

{

첫 번째 항목 파일 * f = 0;; Fpos _ t p = 0;;

Memset(& amp;; I, 0, szitem);

Printf ("단어를 입력하십시오:"); Scanf ('%s', i.. 단어);

P = lookup (i. 단어, 0);

If(p = = 0 ){

Printf ("사전에 이 단어의 기록이 없다! \ n ");

반환;

}

P-;

Memset(& amp;; I, 0, szitem);

F = fopen(fileDict, "r b+");

Fset pos(f & amp;; P);

Fwrite(& amp;; I, szITEM, 1, f);

Fclose (f);

Printf ("항목이 삭제되었습니다. \ n");

}

유효하지 않은 편집 (유효하지 않음)

{

첫 번째 항목 파일 * f = 0;; Fpos _ t p = 0;;

Memset(& amp;; I, 0, szitem);

Printf ("단어를 입력하십시오:"); Scanf ('%s', i.. 단어);

P = lookup (i. 단어, 0);

If(p = = 0 ){

Printf ("사전에 이 단어의 기록이 없다! \ n ");

반환;

}

P-;

Printf ("정의를 입력하고 enter 키를 눌러 종료하십시오 (enter abort 를 눌러 변경 사항을 취소합니다):";

Fflush (stdin);

게스 (I). Mean);

If(strstr (즉, "abort"))

Printf ("수정이 중단되었습니다! \ n ");

반환;

}

F = fopen(fileDict, "r b+");

Fset pos(f & amp;; P);

Fwrite(& amp;; I, szITEM, 1, f);

Fclose (f);

Printf ("항목이 저장되었습니다. \ n");

}

유효하지 않은 질의 (유효하지 않은 질의)

{

첫 번째 항목 Fpos _ t p = 0;;

Memset(& amp;; I, 0, szitem);

Printf ("단어를 입력하십시오:"); Scanf ('%s', i.. 단어);

P = 찾기 (i.word, i. Mean);

If(p = = 0 ){

Printf ("사전에 이 단어의 기록이 없다! \ n ");

반환;

}

Printf ('항목% s \ n 설명% s', i.word, i.. Mean);

}

무효 세트 (무효)

{

Intcmd = 0;

Printf ("현재 사전은 %s 입니다. 변경하시겠습니까 (변경하려면 y 또는 y 선택)?" , filedict);

Cmd = getch ();

If (cmd = =' y' | | cmd = =' y') {

Printf ("사전 파일 이름 입력 (경로 포함):";

Scanf ('%s', filedict);

Printf ("설정이 성공했습니다! \ n ");

}

}

Int main(int argc, char * argv [])

{

Intcmd = 0;

If(argc & gt;; 1)

Strcpy(fileDict, argv [1]);

기타

Strcpy(fileDict, "c: \ \ dict.txt");

/*end if*/

For (; 을 눌러 섹션을 인쇄할 수도 있습니다 ) {

Printf ("\ n \

* * * *********************\n\

* * 미니 사전에 오신 것을 환영합니다! **\n\

* * * *********************\n\

** 0 세트 사전 **\n\

* * 1- 질의 용어 **\n\

* * 2- 새 항목 **\n\

* * 3- 항목 편집 **\n\

* * 4- 항목 삭제 **\n\

* * 5- 사전 종료 **\n\

* * * * * * * * * * * * * * * * * * * * * * * \ n ");

Cmd = getch ()-"0";

스위치 (명령) {

상황 0: set (); 깨뜨리다

사례1:query (); 깨뜨리다

사례 2: append (); 깨뜨리다

상황 3: 편집 (); 깨뜨리다

사례 4: erase (); 깨뜨리다

기본값: 0 을 반환합니다.

}

}

0 을 반환합니다

}