рефераты

рефераты

 
 
рефераты рефераты

Меню

Реферат: Электронная картотека планет солнечной системы рефераты

Реферат: Электронная картотека планет солнечной системы

Текст программы:

#include<alloc.h>

#include<conio.h>

#include<dos.h>

#include <stdio.h>

#include <string.h>

struct PL                     //Задание структурных переменных

       {

        char namepl[18];

        int year;

        char people[15];

        unsigned int sputnik;

        PL *prev;

        PL *next;

       };

void menu1()                    //Функция главного меню

{

 clrscr();

 printf("\n\t╓────────────────────────────────────────────────────────────╖\n");

 printf(  "\t║                                                            ║  ");

 puts(  "\n\t║     К А Р Т О Т Е К А   П Л А Н Е Т                        ║\n");

        " \t ║\t\t               С О Л Н Е Ч Н О Й   С И С Т Е М Ы        ║  ");

 puts(    "\t╙────────────────────────────────────────────────────────────╜  ");

 puts("\n\t\t          Главное меню :\n");

 puts("\t\t  1- Рекомендации пользователю.");

 puts("\t\t  2- Ввод данных.");

 puts("\t\t  3- Вывод всех данных.");

 puts("\t\t  4- Просмотр, удаление, добавление.");

 puts("\t\t  5- Вывод данных по определенному признаку.");

 puts("\t\t  6- Сортировка.");

 puts("\t\t  7- Выход.");

}

void menu2()               //Меню поиска элементов

{

 puts("\n\n\n\n\t\t\t         Меню поиска:\n");

 puts("\t\t\t 1- Вывод по названию планеты.");

 puts("\t\t\t 2- Вывод по году  открытия.");

 puts("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t      Для выхода в главное меню нажмите любую клавишу.");

}


void sovet(char *s)         //Функция подсказки

{

 window(1,25,79,25);

 textcolor(GREEN+BLUE);

 textbackground(WHITE+YELLOW);

 clrscr();

 cprintf(" %s",s);

 textcolor(10);

 window(1,1,79,25);

 textbackground(0);

}

void vvod(PL *pla)             //Функция ввода структуры

{

 do

   {

    clrscr();

    puts("Введите имя планеты :");

    fflush(stdin);

    gets(pla->namepl);

   }

 while(strlen(pla->namepl)>18);

    do

      {

       puts("Год открытия планеты :");

       scanf("%d",&(pla->year));

      }

    while((pla->year)<-30000 || (pla->year)>30000);

    do

      {

       puts("Кто открыл планету :");

       fflush(stdin);

       gets(pla->people);

      }

    while(strlen(pla->people)>15);

    do

      {

       puts("Сколько спутников ?");

       scanf("%d",&(pla->sputnik));

      }

    while(((pla->sputnik)<0) || ((pla->sputnik)>999));

}

PL* vvodall()              //Функция ввода структур

{

 PL *playn, *pla;

 clrscr();

 sovet("Введите параметры планеты");

 pla=(PL*)malloc(sizeof(PL));

 vvod(pla);

 playn=pla;

 pla->next=NULL;

 sovet("Для дальнейщего ввода нажми y, иначе любую клавишу.");

 while (getch()=='y')

   {

    clrscr();

    sovet("Введите параметры планеты");

    pla=(PL*)malloc(sizeof(PL));

    vvod(pla);

    playn->prev=pla;

    pla->next=playn;

    playn=pla;

    sovet("Для дальнейщего ввода нажми y, иначе любую клавишу.");

   }

 pla->prev=NULL;

 while (pla->next)

 pla=pla->next;

 return(pla);

 }


void vivodall(PL *pla)         //Функция вывода на экран всех структур

{

 int i=1;

 puts("\n\t\t\t  В С Я    К А Р Т О Т Е К А\n");

 printf("┌──────┬─────────────────┬────────────┬───────────────┬───────────┐\n");

printf("│ Номер│   Название      │  Когда     │  Кто  открыл  │  Кол-во   │\n");

printf("│ стр. |       планеты   │    открыли │   планету     │ спутников │\n");

printf("└──────┴─────────────────┴────────────┴───────────────┴───────────┘\n");

printf("┌──────┬─────────────────┬────────────┬───────────────┬───────────┐\n");

 while (pla->prev)

   {

    printf("│ %5d │ %18s │ %12u │ %15s │ %11u │   ",i,pla->namepl,

             pla->year,pla->people,pla->sputnik);

    pla=pla->prev;  i++;

   }

 printf("│ %5d │ %18s │ %12u │ %15s │ %11u │   ",i,pla->namepl,

             pla->year,pla->people,pla->sputnik);

 printf("└──────┴─────────────────┴────────────┴───────────────┴───────────┘");

 gotoxy(22,24);

 puts("Вывод закончен, нажмите любую клавишу.");

 getch();

}

void spisok(PL* pla)           //Функция для работы со списком

{

 clrscr();

 window(17,2,62,15);

 textbackground(4);

 textcolor(15);

 clrscr();

 if (pla!=NULL)

   {

    cprintf("\n");

    cprintf("%30s","ПАРАМЕТРЫ ПЛАНЕТ\n\n");

    gotoxy(1,wherey()+2);

    cprintf("   Название:             %s",pla->namepl);

    gotoxy(1,wherey()+2);

    cprintf("   Год открытия:         %d",pla->year);

    gotoxy(1,wherey()+2);

    cprintf("   Кто открыл:           %s",pla->people);

    gotoxy(1,wherey()+2);

    cprintf("   Сколько спутников:    %d",pla->sputnik);

   }

 textbackground(2);

 sovet("Cледующая/Предыдущая планета(PgDn/PgUp)"

                  "Удаление(Del)""Добавление(Ins)""Выход(Esc)");

}

PL* vvodspisok(PL* pla)    //Функция ввода элементов списка

{

 PL* plr=pla;

 char c;

 sovet("Добавить элемент до / после текущего(Home/End)"

                                     "Отмена(Esc)");

 do

   {

    c=getch();

/*Esc*/ if (c==27) return(pla);

      if (c==71||c==79)

        {

         clrscr();

         sovet("Введите параметры планеты");

         plr=(PL*)malloc(sizeof(PL));

         vvod(plr);

         if (pla==NULL)

           {

            plr->next=NULL;

            plr->prev=NULL;

            return(plr);

           }

/*End*/ if (c==79)

        {

         plr->next=pla->next;

         plr->prev=pla;

         pla->next=plr;

         (plr->next)->prev=plr;

        }

/*Home*/if (c==71)

        {

         plr->next=pla;

         plr->prev=pla->prev;

         pla->prev=plr;

         (plr->prev)->next=plr;

        }

      return(plr);

       }

   }

 while(1);

}

PL* vozvr(PL* pla)    //Возвращает указатель

{                          //на начало списка pla

 if (pla==NULL)

   return(pla);

 while(pla->next!=NULL)

 pla=pla->next;

 return(pla);

}

PL* korrekt(PL *pla)      //Управляющие клавиши при работе со списком

{

 spisok(pla);

 PL* delit(PL*);

   do

     {

      switch(getch())

      {

/*PgUp*/ case 73:if(pla!=NULL)

         {

          if(pla->prev!=NULL)pla=pla->prev;spisok(pla);

         }

         break;

/*PgDn*/ case 81:if(pla!=NULL)

         {

          if(pla->next!=NULL)pla=pla->next;spisok(pla);

         }

         break;

 /*Del*/ case 83:if(pla!=NULL)

         {

          pla=delit(pla);

          spisok(pla);

         }

         break;

 /*Ins*/ case 82:pla=vvodspisok(pla); spisok(pla); break;

 /*Esc*/ case 27:pla=vozvr(pla); return(pla);

      }

   }

 while(1);

}

PL* delit(PL* pla)    //Функция удаления элементов из списка

{

 PL* plr=NULL;

 if(pla->prev!=NULL)

   {

    (pla->prev)->next=pla->next;

    plr=pla->prev;

   }

 if(pla->next!=NULL)

   {

    (pla->next)->prev=pla->prev;

    plr=pla->next;

   }

 free(pla);

 return(plr);

}

void poisk1(PL *pla)         //Функция поиска по названиям планет

{

 char s[15],ch;

 do

   {

    int i=1,l=0;

    clrscr();

    fflush(stdin);

    puts("Введите интерессующее вас название планеты :");

    gets(s);

    printf("\n\n Планеты с названием %s :\n",s);

    printf("┌──────┬─────────────────┬────────────┬───────────────┬───────────┐\n");

printf("│Номер │  Название       │  Когда     │  Кто  открыл  │  Кол-во   │\n");

printf("│ стр. │       планеты   │    открыли │   планету     │ спутников │\n");

printf("└──────┴─────────────────┴────────────┴───────────────┴───────────┘\n");

printf("┌──────┬─────────────────┬────────────┬───────────────┬───────────┐\n");

    while (pla->prev)

      {

       if(strcmpi(pla->namepl,s)==0)

       {

        printf("│ %5d │ %18s │ %12u │ %15s │ %11u │   ",i,pla->namepl,

             pla->year,pla->people,pla->sputnik);

        l++;i++;

       }

       pla=pla->prev;

      }

    if (strcmpi(pla->namepl,s)==0)

      {

       printf("│ %5d │ %18s │ %12u │ %15s │ %11u │   ",i,pla->namepl,

             pla->year,pla->people,pla->sputnik);

       l++;i++;      }

puts("└──────┴─────────────────┴────────────┴─────────────────┴─────────────┘");

    printf("\n Найдено %d планет.\n",l);

    puts(" Поиск по названиям планет завершен. Продолжить?(y- да)");

    fflush(stdin);

    ch=getch();

   }

 while(ch=='y');

}

void poisk2(PL *pla)      //Функция поиска по годам открытия

{

 char ch;

 do

   {

    int i=1,l=0,a,b;

    clrscr();

    fflush(stdin);

    puts("Введите интерессующее вас границы поиска (от чего- то до чего- то) :");

    while(scanf("%d%d",&a,&b)!=2)

      {

       while (getchar()!='\n');

       printf("Все- таки стоит здесь что- нибудь ввести\n(от a до b)\n");

      }

    printf("\n\n Планеты открытые в таком диапозоне(с %d до %d года):\n",a,b);

printf("┌──────┬─────────────────┬────────────┬───────────────┬───────────┐\n");

Страницы: 1, 2