Листинг программного модуля:
if (StringGrid1.Cells[ACol,ARow] <> '*') and (StringGrid1.Cells[ACol,ARow] <> 'X') then
begin
if (ComboBox1.Text <> '') and (ComboBox2.Text <> '') and (RzDateTimeEdit1.Text <> '') then
if MessageDlg('Приступить к гегистрации пассажира?',mtConfirmation,[mbYes,mbNo],0) = mrYes then
Application.CreateForm(TFormTicket, FormTicket);
with FormTicket do
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
if Query2.Fields[1].AsString = ComboBox1.Text then
Label21.Caption:=Query2.Fields[6].AsString;
s1:= Query2.Fields[6].AsFloat;
Query2.Next;
s2:= Query2.Fields[4].AsFloat;
if s1>s2 then
Label6.Caption:= FormatDateTime('dd.mm',RzDateTimeEdit1.Date+1);
s1:=s2;
end;
if Query2.Fields[1].AsString = ComboBox2.Text then
if s = '' then
s:= Query2.Fields[3].AsString;
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;
Label27.Caption:= FloatToStr(price);
// Edit3.Text:= StringReplace(Label27.Caption,',','.',[rfReplaceAll]);
{!!!!!добавить указание стоимости проезда!!!!!}
goto m1;
price:=price+Query2.Fields[2].AsFloat;
s:= FloatToStr(sumhhmm(StrToFloat(s),Query2.Fields[5].AsFloat));
m1:
FormTicket.ShowModal;
г) регистрация пассажира и формирование проездного документа.
После заполнения данных пассажира (фамилии, имени, отчества, номера документа, удостоверяющего личность) происходит регистрация пассажира на данный рейс и формируется проездной документ, в котором указываются рейс, вычисленные ранее стоимость билета, время пути, время отправления и прибытия, дата прибытия, данные пассажира, пункт отправления и пункт следования.
if (Edit1.Text <> '') or (MaskEdit1.Text <> '') then
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
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])+'")';
ExecuteSQL('delete from prices');
// 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
ComboBox1.Text:= '';
ComboBox2.Text:= '';
RzDateTimeEdit1.Text:= '';
// RzToolButton1Click(sender);
with StringGrid1 do
RowCount:= 2;
ColCount:=55;
for i:=1 to ColCount-1 do
ColWidths[i]:=20;
Cells[i,0]:=IntToStr(i);
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, 3