- •Пояснительная записка к курсовому проекту
- •Г. Иваново, 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.5. Подбор путевки по параметрам.
Этот пункт меню позволяет провести анализ всех имеющихся туристических маршрутов и вывести в таблицу только те, цена которых находится в заданных пределах.
Выбор страны для подбора маршрута производится из ниспадающего списка. Нижняя и верхняя границы цен вводятся в текстовые поля. При нажатии кнопки ОК вызывается процедура модуля данных, которая инициирует выполнение соответствующего запроса.
//процедура главной формы
procedure TForm2.btOKClick(Sender: TObject);
begin
DataModule1.SelectPass(edMinPrice.text, edMaxPrice.text,
AnsiUpperCase(countryname.Text));
end;
//процедура модуля данных
procedure TDataModule1.SelectPass(MinPrice, MaxPrice:STRING; countryname: string);
begin
qSelectPass.Active:=False;
qSelectPass.ParamByName
('CountryName').AsString := countryname;
qSelectPass.ParamByName
('MinPrice').AsInteger:= sTRtOiNT(MinPrice);
qSelectPass.ParamByName
('MaxPrice').AsInteger:= StrToInt(MaxPrice);
DataModule1.qSelectPass.Active:= True;
end;
Код SQL-запроса:
select routecode,duration, route.price, hotel.name as HotelName, sity
from route join country on route.COUNTRYCODE=country.COUNTRYCODE
join hotel on route.HOTELCODE=hotel.HOTELCODE
where country.name = :countryname and route.price between :minprice and :maxprice
Результат выполнения:
1.4.6.Анализ работы фирмы.
Анализ работы фирмы включает две возможности: расчет динамики доходов фирмы и анализ продаж. Вкладка для расчета динамики доходов имеет следующий вид:
Для построения графика динамики нужно задать год, данные о котором требуется проанализировать. В таблице можно будет увидеть данные по которым будет построен график. Сам график доходов представляет собой линейную диаграмму, по осям которой отложены прибыль и месяцы.
//процедура главной формы
procedure TForm2.btOKanalisClick(Sender: TObject);
begin
with Chart1.Series[0] do
begin
clear;
DataModule1.ProfitDinamic(edYear.text);
DataModule1.qProfitDinamic.First;
while not (DataModule1.qProfitDinamic.Eof) do
begin
AddY(StrToFloat(DataModule1.qProfitDinamic.FieldValues['profit'],
DataModule1.qProfitDinamic.FieldValues['mesyac']);
DataModule1.qProfitDinamic.Next;
end;
end;
end;
//процедура модуля данных
procedure TDataModule1.ProfitDinamic (yearAnalysis: string);
begin
qProfitDinamic.Active:=False;
qProfitDinamic.ParamByName ('YearAnalysis').AsInteger := StrToInt(yearAnalysis);
DataModule1.qProfitDinamic.Active:=True;
end;
Код SQL-запроса:
select extract(month from DATEOFSAIL) mesyac, sum (Profit) profit
from PROFIT
where extract (year from dateofsail)=:yearAnalysis
group by extract(month from DATEOFSAIL)
Для построения графика динамики нужно задать год, данные о котором требуется проанализировать. В таблице можно будет увидеть данные по которым будет построен график. Сам график доходов представляет собой линейную диаграмму, по осям которой отложены прибыль и месяцы.
//процедура главной формы
procedure TForm2.btOKanalisClick(Sender: TObject);
begin
with Chart1.Series[0] do
begin
clear;
DataModule1.ProfitDinamic(edYear.text);
DataModule1.qProfitDinamic.First;
while not (DataModule1.qProfitDinamic.Eof) do
begin
AddY(StrToFloat(DataModule1.qProfitDinamic.FieldValues['profit'],
DataModule1.qProfitDinamic.FieldValues['mesyac']);
DataModule1.qProfitDinamic.Next;
end;
end;
end;
//процедура модуля данных
procedure TDataModule1.ProfitDinamic (yearAnalysis: string);
begin
qProfitDinamic.Active:=False;
qProfitDinamic.ParamByName ('YearAnalysis').AsInteger := StrToInt(yearAnalysis);
DataModule1.qProfitDinamic.Active:=True;
end;
Код SQL-запроса:
select extract(month from DATEOFSAIL) mesyac, sum (Profit) profit
from PROFIT
where extract (year from dateofsail)=:yearAnalysis
group by extract(month from DATEOFSAIL)
Пункт меню «Анализ продаж» позволяет оценить размер накопленной каждым клиентом стоимости. Выполнение этой функции доступно в двух вариантах: вывод данных в таблицу и формирование отчета. Общий вид вкладки для этого пункта меню представлен ниже.
В текстовом поле нужно задать год, за который будут выведены продажи. При нажатии на кнопку ОК полученные данные будут сформированы в таблицу, при нажатии на кнопку Напечатать отчет данные будут выведены в виде отчета.
//процедура главной формы для кнопки ОК
procedure TForm2.btOKReportClick(Sender: TObject);
begin
DataModule1.SailAnalysis(edYearReport.Text);
end;
//процедура главной формы для кнопки Напечатать отчет
procedure TForm2.btPrintReportClick(Sender: TObject);
begin
DataModule1.SailAnalysis(edYearReport.Text);
Form1.QRLabel3.Caption := edYearReport.Text;
Form1.QuickRep1.Preview;
end;
//процедура модуля данных
procedure TDataModule1.SailAnalysis (YearCode:string);
begin
qSailAnalysis.Active := False;
qSailAnalysis.ParamByName('YearCode').AsInteger := StrToInt(YearCode);
DataModule1.qSailAnalysis.Active := True;
end;
Код SQL-запроса:
select FIO, sum(QUANTITY)quantity, sum(COST)cost
from PASS join client on pass.CLIENTCODE=client.CLIENTCODE
join profit on pass.CODEOFPASS=profit.CODEOFPASS
where extract(year from DATEOFSAIL) = :YearCode
group by fio
Запрос позволяет выбрать данные для построения отчета: ФИО клиента, количество купленных этим клиентом путевок и их общая стоимость. Анализ данных производится за год. Анализируемый год :YearCode запрос получает из приложения.
Вид отчета в режиме конструктора:
Результат выполнения:
Пример построения отчета: