Создание модели, показывающей результаты соревнований по лыжному забегу

Разработка электронной модели таблицы результатов соревнований по лыжному забегу с помощью объектно-ориентированный языка Паскаль. Схема связи главной формы с подчиненными формами. Разработка пользовательского интерфейса в среде программирования Delphi 7.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 21.01.2013
Размер файла 2,1 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Введение

Объектно-ориентированное программирование представляет собой метод программирования, который весьма близко напоминает наше поведение. Оно является естественной эволюцией более ранних нововведений в разработке языков программирования. Объектно-ориентированное программирование является более структурным, чем все предыдущие разработки, касающиеся структурного программирования. Оно также является более модульным и более абстрактным, чем предыдущие попытки абстрагирования данных и переноса деталей программирования на внутренний уровень. Объектно-ориентированный язык программирования характеризуется тремя основными свойствами:

1. Инкапсуляция. Комбинирование записей с процедурами и функциями, манипулирующими полями этих записей, формирует новый тип данных - объект.

2. Наследование. Определение объекта и его дальнейшее использование для построения иерархии порожденных объектов с возможностью для каждого порожденного объекта, относящегося к иерархии, доступа к коду и данным всех порождающих объектов.

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

В данной курсовой работе будет создана модель, показывающей результаты соревнований по лыжному забегу. Модель результатов соревнований даёт возможность работать с информацией, которая обычно хранится в таблице результатов соревнований, также она предоставляет возможность использовать ее в качестве модели, показывающей результаты по любому виду соревнований, включающие в себя время старта и время финиша (мотогонки, бег на различные дистанции, гонки на автомобилях и др.). Также программа позволяет работать с записями в таблице результатов, производить поиск по различным параметрам, добавлять, редактировать, удалять, просматривать данные. На главной форме имеется кнопка, по нажатию которой появляется диалоговое окно, здесь вам предлагают ввести фамилию интересующего вас лыжника, нажимаем на кнопку “OK” и в главной таблице появляется информации о спорстмене, которого вы искали.

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

Основная цель данной курсовой работы заключается в разработке программы, моделирующей таблицу результатов по лыжному забегу. Любой пользователь, имеющий доступ к данной программе может произвести поиск интересующего его спортсмена по фамилии и по ID. Так же должна предоставиться возможность разбить всю таблицу результатов на три возрастные категории( до 18, от 18 до 30 и старше 30) и, соответственно, определить чемпиона по каждой из них. Необходимо предоставить отчет по всей таблице и по запросам, а также предусмотреть возможность вывода на печать соответствующего отчета. Должно организовываться добавление информации по спорстменам в таблицу результатов, удаление и редактирование.

Требования к функциональным характеристикам

1.1 Система должна обеспечивать возможность выполнения следующих функций:

- инициализацию системы ;

- ввод, удаление и коррекцию текущей информации;

- получение сведений об участниках лыжного забега;

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

1.2 Результаты:

- поиск по ID;

- поиск по Фамилии, Имени;

- определение чемпиона выбранной возрастной группы;

- вывод на печать основной таблицы;

- вывод на печать запросов.

Вся информация находится в БД. Каждому полю таблицы соответствует свой подходящий для нее тип.

Разработка программы

Разрабатывается программа, представляющая модель таблицы результатов лыжного забега. Языком программирования был выбран объектно-ориентированный язык Паскаль. Для разработки пользовательского интерфейса выбрана среда программирования Delphi.

В данной работе будет использована одна таблица - Результаты соревнования по лыжному забегу. Для удобства работы все составляющие системы будут расположены на отдельных формах одного проекта, а переход из формы в главную форму будет производиться при выполнении некоторого условия или по какому-либо действию пользователя. База данных была разработана с помощью СУБД Paradox.

Работа программы будет основываться на формировании различных запросов к базе данных. Результаты всех запросов будут выводиться в одну таблицу DbGrid1 на форме, предназначенной для запросов.

Разработка пользовательского интерфейса

Пользовательский интерфейс проекта будет реализован с помощью среды программирования Delphi 7. Для представления базы на главной форме будет использоваться визуальный компонент для отображения базы данных DbGrid. Этот же визуальный компонент будет использоваться и для представления результатов всех запросов.

Для того чтобы иметь возможность импортировать данные из базы данных в Delphi 7 мы связали данные двух программм с помощью компонента Table, находящегося в закладке BDE. Основными его свойстами являются- DataBaseName, в котором мы выбираем созданный нами alias, и TableName, в котором мы выбираем созданную в Paradox'e таблицу.

Компонент DataSource предназначен для того, чтобы получить доступ к созданным нами таблицам. В этой курсовой работе компонент DataSource1 служит для организации доступа к таблице baza1.db, в которой хранится вся информация (свойство DataSet у него Table1).

Риc.1-Схема связи главной формы с подчиненными формами

Просмотр базы данных

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

Рис.2 - Компонент DBNavigator

Выбор информации из базы данных

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

Анализ работы программы

До момента открытия главной формы, перед пользователем появляется вспомогательная форма Password Dialog, которая требует от него ввести пароль, в случае правильно введенного пароля пользователю откроется основная форма, в противном случае, при неверном вводе пароля или нажатии кнопки «Отмена» производится выход из программы.

Рис.3-Форма ввода пароля

Рис.4-Главная форма проекта

Анализ работы программы произведем по результатам различных запросов.

В данной курсовой работе реализованы следующие запросы:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

3.Запрос по ID

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

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

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

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

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

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

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

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

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

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

Заключение

паскаль delphi электронный таблица

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

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

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

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

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

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

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

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

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

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

Приложение А. Листинги

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.

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.