목차
□ 개 요
□ 설 계
○ 구조체 설계 : entry directory[30]으로 선언
○ 사용자 정의 함수
○ 메인함수
□ 소 스
//구조체 선언
//전역변수로 선언
// 입력받은 이름의 존재 여부를 찾아 0과 1을 Return 해 준다.
// 새로운 자료를 Directory에 등록한다.
// 입력받은 이름의 자료를 삭제한다
// 입력받은 이름의 정보를 변경한다.
// Directory에 등록된 모든 사람들의 정보를 보여준다.
// 학번을 입력 받는다.
// 이름을 입력 받는다.
// 주소를 입력 받는다.
// 학생정보의 존재여부를 출력한다.
// wb모드로 파일을 저장한다
//do-while문으로 sel-menu가 0이 아니라면 수행
□ 출력결과
○ 등 록(프로그램)
○ 등 록(출력파일)
○ 검 색
○ 수 정
○ 삭 제
□ 소 감
□ 설 계
○ 구조체 설계 : entry directory[30]으로 선언
○ 사용자 정의 함수
○ 메인함수
□ 소 스
//구조체 선언
//전역변수로 선언
// 입력받은 이름의 존재 여부를 찾아 0과 1을 Return 해 준다.
// 새로운 자료를 Directory에 등록한다.
// 입력받은 이름의 자료를 삭제한다
// 입력받은 이름의 정보를 변경한다.
// Directory에 등록된 모든 사람들의 정보를 보여준다.
// 학번을 입력 받는다.
// 이름을 입력 받는다.
// 주소를 입력 받는다.
// 학생정보의 존재여부를 출력한다.
// wb모드로 파일을 저장한다
//do-while문으로 sel-menu가 0이 아니라면 수행
□ 출력결과
○ 등 록(프로그램)
○ 등 록(출력파일)
○ 검 색
○ 수 정
○ 삭 제
□ 소 감
본문내용
"\n%s학생의 이름이 %s로 변경 되었습니다.", num, name);
strcpy(directory[index].name, name);
printf("\n%s학생의 주소가 %s로 변경 되었습니다.", num, address);
strcpy(directory[index].address, address);
} else
printf("\n등록되지 않은 사용자입니다. [%s]", name);
}
// Directory에 등록된 모든 사람들의 정보를 보여준다.
void show(entry *directory, int *length) {
int i;
if (length == 0)
printf("\n등록된 데이타가 없습니다.");
else
for (i = 0; i < *length; i++)
printf("\n Directory[%d]. %s %s %s", i, directory[i].num, directory[i].name, directory[i].address);
}
// 학번을 입력 받는다.
void getNum() {
printf("\n학번을 입력 하십시오. : ");
scanf("%s", num);
}
// 이름을 입력 받는다.
void getName() {
printf("\n이름을 입력 하십시오. : ");
scanf("%s", &name);
}
// 주소를 입력 받는다.
void getAddress() {
printf("\n주소를 입력 하십시오. : ");
scanf("%s", &address);
}
// 학생정보의 존재여부를 출력한다.
void putName(int number) {
if (number == 0)
printf("\n등록되지 않은 사용자입니다.");
else
printf("\n \"%s\" 학생의 자료가 있습니다", num);
}
// wb모드로 파일을 저장한다
void WriteData()
{
FILE *fp;
fp = fopen("data.txt","wb");
if (fp == NULL) {
puts("파일을 생성할 수 없습니다.");
} else {
fwrite(directory,sizeof(entry),listLength,fp);
fclose(fp);
puts("\n\n파일을 저장했습니다.");
}
}
void main() {
int sel_menu;
//do-while문으로 sel-menu가 0이 아니라면 수행
length = 0;
do {
printf("\n 1.찾기 2.등록 3.삭제 4.수정 5.출력 0.종료");
printf("\n 번호를 선택하세요 .... : ");
scanf("%d", &sel_menu);
switch (sel_menu)
{
case 1 : // 자료 찾기
getNum();
putName(find(num, directory, length));
break;
case 2 : // 자료 추가
getNum();
getName();
getAddress();
add(num, name, address, directory, &length);
WriteData();
break;
case 3 : // 자료 삭제
getNum();
delete_data(num, directory, &length);
break;
case 4 : // 자료 수정
getNum();
getName();
getAddress();
modify(num, name, address, directory, &length);
break;
case 5 : // 모든 자료 보기
show(directory, &length);
break;
case 0 : // 프로그램 종료
printf("Good bye!");
break;
default :
printf("번호를 잘못 선택하였습니다.\n");
sel_menu = -1;
}
} while (sel_menu != 0);
}
□ 출력결과
○ 등 록(프로그램)
○ 등 록(출력파일)
○ 검 색
○ 수 정
○ 삭 제
□ 소 감
파일구조를 배운지 어느덧 2개월이 지났습니다. 저는 데이터 정보학과 학생으로 소프트웨어 공학을 부전공으로 신청하여 수업을 듣고 있습니다. 파일구조의 선행과목이라는 데이터 구조라는 수업을 듣지 못해서 많이 해메었던 것 같습니다. 이번 과제를 통해 저의 부족한 점을 다시 한번 되돌아 볼 수 있었고, 파일을 다루는 것 조차 못했었던 몇일 전의 저를 생각해 보면서 순차파일의 갱신, 삽입, 삭제를 트랜잭션 파일을 이용하여 완성하는 과제를 시일이 걸릴거라 예상되지만 완성하는대로 다시 교수님께 메일로라도 제출하겠습니다.
strcpy(directory[index].name, name);
printf("\n%s학생의 주소가 %s로 변경 되었습니다.", num, address);
strcpy(directory[index].address, address);
} else
printf("\n등록되지 않은 사용자입니다. [%s]", name);
}
// Directory에 등록된 모든 사람들의 정보를 보여준다.
void show(entry *directory, int *length) {
int i;
if (length == 0)
printf("\n등록된 데이타가 없습니다.");
else
for (i = 0; i < *length; i++)
printf("\n Directory[%d]. %s %s %s", i, directory[i].num, directory[i].name, directory[i].address);
}
// 학번을 입력 받는다.
void getNum() {
printf("\n학번을 입력 하십시오. : ");
scanf("%s", num);
}
// 이름을 입력 받는다.
void getName() {
printf("\n이름을 입력 하십시오. : ");
scanf("%s", &name);
}
// 주소를 입력 받는다.
void getAddress() {
printf("\n주소를 입력 하십시오. : ");
scanf("%s", &address);
}
// 학생정보의 존재여부를 출력한다.
void putName(int number) {
if (number == 0)
printf("\n등록되지 않은 사용자입니다.");
else
printf("\n \"%s\" 학생의 자료가 있습니다", num);
}
// wb모드로 파일을 저장한다
void WriteData()
{
FILE *fp;
fp = fopen("data.txt","wb");
if (fp == NULL) {
puts("파일을 생성할 수 없습니다.");
} else {
fwrite(directory,sizeof(entry),listLength,fp);
fclose(fp);
puts("\n\n파일을 저장했습니다.");
}
}
void main() {
int sel_menu;
//do-while문으로 sel-menu가 0이 아니라면 수행
length = 0;
do {
printf("\n 1.찾기 2.등록 3.삭제 4.수정 5.출력 0.종료");
printf("\n 번호를 선택하세요 .... : ");
scanf("%d", &sel_menu);
switch (sel_menu)
{
case 1 : // 자료 찾기
getNum();
putName(find(num, directory, length));
break;
case 2 : // 자료 추가
getNum();
getName();
getAddress();
add(num, name, address, directory, &length);
WriteData();
break;
case 3 : // 자료 삭제
getNum();
delete_data(num, directory, &length);
break;
case 4 : // 자료 수정
getNum();
getName();
getAddress();
modify(num, name, address, directory, &length);
break;
case 5 : // 모든 자료 보기
show(directory, &length);
break;
case 0 : // 프로그램 종료
printf("Good bye!");
break;
default :
printf("번호를 잘못 선택하였습니다.\n");
sel_menu = -1;
}
} while (sel_menu != 0);
}
□ 출력결과
○ 등 록(프로그램)
○ 등 록(출력파일)
○ 검 색
○ 수 정
○ 삭 제
□ 소 감
파일구조를 배운지 어느덧 2개월이 지났습니다. 저는 데이터 정보학과 학생으로 소프트웨어 공학을 부전공으로 신청하여 수업을 듣고 있습니다. 파일구조의 선행과목이라는 데이터 구조라는 수업을 듣지 못해서 많이 해메었던 것 같습니다. 이번 과제를 통해 저의 부족한 점을 다시 한번 되돌아 볼 수 있었고, 파일을 다루는 것 조차 못했었던 몇일 전의 저를 생각해 보면서 순차파일의 갱신, 삽입, 삭제를 트랜잭션 파일을 이용하여 완성하는 과제를 시일이 걸릴거라 예상되지만 완성하는대로 다시 교수님께 메일로라도 제출하겠습니다.