Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Проектная часть. В проектной части необходимо выполнить следующие этапы:






В проектной части необходимо выполнить следующие этапы:

1. Проектирование базы данных (определение состава полей её таблиц и связей между ними).

2. Создание базы данных.

3. Программирование выполнения операций над данными.

2.1 Проектирование базы данных

После анализа особенностей автоматизируемой области деятельности следует приступить к, возможно, самому важному этапу - проектированию будущей БД, которое заключается в определении состава полей её таблиц и связей между ними. От того, насколько тщательно проведен анализ и насколько грамотно спроектирована БД, в существеннейшей мере зависит эффективность будущего приложения БД и его полезность для пользователя.

В проектируемой базе данных должно быть 4 таблицы (исходя из полученных четырех отношений в 3НФ). В таблице Avtobys разместим полные сведения о каждом автобусе. Таблица Voditel предназначена для хранения сведений о водителях - то есть: номер водителя, ФИО водителя и его смена. В таблице Bilet содержится информация о билетах с указанием номера рейса и стоимости. В таблице Reis - будут храниться все необходимые сведения о рейсе - с указанием номера, даты отправления, пункта отправления и назначения, номера автобуса, номера водителя, времени в пути.

Таким образом, таблица Reis должна иметь уникальное поле, которое будет определять каждый рейс, можно в качестве уникального взять поле номер рейса. Позже следует создать ключ по этому полю, чтобы база данных могла быстро найти этот рейс.

 

Таблица Reis:

Имя поля Назначение
Nomer_reisa Уникальный идентификатор рейса
Nomer_voditelya Уникальный идентификатор водителя
Nomer_avtobysa Уникальный идентификатор водителя
Pynkt_otpravleniya Пункт отправления
Pynkt_naznacheniya Пункт назначения
Data_otpravleniya Дата отправления
Prodannie_mesta Количество проданных мест
Vremya_v_pyti Время в пути (первичный ключ)

 

Таблица Avtobys:

Имя поля Назначение
Nomer_avtobysa Уникальный идентификатор автобуса
Pynkt_otpravleniya Пункт отправления
Pynkt_naznacheniya Пункт назначения
Kolichestvo_mest Количество мест в данном автобусе

 

 

Таблица Voditel:

Имя поля Назначение
Nomer_voditelya Уникальный идентификатор водителя
FIO_voditelya ФИО водителя
Smena Логическое поле (True/False)

 

Таблица Bilet:

Имя поля Назначение
Nomer_bileta Уникальный идентификатор билета
Nomer_reisa Уникальный идентификатор рейса
Stoimost Цена

 

2.2 Создание базы данных

Под созданием базы данных подразумевается создание таблиц будущей БД, проектирование связей между ними, а также задание свойств таблиц. При необходимости следует ввести контроль за содержимым полей, проверку правильности введенного в поле значения; добавить вычисляемые и просматриваемые поля. Перед созданием БД необходимо создать каталог, в котором будут размещаться таблицы, и настроить рабочий каталог утилиты DataBaseDesktop (File/WorkingDirectory).

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

Так как в базе данных поле Nomer_reisa должно содержать ссылку на купленный билет в таблице Bilet, то требуется установить однозначную связь между этими полями.

Поле Nomer_voditelya в таблице Voditel должно содержать ссылку на рейс в таблице Reis. Поэтому устанавливаем однозначную связь между этими полями.

Поле Nomer_avtobysa в таблице Avtobys должно содержать ссылку на рейс в таблице Reis. Для этого устанавливаем однозначную связь между этими полями.

 

2.3 Программирование

Важным шагом, конечно же, является конструирование главной и вспомогательных (при необходимости) форм. Delphi предоставляет разработчику широкие возможности быстрого и качественного проектирования графического интерфейса пользователя. Но следует учесть, что разработанное приложение будет являться одним из приложений Windows, и от графического интерфейса, оптимально удобного расположения компонентов - зависит производительность работы пользователя с вашим программным продуктом. Каждое окно, которое вы вводите в свое приложение должно быть тщательно продумано и скомпоновано, неудачная компоновка может рассеивать внимание, отвлекать на поиск нужной кнопки и т.д. При проектировании приложения важно правильно определить последовательность фокусировки элементов.

В данной работе были использованы следующие компоненты Delphi:

1. Button - является простейшей и, пожалуй, наиболее часто используемой кнопкой, которая располагается на странице библиотеки Standard. Основное событие любой кнопки - OnClick, возникающее при щелчке на ней. Именно в обработчике этого события записываются операторы, которые должны выполняться при щелчке пользователя на кнопке. Из методов, присущих кнопкам, имеет смысл отметить один - Click. Выполнение этого метода эквивалентно щелчку на кнопке, т.е. вызывает событие кнопки OnClick. Этим можно воспользоваться, чтобы продублировать какими-то другими действиями пользователя щелчок на кнопке.

2. RadioGroup - это панель, которая может содержать регулярно расположенные столбцами и строками радиокнопки. Надпись в левом верхнем углу панели определяется свойством Caption. А надписи кнопок и их количество определяются свойством Items, имеющим тип TStrings. Щелкнув на кнопке с многоточием около этого свойства в окне Инспектора Объектов, вы попадете в редактор списков строк. В нем вы можете занести надписи, которые хотите видеть около кнопок, по одной в строке. Сколько строчек вы запишете - столько и будет кнопок. Кнопки, появившиеся в панели после задания значений Items, можно разместить в несколько столбцов (не более 17), задав свойство Columns. По умолчанию Columns = 1, т.е. кнопки размещаются друг под другом. Определить, какую из кнопок выбрал пользователь, можно по свойству ItemIndex, которое показывает индекс выбранной кнопки. Индексы, как всегда в Delphi, начинаются с 0. По умолчанию ItemIndex = - 1, что означает отсутствие выбранной кнопки. Если вы хотите, чтобы в момент начала выполнения приложения какая-то из кнопок была выбрана (это практически всегда необходимо), то надо установить соответствующее значение ItemIndex во время проектирования.

3. Label - используется для отображения различных надписей на форме. Тексты, отображаемые в перечисленных компонентах, определяются значением их свойства Caption. Его можно устанавливать в процессе проектирования или задавать и изменять программно во время выполнения приложения. Для метки Label цвет и шрифт - единственно доступные элементы оформления надписи. Размер метки Label определяется также свойством AutoSize. Если это свойство установлено в true, то вертикальный и горизонтальный размеры компонента определяются размером надписи. Если же AutoSize равно false, то выравнивание текста внутри компонента определяется свойством Alignment, которое позволяет выравнивать текст по левому краю, правому краю или центру клиентской области метки.

4. В компоненте Edit вводимый и выводимый текст содержится в свойстве Text. Это свойство можно устанавливать в процессе проектирования или задавать программно. Выравнивание текста, как это имело место в метках и панелях, невозможно. Перенос строк тоже невозможен. Текст, не помещающийся по длине в окно, просто сдвигается и пользователь может перемещаться по нему с помощью курсора. Окна редактирования можно использовать и просто как компоненты отображения текста. Для этого надо установить в true свойство ReadOnly. При использовании окон редактирования для вывода, ввода и редактирования чисел необходимо использовать функции взаимного преобразования строк и чисел. Для вывода это описанные при рассмотрении меток функции FloatToStr и IntToStr. При вводе это функции StrToFloat - преобразование строки в значение с плавающей запятой, и StrToInt - преобразование строки в целое значение. Свойство MaxLength определяет максимальную длину вводимого текста. Если MaxLength = 0, то длина текста не ограничена. В противном случае значение MaxLength указывает максимальное число символов, которое может ввести пользователь.

5. СomboBox - отображает списки строк. Этот компонент позволяет отображать список как в развернутом виде, так и в виде выпадающего списка, что обычно удобнее, так как экономит площадь окна приложения. Основное свойство этого компонента, содержащее список строк, - Items, имеющее тип TStrings. Заполнить его во время проектирования можно, нажав кнопку с многоточием около этого свойства в окне Инспектора Объектов. Выбор пользователя или введенный им текст можно определить по значению свойства Text. Если же надо определить индекс выбранного пользователем элемента списка, то можно воспользоваться свойством ItemIndex. Если в окне проводилось редактирование данных, то ItemIndex = - 1. По этому признаку можно определить, что редактирование проводилось.

6. В Delphi для работы с наборами данных служат такие компоненты, как Table и Query, которые являются производными от класса DBDataSet - потомка класса TDataSet. Они имеют схожие с базовыми классами характеристики и поведение, но каждый из них имеет и свои особенности.

Для компонента Table использование свойства DataBaseName является единственной возможностью задать местонахождение таблиц базы данных. Для компонента Query дополнительно можно указать в запросе SQL путь доступа к каждой таблице.

Открытый компонент Table (т.е. Active=True) содержит набор данных, соответствующий данным таблицы, связанной с ним через свойство TableName.

Для открытого компонента Query данных соответствует результатам выполнения SQL-запроса, содержащегося в свойстве SQL этого компонента.

Компонент Table обеспечивает взаимодействие с таблицей базы данных. Для связи с требуемой таблицей нужно установить соответствующее значение свойствам DataBaseName, указывающему путь к базе данных, и TableName указывающему имя таблицы. После задания таблицы для открытия набора данных свойству Active должно быть установлено значение True.

7. DataSource обеспечивает взаимодействие набора данных с компонентами отображения данных. Чаще всего одному набору данных соответствует один компонент DataSource, хотя их может быть несколько. Компонент DataSource должен быть связан с набором данных, значения полей которого требуется передать в параметры. Названия параметров должны соответствовать названиям полей этого набора данных, тогда свойство DataSource начнет работать.

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

Компонент DataSource организует передачу в компоненты отображения данных значений необходимых полей из текущей записи. При перемещении по записям набора данных текущие значения полей в компонентах отображения данных автоматически обновляются.

8. Компонент TDBNavigator при помощи свойства DataSourse связывается с компонентом TDataSourse и через него с набором данных. Такая схема позволяет обеспечить изменение текущих значений полей сразу во всех связанных с TDataSourse компонентах отображения данных. Таким образом TDBNavigator только дает команду на выполнение перемещения по набору данных или другой управляющей операции, а всю реальную работу выполняет компонент набора данных и компонент TDataSourse. Компонентом отображения остается только применить данные от своих полей.

DBNavigator содержит следующие кнопки:

1. nbFirst - перемещение на первую запись набора данных

2. nbPrior - перемещение на предыдущую запись набора данных

3. nbNext - перемещение на следующую запись набора данных

4. nbLast - перемещение на последнюю запись набора данных

5. nbInsert - вставка новой записи в текущей позиции набора данных

6. nbDelete - удаление текущей записи, курсор перемещается на следующую запись

7. nbEdit - набор данных переводится в режим редактирования

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

9. nbCancel - все изменения в текущей записи отменяются

10. nbRefresh - восстанавливаются первоначальные значения текущей записи, сделанные после последнего переноса изменений в базу данных.

9. DBGrid - этот компонент инкапсулирует двумерную таблицу, в которой сроки представляют собой записи, а столбцы поля.

Компонент DBGrid является потомком классов TDBCustomGrid и TCustomGridот TCustomGrid наследует все функции отображения и управления работой двумерной структуры данных. Класс TDBCustomGrid обеспечивает визуализацию и редактирование полей из набора данных, причем TDBGrid только публикует свойства и методы класса TDBCustomGrid, не добавляя собственных.

В компоненте TDBGrid можно отображать произвольное множество полей использованного набора данных, но число записей ограничивать нельзя, в компоненте всегда присутствуют все записи связанного набора данных. Требуемый набор полей можно составить при двойном щелчке на компоненте, перемещенном на форму, или кнопкой свойства Colums в Инспекторе объектов.

Новая колонка добавляется при помощи кнопки Add New, после этого ее название появляется в списке колонок. Колонки в списке можно редактировать, удалять, менять местами. При помощи кнопки AddAllFields в сетку можно добавлять все поля набора данных.

Программирование работы приложения базы данных приведено в листинге (Приложение А).

Для фильтрации записей в наборах данных используются методы Filer, Filtered:

procedure TForm1. RadioGroup1Click (Sender: TObject);

begin

if RadioGroup1. ItemIndex=0 then Table3. Filtered: =false

else

begin

if RadioGroup1. ItemIndex=2 then

begin

table3. Filtered: =true;

Table3. Filter: ='Nomer_reisa='+ComboBox1. Text; end

else

begin

if RadioGroup1. ItemIndex=3 then

begin

table3. Filtered: =true;

Table3. Filter: ='Nomer_voditelya='+ComboBox2. Text; end

else

begin

if RadioGroup1. ItemIndex=4 then

begin

table3. Filtered: =true;

Table3. Filter: ='Nomer_avtobysa='+ComboBox3. Text; end

else

Table3. Filtered: =False;

end;

end; end;

end;

Для формирования поставленных в задании запросов воспользуемся языком запросов SQL.

1. Выдать информацию о наличии свободного билета на рейс.

select distinct nomer_reisa, kolichestvo_mest, prodannie_mesta

from reis, avtobys

where (avtobys. nomer_avtobysa=reis. nomer_avtobysa)

and (kolichestvo_mest-prodannie_mesta) > 0

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

select distinct nomer_reisa, pynkt_naznacheniya, stoimost, vremya_v_pyti

from reis, bilet

where (bilet. nomer_reisa=reis. nomer_reisa)

and pynkt_naznacheniya='+''''+Edit14. Text+''''

 

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

 

Заключение

В данной курсовой работе была разработана база данных " Автостанция".

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

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

База данных содержит следующую информацию: данные о рейсе (дата, пункт отправления, пункт назначения, номер автобуса, номер водителя, время в пути), сведения о водителе (ФИО водителя, смена), данные о билетах (стоимость) и данные об автобусе (пункт отправления, назначения, количество мест).

Данная курсовая работа является актуальной и отвечает предъявленным к ней требованиям. Была разработана и написана на языке программирования высокого уровня Borland Delphi 7.0.

 

Список использованной литературы

1. Архангельский А.Я. Программирование в Delphi5. - М.: ЗАО “Издательство БИНОМ”, 2000. - 1070с.: ил. (ч/з ПаУ)

2. Фаронов В.В. Программирование баз данных в Delphi6. Учебный курс. - СПб.: Питер, 2002. - 352с.: ил.

3. Дарахвелидзе П.Г., Марков Е.П. Delphi - среда визуального программирования: - СПб.: BHV - Санкт-Петербург, 1996. - 352с.

4. Гофман В.Э., Хомоненко А.Д. Delphi. Быстрый старт. - СПб.: БХВ - Санкт-Петербург, 2002. - 208с.: ил. (ч/з ПаУ)

5. Фаронов В.В. Delphi4. Учебный курс. - М.: " Нолидж", 1999. - 464с.: ил. (ч/з ПаУ)

6. Фаронов В.В. Delphi 5 Учебный курс. - М.: " Нолидж", 2000. - 606с.: ил. (ч/з ПаУ)

7. Фаронов В.В. Delphi 6. Учебный курс. - М.: Издатель Молгачева С.В., 2002. - 672с. (ч/з ПаУ)

8. Фаронов В.В. Шумаков П.В. Delphi4. Руководство разработчика баз данных. - М.: “Нолидж”, 1999. - 560с.: ил.

9. Фаронов В.В. Шумаков П.В. Delphi5. Руководство разработчика баз данных. - М.: “Нолидж”, 2000. - 640с.: ил. (ч/з ПаУ)

10. Хендерсон К. Руководство разработчика баз данных в Delphi2/Пер. с англ. - К.: " Диалектика", 1996. - 544с.

11. Культин Н.Б. Delphi6. Программирование на ObjectPascal. Самоучитель. - СПб.: БХВ-Петербург, 2001. - 528с.: ил. (ч/з ПаУ)

12. Базы данных: интеллектуальная обработка информации В.В. Корнеев, А.Ф. Гареев, С.В. Васютин. - М.: Нолидж, 200. - 352с.: ил. (ч/з ПаУ)






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.