Анализ предметной области Описание предметной области решаемой задачи


Разработка диалогового приложения пользователя



Download 18,25 Mb.
bet5/6
Sana25.02.2022
Hajmi18,25 Mb.
#307603
TuriРеферат
1   2   3   4   5   6
Bog'liq
АЭРОПОРТ


5. Разработка диалогового приложения пользователя




5.1 Разработка и реализация пользовательского приложения


Программа "Аэропорт" содержит семь пользовательских форм. Главной формой является форма "Продажа авиабилетов". Она первой отображается при инициализации проекта.





Рисунок 5. Форма Продажа авиабилетов

Основное её назначение это выполнение запросов по заданным рейсам, выполнение операций покупки продажи билетов и их возврата, а также переход на другие формы проекта. Она содержит следующие объекты: 7 меток, 1 текстовое поле, одно комбинированное текстовое поле, 3 текстовых поля баз данных, 3 командных кнопки и одно горизонтальное меню. Горизонтальное меню (объект MainMenu) содержит пункты и подпункты: Файл (Выход); Операции (Запрос, Продажа, Возврат); Статистика; Редактор (Добавить рейс, Удалить рейс); О программе.


Перед отображением формы срабатывает процедура, записывающая текущую дату на форму и в текстовое поле.

procedure TForm1. FormCreate (Sender: TObject);


var d: tdatetime;// Ввод начальных данных формы
d: =date;. Text: =datetostr (d);. Caption: =datetostr (d);;

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


procedure TForm1. cmbNumberDropDown (Sender: TObject);


// Процедура для заполнения комб-го поля для номеров рейсов
begin. cmbNumber. Clear;. ADOTable1. First;datamodule2. ADOTable1. Eof<>true do. cmbNumber. Items. Add (datamodule2. ADOTable1_. AsString);. ADOTable1. Next;;;

Использование комбинированного текстового поля со списком избавляет от необходимости помнить все номера рейсов. Кнопка Запрос служит для обращения к базе данных на основе введённой даты и номера рейса. Процедура данной кнопки обращается к каждой таблице и если дата из поля Дата совпадает с табличной, то осуществляется поиск нужного рейса в этой таблице и вывод его времени вылета, а также количества свободных мест в первом и втором салоне самолёта.


procedure TForm1. btnzaprosClick (Sender: TObject);


// Процедура определения количества билетов по выбранному рейсу
var vremia: string;: tdatetime;
beginedDate. Text=datamodule2. ADOTable1DSDesigner. Text then
{showmessage ('Нашел дату'); }. ADOTable1. First;datamodule2. ADOTable1. Eof<>true docmbNumber. Text=datamodule2. ADOTable1_. Text then
{showmessage ('Нашел рейс'); }: =datamodule2. ADOTable1_2. Text;(vremia,1,11);: =time;
{showmessage (timetostr (sysTime)); }sysTimeelse
showmessage ('Данный рейс уже улетел в '+vremia);
dbeTime. Text: ='';. Text: ='';. Text: ='';;. ADOTable1. Next;;if edDate. Text=datamodule2. ADOTable2DSDesigner. Text then. ADOTable2. First;datamodule2. ADOTable2. Eof<>true docmbNumber. Text=datamodule2. ADOTable2_. Text then: =datamodule2. ADOTable2_2. Text;(vremia,1,11);. Text: =vremia;. Text: =datamodule2. ADOTable2_3. Text;. Text: =datamodule2. ADOTable2_4. Text;;. ADOTable2. Next;;if edDate. Text=datamodule2. ADOTable3DSDesigner. Text then. ADOTable3. First;datamodule2. ADOTable3. Eof<>true docmbNumber. Text=datamodule2. ADOTable3_. Text then: =datamodule2. ADOTable3_2. Text;(vremia,1,11);. Text: =vremia;. Text: =datamodule2. ADOTable3_3. Text;. Text: =datamodule2. ADOTable3_4. Text;;. ADOTable3. Next;;('Билетов на данный рейс нет');. Text: ='';. Text: ='';. Text: ='';;;

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


procedure TForm1. bttProdagaClick (Sender: TObject);


// Процедура для продажи авиабилета
var vremia: string;: tdatetime;
cl1,cl2: string;// Определение количества билетов на основе даты и номера рейса
form7. btnProd. Enabled: =true;. btnVozvr. Enabled: =false;edDate. Text=datamodule2. ADOTable1DSDesigner. Text then
{showmessage ('Нашел дату'); }. ADOTable1. First;datamodule2. ADOTable1. Eof<>true docmbNumber. Text=datamodule2. ADOTable1_. Text then
{showmessage ('Нашел рейс'); }: =datamodule2. ADOTable1_2. Text;(vremia,1,11);: =time;
{showmessage (timetostr (sysTime)); }sysTime0 then;. visible: =true;;;('Данный рейс уже улетел в '+vremia);. Text: ='';. Text: ='';. Text: ='';;. ADOTable1. Next;;if edDate. Text=datamodule2. ADOTable2DSDesigner. Text then. ADOTable2. First;datamodule2. ADOTable2. Eof<>true docmbNumber. Text=datamodule2. ADOTable2_. Text then: =datamodule2. ADOTable2_2. Text;(vremia,1,11);. Text: =vremia;. Text: =datamodule2. ADOTable2_3. Text;. Text: =datamodule2. ADOTable2_4. Text;: =dbeClass1. Text;strtoint (cl1) >0 then;. visible: =true;;;. ADOTable2. Next;;if edDate. Text=datamodule2. ADOTable3DSDesigner. Text then. ADOTable3. First;datamodule2. ADOTable3. Eof<>true docmbNumber. Text=datamodule2. ADOTable3_. Text then: =datamodule2. ADOTable3_2. Text;(vremia,1,11);. Text: =vremia;. Text: =datamodule2. ADOTable3_3. Text;. Text: =datamodule2. ADOTable3_4. Text;: =dbeClass1. Text;strtoint (cl1) >0 then;. visible: =true;;;. ADOTable3. Next;;('Билетов на данный рейс нет');;
end;

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


procedure TForm1. btnVozvratClick (Sender: TObject);


// Процедура для возврата авиабилетаvremia: string;
sysTime: tdatetime;,cl2: string;. btnProd. Enabled: =false;. btnVozvr. Enabled: =true;edDate. Text=datamodule2. ADOTable1DSDesigner. Text then
{showmessage ('Нашел дату'); }. ADOTable1. First;datamodule2. ADOTable1. Eof<>true docmbNumber. Text=datamodule2. ADOTable1_. Text then
{showmessage ('Нашел рейс'); }: =datamodule2. ADOTable1_2. Text;(vremia,1,11);: =time;
{showmessage (timetostr (sysTime)); }sysTime0 then;. visible: =true;;;('Данный рейс уже улетел в '+vremia);. Text: ='';. Text: ='';. Text: ='';;. ADOTable1. Next;;if edDate. Text=datamodule2. ADOTable2DSDesigner. Text then. ADOTable2. First;datamodule2. ADOTable2. Eof<>true docmbNumber. Text=datamodule2. ADOTable2_. Text then: =datamodule2. ADOTable2_2. Text;(vremia,1,11);. Text: =vremia;. Text: =datamodule2. ADOTable2_3. Text;. Text: =datamodule2. ADOTable2_4. Text;: =dbeClass1. Text;strtoint (cl1) >0 then;. visible: =true;;;. ADOTable2. Next;;if edDate. Text=datamodule2. ADOTable3DSDesigner. Text then. ADOTable3. First;datamodule2. ADOTable3. Eof<>true docmbNumber. Text=datamodule2. ADOTable3_. Text then: =datamodule2. ADOTable3_2. Text;(vremia,1,11);. Text: =vremia;. Text: =datamodule2. ADOTable3_3. Text;. Text: =datamodule2. ADOTable3_4. Text;: =dbeClass1. Text;strtoint (cl1) >0 then;. visible: =true;;;. ADOTable3. Next;;('Билетов на данный рейс нет');;
end;

Форма Выбор класса содержит 2 переключателя определяющих тип класса салона самолёта и 3 кнопки, меняющих свою активность в зависимости от выполняемой операции.





Рисунок 6. Форма Выбор класса.

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


Пункт меню Операции на форме Продажа Авиабилетов дублируют нажатие кнопок Запрос, Продажа, Возврат.

procedure TForm1. N5Click (Sender: TObject);


// Процедура дублирования нажатия кнопки Запрос
begin. btnzapros. Click;;TForm1. N6Click (Sender: TObject);
// Процедура дублирования нажатия кнопки Продажа. bttProdaga. Click;;TForm1. N7Click (Sender: TObject);
// Процедура дублирования нажатия кнопки Возврат. btnVozvrat. Click;;

Пункт меню Статистика служит для отображения формы Статистика за день. Она служит для отображения всех записей из любой таблицы базы данных. Для этих целей на форму помещён объект DBGrid со вкладки DataControl. В качестве свойства DataSourse определён DataSourse1, подключённый к AdoTable1. Поэтому при открытии формы сразу отображаются данные из таблицы Сегодня. С помощью меток отображается текущая дата.





Рисунок 7. Форма Статистика за день

Аналогично главной форме здесь содержится горизонтальное меню с командами: Файл (Выход); Просмотр (Сегодня, Завтра, Послезавтра); Сортировка (По дате, По номеру рейса); Фильтрация (По номеру рейса).


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

procedure TForm3. N10Click (Sender: TObject);


// Процедура отображения таблицы Сегодня
begin. ADOTable1. Filtered: =false;. DataSource1. DataSet: =datamodule2. ADOTable1;. DataSource: =datamodule2. DataSource1;;TForm3. N12Click (Sender: TObject);
// Процедура отображения таблицы Завтра. ADOTable2. Filtered: =false;. DataSource2. DataSet: =datamodule2. ADOTable2;. DataSource: =datamodule2. DataSource2;;TForm3. N13Click (Sender: TObject);
// Процедура отображения таблицы Послезавтра. ADOTable3. Filtered: =false;. DataSource3. DataSet: =datamodule2. ADOTable3;. DataSource: =datamodule2. DataSource3;;

Пункт меню сортировка определяет поля по которым необходимо отсортировать данные в таблицах. В нашем случае это Дата и Номер рейса. При этом сортировка происходит по возрастающей. Процедуры этого пункта используют свойство IndexFieldsNames. Оно и определяет по какому полю осуществлять сортировку.


procedure TForm3. N5Click (Sender: TObject);


// Процедура сортировки по времени вылета
begin. ADOTable1. IndexFieldNames: ='Номер_рейса';. ADOTable2. IndexFieldNames: ='Номер_рейса';. ADOTable3. IndexFieldNames: ='Номер_рейса';;.TForm3. N6Click (Sender: TObject);
// Процедура сортировки по времени вылета
datamodule2. ADOTable1. IndexFieldNames: ='Время_вылета';. ADOTable2. IndexFieldNames: ='Время_вылета';. ADOTable3. IndexFieldNames: ='Время_вылета';
end;
Пункт меню Фильтрация служит для вызова формы Параметры фильтра
procedure TForm3. N8Click (Sender: TObject);
// Процедура отображения формы фильтра
begin. visible: =true;
end;



Рисунок 8. Форма Параметры Фильтра

Эта форма содержит 2 объекта: комбинированное текстовое поле и командная кнопка. Аналогично главной форме поле заполняется номерами рейсов. Процедура кнопки Применить фильтр возможность фильтрации для каждого объекта ADOTable и маску фильтра. В нашем случае это номер рейса.


procedure TForm4. btnFiltrClick (Sender: TObject);


// Процедура кнопки фильтра
begin
datamodule2. ADOTable1. Filtered: =true;. ADOTable1. Filter: ='Номер_рейса='''+cmbNumberF. Text+'''';. ADOTable2. Filtered: =true;. ADOTable2. Filter: ='Номер_рейса='''+cmbNumberF. Text+'''';. ADOTable3. Filtered: =true;. ADOTable3. Filter: ='Номер_рейса='''+cmbNumberF. Text+'''';;

На главной форме есть пункт меню редактор. Его процедуры выводят на экран форму Редактор рейсов для ввода нового рейса или удаления существующего рейса. При этом определяется видимость объектов формы, необходимых для добавления или удаления рейса.


procedure TForm1. N13Click (Sender: TObject);


// Процедура отображения формы редактора рейсов
begin. visible: =true;. edVrem. Visible: =true;. Label2. Visible: =true;. Label3. Visible: =true;. btnDobavit. Enabled: =true;. btnUdalit. Enabled: =false;;TForm1. N14Click (Sender: TObject);
// Процедура отображения формы редактора рейсов. Visible: =true;. edVrem. Visible: =false;. Label2. Visible: =false;. Label3. Visible: =false;. btnDobavit. Enabled: =false;. btnUdalit. Enabled: =true;;



Рисунок 9. Форма редактор рейсов

Данная форма содержит текстовые поля для номера рейса и времени вылета. При этом (для избежания ошибок работы программы) с помощью метки определяется формат вводимого времени. Кнопки Добавить и Удалить служат для дублирования нажатия соответствующих кнопок на служебной форме Обновление базы. Кнопка отмена закрывает текущую форму.


procedure TForm8. btnCancelClick (Sender: TObject);


// Процедура отмены. Close;;

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





Рисунок 10. Форма о программе

На этом закончим описание форм, доступных пользователю для просмотра. Проект содержит одну служебную форму Обновление базы (о ней упоминалось выше). Эта форма не отображается во время работы, но она содержит все объекты используемые для внесения изменений в базу данных "Аэропорт".





Рисунок 11. Форма Обновление базы.

Как видно из рисунка форма содержит метки, определяющие названия таблиц базы и полей каждой таблицы. На форме расположены три столбца из полей DBEdit. Каждый столбец отображает по одной записи из таблицы. Пять командных кнопок выполняют операции, упомянутые на видимых формах проекта. Три объекта DBNavigator осуществляют управление записями в таблицах Сегодня, Завтра, Послезавтра соответственно.


Итак, в самом начале работы проекта срабатывает процедура кнопки Refresh. Именно она производит обновление данных в базе, связанное со сменой текущей даты. Данные планомерно переходят с Послезавтра на Завтра, с Завтра на Сегодня. И так происходит при каждой смене текущей даты. Процедура этой кнопки предусматривает 4 варианта:
) когда текущая дата равна дате Сегодня, то фактически обновления не происходит;
2) когда текущая дата равна дате Завтра, то данные из таблицы Завтра переходят в таблицу Сегодня, из таблицы Послезавтра - в Завтра, а в таблице Послезавтра заносятся полные наборы билетов;
) когда текущая дата равна дате Послезавтра, то данные из таблицы Послезавтра переходят в таблицу Сегодня, а в таблицах Завтра и Послезавтра заносятся полные наборы билетов;
) когда текущая дата не равна ни одной дате в таблицах, то просто заносятся полные наборы билетов во все 3 таблицы.
Важно заметить, что перед отображением главной формы выдаётся служебное сообщение, о том что база обновлена или нуждается в обновлении.

procedure TForm6. Button1Click (Sender: TObject);


// Процедура для обновления данных в базе
var str: string;, y, z,n: integer;
dt: tdatetime;: =date;: =0;. ADOTable1. First;datamodule2. ADOTable1. Eof<> true do: =n+1;. ADOTable1. Next;;
{showmessage (inttostr (n)); }. ADOTable1. First;datetostr (dt) =datamodule2. ADOTable1DSDesigner. Text then('база обновлена');if datetostr (dt) =datamodule2. ADOTable2DSDesigner. Text then('база нуждается в обновлении сегодня это вчера');: = Date+2;. BtnClick (nbFirst);. BtnClick (nbFirst);. BtnClick (nbFirst);x: = 1 to n do. BtnClick (nbDelete);. BtnClick (nbInsert);: = DBEdit2. Text;. Text: = str;: = DBEdit5. Text;. Text: = str;: = DBEdit8. Text;(str,1,11);
{showmessage (str); }. Text: = str;: = DBEdit11. Text;. Text: = str;: = DBEdit14. Text;. Text: = str;. BtnClick (nbPost);. BtnClick (nbFirst);. BtnClick (nbNext);;. BtnClick (nbfirst);. BtnClick (nbfirst);y: = 1 to n do. BtnClick (nbDelete);. BtnClick (nbInsert);: = DBEdit3. Text;. Text: = str;: = DBEdit6. Text;. Text: = str;: = DBEdit9. Text;(str,1,11);. Text: = str;: = DBEdit12. Text;. Text: = str;: = DBEdit15. Text;. Text: = str;. BtnClick (nbPost);. BtnClick (nbFirst);. BtnClick (nbNext);;. BtnClick (nbfirst);. BtnClick (nbfirst);z: = 1 to n do. BtnClick (nbDelete);. BtnClick (nbInsert);: = DateToStr (Dt);. Text: = str;: = DBEdit5. Text;. Text: = str;: = DBEdit8. Text;(str,1,11);. Text: = str;: ='70';. Text: = str;: ='40';. Text: = str;. BtnClick (nbPost);. BtnClick (nbFirst);. BtnClick (nbNext);;if datetostr (dt) =datamodule2. ADOTable3DSDesigner. Text then('база нуждается в обновлении сегодня это позавчера');. BtnClick (nbFirst);. BtnClick (nbFirst);. BtnClick (nbFirst);x: = 1 to n do. BtnClick (nbDelete);. BtnClick (nbInsert);: = DBEdit3. Text;. Text: = str;: = DBEdit6. Text;. Text: = str;: = DBEdit9. Text;(str,1,11);. Text: = str;: = DBEdit12. Text;. Text: = str;: = DBEdit15. Text;. Text: = str;. BtnClick (nbPost);. BtnClick (nbFirst);. BtnClick (nbNext);;. BtnClick (nbfirst);. BtnClick (nbfirst);: =dt+1;y: = 1 to n do. BtnClick (nbDelete);. BtnClick (nbInsert);: = DateToStr (Dt);. Text: = str;: = DBEdit4. Text;. Text: = str;: = DBEdit7. Text;(str,1,11);. Text: = str;: ='70';. Text: = str;: ='40';. Text: = str;. BtnClick (nbPost);. BtnClick (nbFirst);. BtnClick (nbNext);;. BtnClick (nbfirst);. BtnClick (nbfirst);: =dt+1;z: = 1 to n do. BtnClick (nbDelete);. BtnClick (nbInsert);: = DateToStr (Dt);. Text: = str;: = DBEdit5. Text;. Text: = str;: = DBEdit8. Text;(str,1,11);. Text: = str;: ='70';. Text: = str;: ='40';. Text: = str;. BtnClick (nbPost);. BtnClick (nbFirst);. BtnClick (nbNext);;
showmessage ('база нуждается в обновлении');
nav. BtnClick (nbFirst);
nav1. BtnClick (nbFirst);
nav2. BtnClick (nbFirst);x: = 1 to n do. BtnClick (nbDelete);. BtnClick (nbInsert);: = datetostr (dt);. Text: = str;: = DBEdit5. Text;. Text: = str;: = DBEdit8. Text;(str,1,11);. Text: = str;: ='70';. Text: = str;: ='40';. Text: = str;. BtnClick (nbPost);. BtnClick (nbFirst);. BtnClick (nbNext);;. BtnClick (nbfirst);. BtnClick (nbfirst);: =dt+1;y: = 1 to n do. BtnClick (nbDelete);. BtnClick (nbInsert);: = DateToStr (Dt);. Text: = str;: = DBEdit4. Text;. Text: = str;: = DBEdit7. Text;(str,1,11);. Text: = str;: ='70';. Text: = str;: ='40';. Text: = str;. BtnClick (nbPost);. BtnClick (nbFirst);. BtnClick (nbNext);;. BtnClick (nbfirst);. BtnClick (nbfirst);: =dt+1;z: = 1 to n do. BtnClick (nbDelete);. BtnClick (nbInsert);: = DateToStr (Dt);. Text: = str;: = DBEdit5. Text;. Text: = str;: = DBEdit8. Text;(str,1,11);. Text: = str;: ='70';. Text: = str;: ='40';. Text: = str;. BtnClick (nbPost);. BtnClick (nbFirst);. BtnClick (nbNext);;;;

Кнопка - 1 Билет на форме осуществляет запись данных в базу после того как произошла операция продажи билета. Она ищет по дате и номеру рейса в базе данных соответствующую запись, затем проверяет остатки билетов. И если их достаточно, то она вычитает 1 билет из остатка. А затем сохраняет изменения. Иначе выводит сообщение о том что билеты закончились.


procedure TForm6. Button2Click (Sender: TObject);


// Процедура записи данных после продажи билета
var str,d1,c1,c2,r: string;, y, z,n, c11,c22: integer;: tdatetime;
begin: =date;: =0;. ADOTable1. First;datamodule2. ADOTable1. Eof<> true do: =n+1;
datamodule2. ADOTable1. Next;;. ADOTable1. First;form1. edDate. Text=datamodule2. ADOTable1DSDesigner. Text then
{showmessage ('Нашел дату 1'); }. BtnClick (nbFirst);. BtnClick (nbFirst);x: =1 to n do: =dbedit1. Text;: =dbedit4. Text;: =dbedit10. Text;: =dbedit13. Text;. BtnClick (nbDelete);. BtnClick (nbInsert);. Text: =d1;. Text: =r;: =dbedit8. Text;. Text: =str;r=form1. cmbNumber. Text thenform7. rbNum1. Checked then: =strtoint (c1);: =c11-1;c11>0 then. Text: =inttostr (c11);('Продано');. Text: =c2;. dbeClass1. Text: =dbedit10. Text;. dbeClass2. Text: =dbedit13. Text;
showmessage ('Билеты первого класса закончились');
dbedit10. Text: =c1;. Text: =c2;. dbeClass1. Text: =dbedit10. Text;. dbeClass2. Text: =dbedit13. Text;. Close;;if form7. rbNum2. Checked then: =strtoint (c2);: =c22-1;c22>0 then. Text: =c1;. Text: =inttostr (c22);('Продано');. dbeClass1. Text: =dbedit10. Text;. dbeClass2. Text: =dbedit13. Text;('Билеты вторго класса закончились');
dbedit10. Text: =c1;. Text: =c2;. dbeClass1. Text: =dbedit10. Text;. dbeClass2. Text: =dbedit13. Text;. Close;;;. Text: =c1;. Text: =c2;;. BtnClick (nbPost);. BtnClick (nbFirst);. BtnClick (nbNext);;. Close;;form1. edDate. Text=datamodule2. ADOTable2DSDesigner. Text then
{showmessage ('Нашел дату 2'); }. BtnClick (nbFirst);. BtnClick (nbFirst);y: =1 to n do: =dbedit2. Text;: =dbedit5. Text;: =dbedit11. Text;: =dbedit14. Text;. BtnClick (nbDelete);. BtnClick (nbInsert);. Text: =d1;. Text: =r;: =dbedit9. Text;. Text: =str;r=form1. cmbNumber. Text thenform7. rbNum1. Checked then: =strtoint (c1);: =c11-1;c11>0 then. Text: =inttostr (c11);('Продано');. Text: =c2;. dbeClass1. Text: =dbedit11. Text;. dbeClass2. Text: =dbedit14. Text;
showmessage ('Билеты первого класса закончились');
dbedit11. Text: =c1;. Text: =c2;. dbeClass1. Text: =dbedit11. Text;. dbeClass2. Text: =dbedit14. Text;. Close;;if form7. rbNum2. Checked then: =strtoint (c2);: =c22-1;c22>0 then. Text: =c1;. Text: =inttostr (c22);('Продано');. dbeClass1. Text: =dbedit11. Text;. dbeClass2. Text: =dbedit14. Text;('Билеты второго класса закончились');
dbedit11. Text: =c1;. Text: =c2;. dbeClass1. Text: =dbedit11. Text;. dbeClass2. Text: =dbedit14. Text;. Close;;;. Text: =c1;. Text: =c2;;. BtnClick (nbPost);. BtnClick (nbFirst);. BtnClick (nbNext);;. Close;;form1. edDate. Text=datamodule2. ADOTable3DSDesigner. Text then
{showmessage ('Нашел дату 3'); }. BtnClick (nbFirst);. BtnClick (nbFirst);z: =1 to n do: =dbedit3. Text;: =dbedit6. Text;: =dbedit12. Text;: =dbedit15. Text;. BtnClick (nbDelete);. BtnClick (nbInsert);. Text: =d1;. Text: =r;: =dbedit8. Text;. Text: =str;r=form1. cmbNumber. Text thenform7. rbNum1. Checked then: =strtoint (c1);: =c11-1;c11>0 then. Text: =inttostr (c11);('Продано');. Text: =c2;. dbeClass1. Text: =dbedit12. Text;. dbeClass2. Text: =dbedit15. Text;
showmessage ('Билеты первого класса закончились');
dbedit12. Text: =c1;. Text: =c2;. dbeClass1. Text: =dbedit12. Text;. dbeClass2. Text: =dbedit15. Text;. Close;;if form7. rbNum2. Checked then: =strtoint (c2);: =c22-1;c22>0 then. Text: =c1;. Text: =inttostr (c22);('Продано');. dbeClass1. Text: =dbedit12. Text;. dbeClass2. Text: =dbedit15. Text;('Билеты второго класса закончились');
dbedit12. Text: =c1;. Text: =c2;. dbeClass1. Text: =dbedit12. Text;. dbeClass2. Text: =dbedit15. Text;. Close;;;. Text: =c1;. Text: =c2;;. BtnClick (nbPost);. BtnClick (nbFirst);. BtnClick (nbNext);;. Close;;;

Кнопка +1Билет служит для занесения изменений в базу данных после проведения операции возврата билета. Её процедура действует аналогично предыдущей, но работает условие не превышения количества билетов 70 и 40 в первом и втором классах соответственно, несоблюдение которого приводит к отображению сообщения о том, что все билеты на данный рейс уже сданы. В отличие от предыдущей процедуры здесь идёт увеличение остатков на 1 билет.


procedure TForm6. Button3Click (Sender: TObject);


// Процедура записи данных после возврата билета
var str,d1,c1,c2,r: string;, y, z,n, c11,c22: integer;: tdatetime;
begin: =date;: =0;. ADOTable1. First;datamodule2. ADOTable1. Eof<> true do: =n+1;
datamodule2. ADOTable1. Next;;. ADOTable1. First;form1. edDate. Text=datamodule2. ADOTable1DSDesigner. Text then
{showmessage ('Нашел дату 1'); }. BtnClick (nbFirst);. BtnClick (nbFirst);x: =1 to n do: =dbedit1. Text;: =dbedit4. Text;: =dbedit10. Text;: =dbedit13. Text;. BtnClick (nbDelete);. BtnClick (nbInsert);. Text: =d1;. Text: =r;: =dbedit8. Text;. Text: =str;r=form1. cmbNumber. Text thenform7. rbNum1. Checked then: =strtoint (c1);: =c11+1;c11<=70 then. Text: =inttostr (c11);('Сдано');. Text: =c2;. dbeClass1. Text: =dbedit10. Text;. dbeClass2. Text: =dbedit13. Text;
showmessage ('Сданы все билеты первого класса');
dbedit10. Text: =c1;. Text: =c2;. dbeClass1. Text: =dbedit10. Text;. dbeClass2. Text: =dbedit13. Text;. Close;;if form7. rbNum2. Checked then: =strtoint (c2);: =c22+1;c22<=40 then. Text: =c1;. Text: =inttostr (c22);('Сдано');. dbeClass1. Text: =dbedit10. Text;. dbeClass2. Text: =dbedit13. Text;('Сданы все билеты вторго класса ');
dbedit10. Text: =c1;. Text: =c2;. dbeClass1. Text: =dbedit10. Text;. dbeClass2. Text: =dbedit13. Text;. Close;;;. Text: =c1;. Text: =c2;;. BtnClick (nbPost);. BtnClick (nbFirst);. BtnClick (nbNext);;. Close;;form1. edDate. Text=datamodule2. ADOTable2DSDesigner. Text then
{showmessage ('Нашел дату 2'); }. BtnClick (nbFirst);. BtnClick (nbFirst);y: =1 to n do: =dbedit2. Text;: =dbedit5. Text;: =dbedit11. Text;: =dbedit14. Text;. BtnClick (nbDelete);. BtnClick (nbInsert);. Text: =d1;. Text: =r;: =dbedit9. Text;. Text: =str;r=form1. cmbNumber. Text thenform7. rbNum1. Checked then: =strtoint (c1);: =c11+1;c11<=70 then. Text: =inttostr (c11);('Сдано');. Text: =c2;. dbeClass1. Text: =dbedit11. Text;. dbeClass2. Text: =dbedit14. Text;
showmessage ('Сданы все билеты первого класса');
dbedit11. Text: =c1;. Text: =c2;. dbeClass1. Text: =dbedit11. Text;. dbeClass2. Text: =dbedit14. Text;. Close;;if form7. rbNum2. Checked then: =strtoint (c2);: =c22+1;c22<=40 then. Text: =c1;. Text: =inttostr (c22);('Сдано');. dbeClass1. Text: =dbedit11. Text;. dbeClass2. Text: =dbedit14. Text;('Сданы все билеты второго класса');
dbedit11. Text: =c1;. Text: =c2;. dbeClass1. Text: =dbedit11. Text;. dbeClass2. Text: =dbedit14. Text;. Close;;;. Text: =c1;. Text: =c2;;. BtnClick (nbPost);. BtnClick (nbFirst);. BtnClick (nbNext);;. Close;;form1. edDate. Text=datamodule2. ADOTable3DSDesigner. Text then
{showmessage ('Нашел дату 3'); }. BtnClick (nbFirst);. BtnClick (nbFirst);z: =1 to n do: =dbedit3. Text;: =dbedit6. Text;: =dbedit12. Text;: =dbedit15. Text;. BtnClick (nbDelete);. BtnClick (nbInsert);. Text: =d1;. Text: =r;: =dbedit8. Text;. Text: =str;r=form1. cmbNumber. Text thenform7. rbNum1. Checked then: =strtoint (c1);: =c11+1;c11<=70 then. Text: =inttostr (c11);('Сдано');. Text: =c2;. dbeClass1. Text: =dbedit12. Text;. dbeClass2. Text: =dbedit15. Text;
showmessage ('Сданы все билеты первого класса');
dbedit12. Text: =c1;. Text: =c2;. dbeClass1. Text: =dbedit12. Text;. dbeClass2. Text: =dbedit15. Text;. Close;;if form7. rbNum2. Checked then: =strtoint (c2);: =c22+1;c22<=40 then. Text: =c1;. Text: =inttostr (c22);('Сдано');. dbeClass1. Text: =dbedit12. Text;. dbeClass2. Text: =dbedit15. Text;('Сданы все билеты второго класса');
dbedit12. Text: =c1;. Text: =c2;. dbeClass1. Text: =dbedit12. Text;. dbeClass2. Text: =dbedit15. Text;. Close;;;. Text: =c1;. Text: =c2;;. BtnClick (nbPost);. BtnClick (nbFirst);. BtnClick (nbNext);;. Close;;;
Кнопка Добавить рейс добавляет в каждую из трёх таблиц новую запись с полями из формы Редактор рейсов.
procedure TForm6. Button4Click (Sender: TObject);
// Процедура добавления нового рейсаstr: string;
dt: tdatetime;: =date;. BtnClick (nbInsert);. Text: =datetostr (dt);: =form8. edNomer. text;. Text: =str;: =form8. edVrem. text;. Text: =str;: ='70';. Text: =str;: ='40';. Text: =str;. BtnClick (nbPost);: =dt+1;. BtnClick (nbInsert);. Text: =datetostr (dt);: =form8. edNomer. text;. Text: =str;: =form8. edVrem. text;. Text: =str;: ='70';. Text: =str;: ='40';. Text: =str;. BtnClick (nbPost);: =dt+1;. BtnClick (nbInsert);. Text: =datetostr (dt);: =form8. edNomer. text;. Text: =str;: =form8. edVrem. text;. Text: =str;: ='70';. Text: =str;: ='40';. Text: =str;. BtnClick (nbPost);('Новый рейс внесён в базу данных');
form8. Close;;
Кнопка Удалить рейс ищет в каждой из трёх таблиц базы номер рейса, указанного на форме Редактор рейсов и удаляет соответствующую запись.
procedure TForm6. Button5Click (Sender: TObject);
// Процедура удаления рейса из базыnom: string;
x, y, z,n: integer;
n: =0;: =form8. edNomer. Text;
datamodule2. ADOTable1. First;datamodule2. ADOTable1. Eof<> true do: =n+1;. ADOTable1. Next;;. BtnClick (nbFirst);x: =1 to n dodbedit4. Text=nom then. BtnClick (nbDelete);('Рейс удалён');. BtnClick (nbNext);. btnClick (nbNext);;;. BtnClick (nbFirst);y: =1 to n dodbedit5. text=nom then. btnClick (nbdelete);. BtnClick (nbNext);. btnClick (nbNext);;;. BtnClick (nbFirst);y: =1 to n dodbedit6. text=nom then. btnClick (nbdelete);. BtnClick (nbNext);. btnClick (nbNext);;;. Close;;



Download 18,25 Mb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©www.hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish