на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
База данных "Пассажирские железнодорожные перевозки"
p align="left">Delphi 7 - мощная система визуального объектно-ориентированного программмирования. С ее помощью даже начинающие программисты могут создавать оконные интерфейсы, удовлетворяющие стандартам Windows, причем очень быстро. Спектр отраслей, в которых можно применять Delphi, достаточно широк: инженерные, офисные, торговые и др. К тому же Delphi является одним из самых распространенных средств создания приложений баз данных. Простота языка и эффективность (небольшие размеры и высокая производительность) создаваемых с его помощью программ сделали Delphi незаменимым средством разработки приложений для доступа к базам данных. Delphi используется для генерирования и вывода на печать сложных отчетов баз данных, а также предоставляет возможность связываться из своего приложения с такими продуктами Microsoft, как Word, Excel и другие, используя их возможности в создании мощных систем помощи.

Занимает 16 Мб дискового пространства. Оперативная память должна быть 64 Мб минимум.

3.2 Описание программных модулей и их взаимодействие

Данный программный продукт состоит из 4 основных вычисляющих модулей:

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

Для каждого из существующих рейсов указываются станции, через которые поезд проходит последовательно, к примеру, Москва - Санкт-Петербург - Казань - Воронеж.

Следует отметить, что поезд может идти только в одном направлении (из Москвы в Воронеж).

Задаются пункт отправления и пункт прибытия, указанные пассажиром. Рейс считается подходящим, если в его маршруте содержатся пункты отправления и прибытия, причем пункт прибытия следует после пункта отправления. Например, если пассажир следует из Санкт-Петербурга в Воронеж, то указанный выше рейс считается подходящим. Если же пункт его отправления Казань, а пункт назначения Санкт-Петербург, то рейс №100 не будет соответствовать заданному условию.

Листинг программного модуля:

if (ComboBox1.Text <> '') and (ComboBox2.Text <> '') and (RzDateTimeEdit1.Text <> '') then

begin

Query1.Destroy;

DS1.Destroy;

Query1:=CreateQuery('select * from reis');

Query1.Open;

nomera:='';

Query1.First;

while not Query1.Eof do

begin

m:=-1;

n:=-1;

trains:= TStringList.Create;

trains.Text:= StringReplace(Query1.FieldValues['stancii'],'-',#13#10,[rfReplaceAll]);

for i:=0 to trains.Count-1 do

begin

if trains[i] = ComboBox1.Text then m:=i;

if trains[i] = ComboBox2.Text then n:=i;

end;

if (m <> -1) and (n <> -1) then

if (m < n) then

begin

nomera:=nomera+Query1.Fields[0].AsString+',';

end;

trains.Destroy;

Query1.Next;

end;

if nomera = '' then

begin

Application.MessageBox('Таких рейсов нет','Внимание',MB_OK+MB_ICONERROR);

DS1:= CreateDataSource(Query1);

// DBGrid1.DataSource:= DS1;

end else

begin

Delete(nomera,length(nomera),1);

Query1.SQL.Clear;

SQLString:='select * from reis where no_reisa in ('+nomera+')';

Query1.SQL.Add(SQLString);

Query1.Open;

DS1:=CreateDataSource(Query1);

DBGrid1.DataSource:= DS1;

end;

end;

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

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

После выбора необходимого рейса и даты отправления пассажира таблично отображаются занятые и свободные места. Для каждого занятого места запоминаются пункт назначения и дата прибытия. Место считается освободившимся для данного пассажира, если выполняется два условия: запомненный для места пункт назначения находится до пункта отправления пассажира или совпадает с ним; запомненная дата прибытия для места совпадает с датой отправления пассажира или дата отправления является более поздней.

Листинг программного модуля:

SQLString:= 'select * from typevag where no_reisa="'+DBGrid1.Fields[0].Text+'"';

Query2:= CreateQuery(SQLString);

Query2.Open;

plackart:= TStringList.Create;

kupe:= TStringList.Create;

plackart.Text:=StringReplace(Query2.Fields[1].AsString,' ',#13#10,[rfReplaceAll]);

kupe.Text:=StringReplace(Query2.Fields[2].AsString,' ',#13#10,[rfReplaceAll]);

StringGrid1.RowCount:=plackart.Count+kupe.Count+1;

for i:=0 to plackart.Count-1 do

begin

StringGrid1.Cells[0,StrToInt(plackart[i])]:=plackart[i]+' плацкарт';

for j:=1 to 55 do StringGrid1.Cells[j,i]:='';

end;

for i:=0 to kupe.Count-1 do

begin

StringGrid1.Cells[0,StrToInt(kupe[i])]:=kupe[i]+' купе';

// for j:=1 to 55 do StringGrid1.Cells[j,i]:='';

for j:=37 to 55 do StringGrid1.Cells[j,StrToInt(kupe[i])]:='X';

end;

plackart.Destroy;

kupe.Destroy;

with Query2 do

begin

SQLString:='select * from tickets where no_reisa="'+DBGrid1.Fields[0].Text+'"and startdate="'+FormatDateTime('dd.mm',RzDateTimeEdit1.Date)+'"';

SQL.Clear;

SQL.Add(SQLString);

Open;

end;

Query2.First;

while not Query2.Eof do

begin

v:= Query2.Fields[8].AsInteger;

p:= Query2.Fields[9].AsInteger;

StringGrid1.Cells[p,v]:='*';

pnaz:= Query2.FieldValues['EndPoint'];

SQLString:= 'select * from stationofreis where No_reisa="'+DBGrid1.Fields[0].AsString+'"';

Query3:= CreateQuery(SQLString);

Query3.Open;

Query3.First;

while Query3.Fields[1].AsString <> pnaz do

begin

if Query3.FieldByName('station').AsString = ComboBox1.Text then

{if FormatDateTime() < FormatDateTime() then} goto m1;

Query3.Next;

end;

Query3.Destroy;

StringGrid1.Cells[p,v]:='';

m1:

Query2.Next;

end;

Query2.Destroy;

в) вычисление основных параметров для заданного маршрута: даты прибытия, времени в пути, стоимости билета.

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

Листинг программного модуля:

if (StringGrid1.Cells[ACol,ARow] <> '*') and (StringGrid1.Cells[ACol,ARow] <> 'X') then

begin

if (ComboBox1.Text <> '') and (ComboBox2.Text <> '') and (RzDateTimeEdit1.Text <> '') then

begin

if MessageDlg('Приступить к гегистрации пассажира?',mtConfirmation,[mbYes,mbNo],0) = mrYes then

begin

Application.CreateForm(TFormTicket, FormTicket);

with FormTicket do

begin

Label2.Caption:= DBGrid1.Fields[0].Text;

Label3.Caption:= DBGrid1.Fields[2].Text;

Label6.Caption:= FormatDateTime('dd.mm',RzDateTimeEdit1.Date);

Label17.Caption:= IntToStr(ACol);

Label15.Caption:= IntToStr(ARow);

Label10.Caption:= ComboBox1.Text;

Label11.Caption:= ComboBox2.Text;

time:=TStringList.Create;

time.Text:=StringReplace(StringGrid1.Cells[0,ARow],' ',#13#10,[rfreplaceall]);

Label13.Caption:= time[1];

time.Destroy;

Label19.Caption:= FormatDateTime('dd.mm',RzDateTimeEdit1.Date);

SQLString:='select * from stationofreis where no_reisa="'+DBGrid1.Fields[0].Text+'"';

Query2:= CreateQuery(SQLString);

Query2.Open;

Query2.First;

hour:=0;

minute:=0;

price:=0;

s:='0';

while not Query2.Eof do

begin

if Query2.Fields[1].AsString = ComboBox1.Text then

begin

Label21.Caption:=Query2.Fields[6].AsString;

s1:= Query2.Fields[6].AsFloat;

while not Query2.Eof do

begin

Query2.Next;

s2:= Query2.Fields[4].AsFloat;

if s1>s2 then

begin

Label6.Caption:= FormatDateTime('dd.mm',RzDateTimeEdit1.Date+1);

s1:=s2;

end;

if Query2.Fields[1].AsString = ComboBox2.Text then

begin

if s = '' then

begin

s:= Query2.Fields[3].AsString;

end;

Label23.Caption:=Query2.Fields[4].AsString;

s:= FloatToStr(sumhhmm(StrToFloat(s),Query2.Fields[3].AsFloat));

Label25.Caption:= s;

priceway:= price;

GetDir(0,Path);

with TIniFile.Create(Path+'\zd.ini') do

try

price:= price+Query2.Fields[2].AsFloat+StrToFloat(ReadString('cash',Label13.Caption,'no val ues'))+StrToFloat(ReadString('cash','сбор','no values'));

finally

Free;

end;

Label27.Caption:= FloatToStr(price);

// Edit3.Text:= StringReplace(Label27.Caption,',','.',[rfReplaceAll]);

{!!!!!добавить указание стоимости проезда!!!!!}

goto m1;

end;

price:=price+Query2.Fields[2].AsFloat;

s:= FloatToStr(sumhhmm(StrToFloat(s),Query2.Fields[3].AsFloat));

s:= FloatToStr(sumhhmm(StrToFloat(s),Query2.Fields[5].AsFloat));

s1:=s2;

end;

end;

Query2.Next;

end;

m1:

end;

FormTicket.ShowModal;

end;

end;

end;

г) регистрация пассажира и формирование проездного документа.

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

Листинг программного модуля:

if (Edit1.Text <> '') or (MaskEdit1.Text <> '') then

begin

dat:= FormatDateTime('ddmmyyhhmm',Now);

SQLString:='insert into tickets values("'+FormatDateTime('ddmmyyhhmm',Now)+'","'+Edit1.Text+'","'+MaskEdit1.Text+'","'+Label2.Caption+'","'+Label10.Caption+'","'+Label11.Caption+'","'+Label19.Caption+'","'+Label6.Caption+'","'+Label15.Caption+'","'+Label17.Caption+'","'+Label13.Caption+'","'+StringReplace(Label27.Caption,',','.',[rfReplaceAll])+'")';

if ExecuteSQL(SQLString) then

begin

GetDir(0,Path);

with TIniFile.Create(Path+'\zd.ini') do

try

SQLString:= 'insert into prices values("'+Label21.Caption+'","'+Label23.Caption+'","'+Label25.Caption+'","'+StringReplace(ReadString('cash',Label13.Caption,'no values'),',','.',[rfReplaceAll])+'","'+StringReplace(ReadString('cash','сбор','no values'),',','.',[rfReplaceAll])+'","'+StringReplace(FloatToStr(priceway),',','.',[rfReplaceAll])+'")';

finally

Free;

end;

ExecuteSQL('delete from prices');

if ExecuteSQL(SQLString) then

begin

// ShowMessage('Успешная регистрация');

FormTicket.Close;

SQLString:= 'select * from tickets, prices where tickets.no_ticket="'+dat+'"';

QReport.SQL.Clear;

QReport.SQL.Add(SQLString);

QReport.Open;

frReport1.LoadFromFile(Path+'\ticket.frf');

frReport1.ShowReport;

with FormPay do

begin

ComboBox1.Text:= '';

ComboBox2.Text:= '';

RzDateTimeEdit1.Text:= '';

// RzToolButton1Click(sender);

with StringGrid1 do

begin

RowCount:= 2;

ColCount:=55;

for i:=1 to ColCount-1 do

begin

ColWidths[i]:=20;

Cells[i,0]:=IntToStr(i);

end;

end;

end;

end;

end;

end else ShowMessage('Не введены обязательные данные!');

3.3 Описание интерфейса пользователя

При запуске программы на выполнение на экране компьютера появляется следующее меню изображённое на рисунке 3.

Рисунок 3 - Главное окно

Меню состоит из пунктов «Продажа билетов», «Администратор». При выборе пункта меню «Продажа билетов» появляется следующее подменю, изображённое на рисунке 4.

Рисунок 4 - Форма продажи билетов

На форме указаны «Номер рейса», «Пункт отправления», «Пункт назначения», «Дата отправления» - это поля, которые заполняются оператором; поля «Рейсы», «Состав» - отображаются сразу после запроса. Как только информация отобразилась, оператор приступает к регистрации пассажира, рисунок 5.

Рисунок 5 - Форма регистрации пассажира

После регистрации идёт оформление документа, представленного на рисунке 6.

Рисунок 6 - Проездной документ

При выборе пункта меню «Администратор», необходимо ввести пароль. Так как обычный оператор не вправе что-либо менять или исправлять в самой базе данных. Вид окошка представлен на рисунке 7.

Рисунок 7 - Ввод пароля

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

Рисунок 8 - Форма администратора (вкладка «Станции»)

При выборе команды «Рейсы» на экране появляется новое окно, отображённое на рисунке 9.

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

Рисунок 9 - Рейсы (добавление)

В списке, изображенных в окне, отражаются все операции, произведенные по каждому рейсу, будь то добавление, редактирование или удаление станций и его номера. Кнопка «Добавить» предназначена для добавления из списка станций нового маршрута, содержащего полный путь рейса. Если после какой-либо корректировки данных кнопка не будет нажата, рейс не будет добавлен. При нажатии на кнопку на кнопку «Отмена» происходит возврат в предыдущее окно без сохранения. После выбора вкладки «Стоимость класса вагона» появляется новое окно, изображённое на рисунке 10.

Рисунок 10 - Вкладка «Стоимость класса вагона»

Вносятся необходимые изменения, и нажимается кнопка «Применить».

Рассмотрим вкладку «Поезда», представленную на рисунке 10. Здесь отмечаются сколько вагонов находится в составе и под каким номером какие типы вагонов. После нажатия кнопки «Применить», информация заносится в таблицу.

Рисунок 11 - Вкладка «Поезда»

На вкладке «Стоимость участка пути», изображённой на рисунке 11, администратор вносит необходимые данные: время в пути, время прибытия, стоянка, время отправления, стоимость участка. После нажатия кнопки «Применить», вне-сённые данные отображаются в верхней таблице.

Рисунок 11 - Вкладка «Стоимость пути»

Заключение

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

Программный продукт выполняет следующие функции:

- возможность заказа билета из любой точки мира при наличии подключения к внутренней компьютерной сети;

- возможность добавления и редактирования маршрутов, цен на билеты.

- заказ билета на любую дату.

- быстрый расчет времени в пути.

Возможные улучшения:

- выбор пассажиром места в вагоне (верхняя, нижняя полка)

- выдача рекомендаций по оптимальному с точки зрения времени, проведенному в пути и стоимости билета, маршруту между двумя пунктами.

Список литературы:

1. ГОСТ 2.105-95 ЕСКД - общие требования к текстовым документам;

2. ГОСТ 2.304-81 ЕСКД - шрифты чертёжные;

3. ГОСТ 2.106-68 ЕСКД - текстовые документы;

4. Общие требования и правила оформления выпускных квалификационных работ, курсовых проектов, отчетов ОГУ;

5. Программирование на Delphi 6, Глушаков С.В.

Страницы: 1, 2



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.