Лабораторные работы (в ХГТУ)

10563
знака
0
таблиц
9
изображений

Задание: Для модели базы данных, разработанной в первой самостоятельной работе [1], используя DataBase Desktop, дать описание системы соответствующих таблиц локальной базы данных в формате Paradox7.


Структура таблиц:


Таблица AVTOR:

Код автора (KOD)-ключевое, автоинкрементное поле;

Фамилия, имя, отчество (FIO)-строка до 50 символов, обязательного заполнения;

Год рождения (ROZD) – строка до 4 символов с маской “####”


Таблица CIKL:

Код цикла (KOD)-ключевое, автоинкрементное поле;

Название цикла (NAZV)- строка до 120 символов, обязательного заполнения;


Таблица DISCIP:

Код дисциплины (KOD)-ключевое, автоинкрементное поле;

Название дисциплины(NAZV)- строка до 120 символов, обязательного заполнения;

Код цикла (KCIKL) - содержит ссылку на таблицу подстановки CIKL, по полю KOD, типа Long Integer (установлена ссылочная целостность);


Таблица GRUP:

Код группы (KOD)-ключевое, автоинкрементное поле;

Код специальности (KSP) - содержит ссылку на таблицу подстановки SPEC, по полю KOD, типа Long Integer (установлена ссылочная целостность);

Название потока (POTOK) - строка до 20 символов, обязательного заполнения;

Год поступления (GOD) - строка до 4 символов с маской “####”, обязательного заполнения.


Таблица KNIGI:

Код книги (KOD)-ключевое, автоинкрементное поле;

Название книги (NAZV)- строка до 120 символов, обязательного заполнения;

Количество книг (KOLICH) – короткое целое типа SHORT;

Год издания (GOD) - строка до 4 символов с маской “####”, обязательного заполнения.


Таблица Recomend:

Код рекомендации (KOD)-ключевое, автоинкрементное поле;

На какой семестр рекомендация (SEMESTR) - короткое целое типа SHORT, обязательного заполнения;

Код книги (KKNIG) - содержит ссылку на таблицу подстановки KNIGI, по полю KOD, типа Long Integer (установлена ссылочная целостность);

Код специальности (KSPEC) - содержит ссылку на таблицу подстановки SPEC, по полю KOD, типа Long Integer (установлена ссылочная целостность);

Код дисциплины (KDISC) - содержит ссылку на таблицу подстановки DISCIP, по полю KOD, типа Long Integer (установлена ссылочная целостность);


Таблица SOOTV:

Код соответствия (KOD)-ключевое, автоинкрементное поле;

Код книги (KKNIG) - содержит ссылку на таблицу подстановки KNIGI, по полю KOD, типа Long Integer (установлена ссылочная целостность);

Код автора (KAVT) - содержит ссылку на таблицу подстановки AVTOR, по полю KOD, типа Long Integer (установлена ссылочная целостность);


Таблица SPEC:

Код специальности (KOD)-ключевое, автоинкрементное поле;

Название специальности (NAZV) - строка до 120 символов, обязательного заполнения;

Номер специальности (NOM) - строка до 10 символов, обязательного заполнения;


Министерство Образования Российской Федерации Хабаровский Государственный Технический Университет

Кафедра: “Программного обеспечения ВТ и АС”



Лабораторная работа №2
Тема: “ Проектирование системы экранных форм для ведения локальной базы данных ”
Выполнил: студент группы ПО-02 Самойленко П.Р. Проверил:

к.т.н., доцент

Саринков А.А.


Хабаровск 2002

Таблицы, используемы в экранных формах

Создадим систему экранных форм для работы со сложной связью между таблицами «Книги» и «Авторы». Данные таблицы связываются между собой с помощью третьей таблицы – «Соответствие». Таким образом, один автор может быть привязан к нескольким книгам, в написании которых он принимал участие. Связь между таблицами можно посмотреть на схеме данных.


Связь книга->автор

Вид формы на этапе проектирования:


Вид формы работающего приложения:


Содержимое левой таблицы меняется при изменения указателя в правой таблице. За это отвечает процедура:

procedure TSvaz.Table1AfterScroll(DataSet: TDataSet);

begin

query1.Close;

query1.Params[0].Value:=table1.FieldByName('KOD').AsInteger;

query1.Open;

end;

Например при переходе на следующую запись мы меняем значение параметра “par” у компонента Query1 на значение поля “KOD” текущей записи компонента table1.

Сам текст запроса Query1:

select *

from AVTOR

where kod in(

select kavt

from SOOTV

where kknig=:par )


Для навигации по названиям книг можно пользоваться компонентом «DBNavigator», который привязан к тому же набору что и DBGrid1(левая таблица). Для добавления и удаления автора надо пользоваться кнопками «Добавить» и «Удалить».

Процедура нажатия на кнопку «удалить»:

procedure TSvaz.BitBtn1Click(Sender: TObject);

begin

table2.FindKey([table1.fieldbyname('KOD').asinteger,query1.fieldbyname('KOD').asinteger]);

table2.Delete; // переход, удаление и обновление

Table1.AfterScroll(table1);

end;

Процедура нажатия на кнопку «добавить»:

procedure TSvaz.BitBtn3Click(Sender: TObject);

begin

table2.Append; // добавление записи в таблицу «Соответствие»

table2.FieldByName('KKNIG').Asinteger:=table1.fieldbyname('KOD').AsInteger; // в поле

//“KKNIG” поместить значение кода текущей книги

ShowWindow(Vibor_Avt.Handle, SW_SHOW); // показать форму выбора автора

Vibor_Avt.Show;

svaz.Enabled:=false; // заблокировать форму

end;

После выхода из формы выбора автора управление передается процедуре:

procedure TSvaz.vstavka;

begin

ifnot (TableProv.FindKey([table2.fieldbyname('KKnig').asinteger, table2.fieldbyname('KAvt'). asinteger])) thenbegin // поиск такой же записи как хотим ввести в уже введенных

try

Table2.post; // сохранение

table2.Close; // обновление

table2.Open;

except

messagedlg('Данный автор присутствует в списке',mtinformation,[mbok],0); // сюда никогда

//не перейдет

end;

end

elsebegin

table2.Cancel;

messagedlg('Данный автор присутствует в списке',mtinformation,[mbok],0);

end;

end;

Из-за ошибки в Delphi пришлось вставлять еще два компонента TableProv и DataProv – для того, чтоб сначала искать такую же запись в таблице соответствия, какую хотим ввести, и не задействовать уникальный индекс, построенный по полям Kknig и Kavt. Так как программа потом перестает работать. Вот вырезка из конференции:

Николаев Констанитн (04.12.01 20:54)

Уважаемые специалисты!
Что значит ошибка "Index is out of date"?
С уважением,
Константин.

Ю.Ю. (05.12.01 02:48)

Ошибка в индексном файле. Нужно удалить и создать заново.

kaif © (05.12.01 22:13)

Эта ошибка существует в D3,D4,D5. В D6 не проверял, но уверен и там она есть. Я пробовал писать даже на Borland Second Team по этому поводу, но никто меня слушать даже не захотел - отсылали на форумы. Хотя это чудовищный баг, по моему мнению. Ошибка генерится по следующему алгоритму:
1. Вставляете запись в таблицу Paradox, с нарушением уникального индекса. Неважно, первичного или вторичного. Возникает Key violation.
2. Делаете невинный SQL-запрос против этой таблицы. Любой, например,
SELECT * FROM

С описанной ошибкой столкнулся и я.


Форма выбора автора

В роли списка выступает компонент DBLookupListBox, который берет код из таблицы авторов и вставляет его в таблицу соответствия. При закрытии формы срабатывает процедура TSvaz.vstavka:

procedure TVibor_Avt.FormClose(Sender: TObject; var Action: TCloseAction);

begin

ShowWindow(Vibor_Avt.Handle, SW_HIDE); // скрыть форму, но не закрывать

action:=canone;

svaz.Enabled:=true;

if ((svaz.Table2.State=dsInsert) or (svaz.Table2.State=dsedit)) then svaz.vstavka;

// если мы добавляем нового автора, то перейти к vstavka

svaz.Table1.AfterScroll(svaz.table1);

end;

При нажатии на кнопку «Добавить» открывается форма редактирования списка авторов.


Форма выбора автора

Эта форма появляется на экране либо при нажатии на кнопке «Авторы» в меню главной формы, либо при нажатии на кнопке «Добавить» в форме, описанной выше.


Форма отображения всех таблиц


В этой форме заголовки столбцов в таблицах показываются «как есть», в отличие от всех предыдущих форм, где заголовок задавался на этапе проектирования – для удобства и наглядности. DBGrid’ы связаны с наборами данных, расположенными на поверхности формы DM, которая имеет тип DataModule.


Форма DM.

Вид формы на этапе проектирования:


Формы такого типа не имеют визуальных свойств и являются контейнером для не визуальных компонентов.


Министерство Образования Российской Федерации Хабаровский Государственный Технический Университет

Кафедра: “Программного обеспечения ВТ и АС”



Лабораторная работа №3

Тема: “ Проектирование экранной формы электронного

аналога исходного документа ”
Выполнил: студент группы ПО-02 Самойленко П.Р. Проверил:

к.т.н., доцент

Саринков А.А.


Хабаровск 2002

Вид формы ввода

Для соединения всех основных таблиц воедино используется таблица SVOD. Для установления связи между таблицами используем компоненты TTable и Tquery. А точнее – их свойства MasterSource.

Вид формы работающего приложения:


В первых трех таблицах выбирается предмет и специальность, для которых надо вывести рекомендуемую литературу. Таблица «Предмет» связана с таблицей цикл «Цикл» связью многие к одному.

При смене положения указателя в первых трех таблицах запускается процедура zapr – для обновления данных в таблицах «Книги» и «Авторы книг» через компоненты Query.

Процедура zapr.

procedure tsvaz.zapr;

var

i:integer;

begin

cislo:=0;

with querysvod dobegin

Close;

parambyname('spec').Value:=table4.fieldbyname('KOD').AsInteger;

parambyname('dis').Value:=table5.fieldbyname('KOD').AsInteger;

Open;

AfterScroll(QuerySvod);

first;

for i:=1 to recordcount dobegin

cislo:=cislo+querySvod.fieldbyname('KOLICH').value;

label7.Caption:=floattostr(cislo);

next;

end;

end;

end;


Данная функция задает значения параметрам компонента querysvod, который связан с таблицей «Книги».

Потом подсчитывается количество требуемых книг и выводится на поверхность формы с помощью компонента Label7. Сумма рассчитывается последовательным перебором записей querysvod.

Также в теле данной процедуры вызывается процедура AfterScroll(QuerySvod):

procedure TSvaz.QuerySvodAfterScroll(DataSet: TDataSet);

begin

query1.Close;

query1.Params[0].Value:=querySvod.FieldByName('KOD').AsInteger;

query1.Open;

end;

Тут задается значение параметру компонента query1 – для обновления записей в таблице «Список авторов».

SQL запросы.

Текст запроса компонента querySvod:

select * from knigi

where kod in(

select KKnig from recomend

where kdisc=:dis and kspec=:spec

)

order by NAZV

выбирает из таблицы knigi.db все поля, где значения kdisc и kspec – берутся из верних таблиц. Результаты запроса отображаются в таблице «Книги».

Текст запроса компонента Query1:

select *

from AVTOR

where kod in(

select kavt

from SOOTV

where kknig=:par )

order by FIO

через таблицу SOOTV идет связь книг с авторами и авторы данной книги отображаются в книге «Список авторов».


Таким образом в данной форме отображаются все данные, которые были в печатном докум


Информация о работе «Лабораторные работы (в ХГТУ)»
Раздел: Информатика, программирование
Количество знаков с пробелами: 10563
Количество таблиц: 0
Количество изображений: 9

Похожие работы

Скачать
43921
0
4

... моделях и моделировании, понятие о системе, их классификацию, а также рассмотрены типовые математические схемы. 1. ОПИСАHИЕ ПРИМЕHЕHИЯ.   1.1. Назначение и условия применения программы. Программа "Моделирование работы цеха" представляет собой законченный программный продукт, который предназначен для удобного и, что главное, наглядного моделирования процесса работы станков в цехе. Данная ...

Скачать
150331
3
8

... лиц необходимо организовывать для того, чтобы располагать информацией об их намерениях, деструктивных замыслах. Одной из главных задач органов внутренних дел по предупреждению незаконного оборота наркотических средств и психотропных веществ является выявление и анализ причин и условий, способствующих совершению преступлений в данной сфере исхода из анализа практики можно сказать, что причины и ...

Скачать
152301
14
18

... что образование на тыльной стороне p – n перехода существенно ухудшает электрофизические параметры СЭ. ВЫВОДЫ Одним из наиболее перспективных методов диффузионного легирования кремния для производства кремниевых солнечных элементов является диффузия из поверхностного источника. Особенностью этого метода является то, что создание слоя примесносиликатного стекла, из которого будет идти диффузия ...

0 комментариев


Наверх