목차
1. 문제정의
2. 문제분석
3. Design
4. 결과화면
5. 결론 및 소감
6. Source
7. 예제 결과 화면
2. 문제분석
3. Design
4. 결과화면
5. 결론 및 소감
6. Source
7. 예제 결과 화면
본문내용
nu(student *member){
int sel=0;
do { // 검색 메뉴 화면 출력
printf("=========Searching Menu=========\n");
printf("1.Searching for name\n");
printf("2.Searching for Student Number\n");
printf("3.Searching for Phon Number\n");
printf("4.Previous Menu\n");
printf("================================\n");
printf("select menu : ");
scanf("%d", &sel); // 검색 메뉴 선택 번호 입력 받는다
switch(sel){
case 1:
loadInfo(member, sel); // 1~3번 선택 시 loadInfo함수 호출
break;
case 2:
loadInfo(member, sel);
break;
case 3:
loadInfo(member, sel);
break;
case 4:
break;
default :
printf("open your eyes !! \n");
break;
}
}while(sel!=4); // 4번 선택 시 종료
}
void inputInfo(student *p){
if(p->next==NULL){ // p가 가리키는 구조체의 next 포인터가 NULL값이면 현재 가리키는 p의 구조체에 학생정보를 입력 받는다
printf("name : ");
scanf("%s", p->name);
printf("student number : ");
scanf("%s", p->stu_num);
printf("Phon number : ");
scanf("%s", p->cell_num);
}
else{ // NULL이 아니면
while(p->next!=NULL) // p가 가리키는 구조체의 next포인터가 NULL일때까지 포인터 p가 현재 가리키고 있는 다음의 구조체를 가리킨다.
p = p->next;
p->next = (student*)malloc(sizeof(student)); // student구조체 크기만큼 메모리를 할당받아 p가 가리키고 있는 구조체의 next포인터에 주소 값을 넣는다.
p = p->next; // 다시 포인터 p가 마지막 구조체를 가리키게 한다.
// 현재 포인터 p가 가리키는 구조체 공간에 학생정보를 입력 받는다.
printf("name : ");
scanf("%s", p->name);
printf("student number : ");
scanf("%s", p->stu_num);
printf("Phon number : ");
scanf("%s", p->cell_num);
}
saveInfo(p); // 현재 입력한 정보를 파일에 저장 하도록 saveInfo함수 호출
}
void saveInfo(student *p){
FILE *fp; // 파일포인터 fp선언
char str[50];
char *s;
fp = fopen("students.txt","a"); // 파일을 덧붙여쓰기 위한 형태로 students.txt 파일을 연다
// fp가 가리키는 파일에 p가 가리키는 구조체의 내용을 붙여넣는다
fputs(p->name, fp);
fputs(" ",fp);
fputs(p->stu_num, fp);
fputs(" ",fp);
fputs(p->cell_num, fp);
fputs("\n",fp);
fclose(fp);
}
void loadInfo(student *p, int sel){
FILE *fp; // 파일포인터 fp선언
int s;
char find[20];
char name[20];
char stu_num[20];
char cell_num[20];
int fo=0; // 찾았는지 확인해주는 fo를 선언하고 0으로 초기화
printf("Search : ");
scanf("%s",find); // 찾고자하는 검색어를 find에 입력 받는다
fp=fopen("students.txt","r"); // students.txt 를 읽기전용으로 연다
while(s=fscanf(fp, "%s %s %s", &name, &stu_num, &cell_num) != EOF) {
// fp가 가리키는 파일의 내용을 1행씩 읽어 name, stu_num, cell_num 변수에 각각 받는다.
switch(sel){
case 1: // sel이 1일 경우 이름에서 검색
if((strstr(name, find))!=NULL) // 검색어와 일치하는지 확인
fo=1; // 찾았는지 확인 해주는 변수 fo에 1을 대입
break;
case 2: // sel이 2일 경우 학번에서 검색
if((strstr(stu_num, find))!=NULL)
fo=1;
break;
case 3: // sel이 2일 경우 연락처에서 검색
if((strstr(cell_num, find))!=NULL)
fo=1;
break;
}
if(fo==1){ // 찾았으면 현재 읽어들인 파일 내용을 출력
printf("name : %s\n", name);
printf("student number : %s\n", stu_num);
printf("Phone number : %s\n", cell_num);
break; // while문을 빠져 나간다
}
}
if(fo==0) // 파일 전체를 검색하였는데도 못 찾았으면
printf("Not Found!"); // 찾지 못 했다고 출력
fclose(fp);
}
void printInfo(){
FILE *fp;
char *s;
char str[100];
int i=1;
fp=fopen("students.txt","r"); // students.txt 파일을 읽기전용으로 연다
while((s=fgets(str, 100, fp))) { // fp가 가리키는 파일의 끝까지 100바이트 크기만큼 str에 읽어 들이면서 while문을 돈다.
printf("%d.student : %s", i, str); // i번째 학생의 학생정보를 출력
i++;
}
fclose(fp);
}
예제1
예제2
예제3
예제4
예제 5
예제6
int sel=0;
do { // 검색 메뉴 화면 출력
printf("=========Searching Menu=========\n");
printf("1.Searching for name\n");
printf("2.Searching for Student Number\n");
printf("3.Searching for Phon Number\n");
printf("4.Previous Menu\n");
printf("================================\n");
printf("select menu : ");
scanf("%d", &sel); // 검색 메뉴 선택 번호 입력 받는다
switch(sel){
case 1:
loadInfo(member, sel); // 1~3번 선택 시 loadInfo함수 호출
break;
case 2:
loadInfo(member, sel);
break;
case 3:
loadInfo(member, sel);
break;
case 4:
break;
default :
printf("open your eyes !! \n");
break;
}
}while(sel!=4); // 4번 선택 시 종료
}
void inputInfo(student *p){
if(p->next==NULL){ // p가 가리키는 구조체의 next 포인터가 NULL값이면 현재 가리키는 p의 구조체에 학생정보를 입력 받는다
printf("name : ");
scanf("%s", p->name);
printf("student number : ");
scanf("%s", p->stu_num);
printf("Phon number : ");
scanf("%s", p->cell_num);
}
else{ // NULL이 아니면
while(p->next!=NULL) // p가 가리키는 구조체의 next포인터가 NULL일때까지 포인터 p가 현재 가리키고 있는 다음의 구조체를 가리킨다.
p = p->next;
p->next = (student*)malloc(sizeof(student)); // student구조체 크기만큼 메모리를 할당받아 p가 가리키고 있는 구조체의 next포인터에 주소 값을 넣는다.
p = p->next; // 다시 포인터 p가 마지막 구조체를 가리키게 한다.
// 현재 포인터 p가 가리키는 구조체 공간에 학생정보를 입력 받는다.
printf("name : ");
scanf("%s", p->name);
printf("student number : ");
scanf("%s", p->stu_num);
printf("Phon number : ");
scanf("%s", p->cell_num);
}
saveInfo(p); // 현재 입력한 정보를 파일에 저장 하도록 saveInfo함수 호출
}
void saveInfo(student *p){
FILE *fp; // 파일포인터 fp선언
char str[50];
char *s;
fp = fopen("students.txt","a"); // 파일을 덧붙여쓰기 위한 형태로 students.txt 파일을 연다
// fp가 가리키는 파일에 p가 가리키는 구조체의 내용을 붙여넣는다
fputs(p->name, fp);
fputs(" ",fp);
fputs(p->stu_num, fp);
fputs(" ",fp);
fputs(p->cell_num, fp);
fputs("\n",fp);
fclose(fp);
}
void loadInfo(student *p, int sel){
FILE *fp; // 파일포인터 fp선언
int s;
char find[20];
char name[20];
char stu_num[20];
char cell_num[20];
int fo=0; // 찾았는지 확인해주는 fo를 선언하고 0으로 초기화
printf("Search : ");
scanf("%s",find); // 찾고자하는 검색어를 find에 입력 받는다
fp=fopen("students.txt","r"); // students.txt 를 읽기전용으로 연다
while(s=fscanf(fp, "%s %s %s", &name, &stu_num, &cell_num) != EOF) {
// fp가 가리키는 파일의 내용을 1행씩 읽어 name, stu_num, cell_num 변수에 각각 받는다.
switch(sel){
case 1: // sel이 1일 경우 이름에서 검색
if((strstr(name, find))!=NULL) // 검색어와 일치하는지 확인
fo=1; // 찾았는지 확인 해주는 변수 fo에 1을 대입
break;
case 2: // sel이 2일 경우 학번에서 검색
if((strstr(stu_num, find))!=NULL)
fo=1;
break;
case 3: // sel이 2일 경우 연락처에서 검색
if((strstr(cell_num, find))!=NULL)
fo=1;
break;
}
if(fo==1){ // 찾았으면 현재 읽어들인 파일 내용을 출력
printf("name : %s\n", name);
printf("student number : %s\n", stu_num);
printf("Phone number : %s\n", cell_num);
break; // while문을 빠져 나간다
}
}
if(fo==0) // 파일 전체를 검색하였는데도 못 찾았으면
printf("Not Found!"); // 찾지 못 했다고 출력
fclose(fp);
}
void printInfo(){
FILE *fp;
char *s;
char str[100];
int i=1;
fp=fopen("students.txt","r"); // students.txt 파일을 읽기전용으로 연다
while((s=fgets(str, 100, fp))) { // fp가 가리키는 파일의 끝까지 100바이트 크기만큼 str에 읽어 들이면서 while문을 돈다.
printf("%d.student : %s", i, str); // i번째 학생의 학생정보를 출력
i++;
}
fclose(fp);
}
예제1
예제2
예제3
예제4
예제 5
예제6