на тему рефераты
 
Главная | Карта сайта
на тему рефераты
РАЗДЕЛЫ

на тему рефераты
ПАРТНЕРЫ

на тему рефераты
АЛФАВИТ
... А Б В Г Д Е Ж З И К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Э Ю Я

на тему рефераты
ПОИСК
Введите фамилию автора:


Реферат: Информационно-справочная система, обеспечивающая работу с базой данных Bit


         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))),

         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))),

         !,

         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))),

         ask,!,

         mesage,

         removewindow.

   correct(_).

/* Процедура просмотра базы, стр.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,_),

         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("║"),

         cursor(Z,76),write("║"),

         nl,

         fail.

   view(1):-

write("╚════╩═══════╩════╩════════╩═══╩═════╩═════╩══════╩═════╝"),

         nl,

         cursor(22,26),

         write("Нажмите на любую клавишу"),

         readchar(_),

         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,_),

         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("║"),

         cursor(Z,66),write("║"),

         nl,

         fail.

   view(2):-

write("╚════╩════════════╩═══════════╩═══════════╩═════╩═══════╝"),

         nl,

         cursor(22,26),

         write("Нажмите на любую клавишу"),

         readchar(_),

         removewindow.

   view(_).

/* Вспомагательная процедура к процедуре */

/*   correct(1)  и working(2), стр.11    */

   accept(N):-

         nl,

         cursor(10,0),

         write("     1 - известен номер абитурьента"),nl,

         write("     2 - известна  фамилия"),nl,

         write("     =>"),

         readint(X),

         acp(X,N).

   acp(1,N):-

         nl,

         write("     Введите номер абитурьента: "),nl,

         write("     >"),

         readint(N),

         абитурьент(P,_,_,_,_),

         P=N.

      acp(1,N):-

            N=0.

      acp(2,N):-

            nl,

            write("  Введите фамилию абитурьента: "),nl,

            write("  >"),

            readln(L),

            абитурьент(Y,фио(L,_,_),_,_,_),

            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("  Введите имя файла :"),

            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("  Введите имя файла :"),

            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(_).

/* Процедура записи на диск, стр.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(_).

/* Процедура запроса на окончание ввода в correct(2), стр.12 */

      ask:-

            makewindow(10,43,120,"Вопрос",6,18,8,40),nl,nl,

            write("  Продолжить процесс ввода данных? "),nl,nl,

            write("             [Д]а/[Н]ет"),

            readchar(Ch),

            removewindow,

            clearwindow,

            Ch='Н',!.

/* Вывод предупреждения о необходимости сохранения данных, стр.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(_),

            removewindow,

            !.

      io_error:-

            makewindow(16,74,79,"ОШИБКА",6,18,8,40),

            cursor(2,7),

            write("Данного файла нет на диске"),nl,nl,

            write("        Нажмите на любую клавишу"),

            sound(70,294),

            readchar(_),

            removewindow.

/* Процедура вывода сообщения об успешном завершении */

/*               данной операции, стр.12             */

      ok:-

            makewindow(17,27,90,"ОК",6,18,8,40),

            cursor(2,7),

            write("   ОПЕРАЦИЯ ВЫПОЛНЕНА"),nl,nl,

            write("        Нажмите на любую клавишу"),

            readchar(_),

            removewindow.

/* Процедура repeat */

      repeat.

      repeat:- repeat.

                     

        При отладке программы ошибки устранялись в три этапа.  На

первом этапе интерпритатор языка Пролог сам указывал на синтакси-

ческие ошибки. Такие ошибки возникали при неправильном  написании

имен встроенных предикатов, когда я забывал описать новые  преди-

каты в разделе predicates и т.д. Если компиляция прошла  успешно,

но программа работала некорректно, приходилось переходить ко вто-

рому этапу - просмотру текста программы и логическому  осмыслению

ошибки. На этом этапе были устранены такие ошибки, как вывод все-

го одной записи базы данных в режиме просмотра БД. Причиной  это-

му было отсутствие в конце процедуры предиката fail. Ошибка  была

устранена. Если не помогал второй этап, приходилось переходить  к

третьему - трассировке. Так была  установлена  следующая  ошибка:

при выходе из процедуры Working(4) главное меню выводилось  не  в

окне "Список абитурьентов", а в окне "Загрузка" (т.е.  не  удаля-

лось это окно "Загрузка"). После трассировки было выяснено, что в

процедуре не в том месте стоит предикат Repeat ( он стоял в нача-

ле  процедуры,  а  его  следовало  поставить   после    предиката

makewindow), из-за чего происходило  многократное  создание  окна

"Загрузка" и только однократное его удаление. Ошибка была исправ-

лена. В процессе конечной отладки и решения контрольных  примеров

ошибок в программе обнаружено не было.

   

        Программа "Список абитурьентов" представляет собой инфор-

мационно-справочную систему. В данной программе  имеется  возмож-

ность создания новой базы данных, являющейся списком  зачисленных

студентов. В основной БД присутствуют данные о фамилии,  имени  и

отчестве абитурьента, его поле, номере экзаменационного  листа  и

оценках за три экзамена. В дочерней БД имеются те  же  данные  за

исключением пола и того, что оценки за экзамены заменены их  сум-

мой.

        При запуске программы на экран выводится главное меню:

                    0 - О системе...

                    1 - Корректировка данных

                    2 - Уничтожение данных

                    3 - Просмотр базы

                    4 - Загрузка базы

                    5 - Сохранение базы

                    6 - Создание новой базы

                    7 - Выход из программы

        Для выбора какого-либо  пункта  следует  нажать  соответ-

ствующую цифровую клавишу. Вход в каждый пункт сопровождается ко-

ротким звуковым сигналом. При нажатии неверной клавиши  на  экран

выводится окно с сообщением об ошибке и подсказкой, в  каком  ин-

тервале следует вводить число. Ниже приводится  описание  каждого

из пунктов.

                       

        При выборе данного пункта на  экран  выводятся  данные  о

системе и ее авторе. После нажатия на  любую  клавишу  происходит

выход в главное меню.

                   

        При входе в этот пункт на экран выводится подменю:

                      1 - Изменение данных

                      2 - Добавление данных

                      3 - Выход в главное меню

        Пункт 1 предназначен для изменения данных в записях.  При

входе в него так же появляется подменю:

                      1 - Известен номер абитурьента

                      2 - Известна фамилия

        Если известен номер абитурьента, то следует ввести  цифру

1, если известна фамилия - цифру 2. После этого система  запросит

соответственно номер или фамилию. Фамилию следует вводить  в  том

же виде (сочетание заглавных и строчных букв) в каком она  имеет-

ся в базе данных. После определения корректируемой записи  систе-

ма выводит на экран все данные об этом абитурьенте и позволяет их

отредактировать, последовательно распечатывая поля  записи.  Если

данные в текущем поле исправлять  не  требуется,  следует  нажать

клавишу <Enter>. После корректировки всех полей система предупре-

дит о необходимости сохранить вновь введенные данные и после  на-

жатия любой клавиши выйдет в меню "Корректировка данных".

        Пункт 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 - Выход в основное меню

       Работа с его пунктами полностью аналогична работе с подме-

ню режима "Загрузка базы".

                   

        Данный режим предназначен для создания дочерней базы дан-

ных. При запуске этого режима дочерняя БД создается  автоматичес-

ки, о чем выводится соответствующее сообщение и предупреждение  о

необходимости сохранения дочерней БД. После нажатия любой  клави-

ши происходит выход в главное меню.

                    

        Этот пункт меню предназначен для выхода  из  информацион-

но-справочной системы в ДОС.

               

        В целях конечной отладки программы и  устранения  скрытых

ошибок было решено несколько контрольных  примеров  по  работе  с

системой во всех режимах. Была создана и  отредактирована  основ-

ная база данных. с ее помощью были  опробованы  режимы  удаления,

корректировки, создания новой БД, загрузки и сохранения  БД.  При

решении контрольных примеров ошибок в программе не обнаружено.

                          

         В данной курсовой работе  были  исследованы  возможности

языка программирования Пролог для создания информационно-справоч-

ных систем. Можно сделать вывод, что Пролог представляет  богатые

возможности для реализации таких систем и написания дружественно-

го интерфейса для общения  пользователя с программой.

                       

         И.Братко   "Программирование на языке Пролог для

                     искусственного интеллекта"

         Дж.Доорс   "Пролог - язык программирования будущего"

         Ю.Тихонов  "МПролог - язык логического

                     программирования. Версия 2.3"

___


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


на тему рефераты
НОВОСТИ на тему рефераты
на тему рефераты
ВХОД на тему рефераты
Логин:
Пароль:
регистрация
забыли пароль?

на тему рефераты    
на тему рефераты
ТЕГИ на тему рефераты

Рефераты бесплатно, реферат бесплатно, курсовые работы, реферат, доклады, рефераты, рефераты скачать, рефераты на тему, сочинения, курсовые, дипломы, научные работы и многое другое.


Copyright © 2012 г.
При использовании материалов - ссылка на сайт обязательна.