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

     

     

     

     

     

         
     
    Інформаційно-довідкова система, що забезпечує роботу з базою даних Bit
         

     

    Інформатика, програмування
    1. Тема:
    розробка інформаційно-довідкової системи.
    2. Вихідні дані:
    Розробити інформаційно-довідкову систему, забезпечую-
    щую роботу з базою даних Bit включає запису виду:
    ?????????????????????????????????????????????????? ????????< br /> ? СПИСОК АБІТУРЬЕНТОВ?
    ?????????????????????????????????????????????????? ????????< br /> ? ? ПІБ? ? No? оцінки за іспити?
    ? No ?????????????????????? Пол? прим .??????????????????????< br /> ? ? Прізвище? Ім'я? По-батькові? ? листа? 1 прим? 2 прим? 3 прим?
    ?????????????????????????????????????????????????? ????????< br /> З бази Bit створити базу Вstud із записами види:
    ?????????????????????????????????????????????????? ????????< br /> ? СПИСОК СТУДЕНТІВ?
    ?????????????????????????????????????????????????? ????????< br /> ? ? ПІБ? No? сума?
    ? No ??????????????????????????????????????? прим.? балів?
    ? ? Прізвище? Ім'я? По-батькові? Листа? ?
    ?????????????????????????????????????????????????? ????????< br /> Меню системи має включати режими коригування, знищення
    ня перегляду, завантаження, збереження.
    Мова програмування Пролог.
    3. Перелік питань, що підлягають розробці:
    3.1 Розробка меню, що забезпечує взаємодію користу-
    Ватель з системою, відповідно до завдання, передбачені
    Мотрі режими:
    - Коригування даних,
    - Знищення даних,
    - Перегляду бази,
    - Завантаження бази,
    - Збереження бази,
    - Створення нової бази.
    3.2 Розробка процедур:
    - Коригування даних,
    - Знищення даних,
    - Перегляду бази,
    - Завантаження бази,
    - Збереження бази,
    - Створення нової бази.
    4. Перелік графічних матеріалів:
    4.1 структурна схема меню
    4.2 структурна схема програми.
    5. Календарний план-графік роботи над курсовою роботою:
    1. Отримання завдання
    4.10.96
    2. Аналіз завдання, постановка завдання, підбір і вивчення
    літератури
    18.10.96
    3. Розробка меню і структури програми
    25.10.96
    4. Розробка процедур інформаційно-довідкової системи
    15.11.96
    5. Налагодження програми
    29.11.96
    6. Оформлення пояснювальної записки і здача роботи на про-
    ревірку
    24.12.96
    7. Захист курсової роботи
    25.12.96
    Керівник/Холкін І.І./
    Студент/Данченко А.В., ІІ-1-95/


    Вступ .................................... 4
    1. Поняття про інформаційних системах та їх
    програмної реалізації ................... 4
    2. База даних та способи її подання ... 4
    3. Розробка системного меню ............... 5
    4. Розробка структури програми ........... 7
    5. Розробка процедур:
    5.1 Основні процедури Begin ............. 8
    5.2 Висновку головного меню Main_menu ....... 8
    5.3 Автоматичної завантаження БД Autoload .. 9
    5.4 Виведення інформації про систему
    Working (0) ........................... 9
    5.5 Виведення меню коректування Working (1). 9
    5.6 Видалення записів Working (2) .......... 9
    5.7 Виведення меню перегляду Working (3) ..... 9
    5.8 Виведення меню завантаження Working (4) ..... 10
    5.9 Виведення меню збереження Working (5) ... 10
    5.10 Створення нової БД Working (6) ....... 10
    5.11 Виходу з програми Working (7) ..... 10
    5.12 Обробки помилки користувача
    Working (_) ......................... 10
    5.13 Коригування даних Correct (1) .... 10
    5.14 Додавання нових записів Correct (2). 11
    5.15 Перегляду БД View .................. 11
    5.16 Допоміжне Accept ............. 11
    5.17 Допоміжні Skip і Skip1 ....... 11
    5.18 Завантаження БД з диска Bd_load ........ 12
    5.19 Збереження БД на диску Bd_save ..... 12
    5.20 Допоміжне Ask ................ 12
    5.21 Mesage ............................. 12
    5.22 Error і Io_error ................... 12
    5.23 Ok ................................. 12
    6. Лістинг програми ....................... 13
    7. Налагодження програми ....................... 24
    8. Інструкція користувача і рішення
    контрольних прикладів: ................... 25
    Висновок ................................. 28
    Список літератури .......................... 29

    Дана дипломна написана на мові Пролог в середовищі Turbo Prolog
    v 2.0 (русифікована версія). У структурі мови закладені віз-
    можності простий і надзвичайно ефективної роботи з базами дан-
    них, що дозволяє на його основі створювати різного роду інфор-
    маціонно - довідкові системи. Структура мови Пролог відпо-
    ствует структурі реляційних баз даних. Так відношенню в РБД
    відповідає предикат в Пролозі, елементу - факт, атрибуту відно-
    ності - аргумент предиката і т.д. Вбудовані в Пролог предикати
    роботи з вікнами дозволяють створити дружній інтерфейс для ра-
    боти користувача з інформаційно - довідкової системою.


    Інформаційно-довідкові системи - це програми-оболонки,
    службовці для управління масивами і базами даних. У наше століття
    загальної комп'ютеризації інформаційно-довідкові системи значи-
    тельно полегшують працю людини у всіх галузях народного господар-
    ства. Значно спростилася робота московської міліції у обна-
    Руженою угнаного транспорту після створення в Москві комп'ютерних
    баз даних по угнаним автомобілів. Бухгалтерам підприємств і фірм
    тепер не потрібно перебирати гори паперів, щоб отримати всі дані
    про співробітника: достатньо завантажити інформаційно-довідкової сис-
    тему і вона в зручній формі видасть всю необхідну інформацію.
    Області застосування інформаційно-довідкових систем воістину
    безмежні: це ведення статистики удою худоби на фермі, склад-
    ня каталогів книжок у бібліотеках і творів мистецтва в му-
    зеях, збір даних про наявність робочих вакансій в даному регеоне і
    багато інших.
    Одним із способів програмної реалізації інформаційно-спра-
    вильно системи є використання для її створення мови логи-
    тичного програмування Пролог. У даній реалізації мови содер-
    жітся безліч вбудованих предикатів, істотно полегшують
    написання таких систем.

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

    Всі режими програми активізуються за допомогою меню, яке
    реалізовано за допомогою процедури main_menu. Для активізації како-
    го або режиму користувачеві слід натиснути цифрову клавішу,
    відповідну вибраному пункту меню.
    Меню даної програми складається із семи пунктів:
    0 - Про систему ... - Виведення даних про систему
    1 - Коригування даних - режим коректування даних
    2 - Знищення даних - режим видалення даних
    3 - Перегляд бази - режим перегляду бази
    4 - Завантаження бази - режим завантаження бази
    5 - Збереження бази - режим збереження бази
    6 - Створення нової бази - режим створення нової бази
    7 - Вихід з програми - вихід з програми
    На наступній сторінці представлена графічна структура меню.


    ?????????????????????< br /> ? begin?
    ?????????????????????< br /> ? основна процедура?
    ?????????????????????< br /> ??????????????????????????????????< br /> ??????????????????? ????????????????< br /> ? autoload? ? main_manu?
    ??????????????????? ????????????????< br /> ? автозавантаження БД? ? головне меню?
    ??????????????????? ????????????????< br /> ?
    ?????????????????????????????????????????????????? ?
    ? ? ? ? ? ? ?
    ???????????? ? ??????????????? ? ???????????? ? ????????????< br /> ? working (0)? ? ? working (1)? ? ? working (2)? ? ? working (3)?
    ???????????? ? ??????????????? ? ???????????? ? ????????????< br /> ? Інформація? ? ? Коригування? ? ? Видалення? ? ? Перегляд?
    ? про систему? ? ? даних? ? ? даних? ? ? бази?
    ???????????? ? ??????????????? ? ???????????? ? ????????????< br /> ??????????????? ?? ? ?? ? ???????< br /> ? ? ? ? ? ??? ?
    ? ????????????? ? ??????????????? ? ???????????? ?
    ? ? working (4)? ? ? working (5)? ? ? working (6)? ?
    ? ????????????? ? ??????????????? ? ???????????? ?
    ? ? Процедура? ? ? Процедура? ? ? Створення? ?
    ? ? завантаження БД? ? ? збереження БД? ? ? нової БД? ?
    ? ????????????? ? ??????????????? ? ???????????? ?
    ? ? ? ???????? ? ?
    ? ?? ???????????????? ? ????????????? ?
    ? ???????????? ? ? ? ? ??????? ? ?
    ? ? working (7)? ? ???????????? ? ???????????? ? ????????????? ?
    ?????????????? ? ? correct (1)? ? ? correct (2)? ? ? accept (N)? ?
    ? ? Вихід? ? ???????????? ? ???????????? ? ????????????? ?
    ? ???????????? ? ? Зміна? ? ? Введення нових? ? ? Визначення? ?
    ? ???????????? ? ? даних? ? ? даних? ? ? видаляється? ?
    ? ? working (_)? ? ???????????? ? ???????????? ? ? запису? ?
    ?????????????? ? ?????????????????? ? ????????????? ?
    ? Обробка? ? ? correct (_)? ? ?
    ? помилки? ? ?????????????????? ? ?
    ???????????? ? ? вихід в головне? ? ?????< br /> ? ? меню? ? ?
    ? ?????????????????? ? ?
    ? ? ?
    ? ? ?
    (1) (2) (3)
    (1) (2) (3)
    ? ? ?
    ? ? ????< br /> ? ????????????? ?
    ????????????????????????????????????????????? ? ?
    ?????????????? ????????????? ?????????????? ???????????? ? ?
    ? load_bd (1)? ? load_bd (2)? ? load_bd (3)? ? load_bd (4)? ? ?
    ?????????????? ????????????? ?????????????? ???????????? ? ?
    ? Завантаження? ? Завантаження? ? Завантаження? ? Завантаження? ? ?
    ? основний БД? ? основний БД? ? нової БД? ? нової БД? ? ?
    ? з файлу? ? з файлу? ? з файлу? ? з файлу? ? ?
    ? користувача? ? bit.dat? ? користувача? ? bstud.dat? ? ?
    ?????????????? ????????????? ?????????????? ???????????? ? ?
    ? ?
    ?????????????????????????????????????????????????? ?? ?
    ?????????????? ????????????? ?????????????? ???????????? ?
    ? save_bd (1)? ? save_bd (2)? ? save_bd (3)? ? save_bd (4)? ?
    ?????????????? ????????????? ?????????????? ???????????? ?
    ? Збереження? ? Збереження? ? Збереження? ? Збереження? ?
    ? основний БД? ? основний БД? ? нової БД? ? нової БД? ?
    ? у файлі? ? у файлі? ? у файлі? ? у файлі? ?
    ? користувача? ? bit.dat? ? користувача? ? bstud.dat? ?
    ?????????????? ????????????? ?????????????? ???????????? ?
    ?
    ?????????????????????????????????????????????????? ?
    ??????????????? ??????????????? ???????????????< br /> ? view (1)? ? view (2)? ? view (_)?
    ??????????????? ??????????????? ???????????????< br /> ? Перегляд? ? Перегляд? ? Вихід?
    ? основний БД? ? нової БД? ? в меню?
    ??????????????? ??????????????? ???????????????< br />
    Процедури створювалися на основі вимог, викладених у за-
    Данії до курсової роботи.

    За допомогою процедури Begin у роздiлi GOAL ініціюється нача-
    ло виконання програми. Ця процедура запускає процедуру на-
    чільного завантаження бази даних Autoload, після чого передає управ-
    ня процедури виводу головного меню Main_menu.

    Ця процедура виводить список пунктів головного меню і ожі-
    дає від користувача введення числа, яке буде занесено до пере-
    менную C. Після цього викликається процедура обробки основних ре-
    жімов Working, в яку мінлива C передається як аргу-
    мента. У процедурі використаний предикат Repeat, у зв'язку з цим
    після повернення з процедури Working у випадку, якщо C не дорівнює 7
    відбувається повторне виведення пунктів меню і очікування введення числа.

    Процедура Autoload призначена для автоматичної загруз-
    ки основної бази даних при запуску програми. Це значно
    полегшує роботу з системою, оскільки не потрібно при запуску
    програми довантажувати основну БД з режиму "Завантаження". Процедура
    Autoload перевіряє існування на диску файлу bit.dat з по-
    потужністю вбудованого предиката existfile і довантажує БД в пам'ять з
    допомогою предиката consult. У разі відсутності файлу видається
    повідомлення про помилку.

    Дана процедура виводить інформацію про мову, на якому на-
    писана система і дані про творця.

    Процедура Working (1) служить для виведення меню режиму корекції
    ції даних, що знаходяться в БД, і внесення нових записів. Після ак-
    тівізаціі процедура виводить меню в якому є режими: "вимірюв-
    ня даних "," Додавання даних "і" Вихід в меню ". Активізація
    режимів відбувається аналогічно головному меню за допомогою натискання
    відповідної цифрової клавіші. Лічені з клавіатури число
    заноситься у змінну X, після чого викликається процедура
    Correct, аргументом якої служить X. За допомогою процедур
    Correct (1) і Correct (2), описаних нижче, власне і реалізує-
    ся режими корекції і додавання. У процедурі Working (1) також
    застосований предикат Repeat, за допомогою якого реалізований повтор-
    ний висновок меню в разі помилки введення.

    Ця процедура призначена для видалення записів з бази
    даних. У програмі передбачена можливість завдання або номі-
    ра видаляється запису, або прізвища абітурьента, що міститься в
    цього запису. Ця можливість реалізується процедурою Accept,
    описаної нижче. Процедура Accept повертає номер вибраної запи-
    сі і за допомогою вбудованого предиката retract запис видаляється з
    бази даних. У випадку помилки (відсутності запису, вибраної
    користувачем для видалення) виводиться відповідне повідомлення
    (процедура Error).

    Процедура Working (3) виводить меню, що містить пункти: "Просо-
    Мотря основної бази "," Перегляд бази BSTUD "і" Вихід в головне ме-
    ню ". Власне перегляд вмісту БД здійснюють процедури
    View (1) і View (2), розглянуті нижче. Процедура Working (3) реа-
    лізована в стилі процедур Main_menu і Working (1) із застосуванням
    процедури Repeat.

    Дана процедура виводить меню, що містить наступні пункти:
    "Завантажити основну базу з обраного файлу", "Завантажити основ-
    ву базу з файлу bit.dat "," Завантажити базу BSTUD з обраного
    файлу "," Завантажити базу BSTUD з файлу bstud.dat "і" Вихід в
    головне меню ". Власне завантаження баз даних здійснюється про-
    цедурой Load_bd, аргументом якої служить мінлива C, лічений-
    ва з клавіатури при введенні користувачем номера бажаного пункту
    меню. У процедурі Working (4) також застосована процедура Repeat.

    Процедура Working (5) аналогічна Working (4). Для збереження
    баз даних застосовується процедура Save_bd, розглянута нижче, ар-
    гументом якої є мінлива I.

    Ця процедура служить для створення нової бази даних. Про-
    цедура працює таким чином: з бази, яка має позначку "аби-
    турьент ", витягуються потрібні дані, проводиться підсумовування
    оцінок за іспити і новий запис за допомогою предиката assertz до-
    бавляться до бази з міткою "студент". Для того, щоб були обро-
    тани всі записи, використовується fail. Після створення нової БД ви-
    дається відповідне повідомлення і попередження про те, щоб
    користувач не забув зберегти знову створення БД.

    Ця процедура складається з відсікання, яке забороняє
    подальший перебір. Процедура закінчується успіхом і відбувається
    повернення до процедури Main_menu, в якій виконується умова C = 7,
    завдяки чому відбувається вихід з програми.

    Процедура Working (_) виводить повідомлення про помилку введення циф-
    ри і підказку про те, що слід ввести число від 0 до 7. Висновок
    повідомлення супроводжується подачею звукового сигналу, реалізований-
    ної за допомогою вбудованого предиката sound. Після натискання клавіші
    відбувається повернення в головне меню.

    Дана процедура проводить корекцію даних у запису.
    Є можливість вибрати запис для коригування або за но-
    міру, або на прізвище абітурьента. Цю можливість надавати пріоритет
    ляєт процедура Accept, описана нижче, яка викликається після
    створення вікна "Зміна даних". Процедура Accept передає но-
    заходів обраної записи в змінну N, після чого вміст запи-
    сі роздруковується на екрані. Після цього користувачеві надається-
    ляется можливість ввести змінені дані; якщо немає необхід-
    мости змінювати який-небудь елемент, можна натиснути клавішу.
    Всі дані, в тому числі і числа, зчитуються у форматі рядків. Це
    необхідно для здійснення можливості відмови від зміни еле-
    мента натисканням клавіші. Всі лічені дані передаються
    процедурам Skip (для строкових вихідних даних) і Skip1 (для це-
    лочісленних вихідних даних). Ці процедури в залежності від то-
    го, чи була натиснута клавіша повертають в процедуру
    Correct (1) або старе значення, або нове, при чому процедура
    Skip1 перетворює з допомогу вбудованого предиката str_int рядок-
    ві дані в цілочисельні. Стара запис видаляється з бази дан-
    них предикатом retract, а нова додається предикатом assertz.
    Після закінчення виводиться попередження про те, що слід збереженні-
    нитка знову введені дані (процедура Mesage).

    Процедура Correct (2) служить для додавання записів до БД.
    Користувач вводить по черзі кожен елемент запису, відповідаючи на
    запити системи. За допомогою предиката assertz дані додаються в
    БД, після чого викликається предикат Ask, що формує запит на
    продовження процесу введення нових записів. Якщо від користувача
    буде отримано позитивну відповідь, то завдяки процедурі Repeat
    цикл введення даних повториться, при отриманні негативного отве-
    та система видасть попередження про необхідність збереження знову
    введених даних (процедура Mesage) і відбудеться повернення з про-
    цедури Correct (2).

    Ця процедура служить для виведення на екран вмісту ос-
    новних (View (1)) і знову створеної (View (2)) баз даних. Каж-
    дая з процедур виводить заголовну таблицю, після чого роздрукувати-
    ють вміст кожного запису. Для перебору всієї БД застосований
    предикат fail. Після виведення всіх записів виводиться?? росьба на-
    жати будь-яку клавішу для продовження.

    Дана процедура є допоміжний до процедур
    Correct (1) і Working (2). Вона в парі з допоміжний процеду-
    рій Acp визначає номер бажаної запису після введення користува-
    лем або власне номера цього запису, або після введення прізвища
    абітурьента (дані пункти присутні в меню, що виводиться проце-
    дурой Accept) і повертає цей номер в викликала процедуру.

    Процедури Skip і Skip1 є допоміжні до процеду-
    ре Correct (1). Вони дозволяють визначити, чи слід заміщати
    наявний елемент запису на новий чи ні (якщо була натиснута кла-
    Вишал). У процедурах перевіряється, чи є першим аргу-
    мент нового рядка. Якщо це так, то третій аргумент присвоюються-
    ється другий. Якщо ж перший аргумент не є марною будів-
    кою, то він присвоюється третьому аргументу (у Skip1 відбувається
    попереднє перетворення рядковий змінної в целочіслен-
    ву).

    Дана процедура здійснює завантаження баз даних з фай-
    лов на диску за ознаками, що залежать від аргументу процедури:
    Bd_load (1) завантажує основну БД з файлу, заданого користува-
    лем, Bd_load (2) - з файлу bit.dat, Bd_load (3) - базу BSTUD з
    файлу, заданого користувачем і BD_load (4) - базу BSTUD з фай-
    ла bstud.dat. У даних процедурах перевіряється наявність файлу на
    диск за допомогою предиката existfile та завантаження БД на згадку з по-
    міццю предиката consult. У разі відсутності файлу на диску, ви-
    дається відповідне повідомлення (процедура Io_error).

    Дана процедура здійснює збереження баз даних у фай-
    лах на диску за ознаками, що залежать від аргументу процедури:
    Bd_save (1) зберігає основну БД у файлі, заданому користувачем,
    Bd_save (2) - у файлі bit.dat, Bd_save (3) - базу BSTUD у файлі,
    заданому користувачем і BD_save (4) - базу BSTUD у файлі
    bstud.dat. Збереження БД здійснюється за допомогою вбудованого
    предиката save. У разі помилки видається відповідне спільнота-
    ня (процедура Error).

    Процедура Ask є допоміжний до процедури
    Correct (2). Вона запитує користувача, чи бажає він продол-
    жити введення даних.

    Дана процедура виводить попередження про необхідність
    збереження знову введених даних.

    Ці процедури виводять повідомлення про помилки.

    Дана процедура виводить повідомлення про успішне виконання
    операції.

    domains
    Str = string
    Int = integer
    ПІБ = фио (Str, Str, Str)
    ОЦІНИВ = оцінити (Int, Int, Int)
    database - студент
    студент (Int, ПІБ, Int, Int),
    database - абітурьент
    абітурьент (Int, ПІБ, Str, Int, оцінили)
    predicates
    begin
    main_menu
    autoload
    accept (Int)
    acp (Int, Int)
    working (Int)
    correct (Int)
    view (Int)
    skip (Str, Str, Str)
    skip1 (Str, Int, Int)
    ask
    mesage
    error
    io_error
    ok
    save_bd (Int)
    load_bd (Int)
    repeat
    goal
    begin.
    clauses
    / * Основна процедура, стор.8 */
    begin: -
    makewindow (1,26,94, "СПИСОК АБІТУРЬЕНТОВ", 0,0,25,80),
    clearwindow,
    autoload,
    main_menu.
    / * Головне меню, стор.8 */
    main_menu: -
    repeat,
    cursor (7,0),
    write ( "0 - Про систему ..."), nl,
    write ( "1 - Коригування даних"), nl,
    write ( "2 - Знищення записів"), nl,
    write ( "3 - Перегляд бази"), nl,
    write ( "4 - Завантаження бази"), nl,
    write ( "5 - Збереження бази"), nl,
    write ( "6 - Створення нової бази"), nl,
    write ( "7 - Вихід з програми"), nl,
    write ( "=>"),< br /> readint (C),
    clearwindow,
    working (C),
    clearwindow,
    C = 7,
    retractall (_),< br /> removewindow.
    / * Процедура автоматичного завантаження бази даних, стор.9 */
    autoload: -
    retractall (_, абітурьент),
    existfile ( "bit.dat"),
    consult ( "bit.dat", абітурьент),
    cursor (21,30),
    write ( "* База завантажена *").< br /> autoload: -
    makewindow (2,74,79, "ПОМИЛКА", 6,18,8,40),
    cursor (2,10),
    write ( "Ні бази на диску"),
    sound (70,294),
    removewindow,
    !.
    / * Висновок даних про творця програми, стор.9 */
    working (0): -
    makewindow (3,27,30, "Про систему ...", 0,0,25,80),
    nl, nl,
    write ( "Інфоpмаціонно-спpавочная система"),
    nl, nl,
    write ( "Список абітурьентов"),
    nl, nl, nl, nl,
    write ( "Програма складена в середовищі"),
    nl,
    write ( "TURBO-PROLOG v.2.0 ."),< br /> nl, nl, nl,
    write ( "автоp: Данченко А.В."),
    nl, nl,
    write ( "МГІРЕА, гp.ІІ-1-95 (з) 1996 р."),
    nl,
    sound (5,220),
    cursor (22,26),
    write ( "Натисніть на будь-яку клавішу"),
    readchar (_),< br /> removewindow,!.
    / * Процедура виводу меню коректування даних, стор.9 */
    working (1): -
    makewindow (4,26,48, "Коppектіровка даних", 0,0,25,80),
    sound (5,220),
    repeat,
    nl,
    nl,
    cursor (9,0),
    write ( "1 - Зміна даних"), nl,
    write ( "2 - Додавання даних"), nl,
    write ( "3 - Вихід в головне меню"), nl,
    write ( "=>"),< br /> readint (X),
    clearwindow,
    X> 0, X
    correct (X),
    clearwindow,
    X = 3,!,
    removewindow.
    / * Процедура знищення даних, стор.9 */
    working (2): -
    makewindow (5,48,107, "Знищення записів", 0,0,25,80),
    sound (5,220),
    nl,
    accept (N),
    X = N,
    абітурьент (X, фио (Fm, Nm, Ot), Pl, Ls, оцінити (E1, E2, E3)),
    retract (абітурьент (X, фио (Fm, Nm, Ot), Pl, Ls, оцінити (E1, E2, E3 ))),< br /> ok,
    !,
    removewindow.
    working (2): -
    error,
    removewindow,!.
    / * Процедура виводу меню перегляду бази даних, стор.9 */
    working (3): -
    makewindow (6,30,26, "Просмотp бази", 0,0,25,80),
    sound (5,220),
    repeat,
    nl,
    nl,
    cursor (10,0),
    write ( "1 - Перегляд основної бази"), nl,
    write ( "2 - Перегляд бази BSTUD"), nl,
    write ( "3 - Вихід в головне меню"), nl,
    write ( "=>"),< br /> readint (X),
    clearwindow,
    X> 0, X
    view (X),
    clearwindow,
    X = 3,!,
    removewindow.
    / * Процедура завантаження бази даних, стор.10 */
    working (4): -
    makewindow (7,62,120, "Завантаження", 5,10,15,60),
    sound (5,220),
    repeat,
    nl, nl,
    write ( "1 - Завантажити основну базу з обраного файлу"), nl,
    write ( "2 - Завантажити основну базу з файлу bit.dat"), nl,
    write ( "3 - Завантажити базу BSTUD з обраного файлу"), nl,
    write ( "4 - Завантажити базу BSTUD з файлу bstud.dat"), nl,
    write ( "5 - Вихід в основне меню"), nl,
    write ("=>"),< br /> readint (C),
    clearwindow,
    C> 0, C
    load_bd (C),
    clearwindow,
    C = 5,!,
    removewindow.
    / * Процедура збереження бази даних, стор.10 */
    working (5): -
    makewindow (8,62,120, "Збереження", 5,10,15,60),
    sound (5,220),
    repeat,
    nl, nl,
    write ( "1 - Зберегти основну базу у вказаному файлі"), nl,
    write ( "2 - Зберегти основну базу у файлі bit.dat"), nl,
    write ( "3 - Зберегти базу BSTUD у вказаному файлі"), nl,
    write ( "4 - Зберегти базу BSTUD у файлі bstud.dat"), nl,
    write ( "5 - Вихід в основне меню"), nl,
    write ("=>"),< br /> readint (I),
    clearwindow,
    I> 0, I
    save_bd (I),
    clearwindow,!,
    removewindow.
    / * Процедура створення нової бази даних, стор.10 */
    working (6): -
    makewindow (10,43,120, "Створення бази даних BSTUD", 6,18,8,40),
    sound (5,220),
    nl,
    retractall (_, студент),
    абітурьент (N, фио (Fam, Nam, Otch), Pol, List, оцінити (E1, E2, E3)),
    N = N1, Fam1 = Fam, Nam1 = Nam,
    Otch1 = Otch, List1 = List, Sum = E1 + E2 + E3,
    assertz (студент (N1, фио (Fam1, Nam1, Otch1), List, Sum)),
    fail.
    working (6): -
    write ( "База BSTUD створена ."),< br /> nl,
    write ( "Не забудьте зберегти її !"),< br /> nl, nl,
    write ( "Натисніть на будь-яку клавішу"),
    readchar (_),< br /> removewindow,!.
    / * Процедура виходу, стор.10 */
    working (7 ):-!.< br /> / * Обробка помилки користувача, стор.10 */
    working (_):-< br /> makewindow (16,74,79, "ПОМИЛКА ВВЕДЕННЯ", 6,18,8,40),
    nl,
    write ( "Введіть число від 0 до 7,"), nl,
    write ( "відповідне вибраному пункту"), nl, nl, nl,
    write ( "Натисніть на будь-яку клавішу"),
    sound (20,494),
    sound (30,392),
    readchar (_),< br /> removewindow.
    / * Процедура корекції даних в базі, стор.10 */
    correct (1): -
    makewindow (4,26,48, "Зміна даних", 0,0,25,80),
    nl,
    accept (N),
    X = N,
    абітурьент (X, фио (Fam, Nam, Otch), Pol, List, оцінити (E1, E2, E3)),
    clearwindow, nl,
    write ( "Порядковий номер абітурьента:"), write (N), nl,
    write ( "Прізвище:"), write (Fam), nl,
    write ( "Ім'я:"), write (Nam), nl,
    write ( "По-батькові:"), write (Otch), nl,
    write ( "Стать:"), write (Pol), nl,
    write ( "Номер екзаменаційного листа:"), write (List), nl, nl,
    write ( "Оцінки за іспити -"), nl, nl,
    write ( "За перші:"), write (E1), write ( ""),
    write ( "За друге:"), write (E2), write ( ""),
    write ( "За третє:"), write (E3),
    nl, nl, nl,
    write ( "Введіть прізвище:"), readln (Fam1),
    write ( "Введіть ім'я:"), readln (Nam1),
    write ( "Введіть по батькові:"), readln (Otch1),
    write ( "Введіть підлогу:"), readln (Pol1),
    write ( "Введіть номер екзаменаційного листа:"), readln (List1),
    write ( "Введіть оцінки за іспити -"), nl,
    write ( "За перші:"), readln (Ekz1),
    write ( "За друге:"), readln (Ekz2),
    write ( "За третє:"), readln (Ekz3), nl,
    X1 = X,
    retract (абітурьент (X, фио (Fam, Nam, Otch), Pol, List, оцінити (E1, E2, E3 ))),< br /> skip (Fam1, Fam, Fam2),
    skip (Nam1, Nam, Nam2),
    skip (Otch1, Otch, Otch2),
    skip (Pol1, Pol, Pol2),
    skip1 (List1, List, List2),
    skip1 (Ekz1, E1, E11),
    skip1 (Ekz2, E2, E22),
    skip1 (Ekz3, E3, E33),
    assertz (абітурьент (X1, фио (Fam2, Nam2, Otch2), Pol2, List2, оцінити (E11, E22, E33 ))),< br /> !,
    mesage,
    removewindow.
    / * Процедура додавання нових записів, стор.11 */
    correct (2): -
    makewindow (9,26,48, "Введення нових даних", 0,0,25,80),
    repeat,
    nl,
    write ( "Введіть порядковий номер абітурьента:"), readint (K), nl,
    write ( "Введіть прізвище:"), readln (F), nl,
    write ( "Введіть ім'я:"), readln (N), nl,
    write ( "Введіть по батькові:"), readln (O), nl,
    write ( "Введіть підлогу:"), readln (P), nl,
    write ( "Введіть номер екзаменаційного листа:"), readint (L), nl,
    write ( "Введіть оцінки за іспити -"), nl, nl,
    write ( "За перші:"), readint (E1), nl,
    write ( "За друге:"), readint (E2), nl,
    write ( "За третє:"), readint (E3), nl,
    N1 = K,
    Fam = F, Nam = N, Otch = O,
    Pol = P, List = L,
    Ekz1 = E1, Ekz2 = E2, Ekz3 = E3,
    assertz (абітурьент (N1, фио (Fam, Nam, Otch), Pol, List, оцінити (Ekz1, Ekz2, Ekz3 ))),< br /> ask,!,
    mesage,
    removewindow.
    correct (_).< br /> / * Процедура перегляду бази, стор.11 */
    view (1): -
    makewindow (16,31,26, "Просмотp основної бази", 0,0,25,80),
    nl, nl,
    write ("??????????????????????????????????????????????? ??????????"), nl,
    write ( "? СПИСОК АБІТУРЬЕНТОВ?"), nl,
    write ("??????????????????????????????????????????????? ??????????"), nl,
    write ( "?? ПІБ?? No? оцінки за іспити?"), nl,
    write ( "? No ??????????????????????? Пол? прим .?????????????????? ??"), nl,
    write ( "?? Прізвище? Ім'я? По-батькові?? листа? 1 прим? 2 прим? 3 прим?"), nl,
    write ("??????????????????????????????????????????????? ??????????"), nl,
    абітурьент (N, фио (Fam, Nam, Otch), Pol, List, оцінити (E1, E2, E3)),
    cursor (Z ,_),< br /> cursor (Z, 2), write (N),
    cursor (Z, 5), write ("?", Fam),
    cursor (Z, 18), write ("?", Nam),
    cursor (Z, 30), write ("?", Otch),
    cursor (Z, 43), write ( "?", Pol),
    cursor (Z, 49), write ( "?", List),
    cursor (Z, 55), write ( "?", E1),
    cursor (Z, 62), write ( "?", E2),
    cursor (Z, 69), write ( "?", E3),
    cursor (Z, 0), write ("?"),< br /> cursor (Z, 76), write ("?"),< br /> nl,
    fail.
    view (1): -
    write ("??????????????????????????????????????????????? ??????????"),< br /> nl,
    cursor (22,26),
    write ( "Натисніть на будь-яку клавішу"),
    readchar (_),< br /> removewindow.
    view (2): -
    nl,
    makewindow (13,31,26, "Перегляд нової бази даних", 0,0,25,80),
    write ("??????????????????????????????????????????????? ??????????"), nl,
    write ( "? СПИСОК СТУДЕНТІВ?"), nl,
    write ("??????????????????????????????????????????????? ??????????"), nl,
    write ( "?? ПІБ? No? сума?"), nl,
    write ( "? No ?????????????????????????????????????? прим.? балів?") , nl,
    write ( "?? Прізвище? Ім'я? По-батькові? листа??"), nl,
    write ("??????????????????????????????????????????????? ??????????"), nl,
    студент (N, фио (Fam, Nam, Otch), List, Sum),
    cursor (Z ,_),< br /> cursor (Z, 11), write (N),
    cursor (Z, 14), write ("?", Fam),
    cursor (Z, 27), write ("?", Nam),
    cursor (Z, 39), write ("?", Otch),
    cursor (Z, 52), write ( "?", List),
    cursor (Z, 58), write ( "?", Sum),
    cursor (Z, 9), write ("?"),< br /> cursor (Z, 66), write ("?"),< br /> nl,
    fail.
    view (2): -
    write ("??????????????????????????????????????????????? ??????????"),< br /> nl,
    cursor (22,26),
    write ( "Натисніть на будь-яку клавішу"),
    readchar (_),< br /> removewindow.
    view (_).< br /> / * Допоміжне процедура до процедури */
    / * Correct (1) і working (2), стор.11 */
    accept (N): -
    nl,
    cursor (10,0),
    write ( "1 - відомий номер абітурьента"), nl,
    write ( "2 - відоме прізвище"), nl,
    write ( "=>"),< br /> readint (X),
    acp (X, N).
    acp (1, N): -
    nl,
    write ( "Введіть номер абітурьента:"), nl,
    write ( ">"),< br /> readint (N),
    абітурьент (P ,_,_,_,_),< br /> P = N.
    acp (1, N): -
    N = 0.
    acp (2, N): -
    nl,
    write ( "Введіть прізвище абітурьента:"), nl,
    write ( ">"),< br /> readln (L),
    абітурьент (Y, фио (L ,_,_),_,_,_),< br /> N = Y.
    acp (2, N): -
    N = 0.
    / * Допоміжне процедура до correct (1), стор.11 */
    skip ( "", Fam, Fam2): -
    Fam2 = Fam,
    !.
    skip (Fam1, _, Fam2): -
    Fam2 = Fam1,
    !.
    skip1 ( "", Fam, Fam2): -
    Fam2 = Fam,
    !.
    skip1 (Fam1, _, Fam2): -
    str_int (Fam1, Fam3),
    Fam2 = Fam3,
    !.
    / * Процедура читання з диска, стор.12 */
    load_bd (1): -
    retractall (_, абітурьент), nl, nl,
    write ( "Введіть ім'я файлу :"),< br /> readln (N),
    existfile (N),
    consult (N, абітурьент),
    ok,
    !.
    load_bd (1): -
    io_error,
    !.
    load_bd (2): -
    retractall (_, абітурьент),
    existfile ( "bit.dat"),
    consult ( "bit.dat", абітурьент),
    ok,
    !.
    load_bd (2): -
    io_error,
    !.
    load_bd (3): -
    retractall (_, студент), nl, nl,
    write ( "Введіть ім'я файлу :"),< br /> readln (N),
    existfile (N),
    consult (N, студент),
    ok,
    !.
    load_bd (3): -
    io_error,
    !.
    load_bd (4): -
    retractall (_, студент),
    existfile ( "bstud.dat"),
    consult ( "bstud.dat", студент),
    ok,
    !.
    load_bd (4): -
    io_error,
    !.
    load_bd (_).< br /> / * Процедура запису на диск, стор.12 */
    save_bd (1): -
    nl, nl,
    write ( "Введіть ім'я файлу:"),
    readln (N),
    save (N, абітурьент), nl,
    ok,
    !.
    save_bd (1): -
    error.
    save_bd (2): -
    save ( "bit.dat", абітурьент),
    ok,
    !.
    save_bd (2): -
    error.
    save_bd (3): -
    nl, nl,
    write ( "Введіть ім'я файлу:"),
    readln (N),
    save (N, студент), nl,
    ok,
    !.
    save_bd (3): -
    error.
    save_bd (4): -
    save ( "bstud.dat", студент),
    ok,
    !.
    save_bd (4): -
    error.
    save_bd (_).< br /> / * Процедура запиту на закінчення введення в correct (2), стор.12 */
    ask: -
    makewindow (10,43,120, "Питання", 6,18,8,40), nl, nl,
    write ( "Продовжити процес введення даних?"), nl, nl,
    write ( "[Д] а/[Н] ет"),
    readchar (Ch),
    removewindow,
    clearwindow,
    Ch = 'Н',!.< br /> / * Висновок попередження про необхідність збереження даних, стор.12 */
    mesage: -
    makewindow (17,74,79, "Попередження", 6,18,8,40), nl,
    write ( "Не забудьте зберегти"), nl,
    write ( "знову введені дані!"), nl, nl,
    write ( "Натисніть на будь-яку клавішу"),
    readchar (Ch),
    removewindow.
    / * Процедури виводу повідомлення про помилку, стор.12 */
    error: -
    makewindow (15,74,79, "ПОМИЛКА", 6,18,8,40),
    cursor (2,16),
    write ( "ПОМИЛКА"), nl, nl,
    write ( "Натисніть на будь-яку клавішу"),
    sound (70,294),
    readchar (_),< br /> removewindow,
    !.
    io_error: -
    makewindow (16,74,79, "ПОМИЛКА", 6,18,8,40),
    cursor (2,7),
    write ( "Такого файла немає на диску"), nl, nl,
    write ( "Натисніть на будь-яку клавішу"),
    sound (70,294),
    readchar (_),< br /> removewindow.
    / * Процедура виводу повідомлення про успішне завершення */
    / * Даної операції, стор.12 */
    ok: -
    makewindow (17,27,90, "ОК", 6,18,8,40),
    cursor (2,7),
    write ( "Операцію виконали"), nl, nl,
    write ( "Натисніть на будь-яку клавішу"),
    readchar (_),< br /> removewindow.
    / * Процедура repeat */
    repeat.
    repeat: - repeat.

    При налагодженні програми помилки усувалися в три етапи. На
    першому етапі інтерпрітатор мови Пролог сам вказував на синтакси-
    орієн помилки. Такі помилки виникали при неправильному написанні
    імен вбудованих предикатів, коли я забував описати нові перед-
    кати у роздiлi predicates і т.д. Якщо компіляція пройшла успішно,
    але програма працювала некоректно, доводилося переходити до дру-
    рому етапу - перегляду тексту програми і логічному осмисленню
    помилки. На цьому етапі були усунені такі помилки, як висновок все-
    го одного запису бази даних в режимі перегляду БД. Причиною це-
    му була відсутність в кінці процедури предиката fail. Помилка була
    усунена. Якщо не допомагав другий етап, доводилося переходити до
    третя - трасуванні. Так була встановлена така помилка:
    при виході з процедури Working (4) головне меню відображалося не в
    вікні "Список абітурьентов", а у вікні "Завантаження" (тобто не видаляючи-
    лось це вікно "Завантаження"). Після трасування було з'ясовано, що в
    процедурі не в тому місці стоїть предикат Repeat (він стояв у нача-
    ле процедури, а його слід було поставити після предиката
    makewindow), через що відбувалося багатократне створення вікна
    "Завантаження" і тільки одноразове його видалення. Помилка була исправ-
    лена. В процесі кінцевої налагодження та рішення контрольних прикладів
    помилок у програмі виявлено не було.

    Програма "Список абітурьентов" є інфор-
    маціонно-довідкову систему. У даній програмі є можли-
    ність створення нової бази даних, яка є списком зарахованих
    студентів. В основній БД присутні дані про прізвища, імені та
    по батькові абітурьента, його полі, номер екзаменаційного листа і
    оцінках за три іспити. У дочірньої БД є ті самі дані за
    винятком статі і того, що оцінки за іспити замінені їх сум-
    мій.
    При запуску програми на екран виводиться головне меню:
    0 - Про систему ...
    1 - Коригування даних
    2 - Знищення даних
    3 - Перегляд бази
    4 - Завантаження бази
    5 - Збереження бази
    6 - Створення нової бази
    7 - Вихід з програми
    Для вибору якого-небудь пункту слід натиснути відпо-
    ціалу цифрову клавішу. Вхід в кожен пункт супроводжується ко-
    Ротко звуковим сигналом. При натисканні невірної клавіші на екран
    виводиться вікно з повідомленням про помилку і підказкою, в якому ін-
    тервале слід вводити число. Нижче наводиться опис кожного
    з пунктів.

    При виборі даного пункту на екран виводяться дані про
    системі і її автора. Після натискання на будь-яку клавішу відбувається
    вихід до головного меню.

    При вході до цього пункту на екран виводиться підменю:
    1 - Змінити даних
    2 - Додавання даних
    3 - Вихід у головне меню
    Пункт 1 призначений для зміни даних у записах. При
    вході в нього так само з'являється підменю:
    1 - Відомий номер абітурьента
    2 - Відома прізвище
    Якщо відомий номер абітурьента, то слід ввести цифру
    1, якщо відомо прізвище - цифру 2. Після цього система запросить
    відповідно номер чи прізвище. Прізвище слід вводити в тому
    ж вигляді (поєднання великих та малих літер) в якому вона має-
    ся в базі даних. Після визначення корректируемой запису систе-
    ма виводить на екран всі дані про це абітурьенте і дозволяє їх
    відредагувати, послідовно роздруковуючи поля запису. Якщо
    дані в поточному полі виправляти не потрібно, слід натиснути
    клавішу. Після коректування всіх полів система Попереджув-
    дит про необхідність зберегти знову введені дані і після на-
    жатія будь-якої клавіші вийде в меню "Коригування даних".
    Пункт 2 меню "Коригування даних" призначений для до-
    додану нових записів. Після входу в цей режим система послідовно-
    вательно запрошує дані про новий абітурьенте. Після закінчення
    введення виводиться запит, чи хоче користувач продовжити процес
    введення нових записів. При позитивному відповіді (натисканні клавіші Д
    у верхньому регістрі) програма надає можливість ввести
    дані ще про одне абітурьенте, після че?? про процес повториться.
    При негативному відповіді (натисканні клавіші Н (рос.) на верхньому ре-
    гістре) буде видано попередження про необхідність зберегти
    знову введені дані і після натискання будь-якої клавіші вийде в ме-
    ню "Коригування даних".
    Пункт 3 служить для виходу в основне меню.

    Цей режим служить для видалення записів з бази даних.
    Як і в підпункті "Зміна даних" режиму "Коректування дан-
    них "користувачеві надається можливість ввести або номер,
    або прізвище видаляється абітурьента. Після введення цих даних
    відбудеться видалення обраної записи і виведення повідомлення, підтвер-
    ждающего виконання даної операції. У разі неможливості уда-
    лення запису (наприклад запис з даним номером не існує),
    видається відповідне повідомлення про помилку.

    Даний режим призначений для перегляду вмісту маю-
    трудящих баз даних. При вході у цей режим з'являється наступне під-
    меню:
    1 - Перегляд основної бази
    2 - Перегляд бази BSTUD
    3 - Вихід у головне меню
    Пункт 1 призначений для перегляду основної бази даних,
    вміст якої підвантажується автоматично (за наявності на
    диску файлу bit.dat) при запуску інформаційно-довідкової систе-
    ми. Після вибору цього пункту, на екран виводяться запису основ-
    ної БД у вигляді таблиці. Для повернення в меню слід натиснути лю-
    буя клавішу.
    Пункт 2 призначений для перегляду дочірньої бази даних
    BSTUD. На відміну від основної БД відразу після завантаження вона порожня, і
    щоб її переглянути слід створити цю БД за допомогою пункту 6
    або завантажити її з диска за допомогою пункту 4 основного меню. Дан-
    ные дочірньої бази представляються також у вигляді таблиці.
    Пункт 3 служить для виходу в головне меню.

    Даний режим призначений для завантаження баз даних з фай-
    лов. При вході в цей пункт виводиться меню:
    1 - Завантажити основну базу з обраного файлу
    2 - Завантажити основну базу з файлу bit.dat
    3 - Завантажити базу BSTUD з обраного файлу
    4 - Завантажити базу BSTUD з файлу bstud.dat
    5 - Вихід в основне меню
    При виборі пунктів 2 і 4 відбудеться завантаження відповідної-
    але основний і дочірньої БД зі стандартних файлів bit.dat або
    bstud.dat, у разі вдалої завантаження буде видано відповідаю-
    ний повідомлення. Після натискання на будь-яку клавішу відбудеться вихід в
    головне меню.
    При виборі пунктів 1 і 3 система запитає ім'я файлу, в ко-
    тором міститься відповідна БД. При успішному завантаженні поя-
    вітся відповідне повідомлення, при збої з'явиться повідомлення про
    помилку.
    Пункт 5 призначений для виходу в головне меню.

    Даний режим призначений для збереження баз даних. При
    вході в даний режим виводиться таке меню:
    1 - Зберегти основну базу у вказаному файлі
    2 - Зберегти основну базу у файлі bit.dat
    3 - Зберегти базу BSTUD у вказаному файлі
    4 - Зберегти базу BSTUD у файлі bstud.dat
    5 - Вихід в основне меню
    Робота з його пунктами повністю аналогічна роботі з подме-
    ню режиму "Завантаження бази".

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

     

     

     

     

     

     

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