Рис.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