Создание базы данных по составлению синонимического словаря, страница 2

            Sin* GetSin(){return _pSin;}

            Slovo* GetSlovoId();

            Sin* GetSinId();

            char* GetHours();

            virtual int SaveToFile(FILE* fp);

            virtual int LoadFromFile(FILE* fp);

protected:

            Slovo *_pSlovo;   // слово

            Sin *_pSin;    //синоним

            char time[15];    //

};

class FileHelper

{

public:

      static int WriteString(FILE*,char*);

      static int ReadString(FILE* fp,char* str);

      static int WriteInt(FILE*,int);

      static int ReadInt(FILE*,int*);

      static int SaveList(FILE*,class LIST*);

      static int LoadSlovoList(FILE*, Slovo**);

      static int LoadSinList(FILE*, Sin**);

      static int LoadLinkList(FILE*, Link**);

};

      Slovo *pSlovos = NULL;

      Sin *pSins = NULL;

      Link *pLink=NULL;

void WordInsert();

void Display();

int SaveToFile();

int LoadFromFile();

void main()

{

      int M;

do{

      printf("\nМеню программы");

      printf("\n/*1-добавление слов/синонимов в базу данных       /*");

      printf("\n/*2-вывод на экран всех слов/синонимов            /*");

      printf("\n/*3-сохранение в файл сведений о словах/синонимах /*");

      printf("\n/*4-загрузка из файла сведений о словах/синонимах /*");

      printf("\n*0-выход из программы");

      printf("\nВведите команду:");

      scanf("%d",&M);

switch(M)

{

      case 1: WordInsert();

                  break;

      case 2: Display();

                  getchar();

                  break;

      case 3: SaveToFile();

                  break;

      case 4: LoadFromFile();

                  break;

      case 0: break;

}

 }while (M!=0);

}

LIST::LIST()

{

      _pNext=NULL;

      _pPrev=NULL;

      _nId=NULL;

}

LIST::~LIST()

{

}

LIST* LIST::AddTail(LIST *pNewItem)

{

      if(!pNewItem)

      return NULL;

      LIST*Cur=this;

      while(Cur->_pNext)

      Cur=Cur->_pNext;

      pNewItem->_pNext=NULL;

      if(Cur->_pNext)

      {

            Cur->_pNext->_pPrev=pNewItem;

            pNewItem->_pNext=Cur->_pNext;

      }

      Cur->_pNext=pNewItem;

      pNewItem->_pPrev=Cur;

      return pNewItem;

}

void LIST::DeleteLIST()

{

      LIST *pElement=GetHead();

      while(pElement->_pNext)

      {

            pElement=pElement->_pNext;

            delete(pElement->_pPrev);

      }

      delete pElement;

}

LIST* LIST::GetHead()

{

      LIST *pElement=this;

      while(pElement->_pPrev)

      {

            pElement=pElement->_pPrev;

            delete(pElement->_pPrev);

      }

      return pElement;

}

int LIST::GetItemCount()

{

      LIST *pElement=GetHead();

      int nCount=1;

      while(pElement=pElement->_pNext)

      ++nCount;

      return nCount;

}

void LIST::RemoveItem()

{

      if(_pNext)

      _pNext->_pPrev=_pPrev;

      if(_pPrev)

      _pPrev->_pNext=_pNext;

      delete this;

}

void Slovo::SetWord(const char* r)

{

      int len=strlen(r);

      if(len>30)

      len=30;

      strncpy(Word,r,len);

      Word[len]=0;

}

char* Slovo::GetWord() const

{return (char*)Word;}

void Slovo::SetTrans1(const char* t1)

{

      int len=strlen(t1);

      if(len>20)

      len=20;

      strncpy(Trans1,t1,len);

      Trans1[len]=0;

}

char* Slovo::GetTrans1() const

{return (char*)Trans1;}

void Slovo::SetTrans2(const char* t2)

{

      int len=strlen(t2);

      if(len>20)

      len=20;

      strncpy(Trans2,t2,len);

      Trans2[len]=0;

}

char* Slovo::GetTrans2() const

{return (char*)Trans2;}

void Slovo::SetPart(const char* p)

{

      int len=strlen(p);

      if(len>20)

      len=20;

      strncpy(Part,p,len);

      Part[len]=0;

}

char* Slovo::GetPart() const

{return (char*)Part;}

void Sin::SetSword(const char* e)

{

      int len=strlen(e);

      if(len>30)

      len=30;

      strncpy(Sword,e,len);

      Sword[len]=0;

}

char* Sin::GetSword() const

{return (char*)Sword;}

void Sin::SetTrans1(const char* et1)

{

      int len=strlen(et1);

      if(len>20)

      len=20;

      strncpy(Trans1,et1,len);

      Trans1[len]=0;

}

char* Sin::GetTrans1() const

{return (char*)Trans1;}

void Sin::SetTrans2(const char* et2)

{

      int len=strlen(et2);

      if(len>20)

      len=20;

      strncpy(Trans2,et2,len);

      Trans2[len]=0;

}

char* Sin::GetTrans2() const

{return (char*)Trans2;}

void Sin::SetPart(const char* ep)

{

      int len=strlen(ep);

      if(len>20)

      len=20;

      strncpy(Part,ep,len);

      Part[len]=0;

}

char* Sin::GetPart() const

{return (char*)Part;}

void Sin::Setother(const char* o)

{

      int len=strlen(o);

      if(len>15)

      len=15;

      strncpy(other,o,len);

      other[len]=0;

}

char* Sin::Getother() const

{return (char*)other;}

void Link::SetHours(char* w)

{

      int len=strlen(w);

      if(len>15)

      len=15;

      strncpy(time,w,len);

      time[len]=0;

}

char* Link::GetHours()

{return (char*)time;}

void WordInsert()

{

      int r;

   do

      {

                  printf("\n\n/*ПОДМЕНЮ ПРОГРАММЫ:*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*");

                  printf("\n/*1-ввод данных о слове                  /*");

                  printf("\n/*2-перевод слова                          /*");

                  printf("\n/*3-удаление /*текущего*/ слова/синонима /*");