Автор работы: Пользователь скрыл имя, 12 Октября 2013 в 02:17, курсовая работа
Ведется учет продажи ж/д билетов. По каждому поезду известны: номер, тип поезда (экспресс, скорый, пассажирский), пункт назначения, дата и время отправления.
Поезда включают вагоны разных типов: код, наименование (плацкарт, купе, и т.д.), пассажировместимость.
При продаже билетов учитывается: фамилия И.О. пассажира, номер удостоверения личности, дата отправления, номер поезда, номер вагона, тип вагона, номер места, стоимость билета.
1. Проектирование базы данных 4
2. Описание программного проекта 7
3. Описание алгоритма формирования отчета 9
4. Руководство программиста 13
5. Руководство пользователя 14
6. Описание контрольного примера 19
7. Текст программы 22
8. Выводы 38
Список использованных источников
Рисунок 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 – Вид основной формы программы
Основная форма имеет три основных элемента: строка меню, элемент отображения данных с навигацией и панель управления данными. В строке меню расположены элементы управления для доступа к справочникам и кнопка вызова формы формирования отчета. Элемент отображения данных служит для отображения данных по заявкам, их добавления и редактирования, а также для навигации в пределах набора данных.
Для добавления записи необходимо кликнуть по кнопке «+» на панели навигации. При добавлении новой записи, а также редактировании, необходимо чтобы все поля были заполнены. № поезда можно ввести с клавиатуры, но также имеется возможность выбрать значение из выпадающего. При этом в незаполненном поле автоматически появится значение: при вводе с клавиатуры в поле выпадающего списка, при выборе пункта выпадающего списка - в поле ввода. Пример представлен на рисунке 4.
Рисунок 4 – Выбор значения из выпадающего списка
После заполнения всех полей необходимо кликнуть по кнопке с изображением галочки в панели навигации для сохранения изменений.
В панели управления данными имеется три вкладки: поиск, фильтрация и групповое изменение. На вкладке «Поиск» осуществляется поиск по заявкам. Внешний вид вкладки представлен на рисунке 5.
Рисунок 5 – Вкладка «Поиск»
При поиске по номеру удостоверения набор данных автоматически перейдет на указанную запись, если таковая имеется в нем. При отсутствии такой заявки будет выведено сообщение о том, что заявка не найдена.
При поиске по дате необходимо выбрать дату отправления, набор данных перейдет на то поле, дата составления которого либо соответствует выбранной, либо находится ближе всех.
Поисковой запрос по ФИО может содержать не только точное значение, но и часть слова.
На вкладке «Фильтрация» можно указать условия отображения полей для удобного редактирования, а также для осуществления поиска какому либо полю. Внешний вид вкладки представлен на рисунке 6.
Рисунок 6 – Вкладка «Фильтрация»
Для фильтрации ввести Номер места или Номер поезда, поля которых должны быть отображены и кликнуть по кнопке «Выбрать». При этом кнопка примет вдавленный вид.
При фильтрации номера удостоверения. Если не указан начальный номер удостоверения то фильтрация осуществляется номера, указанный в качестве последнего, если не указан последний номер – фильтрация осуществляется с начального номера. При указании обоих номеров, в поле вывода будут отображены номера, на всем диапазоне.
Фильтрация может
На вкладке «Групповое изменение» представлена возможность удаления полей из базы данных, а также группового изменения количества, в зависимости от номера. Внешний вид вкладки представлен на рисунке 7.
Рисунок 7 – Вкладка «Групповое изменение»
Для изменения даты отправления необходимо ввести даты отправления, на которое будет оно изменятся.
При удалении вагона необходимо указать либо номер вагона, либо конечной, либо и начальной и конечной. В зависимости от введенных значений будет выбран диапазон, и все заявки находящиеся в этом диапазоне будут удалены.
Для просмотра и редактирования
справочников необходимо открыть форму
справочника, обратившись к нему
через пункт «Справочники»
Добавление новых записей осуществляется кнопкой «Добавить». Изменение текущей записи осуществляется кнопкой «Изменить». Для навигации по справочнику используется панель навигации в верхней части формы. Удаление текущей записи осуществляется кнопкой «-» в панели навигации.
Рисунок 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(
var Accept: Boolean);
begin
if filt <> '' then
Accept:=filt=tblBook['N_
else
Accept:=true;
end;
procedure TDM.tblBookCalcFields(DataSet: TDataSet);
begin
if (dm.tblBook.FieldByName('N_
begin
if (dm.tblBook.FieldByName('N_
dm.tblBook.FieldByName('bilet'
else if (dm.tblBook.FieldByName('N_
dm.tblBook.FieldByName('bilet'
else if (dm.tblBook.FieldByName('N_
dm.tblBook.FieldByName('bilet'
else if (dm.tblBook.FieldByName('N_
dm.tblBook.FieldByName('bilet'
end;
if (dm.tblBook.FieldByName('N_
begin
if (dm.tblBook.FieldByName('N_
dm.tblBook.FieldByName('bilet'
else if (dm.tblBook.FieldByName('N_