아래는 학생의 학번, 이름, 전화번호, 주소를 입력하고 데이터를 입,출력,수정,삭제 하는 프로그램인데요.
이건 프로그램이 종료되면 데이터가 사라져버리거든요.
파일 입,출력을 이용해서 변경하고 싶은데 도저히 모르겠네요.
아, 오늘까지 제출해야 되는 과제인데 좀 도와주세요~ ㅜㅜ
- - - - - -
#include <stdio.h>
#include <string.h>
enum { INPUT = 1, OUTPUT = 2, UPDATE = 3, DELETE = 4, QUIT = 5 };
struct STUDENT
{
int pSerial;
char pNumber[10];
char pName[10];
char pPhoneNumber[15];
char pAdress[100];
};
void InitArray(struct STUDENT* pStudent, int nSize);
int Select(void);
void Input(struct STUDENT* pStudent, int nSize);
void Output(struct STUDENT* pStudent, int nSize);
void Update(struct STUDENT* pStudent, int nSize);
void Delete(struct STUDENT* pStudent, int nSize);
int Search(struct STUDENT* pStudent, int nSize);
int main(void)
{
int i, nMenu=INPUT;
struct STUDENT pStudent[30];
InitArray(pStudent, 30);
while(nMenu != QUIT)
{
nMenu=Select();
switch(nMenu)
{
case INPUT : Input(pStudent, 30);
break;
case OUTPUT : Output(pStudent, 30);
break;
case UPDATE : Update(pStudent, 30);
break;
case DELETE : Delete(pStudent, 30);
break;
}
}return 0;
}
/* 구조체 배열 초기화 */
void InitArray(struct STUDENT* pStudent, int nSize)
{
int i;
for(i=0; i<nSize; i++)
pStudent[i].pSerial=0;
}
/* 메뉴 선택. 사용자로부터 메뉴를 입력받아서 반환합니다. */
int Select(void)
{
int nMenu;
printf("\n-------------------MENU--------------------\n");
printf("1. 등록\t 2.출력\t 3.수정\t 4.삭제\t 5.종료\n");
printf("-------------------------------------------\n");
printf("번호선택 : ");
scanf("%d", &nMenu);
getchar();
return nMenu;
}
/* 자료 입력. 새로운 학생을 배열에 추가합니다. */
void Input(struct STUDENT* pStudent, int nSize)
{
int i;
for(i=0; i<nSize; i++)
if(pStudent[i].pSerial == 0)
break;
printf("\n");
printf("학번 : "); gets(pStudent[i].pNumber);
printf("이름 : "); gets(pStudent[i].pName);
printf("전화번호 : "); gets(pStudent[i].pPhoneNumber);
printf("주소 : "); gets(pStudent[i].pAdress);
pStudent[i].pSerial=i+1;
}
/* 학생 자료 출력. 배열 크기에 상관없이 모든 자료를 출력합니다.*/
void Output(struct STUDENT* pStudent, int nSize)
{
int i;
for(i=0; i<nSize; i++)
{
if(pStudent[i].pSerial != 0)
{
printf("\n");
printf("번호 : %d\n", pStudent[i].pSerial);
printf("학번 : %s\n", pStudent[i].pNumber);
printf("이름 : %s\n", pStudent[i].pName);
printf("전화번호 : %s\n", pStudent[i].pPhoneNumber);
printf("주소 : %s\n", pStudent[i].pAdress);
}
}
}
/* 자료 수정. 기존의 학생 자료를 수정합니다. 번호는 바뀌지 않습니다.*/
void Update(struct STUDENT* pStudent, int nSize)
{
int i=Search(pStudent, nSize);
if( i != nSize)
{
printf("\n");
printf("학번 : "); gets(pStudent[i].pNumber);
printf("이름 : "); gets(pStudent[i].pName);
printf("전화번호 : "); gets(pStudent[i].pPhoneNumber);
printf("주소 : "); gets(pStudent[i].pAdress);
}
}
/* 자료 삭제. 학생 자료를 배열에서 삭제합니다. */
void Delete(struct STUDENT* pStudent, int nSize)
{
int i=Search(pStudent, nSize);
if(i != nSize)
pStudent[i].pSerial=0;
}
/* 자료 검색. 번호와 같은 학생을 검색합니다.
찾으면 배열에서의 인덱스, 못 찾으면 배열 크기를 반환합니다. */
int Search(struct STUDENT* pStudent, int nSize)
{
int i, nSerial;
printf("\n번호 : ");
scanf("%d", &nSerial);
getchar();
if(nSerial == 0)
return nSize;
for(i=0; i<nSize; i++)
if(pStudent[i].pSerial == nSerial)
break;
return i;
}