Main.h

//*************************************************************************

//include

//*************************************************************************

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

#include <malloc.h>

//*************************************************************************

//struct

//*************************************************************************

typedef struct student

{

 int Snum;

 char *Major;

 char Sname[20];

}STUDENT;

 

#define SIZE 100

 

 

void AppRun();//메인 루프

void display();//메인 보기

//fnc

void insert(STUDENT **);

void del(STUDENT **);

void Find(STUDENT **);

void Print(STUDENT **);


2.c

#include "main.h"

 

void AppRun()

{

 int key;

 STUDENT * SList[SIZE]={NULL};

 while(1)

 {

  display();

  printf("input : ");

  scanf("%d", &key);

  

  switch(key)

  {

  case 1:insert(SList);break;

  case 2:del(SList);break;

  case 3:Find(SList);break;

  case 4:Print(SList);break;

  case 0:exit(0);break;

   

  }

 }

 

}

void insert(STUDENT **SList)

{

 char temp_Buf[100];

 int i;

 

 for(i=0;i<SIZE; i++)

 {

  if(SList[i] == NULL)

  {

   SList[i]=(STUDENT*)malloc(sizeof(STUDENT));

   printf("학번을 입력하세요:");

   scanf("%d", &SList[i]->Snum);

   fflush(stdin);

   printf("이름을 선택하세요:");

   gets(SList[i]->Sname);

   

   printf("전공을 선택하세요:");

   gets(temp_Buf);

   

   SList[i]->Major=(char*)malloc(sizeof(char)*strlen(temp_Buf)+1);

   strcpy(SList[i]->Major,temp_Buf);

   

   return ;

  }

  

 }

 

}

void del(STUDENT **SList)

{

 int i,key;

 char name[20];

 //전체 삭제

 

 printf("1. 전체 삭제 2. 부분삭제 :");

 scanf("%d", &key);

 

 if(key==1)

 {

  

  for(i=0; i<SIZE; i++)

  {

   if(SList[i] !=NULL)

   {

    free(SList[i]->Major);//마지막 부분을 지우는 코드

    free(SList[i]);

    SList[i]=NULL;

   }

  }

 }

 else

 {

  

  //부분 삭제

  printf("이름을 입력하세요:");

  scanf("%s", name);

  

  for(i=0; i<SIZE; i++)

  {

   if(SList[i] !=NULL && (strcmp(SList[i]->Sname, name)==0))

   {

    free(SList[i]->Major);//마지막 부분을 지우는 코드

    free(SList[i]);

    SList[i]=NULL;

   }

  }

 }

 

}

void Find(STUDENT **SList)

{

 int i;

 char name[20];

 

 printf("이름을 입력하세요:");

 scanf("%s", name);

 

 for(i=0; i<SIZE; i++)

 {

  if(SList[i] !=NULL && (strcmp(SList[i]->Sname, name)==0))

  {

   printf("%d %s %s \n",SList[i]->Snum,SList[i]->Major,SList[i]->Sname);

  }

  

 }

}

void Print(STUDENT **SList)

{

 int i;

 puts("----------------------");

 for(i=0; i<SIZE; i++)

 {

  if(SList[i] !=NULL)

  {

   printf("%d %s %s \n",SList[i]->Snum,SList[i]->Major,SList[i]->Sname);

  }

  

 }

 

 

}

 

void display(STUDENT **SList)

{

 puts("--Menu---");

 puts("1. 입력");

 puts("2. 삭제");

 puts("3. 검색");

 puts("4. 출력");

 puts("0. 종료");

}

1.c

#include "main.h"

 

void main()

{

 AppRun();

}