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

     

     

     

     

     

         
     
    Розробка бази даних, що відбиває облік успішності студентів
         

     

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

    Міністерство освіти

    Російської Федерації

    Хабаровський Державний Технічний Університет

    Кафедра: «Програмне забезпечення»

    Курсова робота

    На тему «Розробка бази даних, що відбиває облік успішності студентів»

    Виконав студент

    гр. ПО-02 Самойленко П.

    Р.

    Перевірив викладач

    Белоусова Людмила

    Василівна

    Хабаровськ 2001

    Зміст:

    1. Завдання на розробку, постановка задачі.

    2. Опис бази даних.

    3. Опис засобів, що використовуються при створенні програми.

    4. Початкові дані.

    5. Інтерфейс програми.

    6. Опис використовуваних змінних і процедур.

    7. Можливості отриманого програмного продукту.

    Постановка завдання.

    Побудувати систему управління базою даних (надалі-СУБД), що відображаєоблік успішності студентів вузу. При цьому треба передбачити, що даніможуть вноситися різними людьми. Побудувати базу даних, яка була бмаксимально гнучкою. У базі даних мають міститися дані про студентів,оцінках, викладачів та предмети.

    Опис бази даних.

    База даних нормалізована і складається з чотирьох таблиць. Вона розбита начотири таблиці, щоб бути максимально гнучкою. При цьому різні таблиці можутьзаповнюватися різними людьми, а потім об'єднуватися в одну загальну базу даних.
    Наприклад, таблицю про студентів заповнюють на кафедрі, на якій вчитисястудент, таблицю про викладача та предмети - на кафедрі цихвикладачів, а оцінки ставить викладач.

    Структура таблиць
    | Назва стовпця | Опис |
    | Таблиця студентів (tt1) |
    | T1 | Номер студентського квитка |
    | T2 | Прізвище студента |
    | T3 | Назва |
    | T4 | По батькові |
    | T5 | Стипендія |
    | Таблиця предметів (tt2) |
    | T1 | Номер предмета |
    | T2 | Назва предмета |
    | T3 | Номер викладача |
    | T4 | Годинники |
    | T5 | Курс |
    | Таблиця викладачів (tt3) |
    | T1 | Номер вчителя |
    | T2 | Прізвище вчителя |
    | T3 | Його ім'я |
    | T4 | По батькові |
    | T5 | Дата прийняття викладача на роботу |
    | Таблиця успішності (tt4) |
    | T1 | Код факту здачі навчальної дисципліни |
    | T2 | Оцінка |
    | T3 | Дата здачі |
    | T4 | Номер студентського квитка |
    | T5 | Код навчального предмета |

    Усі атрибути мають рядковий тип даних. Причому стовпець T1 у кожної зтаблиць є первинним ключем, то є дані в ньому унікальні.

    Зобразимо зв'язок між таблицями:

    Зв'язок цей здійснюється через унікальні поля кожної з таблиць. Зі схемивидно, що зв'язок між викладачами і наприклад, студентами,здійснюється тільки через таблицю предметів. Така організація базиданих дозволяє уникнути дублювання даних. Наприклад, якщо б у настаблиця предметів була об'єднана з таблицею викладачів, то мігвиповзти такий випадок - один викладач веде два предмети,отже його прізвище, ім'я та по батькові будуть повторяться в таблицідвічі. А це вже називається надмірністю даних.

    Опис засобів, що використовуються при створенні програми

    Даний програмний продукт працює в текстовому режимі, періодичнозмінюючи колір символів, що виводяться за допомогою процедури textcolor (). Цяпроцедура належить модуля crt. Крім неї з цього модуля використовуєтьсяще дві процедури: clrscr - для отчистки екрану, та gotoxy - для переходуна задані координати екрану.

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

    Списки дозволяють раціонально використовувати пам'ять комп'ютера і виділяти їїдинамічно, не займаючи її даремно. Правда при використанні списків япомітив значне збільшення коду програми у порівнянні з випадком,якби ми використовували масиви і запису. Але працювати з записами набагатоефективніше, особливо при створенні баз даних. При роботі над даною СУБД явикористав стандартні процедури для роботи з вказівниками:

    New () - виділення пам'яті для змінної

    Dispose () - Повернення пам'яті в купу.

    Покажчик в моєму випадку вказує на наступний кортеж в даній таблиці.

    Чотири таблиці зберігаються в динамічному списку. Список закінчується, яктільки наступний елемент приймає значення nil, тобто ні на що невказує.

    Записи допомагають структурувати дані, уникнути надмірності.

    Модуль я використовую для передбачення в ньому типів і заповнення записів,значення яких будуть потім використані в основній програмі. У цихзаписах я зберігаю масиви строк - строк меню. Таким чином, цей код не
    «Захаращують» код основної програми. І додавати нові елементи в менюнабагато простіше - не треба переробляти всю програму.

    Початкові дані

    Для прикладу я ввів деякі дані і зберіг у файлі pasha. Ось цідані, виведені за допомогою команди - «Зберегти. в текст. файл »:

    Студенти

    +------------------------------- ------------------------------------------< br>- +

    | Студентський | Прізвище | Ім'я | По батькові |
    Стипендія |

    +--------------+--------------+---------- ----+--------------+-------------< br>- |

    | 3412 | Поляков | Анатолій | Олексійович |
    54.50 |

    | 3413 | Старова | Любов | Михайлівна |
    17.00 |

    | 3414 | Гриценко | Володимир | Миколайович |
    0.00 |

    | 3415 | Котенко | Анатолій | Миколайович |
    0.00 |

    | 3416 | Нагорний | Євген | Васильович |
    25.50 |

    +---------------------------------------- ---------------------------------< br>- +

    Предмети

    +-------------------------------- -----------------------------------------< br>- +

    | Код предмета | Назва | Код викладач. | Час навчання |
    Курс |

    +--------------+--------------+---------- ----+--------------+-------------< br>- |

    | 2001 | Фізика | 4001 | 34 |
    1 |

    | 2002 | Хімія | 4002 | 68 |
    1 |

    | 2003 | Математика | 4003 | 68 |
    1 |

    | 2004 | Філософія | 4005 | 17 |
    2 |

    | 2005 | Економіка | 4004 | 17 |
    3 |

    +---------------------------------------- ---------------------------------< br>- +

    Викладачі

    +-------------------------------- -----------------------------------------< br>- +

    | Код викладач. | Прізвище | Ім'я | По батькові | Початокроботи |

    +--------------+--------------+---------- ----+--------------+-------------< br>- |

    | 4001 | Викулина | Валентина | Іванівна |
    01/04/1984 |

    | 4002 | Костыркин | Олег | Володимирович |
    01/09/1997 |

    | 4003 | Казанка | Віталій | Володимирович |
    01/09/1988 |

    | 4004 | Позднякова | Любов | Олексіївна |
    01/09/1998 |

    | 4005 | Загарійчук | Ігор | Дмитрович |
    10/05/1989 |

    +------------------------------------ -------------------------------------< br>- +

    Оцінки

    +-------------------------------- -----------------------------------------< br>- +

    | Код здачі | Оцінка | Дата здачі | Студентський | Кодпредмета |

    +--------------+--------------+---------- ----+--------------+-------------< br>- |

    | 1001 | 5 | 10/06/1999 | 3412 |
    2001 |

    | 1002 | 4 | 10/06/1999 | 3413 |
    2003 |

    | 1003 | 3 | 11/06/1999 | 3414 |
    2005 |

    | 1004 | 4 | 12/06/1999 | 3412 |
    2003 |

    | 1005 | 5 | 12/06/1999 | 3416 |
    2004 |

    +---------------------------------------- ---------------------------------< br>- +

    Ці дані будуть використовуватися в прикладах.

    Інтерфейс програми

    Для того, щоб зрозуміти, що робить програма розглянемо її меню: < p> На малюнку 1 представлено головне меню програми, яке з'являється приїї запуску. Тут:

    «Завантаження» - введення бази даних з типізований файлу.

    «Зберегти. в тип. файл »- збереження бази даних у типізований файлі.

    « Зберегти. в текст. файл »- збереження вибраної таблиці в текстовий файл.

    « Перегляд »- перегляд даних таблиць.

    « Коригування »- зміна записів таблиць.

    « Сортування » - сортування записів за певним полю.

    «Запити» - пошук даних в чотирьох таблицях, що відповідають заданимумові.

    «Вихід» - вихід з програми.

    Головне меню містить вкладені. Наприклад на 2 малюнку показано меню,що служить для вибору таблиці (однієї з чотирьох). Вхід до нього може бутиздійснений по різному. Тобто це меню ви будете проходити при переглядіданих, при коригуванні і при збереженні в текстовий файл. Це меню вкоментарів не потребує.

    При виборі «Коригування» ви перейдете до меню, показаному на малюнку 3.

    «Додавання» - додавання нового кортежу в задану за допомогою попередньогоменю таблицю.

    «Видалення» - видалення рядки з таблиці, причому запис в таблиці шукаєтьсяза одну колонку.

    «Зміна» - зміна властивостей існуючої в базі даних рядка.

    Остання підменю - це підменю запитів, на якому треба зупинитисядетальніше. Розглянемо малюнок:

    «Знайти оцінку» - знайти оцінку студента за його прізвища і предмету, якийвін здавав.

    «Хто приймав іспит» - прізвище викладача, який брав данийпредмет.

    «Знайти розмір стипендії» - розмір стипендії обраного студента.

    «Висновок з оцінки» - показати всіх студентів, які отримали дану оцінку.

    «Дата здачі іспиту »- знайти дати, коли приймався даний предмет.

    У запитах використовуються реальні назви предметів, прізвища студентів, ане їх номера (для студентів наприклад номер відповідає номерустудентського квитка).

    Більше в програмі меню такого типу немає, але є багато рядкового введення,наприклад виконаємо запит з пошуком оцінок. Після запиту екран будевиглядати так (шукали четверочніков):

    Результат запиту відображається червоним кольором.

    Опис використовуваних процедур.

    У додатку використовуються як глобальні, так і локальні змінні. Доглобальним змінним відносяться:

    1) names, namer: string [10] - рядкові змінні, які винесені вглобальні, щоб зробити програму більш компактною. Інакше б у різнихпроцедурах треба було вводити аналогічні типи даних, а так можна обійтисялише парою глобальних змінних.
    2) key, kr: char - символьні змінні. У змінної key зберігається коднатиснутою клавіші. А у змінній kr знаходиться поточний стан зірочки.
    Зірочка буде розглянута нижче.
    3) tek, i, j, izm: integer - цілочисельні змінні. З них i і j
    -Циклічні, тимчасові змінні. Tek та izm показують, яке менюактивно у поточний момент. Вони допомагають зрозуміти програмі від якого меню доякого перейшли, тобто допомагає відновити послідовність дій.
    4) exist, vfile, issor: boolean - Логічні змінні. Exist - служить длявиходу з програми. Vfile - дозволяє пускати одну процедуру двома шляхами
    - Або виводити дані на екран, або у файл. Issor - показує менювибору таблиць, що наступним кроком повинна бути сортування даної таблиці.
    5) nast: pered - типізований змінна, в якій зберігаються рядкапоточного меню. Опис типу pered мається на модулі: pered = record st: array [1 .. 12] of string; m: byte; (кількість рядків у меню) end; temr, tt1, tt2, tt3, tt4: cc - Таблиці бази даних. Тут tt1 - таблиця зданими про студентів, tt2 - предмети, tt3 - викладачі, tt4 - оцінки
    (успішність). Temr - тимчасова таблиця. Усі ці змінні єдинамічними списками. Вони описані у файлі tips.pas: tabl2 = record (Сама таблиця) t1, t2, t3, t4, t5: string [12]; (Складається з рядків) end; cc = ^ tab; tab = record (Створення динамічного списку) tabl: tabl2; sled: cc; end;

    Програма відповідає на те, яку клавішу натиснув користувач і передаєуправління процедурою main. Процедура readkey використовується в основному блоціпрограми. Для роботи з керуючими клавішами використовуються їх кодитаблиці ISCII. Тут:

    80 - курсор вгору

    72 - курсор вниз

    27 - ESC

    13 - Enter

    При натисканні на клавішу «Введення» управління передається продцедуре main. Прицьому використовуються глобальні змінні.

    У процедурі main управління переходить до підпрограмі, згідно поточномуменю, але деколи треба знати звідки було здійснено вхід. Як я вже казав,зайти в меню вибору таблиць можна по різному. Все меню мають різнізаголовки, які і використовуються для їх ідентифікації. При натисканні накнопку «Вихід», цього стає початкове меню.

    Інтерфейсна частина програми складається з трьох процедур: procedure menus (m: pered; max: byte); (Висновок меню) begin clrscr;

    For i: = 1 to max do begin

    if i = 1 then begin textcolor (1); gotoxy (9,2); write (m.st [i]); end else begin if i = 2 then textcolor (9) else textcolor (3); gotoxy (8, i +3); write (m.st [i]); end; end; end;
    За допомогою цієї процедури на екрані змінюються меню. Потрібно врахувати, що миспочатку знаємо, з склоку рядків складається кожне меню, що спрощуєзавдання. Заголовок і зміст меню пишуться різними кольорами. Змінакольору символів, що виводяться йде за допомогою команди textcolor, параметромякому є зумовлена константа.
    Наступна процедура:procedure krutis; (Зірочка поруч з активним елементом)begin textcolor (14); if kr = '/' then kr :='-' else if kr = '-' then kr: =''else if kr =''then kr :='|' else kr: = '/'; gotoxy (6, tek 3); write (kr); textcolor (3);end;
    Ця процедура працює таким чином - звернення до неї йде з основногоблоку програми, в якому стоїть нескінченний цикл. На екрані відображаєтьсящось схоже на бенгальська вогонь. Це досягається шляхомпослідовного виводу на одному і тому ж місці символів:, |, /, -. Узмінної tek у нас міститься номер активної рядки, а щодо неїми і повинні поставити зірочку.

    Наступна процедура: procedure ramka (ch: char); (переміщення покажчика) begin gotoxy (6, tek 3); Writeln ( ''); textcolor (3); gotoxy (8, tek 3); write (nast.st [tek]); if ch = '+' then tek: = tek 1 else tek: = tek-1; if tek = 1 then tek: = nast.m else if tek = nast.m 1 then tek: = 2; key: = # 0; textcolor (9); gotoxy (8, tek 3); write (nast.st [tek]); krutis; end;

    Дана процедура має параметр символьного типу. За змістом chвизначається - вгору або вниз зрушила активна рядок. Звернення до цієїпроцедурі йде з основного блоку програми. Більше процедур такого родунемає (до всіх інших процедур звернення йде з процедури main).

    Ця процедура затирає елемент, який був активний перед цим кольором поумовчанням (блакитним) і пере попереднє положення зірочки. Після цьоговиходячи з значення ch змінюється значення tek і виділяється елемент, наякий був здійснений перехід. У підпрограмі вставлені дві умови: if tek = 1 then tek: = nast.m else if tek = nast.m 1 then tek: = 2;

    Вони спрацьовують коли активним є верхній елемент меню ікористувач натиснув кнопку вгору, тоді поточної стає останній рядок,і навпаки - поточний рядок є останньою, а користувач натиснув кнопкувниз, тоді активної стане перший рядок активного меню.

    Процедури наступного типу здійснюють завантаження і вивантаження даних зфайлу. Я не буду тут наводити повний текст процедур, тому що його можнаподивитися у додатку. Читання здійснюється за допомогою readetip, а запис
    - Writetip. В цих процедурах використовуються глобальні змінні. Завантаженняйде за допомогою таблиць tt1, tt2, tt3, tt4. Під час роботи користувачпрацює як би з одним файлом, хоча реально кожна з таблиць зберігається всвій файл. При запиті користувач вводить назва файлу, а потім до цьогоназвою додається ліворуч цифра - 1, 2, 3 або 4. Наприклад, якщо призбереженні в типізований файл імені файлу, присвоїтизначення pasha, то таблиця tt1 буде збережена у файлі 1pasha, tt2 -
    2pasha, tt3 - 3pasha, tt4 - 4pasha. У разі вивантаження з файлу присвоєння іменйде таким же чином. Для збереження в текстовий файл використовуєтьсяпроцедура tabl11 (t: integer; rab: cc), де rab - зберігається таблиця, а t --допомагає знайти заголовки стовпців поточної таблиці. Результат виконанняданої процедури можна подивитися вище, де показані таблиці первиннихданих. Для виведення вмісту таблиці на екран використовується процедураtabl1 (t: integer; rab: cc; yd: boolean), дія якої аналогічно попередньої,тільки додається параметр yd, від якого залежить, чи потрібно затиратитаблицю відразу або вона повинна повисіти на екрані, поки користувач не ввівбудь-які дані. Наприклад при видаленні записів з таблиці, користувачевібуде зручніше, якщо він буде зміст таблиці перед очима. Наприкладпокажемо зміст таблиці студентів, які будуть виведені після натисканняна кнопку «Перегляд»:

    Наступна процедура - obrabotka (iz, t: integer; var rab: cc). Ця процедуравикликається при коригуванні записів. Через параметр iz процедура вибираєшлях подальшого ходу. Тобто чи треба додати запис, змінити абовидалити. Параметр rab - це таблиця, яка передається в процедуру, іпараметр var показує, що дану таблицю можна змінювати безпосередньоз процедури.

    У ній використовуються локальні змінні - dlud: string; bis: boolean; tems, temr, tem: cc;

    Тут всі змінні типу cc - тимчасові, dlud служить для введення даних, аbis показує, чи можна виконати обрану дію чи ні.

    Продцедура sort (iz, t: integer; var rab: cc) здійснює сортування записівв обраній таблиці по обраному полю. Її робота і параметри з зміннимианалогічні попередньої процедури.

    При запитах виконується процедура zapros (num: integer), де черезпараметр num передається, який саме запит повинен виконуватися. Потімчерез умова case йде обробка запитів. Як показано на схемівзаємодії таблиць, щоб перейти від студентів до викладачів требапройти через таблицю оцінок. Зв'язок між таблицями здійснюється заунікальним полях. Наприклад для знаходження оцінки студента треба спочатку зтаблиці студентів знайти номер його студентського, а потім знайти номерщо здається предмета з таблиці, а вже після цього, використовуючи отриманіномера, знайти з таблиці успішності отриману студентом оцінку. Тобтозв'язок йде по трьох таблиць. У запитах я намагався якомога більшепоказати можливості моєї бази даних. На останньому малюнку показаний один ззапитів і результат його виконання. Можливість створення гнучких запитівє найважливішим завданням програмування баз даних.

    Можливості отриманого

    програмного продукту

    Таким чином ми побудували гнучку модель бази даних, в якій легкостворити потрібний запит, дані представлені в зручному для користувача вигляді.
    Інтерфейс програми побудований без надлишків і налаштований на максимальнезручність користувача. Програма дозволяє заповнювати базу даниходночасно декількома користувачами, кожен з яких буде заповнюватисвою таблицю. Так як програма працює з динамічними списками, то вонашвидка і дозволяє уникнути надмірності даних у таблицях.

    Текст програми Kurs.pas

    program Delphins;uses crt, tips;var names, namer: string [10]; key, kr: char; tek, i, j, izm: integer; exist, vfile, issor: boolean; nast: pered; temr, tt1, tt2, tt3, tt4: cc; outf: file of tabl2;

    procedure menus (m: pered; max: byte); (Висновок меню)beginclrscr;
    For i: = 1 to max do begin if i = 1 then begin textcolor (1); gotoxy (9,2); write (m.st [i]); end else begin if i = 2 then textcolor (9) else textcolor (3); gotoxy (8, i +3); write (m.st [i]); end; end;end;

    procedure krutis; (Зірочка поруч з активним елементом)begin textcolor (14); if kr = '/' then kr :='-' else if kr = '-' then kr: =''else if kr =''then kr :='|' else kr: = '/'; gotoxy (6, tek 3); write (kr); textcolor (3);end;

    procedure ramka (ch: char); (переміщення покажчика)begin gotoxy (6, tek 3); Writeln ( ''); textcolor (3); gotoxy (8, tek 3); write (nast.st [tek]); if ch = '+' then tek: = tek 1 else tek: = tek-1; if tek = 1 then tek: = nast.m else if tek = nast.m 1 then tek: = 2; key: = # 0; textcolor (9); gotoxy ( 8, tek 3); write (nast.st [tek]); krutis;end;

    procedure tabl11 (t: integer; rab: cc); (Вивід таблиці у файл)var ooutf: text;tem: cc;beginclrscr; writeln ( 'Введіть ім'я файлу'); readln (names); assign (ooutf, names); rewrite (ooutf); writeln (ooutf, menu2.st [t]); writeln (ooutf ,'+---- -------------------------------------------------- ---
    -----------------+'); Writeln (ooutf ,'|', mm [t-1, 1]: 14 ,'|', mm [t-1, 2]: 14 ,'|', mm [t-
    1,3]: 14 ,'|', mm [t-1, 4]: 14 ,'|', mm [t-1, 5]: 14 ,'|'); writeln (ooutf ,'+-- ------------+--------------+--------------+------- -----< br>--+--------------|'); Tem: = rab; while temnil do begin

    writeln (ooutf ,'|', tem ^. Tabl. t1: 14 ,'|', tem ^. tabl.t2: 14 ,'|', tem ^. tabl.t3: 14, '|
    ', tem ^. tabl.t4: 14,

    ' | ', tem ^. tabl.t5: 14 ,'|'); tem: = tem ^. sled; end; writeln (ooutf, '+------------------------------------------------ ---------< br>-----------------+'); Close (ooutf); nast: = menu1; menus (nast, nast.m); tek: = 2;end;

    procedure tabl1 (t: integer; rab: cc; yd: boolean); (Вивід таблиці на екран)var tem: cc;beginclrscr; writeln (menu2.st [t]); writeln ('+---------------------------------- -----------------------------< br>-----------+'); Writeln ('|', mm [t-1, 1]: 14 ,'|', mm [t-1, 2]: 14, '|' , mm [t-1, 3]: 14 ,'|', mm [t-
    1,4]: 14 ,'|', mm [t-1, 5]: 14 ,'|'); writeln ('+--------------+---- ----------+--------------+--------------+---< br>-----------|'); Tem: = rab; while temnil do begin

    writeln ('|', tem ^. Tabl.t1: 14 ,'|', tem ^. tabl.t2: 14 ,'|', tem ^. tabl.t3: 14 ,'|', tem ^
    . tabl.t4: 14,

    '|', tem ^. tabl.t5: 14 ,'|'); tem: = tem ^. sled; end; writeln ('+---- -------------------------------------------------- ---------< br>-----------+'); If not yd then begin readln; nast: = menu1; menus (nast, nast.m); tek: = 2; end; yd: = false;end;

    procedure sort (iz, t: integer; var rab: cc); (Сортування по полю)var po: integer; te1, te2, tem: cc; str1, str2: string; ttrtt: tabl2;begin tabl1 (tek, rab, true); writeln ( 'Введіть номер стовпчика по якому треба відсортувати дані'); readln (po); te1: = rab; while te1nil do begin te2: = te1 ^. sled; while te2nil do begin case po of

    1: begin str1: = te1 ^. tabl.t1; str2: = te2 ^. tabl.t1; end;

    2: begin str1: = te1 ^ . tabl.t2; str2: = te2 ^. tabl.t2; end;

    3: begin str1: = te1 ^. tabl.t3; str2: = te2 ^. tabl.t3; end;

    4: begin str1: = te1 ^. tabl.t4; str2: = te2 ^. tabl.t4; end;

    5: begin str1: = te1 ^. tabl.t5 ; str2: = te2 ^. tabl.t5; end; end; if str1> str2 then begin ttrtt: = te1 ^. tabl; te1 ^. tabl: = te2 ^. tabl; te2 ^. tabl: = ttrtt; end; te2: = te2 ^. sled; end; te1: = te1 ^. sled; end; tabl1 (tek, rab, false);end;

    procedure obrabotka (iz, t: integer; var rab: cc); (Обробка записів)var dlud: string; bis: boolean; tems, temr, tem: cc;begin clrscr; if iz = 1 then begin (додавання запису) if rabnil then begin tem: = rab; while tem ^. slednil do tem: = tem ^. sled; new (tem ^. sled); tem: = tem ^. sled; end else begin new (rab); tem: = rab; end; writeln (mm [t, 1]); readln (tem ^. tabl.t1); writeln (mm [t, 2]); readln (tem ^. tabl.t2); writeln (mm [t, 3]); readln (tem ^. tabl.t3); writeln (mm [t, 4]); readln (tem ^. tabl.t4); writeln (mm [t, 5]); readln (tem ^. tabl.t5); tem ^. sled: = nil; tem: = rab; izm: = 0; nast: = menu1; menus (nast, nast.m); tek : = 2; iz: = 0; end else if iz = 2 then begin (Видалення запису) tems: = rab; tabl1 (tek, rab, true); writeln ( 'Введіть унікальний номер'); readln (dlud); bis : = true; if rab ^. tabl.t1 = dlud then begin rab: = rab ^. sled; bis: = false; end else begin while temsnil do begin if tems ^. sled ^. tabl.t1 = dlud then begin tem : = tems ^. sled; tems ^. sled: = tems ^. sled ^. sled; dispose (tem); bis: = false; break; end; tems: = tems ^. sled; end; end; if bis then writeln ( 'Даною запису не виявлений'); nast: = menu1; menus (nast, nast.m); tabl1 (tek, rab, false); izm: = 0; tek: = 2; end else if iz = 3 then begin (зміна даних) tems: = rab; tabl1 (tek, rab, true); writeln ( 'Введіть унікальний номер'); readln (dlud); bis: = true; while temsnil do begin if tems ^. tabl.t1 = dlud then begin writeln (mm [t, 1]); readln (tems ^. tabl.t1); writeln (mm [t, 2]); readln (tems ^. tabl.t2); writeln (mm [t, 3 ]); readln (tems ^. tabl.t3); writeln (mm [t, 4]); readln (tems ^. tabl.t4); writeln (mm [t, 5]); readln (tems ^. tabl. t5); break; end; tems: = tems ^. sled; end; if bis then writeln ( 'Даною запису не виявлений'); nast: = menu1; menus (nast, nast.m); tabl1 (tek, rab, false); izm: = 0; tek: = 2; end;end;

    procedure zapros (num: integer); (Запити)var str1, str2, str3: string;tem1, tem2: cc;nay: boolean;zz: tabl2;begin clrscr; nay: = false; case num of
    2: begin (Знайти оцінку) tem1: = tt1; writeln ( 'Введіть прізвище'); readln (str1); writeln ( 'Введіть назву предмета'); readln ( str2); while tem1nil do begin if tem1 ^. tabl.t2 = str1 then begin str1: = tem1 ^. tabl.t1; break; end; tem1: = tem1 ^. sled; end; tem1: = tt2; while tem1nil do begin if tem1 ^. tabl.t2 = str2 then begin str2: = tem1 ^. tabl.t1; break; end; tem1: = tem1 ^. sled; end; tem1: = tt4; while tem1nil do begin if ((tem1 ^ . tabl.t5 = str2) and (tem1 ^. tabl.t4 = str1)) then begin textcolor (red); writeln ( 'Оцінка цього студента-', tem1 ^. tabl.t2); nay: = true; break; end; tem1: = tem1 ^. sled; end; end;
    3: begin (Викладач) writeln ( 'Виїдемо назва предмета'); readln (str1); tem1: = tt2; while tem1nil do begin if tem1 ^. tabl.t2 = str1 then begin str1: = tem1 ^. tabl.t3; break; end; tem1: = tem1 ^. sled; end; tem1: = tt3; while tem1nil do begin if tem1 ^. tabl.t1 = str1 then begin textcolor (red); writeln ( 'Викладач-'); with tem1 ^. tabl do write ( '', t2, ',', t3, ',', t4); nay: = true; break; end; tem1 : = tem1 ^. sled; end; end;
    4: begin (Знайти розмір стипендії) writeln ( 'Введіть прізвище студента'); readln (str1); tem1: = tt1; while tem1nil do begin if tem1 ^. tabl . t2 = str1 then begin textcolor (red); writeln ( 'Стипендія-', tem1 ^. tabl.t5); nay: = true; break; end; tem1: = tem1 ^. sled; end; end;
    5: begin (Виведення всіх студентів з обраною оцінкою) writeln ( 'Введіть оцінити сайт'); readln (str1); tem1: = tt4; tem2: = tt1; textcolor (red); while tem1nil do begin if tem1 ^. tabl.t2 = str1 then begin str2: = tem1 ^. tabl.t4; while tem2nil do begin if tem2 ^. tabl.t1 = str2 then begin with tem2 ^. tabl do writeln ( 'Студент-', t3, '', t4, ' ', t2); nay: = true; end; tem2: = tem2 ^. sled; end; end; tem2: = tt1; tem1: = tem1 ^. sled; end; end;
    6: begin (Знайти дату здачі предмета) writeln ( 'Введіть назву предмета'); readln (str1); tem1: = tt2; while tem1nil do begin if tem1 ^. tabl.t2 = str1 then begin str1: = tem1 ^. tabl.t1; break; end ; tem1: = tem1 ^. sled; end; tem1: = tt4; while tem1nil do begin if tem1 ^. tabl.t5 = str1 then begin textcolor (red); writeln ( 'Дата здачі-', tem1 ^. tabl.t3 ); nay: = true; end; tem1: = tem1 ^. sled; end; end; end;textcolor (red);if not nay then writeln ( 'Запит нездійсненний'); textcolor (3); readln; nast: = menu1; menus (nast, nast.m); tek: = 2;end;

    procedure writetip (temr: cc);beginclrscr; write ( 'Введіть ім'я файлу'); writeln ( 'в якому хочете зберегти дані'); readln (names); for i: = 1 to 4 do begin if temrnil then begin temr: = nil; end; case i of

    1: begin temr: = tt1; namer: = '1 '+ names; end;

    2: begin temr: = tt2; namer: = '2' + names; end;

    3: begin temr: = tt3; namer: = '3 '+ names; end;

    4: begin temr: = tt4; namer: = '4' + names; end; end; assign (outf, namer); rewrite (outf); while temrnil do begin write (outf, temr ^. tabl); temr: = temr ^. sled; end;
    CLOSE (outf); end; nast: = menu1; menus (nast, nast.m); tek: = 2;end;

    procedure readtip (temr: cc);var tems: cc;beginclrscr; write ( 'Введіть ім'я файлу'); writeln ( 'з якого треба взяти дані'); readln (names); for i: = 1 to 4 do begin if temrnil then begin temr: = nil; end; if temsnil then begin tems: = nil; end; case i of

    1: begin new (tt1); temr: = tt1; namer: = '1 '+ names; end;

    2 : begin new (tt2); temr: = tt2; namer: = '2 '+ names; end;

    3: begin new (tt3); temr: = tt3; namer: = '3' + names; end;

    4: begin new (tt4); temr: = tt4; namer: = '4 '+ names; end; end; assign (outf, namer); reset (outf); if eof (outf) then begin case i of

    1: begin dispose (tt1); tt1: = nil; end;

    2: begin dispose (tt2); tt2: = nil ; end;

    3: begin dispose (tt3); tt3: = nil; end;

    4: begin dispose (tt4); tt4: = nil; end; end; end else begin tems: = temr; while temrnil do begin if eof (outf) then break; read (outf, temr ^. tabl); if eof (outf) then break; new (temr ^. sled); temr: = temr ^ . sled; end; temr ^. sled: = nil; case i of

    1: tt1: = tems;

    2: tt2: = tems;

    3: tt3: = tems;

    4: tt4: = tems; end; end;
    CLOSE (outf); end; nast: = menu1; menus (nast, nast.m); tek: = 2;end;

    procedure main;beginkey: = # 0; if nast.st [1] = menu1.st [1] then begin (Якщо меню - основне) case tek of

    2: readtip (temr); < p> 3: writetip (temr);

    4,5,7: begin nast: = menu2; menus (nast, nast.m); if tek = 7 then issor: = true; if tek = 4 then vfile: = true else if tek = 5 then vfile: = false; tek: = 2; end;

    6: begin nast: = menu3; menus (nast, nast.m); tek: = 2; end;

    8: begin nast: = menu4; menus (nast, nast.m); tek: = 2; end;

    9: begin exist: = true ; end; end; end

    else if nast.st [1] = menu3.st [1] then begin (Якщо поточне меню-menu3) case tek of

    2,3 , 4: begin izm: = tek-1; nast: = menu2; menus (nast, nast.m); tek: = 2; end;

    5: begin nast: = menu1; menus (nast , nast.m); tek: = 2; end; end; end

    else if nast.st [1] = menu4.st [1] then begin (Якщо поточне меню-menu4) case tek of

    2,3,4,5,6: zapros (tek);

    7: begin nast: = menu1; menus (nast, nast.m); tek: = 2 ; end; end; end

    else if nast.st [1] = menu2.st [1] then begin (Якщо поточне меню-menu2) if izm> 0 then begin case tek of

    2: obrabotka (izm, tek-1, tt1);

    3: obrabotka (izm, tek-1, tt2);

    4: obrabotka (izm, tek -1, tt3);

    5: obrabotka (izm, tek-1, tt4);

    6: begin nast: = menu1; menus (nast, nast.m); izm: = 0; tek: = 2; end; end; end else if issor = true then begin issor: = false; case tek of

    2: sort (izm, tek-1, tt1);

    3: sort (izm, tek-1, tt2);

    4: sort (izm, tek-1, tt3);

    5: sort (izm, tek-1, tt4);

    6: begin nast: = menu1; menus (nast, nast.m); izm: = 0; tek: = 2; end; end; end

    else begin case tek of

    2: if vfile then tabl11 (tek, tt1) else tabl1 (tek, tt1, false);

    3: if vfile then tabl11 (tek, tt2) else tabl1 (tek, tt2, false);

    4: if vfile then tabl11 (tek, tt3) else tabl1 (tek, tt3, false); < p> 5: if vfile then tabl11 (tek, tt4) else tabl1 (tek, tt4, false);

    6: begin nast: = menu1; menus (nast, nast.m); izm: = 0; tek: = 2; end; end; end; end;end;

    beginclrscr;textBackground (black);tek: = 2; kr :='-'; exist: = false;nast: = menu1; menus (nast, nast.m); while 1> 0 do begin if keypressed then key: = readkey; case key of

    # 80: ramka ('+');

    # 72: ramka ('-');

    # 27: exist: = true;

    # 13: main; end; if exist then exit; krutis ; end;end.

    Текст модуля Tips.pas
    Unit tips;interfacetype pered = record st: array [1 .. 12] of string; m: byte; end;

    tabl2 = record t1, t2, t3, t4, t5: string [12]; end; cc = ^ tab; tab = record tabl: tabl2; sled: cc; end;

    varmenu1, menu2, menu3, menu4: pered;mm: array [1 .. 5,1 .. 5] of string [50];implementationbeginwith menu1 do begin st [1]: = 'БАЗА ДАНИХ'; st [2]: = "ЗАВАНТАЖЕННЯ"; st [3]: = 'Зберегти. в тип. файл '; st [4]: =' Зберегти. в текст. файл '; st [5]: =' Перегляд '; st [6]: =' Коректування '; st [7]: =' Сортування '; st [8]: =' Запити '; st [9]: =' Вихід '; m: = 9;end; mm [1,1]: = 'Студентський'; mm [1,2]: = 'Прізвище'; mm [1,3]: = 'Назва'; mm [1,4]: = 'По батькові'; mm [1,5]: = 'Стипендія'; mm [2,1]: = 'Код предмета'; mm [2,2]: = 'Назва'; mm [2,3]: = 'Код викладач.' ; mm [2,4]: = 'Час навчання'; mm [2,5]: = 'Курс'; mm [3,1]: = 'Код викладач.'; mm [3,2]: = 'Прізвище '; mm [3,3]: =' Назва '; mm [3,4]: =' По батькові '; mm [3,5]: =' Початок роботи '; mm [4,1]: =' Код здачі '; mm [4,2]: =' Оцінка '; mm [4,3]: =' Дата здачі '; mm [4,4]: =' Студентський '; mm [4,5]: =' Код предмету ';

    with menu2 do begin st [1]: =' ПЕРЕГЛЯД '; st [2]: =' Студенти '; st [3]: =' Предмети '; st [4]: =' Викладачі '; st [5]: =' Оцінки '; st [6]: =' Вихід '; m: = 6;end;with menu3 do begin st [1]: = 'Коректування'; st [2]: = 'Додавання'; st [3]: = 'Видалення'; st [4]: = 'Зміна'; st [5]: = 'Вихід'; m: = 5;end;with menu4 do begin st [1]: = 'ЗАПИТИ'; st [2]: = 'Знайти оцінку'; st [3]: = 'Хто приймав іспит'; st [4]: = 'Знайти розмір стипендії'; st [5]: = 'Висновок з оцінки'; st [6]: = 'Дата здачі іспиту'; st [7]: = 'Вихід'; m: = 7;end;end.
    -----------------------< br>

    Рис. 1

    Рис. 2

    Рис. 3

    Рис. 4


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

     

     

     

     

     

     

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