
- •Пояснительная записка к курсовому проекту
- •Г. Иваново, 2009г. Содержание
- •Задание на курсовой проект
- •Введение
- •1.1. Анализ предметной области.
- •1.2. Структура базы данных.
- •1.3. Содержимое заполненных таблиц.
- •1.4. Иас «Туристическая фирма»
- •1.4.1. Меню соединения с базой данных.
- •1.4.2. Главное меню приложения.
- •1.4.3. Справочники.
- •1.4.4. Регистрация новой путевки.
- •1.4.5. Подбор путевки по параметрам.
- •1.4.6.Анализ работы фирмы.
- •1.4.7. Справки по проданным путевкам.
- •1.4.8. Общие сведения.
- •Заключение
- •Список используемой литературы
1.4.7. Справки по проданным путевкам.
Этот пункт меню дает пользователю возможность узнать различную справочную информацию. Он имеет два подменю: маршруты, купленные на заданный период и самые активные клиенты.
Первый подпункт позволяет выбрать все маршруты, купленные на заданный период. Вкладка с примером выполнения запроса имеет вид:
В текстовых полях необходимо задать месяц и год начала и конца периода. При нажатии кнопки ОК вызывается процедура главной формы и формируется таблица полученных данных.
//процедура главной формы
procedure TForm2.dbedCodeChange(Sender: TObject);
begin
DataModule1.PassClientCode (lcbFio.Text);
end;
//процедура модуля данных
procedure TDataModule1.PassClientCode (FIO:string);
begin
qPassClientCode.Active:=False;
qPassClientCode.ParamByName ('FIO').AsString:=Fio;
DataModule1.qPassClientcode.Active:=True;
end;
Код SQL-запроса:
select clientcode, quantity, pass.departuredate, DURATION, pass.RouteCode
from ROUTE inner join pass on route.ROUTECODE=pass.ROUTECODE
where pass.departuredate between :StartDate and :EndDate
Запрос выполняет поиск маршрутов тех путевок и вывод данных по ним, дата отправления которых лежит в интервале между двумя значениями :startdate и :enddate. Значения этих параметров задаются в приложении в соответствующих полях.
Подпункт меню «Самые активные клиенты» позволяет пользователю ИАС выявить в списке зарегистрированных клиентов тех, которые имеют наибольшую накопленную стоимость купленных путевок за год.
Для определения самого активного клиента требуется ввести год, за который нужно проанализировать данные и нажать кнопку ОК. При нажатии кнопки вызывается процедура главной формы и сведения, возвращенные соответствующим запросом, сформировываются в таблицу.
//процедура главной формы
procedure TForm2.btOkKlientClick(Sender: TObject);
begin
DataModule1.CoolClient(edYearClient.text);
end;
//процедура модуля данных
procedure TDataModule1.CoolClient (year: string);
begin
qCoolClient.Active:=False;
qCoolClient.ParamByName ('Year').AsInteger:=StrToInt(Year);
DataModule1.qCoolClient.Active:=True;
end;
Код SQL-запроса:
select pass.CLIENTCODE, c.Fio, SUM(PROFIT.COST) AS Summa
from CLIENT c inner join PASS on c.CLIENTCODE = pass.CLIENTCODE
join PROFIT on PASS.CODEOFPASS = PROFIT.CODEOFPASS
where extract(year from profit.DATEOFSAIL)=:year
group by pass.CLIENTCODE, c.fio
HAVING (SUM(PROFIT.COST) = (select max(Summa) from
(select pass.CLIENTCODE, SUM(PROFIT.COST) AS Summa
from PASS join PROFIT on PASS.CODEOFPASS = PROFIT.CODEOFPASS
GROUP BY pass.CLIENTCODE) as tmp))
Запрос вывод краткую информацию о кленте (КодКлиента и ФИО), имеющего максимальную накопленную стоимость путевок, а также сумму купленных этим клиентом путевок. При выполнении запроса анализируются данные за один год. Значение переменной :year вводится из приложения. Внешний вид формы с примером выполнения запроса имеет вид:
1.4.8. Общие сведения.
Этот пункт меню предназначен для отображения общей информации по используемым таблицам. Он включает два функциональных раздела: Дорогие и дешевые путевки и Клиенты, не имеющие скидок.
Первый раздел представляет собой совокупность таблицы, поля для выбора страны и двух кнопок, позволяющих выбирать из имеющихся маршрутов дешевые и дорогие. Выбор страны осуществляется из ниспадающего списка. В зависимости от того, какая кнопка будет нажата, инициируется либо процедура выбора дешевых маршрутов, либо процедура выбора дорогих маршрутов. Таблица, в которую выводятся полученные данные, автоматически меняет DataSourse.
//процедура главной формы для выбора дешевых маршрутов
procedure TForm2.Button1Click(Sender: TObject);
begin
DBGrid10.DataSource:= DataModule1.dsourseDeshevie;
DBGrid10.Columns.Items[0].FieldName:='RouteCode';
DBGrid10.Columns.Items[1].FieldName:='Price';
DBGrid10.Columns.Items[0].Title.Caption:='Код маршрута';
DBGrid10.Columns.Items[1].Title.Caption:='Цена';
DataModule1.Deshevie(lcbCountryName.Text);
end;
//процедура главной формы для выбора дорогих путевок
procedure TForm2.Button2Click(Sender: TObject);
begin
DBGrid10.DataSource:= DataModule1.dsourseDorogie;
DBGrid10.Columns.Items[0].FieldName:='RouteCode';
DBGrid10.Columns.Items[1].FieldName:='Price';
DBGrid10.Columns.Items[0].Title.Caption:='Код маршрута';
DBGrid10.Columns.Items[1].Title.Caption:='Цена';
DataModule1.Dorogie(lcbCountryName.Text);
end;
В модуле данных им соответствуют две процедуры:
//на поиск дешевых путевок
procedure TDataModule1.Deshevie(name:string);
begin
qDeshevie.Active:=False;
qDeshevie.ParamByName('Name').AsString:=name;
DataModule1.qDeshevie.Active:=True;
end;
//на поиск дорогих путевок
procedure TDataModule1.Dorogie(name:string);
begin
qDorogie.Active:=False;
qDorogie.ParamByName('Name').AsString:=name;
DataModule1.qDorogie.Active:=True;
end;
Код SQL-запроса на поиск дешевых путевок:
select routecode, price
from ROUTE
where countrycode=
(select countrycode
from country
where name=:name) and
price<(select avg(price) from route
where countrycode=(select countrycode from country where name=:name ))
Код SQL-запроса на поиск дорогих путевок:
select routecode, price
from ROUTE
where countrycode=
(select countrycode
from country
where name=:name) and
price>(select avg(price) from route
where countrycode=(select countrycode from country where name=:name ))
Запрос работает по следующему правилу. Путевка считается дешевой, если ее стоимость ниже средней стоимости всех путевок в данную страну, и дорогой – если ее стоимость превышает среднюю по выбранной стране. Название страны запрос получает из приложения во внутреннюю переменную :name.
Вкладка с выполненным запросом для выбора дешевых путевок имеет вид:
Для выбора дорогих путевок:
В поле Клиенты, не имеющие скидок отображаются Код Клиента и ФИО тех клиентов, сумма скидки которых равна нулю. Таблица активируется при запуске приложения.
Код SQL-запроса:
select clientcode, fio
from CLIENT
where discountsum=0
Запрос выбирает тех клиентов, которые не имеют накопленной скидки.