Запрос по возрастной категории и определение чемпиона выбранной категории (выбор возрастной категории предоставлен на компоненте RadioGroup1).

Рис.5-Выбор возрастной категории

Например, при выборе категории «до 18 лет» в основной таблице произведтся поиск участников, чей возраст не достиг восемнадцати лет, также будет определен чемпион в данной категории путем сортировки по времени:

Рис.6-Выбор возрастной категории до 18 лет

Рис.7-Результат запроса

Как видно чемпион в данной категории является Сатиев Самир с минимальным временем финиша.

Запрос по оставшимся двум категориям выполняется аналогично.

Запрос по фамилии и имени участника лыжного забега.

При нажатии кнопки «Информация об участнике», расположенной на главной форме, перед пользователем появляется вспомогательное диалоговое окно(выборка информации из БД):

Рис.8- Выборка информации из БД

После ввода фамилии и имени интересующего вас участника лыжного забега:

Рис.9- Ввод фамилии и имени

в главной таблице появляется информации об этом участнике:

Рис.10- Результат запроса

Запрос по ID

На главной форме расположен компонент edit1, после введения ID участника необходимо нажать на кнопку «ОК» после чего выполнится запрос на поиск по введенному ID, пользователь получит информацию об участнике лыжного забега под этим номером:

Рис.11- Результат запроса

Отчет таблицы результатов

Рис.12-Вывод всех записей в отчет

Отчет запроса

Рис.13-Вывод запроса в отчет

В качестве примера вывода запроса в отчет был взят запрос по выбору возрастной категории «до 18 лет».

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

В данной программе пользователю предоставляется возможность вывести любой отчет на печать по нажатию кнопок:

Рис.14-Отправка отчета на печать

Заключение

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

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

При выполнении курсовой работы были изучены технологии связывания Paradox со средой программирования Delphi, приемы создания различных меню для проекта, построение простейших SQL-запросов и построение отчетов при использовании компонента QuickReport.

Приложение А

Листинги

Unit1

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, DB, DBTables, ExtCtrls, DBCtrls, Grids, DBGrids, StdCtrls,

DBClient,MyWord, jpeg;

type

TForm1 = class(TForm)

DBGrid1: TDBGrid;

DBNavigator1: TDBNavigator;

Table1: TTable;

Query1: TQuery;

DataSource1: TDataSource;

Button1: TButton;

RadioGroup1: TRadioGroup;

Button2: TButton;

Button3: TButton;

Timer1: TTimer;

Button4: TButton;

Button5: TButton;

Button6: TButton;

Button7: TButton;

Edit1: TEdit;

Button8: TButton;

Button9: TButton;

Image1: TImage;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

procedure Button1Click(Sender: TObject);

procedure RadioGroup1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure FormShow(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure Timer1Timer(Sender: TObject);

procedure Button4Click(Sender: TObject);

procedure Button5Click(Sender: TObject);

procedure Button6Click(Sender: TObject);

procedure Button8Click(Sender: TObject);

procedure Button9Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

uses Unit2, Unit3, Unit4;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

begin

close;

end;

procedure TForm1.RadioGroup1Click(Sender: TObject);

begin

Table1.Filtered:=not(RadioGroup1.ItemIndex=3);

case RadioGroup1.ItemIndex of

0:begin

with query1 do begin

close;

SQL.Clear;

SQL.Add('SELECT ID,FIO,Vozrast,Start,Finish');

SQL.Add('FROM ":papa:baza1.db"');

SQL.Add('WHERE Vozrast<18');

SQL.Add('ORDER by Finish');

open;

if RecordCount<>0

then DataSource1.DataSet:=Query1

else ShowMessage('В БД нет записей, удовлетворяющих'+#13+'критерию запроса.');

end;

end;

1:begin

with query1 do begin

close;

SQL.Clear;

SQL.Add('SELECT ID,FIO,Vozrast,Start,Finish');

SQL.Add('FROM ":papa:baza1.db"');

SQL.Add('WHERE Vozrast>=18 and Vozrast<30');

SQL.Add('ORDER by Finish');

open;

if RecordCount<>0

then DataSource1.DataSet:=Query1

else ShowMessage('В БД нет записей, удовлетворяющих'+#13+'критерию запроса.');

end;

end;

2:begin

with query1 do begin

close;

SQL.Clear;

SQL.Add('SELECT ID,FIO,Vozrast,Start,Finish');

SQL.Add('FROM ":papa:baza1.db"');

SQL.Add('WHERE Vozrast>30');

SQL.Add('ORDER by Finish');

open;

if RecordCount<>0

then DataSource1.DataSet:=Query1

else ShowMessage('В БД нет записей, удовлетворяющих'+#13+'критерию запроса.');

end;

end;

end;

end;

procedure TForm1.Button2Click(Sender: TObject);

var buf:string[30];

begin

buf:=InputBox('Выборка информации из БД',

'Введите фамилию,имя и щелкните ОК','');

if buf = '' then exit;

with query1 do begin

close;

sql.Clear;

sql.Add('select *');

sql.Add('from ":papa:baza1.db"');

sql.Add('where');

sql.Add('(FIO="' + buf +'")');

open;

if recordcount<>0 then

datasource1.DataSet:=query1 else

ShowMessage(''В БД нет записей, удовлетворяющих'+#13+'критерию запроса.'.');

end;

end;

procedure TForm1.FormShow(Sender: TObject);

begin

PasswordDlg.showmodal;

end;

procedure TForm1.Button3Click(Sender: TObject);

var table:integer;

begin

if CreateWord then begin

VisibleWord(false);

AddDoc;

Table1.DisableControls;

WordTableAddFromDBGrid(DBGrid1,true,table);

VisibleWord(true);

Table1.EnableControls;

end;

end;

procedure TForm1.Timer1Timer(Sender: TObject);

begin

Label1.Caption := 'ТАБЛИЦА РЕЗУЛЬТАТОВ СОРЕВНОВАНИЙ ПО ЛЫЖНОМУ ЗАБЕГУ';

if Label1.Visible then

Label1.Visible:=False

else

Label1.Visible:=True;

randomize;

Label1.Font.Color := clBlue;

end;

procedure TForm1.Button4Click(Sender: TObject);

begin

Form3.QuickRep1.Preview;

end;

procedure TForm1.Button5Click(Sender: TObject);

begin

Form3.QuickRep1.Print;

end;

procedure TForm1.Button6Click(Sender: TObject);

begin

Form4.QuickRep1.Preview;

end;

procedure TForm1.Button8Click(Sender: TObject);

begin

if edit1.Text <> ''

then

begin

with form1.Query1 do begin

Close;

SQL.Clear;

SQL.Add('SELECT ID,FIO,Vozrast,Start,Finish');

SQL.Add('FROM ":papa:baza1.db"');

SQL.Add('WHERE');

SQL.Add('(ID= "'+ edit1.Text + '")');

Open;

end;

if Query1.RecordCount <> 0 then

DataSource1.DataSet:=Query1

else begin

ShowMessage(''В БД нет записей, удовлетворяющих'+#13+'критерию запроса.'');

DataSource1.DataSet:=Table1;

end;

end;

end;

procedure TForm1.Button9Click(Sender: TObject);

begin

begin

with query1 do begin

close;

SQL.Clear;

SQL.Add('SELECT ID,FIO,Vozrast,Start,Finish');

SQL.Add('FROM ":papa:baza1.db"');

SQL.Add('ORDER by ID');

open;

if RecordCount<>0

then DataSource1.DataSet:=Query1

else ShowMessage(''В БД нет записей, удовлетворяющих'+#13+'критерию запроса.'');

end;

end;

end;

end.

Unit3

unit Unit3;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, QRCtrls, DB, DBTables, QuickRpt, ExtCtrls;

type

TForm3 = class(TForm)

QuickRep1: TQuickRep;

QRBand1: TQRBand;

QRBand2: TQRBand;

QRDBText1: TQRDBText;

QRDBText2: TQRDBText;

QRDBText3: TQRDBText;

QRDBText4: TQRDBText;

QRDBText5: TQRDBText;

QRLabel1: TQRLabel;

QRLabel2: TQRLabel;

QRLabel3: TQRLabel;

QRLabel4: TQRLabel;

QRLabel5: TQRLabel;

QRLabel6: TQRLabel;

QRSysData1: TQRSysData;

procedure FormCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form3: TForm3;

implementation

uses unit1;

{$R *.dfm}

procedure TForm3.FormCreate(Sender: TObject);

begin

QRDBText1.DataSet:=Form1.Table1;

QRDBText2.DataSet:=Form1.Table1;

QRDBText3.DataSet:=Form1.Table1;

QRDBText4.DataSet:=Form1.Table1;

QRDBText5.DataSet:=Form1.Table1;

QRDBText1.DataField:='ID';

QRDBText2.DataField:='FIO';

QRDBText3.DataField:='Vozrast';

QRDBText4.DataField:='Start';

QRDBText5.DataField:='Finish';

end;

end.

Unit4

unit Unit4;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, QRCtrls, QuickRpt, ExtCtrls;

type

TForm4 = class(TForm)

QuickRep1: TQuickRep;

QRLabel1: TQRLabel;

QRBand1: TQRBand;

QRLabel2: TQRLabel;

QRLabel3: TQRLabel;

QRLabel4: TQRLabel;

QRLabel5: TQRLabel;

QRLabel6: TQRLabel;

QRBand2: TQRBand;

QRDBText1: TQRDBText;

QRDBText2: TQRDBText;

QRDBText3: TQRDBText;

QRDBText4: TQRDBText;

QRDBText5: TQRDBText;

QRSysData1: TQRSysData;

procedure FormCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form4: TForm4;

implementation

uses unit1;

{$R *.dfm}

procedure TForm4.FormCreate(Sender: TObject);

begin

QRDBText1.DataSet:=Form1.Query1;

QRDBText2.DataSet:=Form1.Query1;

QRDBText3.DataSet:=Form1.Query1;

QRDBText4.DataSet:=Form1.Query1;

QRDBText5.DataSet:=Form1.Query1;

QRDBText1.DataField:='ID';

QRDBText2.DataField:='FIO';

QRDBText3.DataField:='Vozrast';

QRDBText4.DataField:='Start';

QRDBText5.DataField:='Finish';

end;

end.

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

1. Желонкин А. В. Основы программирования в интегрированной среде DELPHI. Практикум. – М.: БИНОМ, 2006.

2. Жуков А. Изучаем Delphi. – М. : Питер, 2002.

3. Фленов М. Библия Delphi.- СПб.: БХВ – Петербург, 2008.

4. Культин Н. С++ Builder в задачах и примерах.- СПб.: БХВ-Петербург, 2005.

5. Культин Н. Б. Основы программирования в Delphi 7, БХВ-Петербург, Санкт-Петербург 2003

6. Шпак Ю. А. Delphi 7 на примерах, Издательство Юниор, Киев 2003

Наши рекомендации