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

Автор работы: Пользователь скрыл имя, 12 Октября 2013 в 02:17, курсовая работа

Краткое описание

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

Содержание

1. Проектирование базы данных 4
2. Описание программного проекта 7
3. Описание алгоритма формирования отчета 9
4. Руководство программиста 13
5. Руководство пользователя 14
6. Описание контрольного примера 19
7. Текст программы 22
8. Выводы 38
Список использованных источников

Вложенные файлы: 1 файл

Otchet_po_kursachu.docx

— 258.97 Кб (Скачать файл)








 




 




 






 


 




 

Рисунок 2 – Блок-схема процедуры формирования отчета

 

4. Руководство программиста

Для установки программы необходимо разместить исполняемый файл Project.exe данных в папке C:\Program Files\Project.

Файлы базы данных необходимо разместить в каталоге C:\Program Files\Курсачь\бд. После этого необходимо в программе BDE Administrator создать псевдоним для обращения к базе данных. Псевдоним должен иметь имя STANDART1 и в поле Path должен быть указан путь размещения файлов базы данных (C:\Program Files\Курсачь\бд). Также, драйвер работы с файлами Paradox, должен быть сконфигурирован для работы с кириллицей.

Ярлык приложения необходимо разместить в удобном для пользователя месте (например на рабочем столе), в качестве объекта указать путь к исполняемому файлу (C:\Program Files\Курсачь\Project.exe), именем ярлыка установить «Учет продаж готовой продукции».

 

5. Руководство пользователя

Запуск программы осуществляется с рабочего стола, путем двойного клика по ярлыку с именем «учет продажи ж/д билетов». После запуска программы открывается основная форма. Вид основной формы представлен на рисунке 3.

Рисунок 3 – Вид основной формы  программы

 

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

Для добавления записи необходимо кликнуть по кнопке «+» на панели навигации. При добавлении новой записи, а также редактировании, необходимо чтобы все поля были заполнены. № поезда можно ввести с клавиатуры, но также имеется возможность выбрать значение из выпадающего. При этом в незаполненном поле автоматически появится значение: при вводе с клавиатуры в поле выпадающего списка, при выборе пункта выпадающего списка - в поле ввода. Пример представлен на рисунке 4.

Рисунок 4 – Выбор значения из выпадающего списка

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

В панели управления данными имеется  три вкладки: поиск, фильтрация и  групповое изменение. На вкладке «Поиск» осуществляется поиск по заявкам. Внешний вид вкладки представлен на рисунке 5.

 

Рисунок 5 – Вкладка «Поиск»

 

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

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

Поисковой запрос по ФИО может содержать не только точное значение, но и часть слова.

На вкладке «Фильтрация» можно указать условия отображения полей для удобного редактирования, а также для осуществления поиска какому либо полю. Внешний вид вкладки представлен на рисунке 6.

 

Рисунок 6 – Вкладка «Фильтрация»

 

Для фильтрации ввести Номер места или Номер поезда, поля которых должны быть отображены и кликнуть по кнопке «Выбрать». При этом кнопка примет вдавленный вид.

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

Фильтрация может осуществляться по всем параметрам одновременно.

На вкладке «Групповое изменение» представлена возможность удаления полей из базы данных, а также группового изменения количества, в зависимости от номера. Внешний вид вкладки представлен на рисунке 7.

 

Рисунок 7 – Вкладка «Групповое изменение»

 

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

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

Для просмотра и редактирования справочников необходимо открыть форму  справочника, обратившись к нему через пункт «Справочники» основного  меню, и выбрать интересующий справочник. После выбора откроется основная форма справочника (представлена на рисунке 8).

Добавление новых записей  осуществляется кнопкой «Добавить».  Изменение текущей записи осуществляется кнопкой «Изменить». Для навигации по справочнику используется панель навигации в верхней части формы. Удаление текущей записи осуществляется кнопкой «-» в панели навигации.

Рисунок 8 – Форма справочника  «Вагонов»

 

При добавлении/редактировании записи в справочнике открывается форма изменения записи. Все поля в ней должны быть заполнены, для сохранения целостности в базе данных. Код подразделения должен быть уникальным. Форма изменения приведена на рисунке 9.

Рисунок 8 – Форма изменения  справочника «Вагонов»

 

Для формирования отчета о  потребностях необходимо на главной  форме в основном меню выбрать пункт «Отчет». На экране появится форма для ввода параметров отчета. Форма приведена на рисунке 9.

Рисунок 9 – Форма «Параметры отчета»

 

В форме указывается  диапазон периода отправления, по которым будет сформирован отчет. Начальное значение должно быть меньше конечного, оба значения должны быть заполнены. Так же должна быть заполнен город по которому формируется отчет. При нажатии кнопки «Сформировать» будет сформирован отчет, при нажатии кнопки «Отмена» или закрытии формы отчет выводиться не будет. Пример формирования отчета приведен в разделе 6.

 

 

 

 

 

 

6. Описание контрольного примера

Для демонстрации работы программы  таблицы были заполнены данными  контрольного примера. Содержание таблиц базы данных приведены в таблицах 10-13.

Таблица 10 – Содержание таблицы Book

Фамилия И.О.

№ удос.

личн

Пункт назнач.

Дата отправл.

№ Поезда

Тип поезда

Тип вагона

№ Места

Цена билета

ИльинРС

11112

Калуга

01.01.2014

444

Експресс

Платцкарт

1

1000

ПетровПД

11113

Калуга

01.01.2014

444

Експресс

Купе

1

2300

ИвановаСН

11114

Пенза

02.01.2013

333

Пасажирский

Платцкарт

1

1300

ПосылинМА

11111

Пенза

02.01.2013

333

Пасажирский

сидячий

2

750

АлексееваНГ

11115

Пенза

02.01.2013

333

Пасажирский

Платцкарт

3

1300

РодионовДВ

11116

Пенза

02.01.2013

333

Пасажирский

Платцкарт

4

1300

ПетровКА

11117

Пенза

02.01.2013

333

Пасажирский

Платцкарт

5

1300

ВорожбитовАС

11118

Пенза

02.01.2013

333

Пасажирский

Чидячий

1

750

КлимашинДС

11119

Пенза

02.01.2013

333

Пасажирский

Люкс

9

3500

ДемьяненкоДС

11121

Пенза

02.01.2013

333

Пасажирский

Купе

1

2650


 

Таблица 11 – Содержание таблицы SPRV

Номер поезда

Наименование

Пасажировместимость

1

Платцкарт

60

2

Купе

52

3

Сидячий

120

4

Люкс

26


 

Таблица 12 – Содержание таблицы SPRP

№ поезда

Тип поезда

Пункт назначения

Дата отправления

Время отправления

111

Скорый

Владикавказ

01.02.2013

13:00

222

Скорый

Екатеринбург

01.01.2013

15:00

333

Пасажирский

Пенза

02.01.2013

16:00

444

Экспресс

Калуга

01.01.2014

12:00

666

Экспресс

Пенза

02.01.2013

18:00


 

При формировании отчета в качестве параметров программа запрашивает  диапазон дат. В данном контрольном примере был взят диапазон от 01.01.13 до 01.01.14. И город «Пенза».  Результат вывода отчета представлен на рисунке 10.

 

 

Рисунок 10 – Вывод отчета по контрольному примеру

 

7. Текст программы

Исходный  текст модуля uDM:

unit uDM;

interface

uses

  SysUtils, Classes, DB, DBTables;

type

  TDM = class(TDataModule)

    DataSource1: TDataSource;

    DataSource2: TDataSource;

    tblBook: TTable;

    tblSPRP: TTable;

    Database1: TDatabase;

    DataSource3: TDataSource;

    tblSPRV: TTable;

    tblSPRPN_Poezda: TSmallintField;

    tblSPRPTip_poezda: TStringField;

    tblSPRPPunkt_nazn: TStringField;

    tblSPRPDat_otpr: TDateField;

    tblSPRPVremya_otpr: TTimeField;

    tblBookId: TIntegerField;

    tblBookFIO_pas: TStringField;

    tblBookN_udost_lichn: TSmallintField;

    tblBookDat_otpr: TDateField;

    tblBookN_Poezda: TSmallintField;

    tblBookN_Vagona: TSmallintField;

    tblBookN_mesta: TSmallintField;

    tblBookStoim_bileta: TCurrencyField;

    tblRpt: TTable;

    tblBookLookTip: TStringField;

    tblBookLokN_Vagona: TStringField;

    tblSPRVKod_tip: TSmallintField;

    tblSPRVNaimen: TStringField;

    tblSPRVPass_dvest: TIntegerField;

    tblRptN_Vag: TIntegerField;

    tblRptTip_vagona: TStringField;

    tblRptKol_prod_bil: TIntegerField;

    tblRptStoimost: TFloatField;

    tblRptProc_prod_mest: TIntegerField;

    tblRptOst_mest: TIntegerField;

    tblBookLook_Punkt: TStringField;

    tblBookLook_Dat: TDateField;

    tblBookLook_N_poezda: TIntegerField;

    tblBookbilet: TIntegerField;

    procedure tblBookFilterRecord(DataSet: TDataSet; var Accept: Boolean);

    procedure tblBookCalcFields(DataSet: TDataSet);

    procedure DataModuleCreate(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

var

  DM: TDM;

 filt: String;

implementation

    Uses uBook;

{$R *.dfm}

procedure TDM.tblBookFilterRecord(DataSet: TDataSet;

  var Accept: Boolean);

begin

 if filt <> '' then

Accept:=filt=tblBook['N_Poezda']

else

Accept:=true;

end;

procedure TDM.tblBookCalcFields(DataSet: TDataSet);

begin

 if (dm.tblBook.FieldByName('N_Poezda').AsInteger = 333) then

 begin

   if (dm.tblBook.FieldByName('N_Vagona').AsInteger = 1) then

      dm.tblBook.FieldByName('bilet').AsInteger:= 1300

   else if (dm.tblBook.FieldByName('N_Vagona').AsInteger = 2) then

      dm.tblBook.FieldByName('bilet').AsInteger:= 2600

   else if (dm.tblBook.FieldByName('N_Vagona').AsInteger = 3) then

      dm.tblBook.FieldByName('bilet').AsInteger:= 750

   else if (dm.tblBook.FieldByName('N_Vagona').AsInteger = 4) then

      dm.tblBook.FieldByName('bilet').AsInteger:= 3500;

 end;

  if (dm.tblBook.FieldByName('N_Poezda').AsInteger = 666) then

 begin

   if (dm.tblBook.FieldByName('N_Vagona').AsInteger = 1) then

      dm.tblBook.FieldByName('bilet').AsInteger:= 1350

   else if (dm.tblBook.FieldByName('N_Vagona').AsInteger = 2) then

Информация о работе Проектирование базы данных