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

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

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

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


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


                                                           ║ ║

        ╔═══════════════╦════════════╦══════════════╦══════╝ ║

  ╔═════╩══════╗ ╔══════╩════╗ ╔═════╩══════╗ ╔═════╩════╗   ║

  ║ save_bd(1) ║ ║ save_bd(2)║ ║ save_bd(3) ║ ║save_bd(4)║   ║

  ║────────────║ ║───────────║ ║────────────║ ║──────────║   ║

  ║ Сохранение ║ ║ Сохранение║ ║ Сохранение ║ ║Сохранение║   ║

  ║основной БД ║ ║основной БД║ ║  новой БД  ║ ║ новой БД ║   ║

  ║  в файле   ║ ║  в файле  ║ ║  в файле   ║ ║  в файле ║   ║

  ║пользователя║ ║  bit.dat  ║ ║пользователя║ ║ bstud.dat║   ║

  ╚════════════╝ ╚═══════════╝ ╚════════════╝ ╚══════════╝   ║

                                                             ║

           ╔═══════════════════╦═══════════════════╦═════════╝

    ╔══════╩══════╗     ╔══════╩══════╗     ╔══════╩══════╗

    ║   view(1)   ║     ║   view(2)   ║     ║   view(_)   ║

    ║─────────────║     ║─────────────║     ║─────────────║

    ║  Просмотр   ║     ║   Просмотр  ║     ║    Выход    ║

    ║ основной БД ║     ║   новой БД  ║     ║    в меню   ║

    ╚═════════════╝     ╚═════════════╝     ╚═════════════╝

                    

     Процедуры создавались на основе требований, изложенных в за-

дании к курсовой работе.

                

     С помощью процедуры Begin в разделе 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, после чего содержимое  запи-

си распечатывается на экране. После этого пользователю предостав-

ляется возможность ввести измененные данные; если  нет  необходи-

мости изменять какой-либо элемент, можно нажать клавишу  <Enter>.

Все данные, в том числе и числа, считываются в формате строк. Это

необходимо для осуществления возможности отказа от изменения эле-

мента нажатием клавиши <Enter>. Все считанные  данные  передаются

процедурам Skip (для строковых выходных данных) и Skip1 (для  це-

лочисленных выходных данных). Эти процедуры в зависимости от  то-

го,  была  ли  нажата  клавиша  <Enter>  возвращают  в  процедуру

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). Они  позволяют  определить,  следует  ли  замещать

имеющийся элемент записи на новый или нет (если была нажата  кла-

виша <Enter>). В процедурах проверяется, является ли первый аргу-

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

вается второй. Если же первый аргумент не является  пустой  стро-

кой, то он присваивается третьему аргументу (в  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("                    =>"),

            readint(C),

            clearwindow,

            working(C),

            clearwindow,

            C = 7,

            retractall(_),

            removewindow.

/* Процедура автоматической загрузки базы данных, стр.9 */

      autoload:-

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

            existfile("bit.dat"),

            consult("bit.dat",абитурьент),

            cursor(21,30),

            write("*База загружена*").

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

            nl,nl,nl,

write("                            автоp: Данченков А.В."),

            nl,nl,

write("                       МГИРЭА, гp.ИИ-1-95  (с) 1996 г. "),

            nl,

            sound(5,220),

            cursor(22,26),

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

            readchar(_),

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

            readint(X),

            clearwindow,

            X>0,X<=3,

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

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

            readint(X),

            clearwindow,

            X>0,X<=3,

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

            readint(C),

            clearwindow,

            C>0,C<=5,

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

            readint(I),

            clearwindow,

            I>0,I<=5,

            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 создана."),

         nl,

         write("       Не забудьте сохранить ее!"),

         nl,nl,

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

         readchar(_),

         removewindow,!.

/* Процедура выхода, стр.10 */

   working(7):-!.

/* Обработка ошибки пользователя, стр.10 */

   working(_):-

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

         removewindow.

/* Процедура коррекции данных в базе, стр.10 */

   correct(1):-

         makewindow(4,26,48,"Изменение данных",0,0,25,80),

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


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

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

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


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