#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct personinfo
{
char name[20];
char phoneNum[20];
} PersonInfo;
void Insert(PersonInfo *man, int * pnum)
{
printf("[ INSERT ] \n");
printf("Input Name: "); scanf("%s", man[*pnum].name);
printf("Input Tel Number: "); scanf("%s", man[*pnum].phoneNum);
printf(" Data Inserted \n\n");
(*pnum)++;
}
void Delete(PersonInfo *man, int * pnum)
{
char del[20] = { 0 };
int i, j;
if (*pnum == 0)
{
printf("No One \n\n");
return;
}
printf("[ DELETE ] \n");
printf("Input Delete Name: "); scanf("%s", del);
for (i = 0; i < *pnum; i++)
{
if (strcmp(man[i].name, del) == 0)
{
for (j = i + 1; j < *pnum; j++)
{
strcpy(man[j - 1].name, man[j].name);
strcpy(man[j - 1].phoneNum, man[j].phoneNum);
}
(*pnum)--;
printf("Delete! \n\n");
return;
}
}
printf("No One \n\n");
}
void Search(PersonInfo *man, int num)
{
char ser[20] = { 0 };
int i ;
if (num == 0)
{
printf("No One \n\n");
return;
}
printf("[ SEARCH ] \n");
printf("Input Search Name: "); scanf("%s", ser);
for (i = 0; i < num; i++)
{
if (strcmp(man[i].name, ser) == 0)
{
printf("Name: %s ", man[i].name);
printf("Tel: %s \n\n", man[i].phoneNum);
return;
}
}
printf("No One \n\n");
}
void Print_All(PersonInfo *man, int num)
{
int i;
if (num == 0)
{
printf("No One \n\n");
return;
}
printf("[ Print All Data ] \n");
for (i = 0; i < num; i++)
{
printf("Name: %s ", man[i].name);
printf("Tel: %s \n", man[i].phoneNum);
}
printf("\n");
}
int main(void)
{
PersonInfo * man = (PersonInfo *)malloc(sizeof(PersonInfo) * 30);
int menu = 0;
int num = 0;
Load(man, &num);
while (1)
{
printf("***** MENU *****\n");
printf("1. Insert \n");
printf("2. Delete \n");
printf("3. Search \n");
printf("4. Print All \n");
printf("5. Exit \n");
printf("Choose the item: ");
scanf("%d", &menu);
if (menu == 1)
{
Insert(man, &num);
}
else if (menu == 2)
{
Delete(man, &num);
}
else if (menu == 3)
Search(man, num);
else if (menu == 4)
Print_All(man, num);
else if (menu == 5)
{
Save(man, num);
printf("[ Exit the Program ] \n");
break;
}
}
free(man);
return 0;
}
int Load(PersonInfo * man, int * pnum)
{
FILE * fp = fopen("data.txt", "rt");
if (fp == NULL)
{
puts("file open error! \n");
return -1;
}
while (1)
{
fscanf(fp, "%s %s ", man[*pnum].name, man[*pnum].phoneNum);
if (feof(fp) != 0)
break;
(*pnum)++;
}
return 0;
}
int Save(PersonInfo * man, int num)
{
FILE * fp = fopen("data.txt", "wt");
if (fp == NULL)
{
printf("file open error! \n");
return -1;
}
for (int i = 0; i < num; i++)
{
fprintf(fp, "%s %s ", man[i].name, man[i].phoneNum);
if (feof(fp) != 0)
break;
}
fclose(fp);
return 0;
}