Помощь - Поиск - Пользователи - Календарь
Полная версия: Работа с базой данных
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ада и другие языки
dron4ik


Всем привет)) Возникла трудность в написании кода программы..дана задача..база данных "Расписание" описывает связи между учебной группой, преподавателем, временем занятия, аудиторией и её техническим состоянием(под тех состоянием понимаеться--- аудитория открыта или закрыта или компьютерный класс или лекционный класс и т.д.)
Даже не знаю с чего начать..
Client
Для начала описать структуру таблиц (таблица преподавателей, групп...) и их связи друг с другом.
На чем пишешь?
volvo
Вроде ж написано: "На Прологе". Так что не все так просто smile.gif
Client
не заметил что в названии темы указано smile.gif ну тогда только теорией могу помочь smile.gif
dron4ik
сделано)


Код
domains
    TTime = STRING
    TGroup = STRING
    TTeacher = STRING
    TRoom = STRING
    TStatus = STRING
    FILE = dbase----> ЖАЛУЕТСЯ СЮДА ЧТО ДОМАН ЭТОТ УЖЕ ГДЕ ТО ОПИСАН ИЛИ ИСПОЛЬЗОВАН.

facts
    item(TTime,TGroup,TTeacher,TRoom,TStatus)

predicates
    switch(INTEGER)    
    repeat

clauses
    repeat.
    repeat:-repeat.
            
    switch(Case):-Case='0',write("Good-bye...      "),nl,!.
    switch(Case):-Case='1',
        write('\10',"-[ ADD ]-------------------"),
        write('\10',"Time: "),readln(Time),
        write('\10',"Group: "),readln(Group),
        write('\10',"Teacher: "),readln(Teacher),
        write('\10',"Room: "),readln(Room),
        write('\10',"Tex status: "),readln(Status),
        assert(item(Time,Group,Teacher,Room,Status)),fail.
    switch(Case):-Case='2',
        write('\10',"-[ DELETE ]----------------"),
        write('\10',"Time: "),readln(Time),
        write('\10',"Group: "),readln(Group),
        write('\10',"Teacher: "),readln(Teacher),
        write('\10',"Room: "),readln(Room),
        write('\10',"Tex status: "),readln(Status),
        retract(item(Time,Group,Teacher,Room,Status)),fail.
    switch(Case):-Case='3',
        write('\10',"-[ EDIT ]------------------"),
        write('\10',"REPLACE ITEM "),
        write('\10',"Time: "),readln(Time),
        write('\10',"Group: "),readln(Group),
        write('\10',"Teacher: "),readln(Teacher),
        write('\10',"Room: "),readln(Room),
        write('\10',"Tex status: "),readln(Status),
        retract(item(Time,Group,Teacher,Room,Status)),
        write('\10',"NEW ITEM"),
        write('\10',"Time: "),readln(Time1),
        write('\10',"Group: "),readln(Group1),
        write('\10',"Teacher: "),readln(Teacher1),
        write('\10',"Room: "),readln(Room1),
        write('\10',"Tex status: "),readln(Status1),
        assert(item(Time1,Group1,Teacher1,Room1,Status1)),fail.        
    switch(Case):-Case='4',
        write('\10',"-[ SAVING ]----------------"),
        save("db.txt"),
        write('\10',"BD saved in file db.txt "),nl,fail.
    switch(Case):-Case='5',
        write('\10',"-[ LOADING ]---------------"),
        retractall(item(_,_,_,_,_)),
        consult("db.txt"),
        write('\10',"BD loaded from file db.txt "),
        fail.
    switch(Case):-Case='6',
        write('\10',"-[ PRINT ]-----------------"),
        item(Time,Group,Teacher,Room,Status),
        write('\10',"Time: ",Time),
        write('\10',"Group: ",Group),
        write('\10',"Teacher: ",Teacher),
        write('\10',"Room: ",Room),
        write('\10',"Tex status: ",Status),
        write('\10',"---------------------------"),fail.

goal
        repeat,    
        write('\10',"-[ MENU ]------------------"),
        write('\10',"[1]  ADD"),
        write('\10',"[2]  DELETE"),
        write('\10',"[3]  EDIT"),
        write('\10',"[4]  SAVE"),
        write('\10',"[5]  LOAD"),
        write('\10',"[6]  PRINT"),
        write('\10',"[0]  EXIT"),
        readchar(Sym),nl,switch(Sym),!.


Добавлено через 3 мин.
Что в этом коде можно упростить, но не так уж чтоб препод заметил что делал прогу какой нить проффи)
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.