ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    Електронна картотека планет сонячної системи
         

     

    Інформатика, програмування

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

    # include
    # include
    # include
    # include
    # include

    struct PL// Завдання структурних змінних

    (char namepl [18]; int year; char people [15]; unsigned int sputnik;

    PL * prev;

    PL * next;

    );

    void menu1 ()// Функція головного меню
    (Clrscr (); printf ( "nt ?---------------------------------------- --------------------< br> ? n "); printf (" t | |
    "); Puts (" nt | К А Р Т О Т Е К А П Л А Н Е Т
    | n ");

    "t | tt З О Л Н Е Л Н О Й С И С Т Е М И |
    "); Puts (" t ?------------------------------------------ ------------------?< br> "); Puts (" ntt Головне меню: n "); puts (" tt 1 - Рекомендації користувачеві. "); Puts (" tt 2 - Введення даних. "); Puts (" tt 3 - Виведення всіх даних. ") ; puts ( "tt 4 - Перегляд, видалення, додавання."); puts ( "tt 5 - Виведення даних за певною ознакою."); puts ( "tt 6 - Сортування."); puts ( "tt 7 - Вихід. ");
    )

    void menu2 ()// Меню пошуку елементів
    (Puts ( "nnnnttt Меню пошуку: n"); puts ( "ttt 1 - Висновок за назвою планети."); Puts ( "ttt 2 - Висновок по року відкриття."); Puts ( "nnnnnnnnnnnnnnnt Для виходу в головне меню, натисніть будь-яку клавішу .");< br> )

    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) year)> 30000); do

    (puts ( "Хто відкрив планету:"); fflush (stdin); gets (pla-> people);

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

    (puts ( "Скільки супутників?"); scanf ( "% d", & (pla-> sputnik ));

    ) while (((pla-> sputnik) 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 ( "nttt У С Я К А Р Т О Т Е К Аn"); printf ("+------+-------------- ---+------------+---------------+-----------< br> + n "); printf (" | Номер | Назва | Коли | Хто відкрив | Кількість
    | n "); printf (" | стр. | планети | відкрили | планету | супутників
    | n "); printf ("+------+-----------------+------------+--- ------------+-----------< br> + n "); printf ("+------+-----------------+------------+--- ------------+-----------< br> + 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 ( "+------+-----------------+------------+---------- -----+-----------< br> + "); 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", "ПАРАМЕТРИ ПЛАНЕТnn"); 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 ( "Наступний/Попередня планета (PgDn/PgUp)"

    "Видалення (Del)" "Додавання (Ins)" "Вихід (Esc )");< br> )

    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 ( "nn Планети з назвою% s: n ", s); printf ("+------+-----------------+------------+--- ------------+---------< br> - + n "); printf (" | Номер | Назва | Коли | Хто відкрив | Кількість
    | n "); printf (" | стр. | планети | відкрили | планету | супутників
    | n "); printf ("+------+-----------------+------------+--- ------------+-----------< br> + n "); printf ("+------+-----------------+------------+--- ------------+-----------< br> + 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 ("+------+-----------------+------------+----- ------------+-------------< br> + "); 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 ( "nn Планети відкриті в такому діапозоні (з% d до% d року): n", a, b); printf ("+------+--------- --------+------------+---------------+-----------< br> + n "); printf (" | Номер | Назва | Коли | Хто відкрив | Кількість
    | n "); printf (" | стр. | планети | відкрили | планету | супутників
    | n "); printf ("+------+-----------------+------------+--- ------------+-----------< br> + n "); printf ("+------+-----------------+------------+--- ------------+-----------< br> + n "); while (pla-> prev)

    (if ((ayear) & & (b> = pla-> year))

    (printf ( "|% 5d |% 18s |% 12u |% 15s |% 11u |", i, pla-> namepl, pla-> year, pla-> people, pla-> sputnik); l + +; i ++;

    ) pla = pla-> prev;

    ) if ((ayear) & & (b> = pla-> year))

    (printf ( "|% 5d |% 18s |% 12u |% 15s |% 11u |", i, pla-> namepl, pla-> year, pla-> people, pla-> sputnik); l + +; i ++;

    ) puts ("+------+-----------------+------------+---- -----------+-----------< br> + "); Printf (" n Знайдено% d планет.n ", l); puts (" Пошук по роках відкриття планет завершено. Продовжити? (Y-да) "); fflush (stdin); ch = getch ();

    ) while (ch == 'y');
    )

    void klear (PL * pla)// Функція очищення пам'яті
    (
    PL * plr; if (pla)

    (if (pla-> prev)

    (plr = pla-> prev; while (plr-> prev)

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

    )

    ) else plr = pla; free (plr);

    )
    )

    char * fname ()// Функція введення імені файлу
    (Char * t; t = (char *) malloc (80 * sizeof (char)); cprintf ( "Введіть ім'я файлу: n"); fflush (stdin); scanf ( "% 79s", t); return t;
    )

    int save1 (PL * pla, char * filename)// Функція, яка зберігає дані
    (
    FILE * fp; if ((fp = fopen (filename, "w "))== NULL) return 0; while (pla)

    (fprintf (fp, "% s% d% s% d |", pla-> namepl, pla-> year, pla-> people, pla-> sputnik); pla = pla-> prev;

    ) fclose (fp); return 1;
    )

    int save (PL * pla)// Функція для збереження даних
    (Char * name; window (1,1,79,25); clrscr (); name = fname (); if (save1 (pla, name) == 1) return 1; cprintf ( "nНевозможно провести запис! "); sovet (" Помилка! Натисніть будь-яку кнопку "); getch (); return 0;
    )

    PL * load (PL * pla)// Функція завантаження даних з файлу
    (Char c, * name; int i;

    PL * plan = NULL, * plane = NULL;
    FILE * fp; window (1,1,79,25); clrscr (); name = fname (); cprintf ( "Здійснювати читання? (Y-Так, n-Ні) n"); do c = getch () ; while ((c! = 'y')&&( c! =' n ')); if (c ==' n ') return (pla); if ((fp = fopen (name, "rt")) == NULL)

    (klear (pla); cprintf ( "nОшібка при відкритті файлу !!!"); sovet (" Помилка! Натисніть будь-яку кнопку "); getch (); return (NULL);

    ) plane = (PL *) malloc (sizeof (PL)); while (fscanf (fp, "% s% d% s% d |", plane-> namepl, & (plane-> year), plane -> people, & (plane-> sputnik)) == 4)

    (plane-> prev = NULL; plane-> next = plan; if (plan! = NULL) plan-> prev = plane; plan = plane; plane = (PL *) malloc (sizeof (PL));

    ) free (plane); if (plan! = NULL)

    (while (plan-> next) plan = plan-> next;

    ) fclose (fp); klear (pla); return (plan);
    )

    /* Функція сортування за алфавітом */
    PL * sort (PL * pla)

    (

    PL * point, * tmp = NULL, * f, * s; int i, j, srav;

    // Покажчик на початок f = pla; point = pla;

    while (f! = NULL)

    (s = f-> next; while (s! = NULL)

    (if ((strcmp (f-> namepl, s-> namepl)> 0))

    (tmp = (PL *) malloc (sizeof (PL)); strcpy (tmp-> namepl, f-> namepl); tmp-> year = f-> year; strcpy (tmp-> people, f - > people); tmp-> sputnik, f-> sputnik;

    // strcpy (f-> namepl, s-> namepl); f-> year = s-> year; strcpy (f-> people, s-> people); f-> sputnik = s-> sputnik ;

    // strcpy (s-> namepl, tmp-> namepl); s-> year = tmp-> year; strcpy (s-> people, tmp-> people); s-> sputnik = tmp-> sputnik ; free (tmp);

    ) s = s-> next;

    ) strcpy (point-> namepl, f-> namepl); point-> year = f-> year; strcpy (point-> people, f-> people); point-> sputnik = f-> sputnik; point = point-> next; f = f-> next;

    ) point = pla; return (point);
    )

    void main ()
    (Char ccc, hhh, ch; int i;
    PL * planet = NULL; planet-> prev = planet-> next = NULL;
    _setcursortype (_NOCURSOR); textcolor (10); menu1 (); do

    (do

    (fflush (stdin); switch (ccc = getch ())

    (case '1 ':

    (clrscr (); printf ( "ttt Рекомендації користувачеві: nn"

    "Ця програма-це подібність електронної бази даних. Програма працює,"

    "nіспользуя масиви в пам'яті ЕОМ для зберігання інформації введеної користувачем."

    "nДанние може вводитися з клавіатури або завантажити з файлу."

    "Також можна вивестіна екран всю картотеку або ж переглядати картотеку по картках,"

    "з можли-ністю додавання або видалення деяких карток з вибору."

    "Програма має гарний інтерфейс і показує стійку роботу."

    "У програмі є пошук елементів за заданими умовами, а також сортування планет за назвами."

    "У програмі є головне меню і підменю для пошуку планет за деякими ознаками."

    "Бажано, щоб дані були точні, коректно записані і що стосуються"

    "n безпосередньо теми даної лабораторної роботи."); puts ( "nnnnnttДля переходу до головного меню, натисніть будь-яку клавішу ..."); getch ();

    menu1 (); break;

    ) case '2 ':

    (free (planet); planet = NULL; planet-> prev = planet-> next = NULL; clrscr (); puts ( "Це нова база даних? (так-y/ні-n)"); do

    (fflush (stdin); scanf ( "% c", & ch);

    printf ( "tВведіте символ (так-y/ні-n) ");

    ) while (ch! = 'n' & & ch! = 'y' & & ch! = 'Y' & & ch! = 'N'); if (ch == 'y' | | ch == 'Y ')

    (clrscr (); planet = vvodall (); clrscr (); puts ( "nnЗапісать в файл (да-y/нет-n )?"); do

    (fflush (stdin); scanf ( "% c", & ch); printf ( "Введіть символ (так-y/ні-n) n ");

    ) while (ch! = 'n' & & ch! = 'y' & & ch! = 'Y' & & ch! = 'N'); if (ch == 'Y' | | ch == 'y ')

    (save (planet); puts ( "nnnnntt Запис даних закінчена! Натисніть будь-яку клавішу."); getch ();

    )

    ) else planet = load (planet); menu1 (); continue;

    ) case '3 ':

    (if (planet! = NULL)

    (clrscr (); vivodall (planet); menu1 (); continue;

    ) break;

    ) case '4 ':

    (free (planet); planet = korrekt (planet); menu1 (); break;

    ) case '5 ':

    (if (planet! = NULL)

    (clrscr (); menu2 (); switch (hhh = getch ())

    (case '1 ':

    (poisk1 (planet); menu1 (); continue;

    ) case '2 ':

    (poisk2 (planet); menu1 (); continue;

    ) default: menu1 ();

    ) menu1 (); continue;

    ) break;

    ) case '6 ':

    (if (planet! = NULL)

    (clrscr (); i = 5; puts ( "Йде nnnntt сортування за назвою планети."); while (i

         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status