Разработка программы для создания и работы с двусвязным списком, состоящим из структур (Структура содержит название книги, автора, год издания), страница 3

         cur=ni;

           cur->n=NULL;

      }

      else

      {

           ni=cur->n;

           pi=cur->p;

           delete cur;

           ni->p=pi;

           pi->n=ni;

           cur=ni;

       };

   };

};

// показать меню

void show_menu()

{

  clrscr();

  gotoxy(1,1);

  textcolor(7);cprintf("-------------------------------------------------\r\n");

  textcolor(14);if((cur==NULL)||(cur->p==NULL))textcolor(8);cprintf(" P");

  textcolor(11);cprintf(" - на элемент назад\r\n");

  textcolor(14);if((cur==NULL)||(cur->n==NULL))textcolor(8);cprintf(" N");

  textcolor(11);cprintf(" - на элемент вперёд\r\n");

  textcolor(14);if(cur==NULL)textcolor(8);cprintf(" E");

  textcolor(11);cprintf(" - ввод данных в поля элемента списка\r\n");

  textcolor(14);if(cur!=NULL)textcolor(8);cprintf(" C");

  textcolor(11);cprintf(" - создать список (первый элемент)\r\n");

  textcolor(14);if(cur==NULL)textcolor(8);cprintf(" I");

  textcolor(11);cprintf(" - добавить элемент списка\r\n");

  textcolor(14);if(cur==NULL)textcolor(8);cprintf(" D");

  textcolor(11);cprintf(" - удалить текущий элемент списка\r\n");

  textcolor(14);if(cur==NULL)textcolor(8);cprintf(" Z");

  textcolor(11);cprintf(" - выполнить задание курсовой работы\r\n");

  textcolor(14);if(cur==NULL)textcolor(8);cprintf(" V");

  textcolor(11);cprintf(" - распечатать весь список\r\n");

  textcolor(14);cprintf(" Q");

  textcolor(11);cprintf(" - выйти из программы\r\n");

  textcolor(7);cprintf("-------------------------------------------------\r\n");

};

// распечатать список

void print_list()

{

   int i=0;

   if(cur==NULL)

   {

      cprintf("There's no list created!!!\r\n");

      return;

   };

   printf("\r\n-- распечатать список--\r\n");

   while(cur->p!=NULL)go_b();

   do

   {

       printf("--%i id=%i--\r\n",i,cur->id);

       printf("год:%i   ",cur->god);

       printf("название:%s   ",cur->naz);

       printf("автор:%s  \r\n",cur->avt);

       if(cur->n==NULL)break;

       go_f();

       i++;

   }

   while(1);

}

// распечатать cur

void print_cur()

{

   int i=0;

   if(cur==NULL) return;

   printf("\r\n");

   printf("--id=%i--",cur->id);

   printf("год     :%i \r\n",cur->god);

   printf("название:'%s' \r\n",cur->naz);

   printf("автор   :'%s' \r\n",cur->avt);

   printf("\r\n");

}

// правка элемента под курсором

void edit_i()

{

  char ich[30];

  printf("--id=%i--",cur->id);

  textcolor(15);cprintf("\r\n Введите наиманование книги: ");

  textcolor(11);cscanf("%60s", cur->naz);

  while(kbhit())getch();

  textcolor(15);cprintf("\r\n Введите имя автора: ");

  textcolor(11);cscanf("%60s", cur->avt);

  while(kbhit())getch();

  textcolor(15);cprintf("\r\n Введите год издания: ");

  textcolor(11);cscanf("%20s",ich);

  while(kbhit())getch();

  cur->god=atoi(ich);

  printf("-------------------------------------------------\r\n");

  printf("Введённые данные:");

  print_cur();

  printf("-------------------------------------------------\r\n");

}

// правка списка по условию задания

void edit_z()

{

  char ich[30];

  textcolor(15);

  cprintf("\r\n Задание: удалить из списка издания с годом, меньше заданного\r\nВведите год : ");

  textcolor(11);cscanf("%20s",ich);

  while(kbhit())getch();

  int i=0,g;

  g=atoi(ich);

  printf("\r\n\r\nУдаляем записи с годом, меньшим %i\r\n",g);

   while(cur->p!=NULL)go_b();

   do

   {

      if(cur->god<g)

      {

       printf("Удаляем запись: id=%i--\r\n",i,cur->id);

       printf("год:%i   ",cur->god);

       printf("название:%s   ",cur->naz);

       printf("автор:%s  \r\n",cur->avt);

       del_node();

      }

         else

         { 

       if(cur->n==NULL)break;

       go_f();

         };

   }while(1);

};

int main()

{

   textmode(C4350); //установить режим 80*50

   char ch;

   show_menu();

   while( 1 )

   {

          ch=getch();

          //gotoxy(23,9);printf("ch='%c'=%i",ch,ch);

          if( (ch=='q')||(ch=='Q') )break;

          if( (ch=='c')||(ch=='C') )

          {

               init_list();

               show_menu();

               print_cur();

          };

          //когда существует список, разрешаем действия

          if(cur!=NULL)

          {

             if( (ch=='i')||(ch=='I') )

             {add_node();

               show_menu();

               print_cur();

             };

             if( (ch=='d')||(ch=='D') )

             {

                 del_node();

                 show_menu();

               print_cur();

             };

             if( (ch=='e')||(ch=='E') )

             {

               edit_i();

             };

             if( (ch=='p')||(ch=='P') )

             { go_b();

               show_menu();

               print_cur();

             };

             if( (ch=='n')||(ch=='N') )

             { go_f();

               show_menu();

               print_cur();

             };

             if( (ch=='z')||(ch=='Z') )

             {

                edit_z();

             };

             if( (ch=='v')||(ch=='V') )

             { print_list();

             };

          };

   };

   return 0;

};

Приложение2: копииэкрановпрограммы

          Меню программы сразу после запуска

Ввод данных в запись

         

Просмотр данных

Выполнение задания курсового проекта