Разработка базы данных "Спортсмены"

Автоматизация доступа к информации о спортсменах. Изучение основных параметров информационной системы. Принципы построения пользовательского интерфейса. Проектирование базы данных с использованием языка программирования в среде разработки Delphi 7.

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

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

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

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

51

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

Западно-Казахстанский Инженерно-Гуманитарный Университет

кафедра вычислительной техники и информационных систем

Курсовой проект

по дисциплине «Инструментальные средства разработки программ»

на тему Разработка базы данных «Спортсмены»

Выполнил: студент группы ВТ-32

Широков П Е

Проверил: старший преподаватель

Татранова А.Д

Уральск 2011

Содержание

Введение 3

1. Теоретические основы базы данных 5

1.1 Реляционные базы данных 5

1.2 Объектно-ориентированные базы данных 6

1.3 Стандарты объектных баз данных 9

1.4 Принципы построения баз данных 10

1.5 Организация связи с базами данных в Delphi 12

2. Описание объекта информатизации и сбор исходных данных 14

2.1 Описание объекта информатизации 14

2.2 Описание предметной области 15

2.3 Анализ параметров объектов предметной области 15

2.4 Модули, процедуры, функции проекта и их назначение 16

2.5 Руководство пользователя 16

2.6 Результаты тестирования проекта 26

Заключение 29

Литература 30

Приложение 32

Введение

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

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

позволять легко определять тенденции изменения важнейших показателей;

обеспечивать получение информации, критической по времени, без существенных задержек;

выполнять точный и полный анализ данных.

Современные СУБД в основном являются приложениями Windows, так как данная среда позволяет более полно использовать возможности персональной ЭВМ, нежели среда DOS. Снижение стоимости высокопроизводительных ПК обусловил не только широкий переход к среде Windows, где разработчик программного обеспечения может в меньше степени заботиться о распределении ресурсов, но также сделал программное обеспечение ПК в целом и СУБД в частности менее критичными к аппаратным ресурсам ЭВМ.

Цель курсового проекта разработка базы данных «Спортсмены» в Интегрированной Среде Разработки Delphi.

Курсовой проект посвящен достаточно актуальной теме - автоматизации данных.

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

Программный продукт «Спортсмены» предназначен для обеспечения хранения, обработки, ведения отчетности и удобства поиска информации о спортсменах.

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

Преимуществом разработанного программного продукта является возможность быстрого доступа к необходимой информации и простота использования. Создание и разработка базы данных «Спортсмены», с целью информирования населения информацией и характеристиках каждого спортсмена.

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

изучить основные параметры информационной системы;

произвести сбор данных об объектах;

разработать механизмы ввода/вывода данных, их хранения, и анализа;

создать схему связи отношений;

определить принципы построения пользовательского интерфейса;

разработать проект базы данных с использованием языка программирования Delphi 7;

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

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

1. Теоретические основы базы данных

1.1 Реляционные базы данных

В реляционных базах данных (Relational Database System, RDBS) все данные отображаются в двумерных таблицах. База данных, таким образом, это ни что иное, как набор таблиц. RDBS и ориентированные на записи системы организованы на основе стандарта B-Tree или методе доступа, основанном на индексации - Indexed Sequential Access Method (ISAM) и являются стандартными системами, использующимися в большинстве современных программных продуктов. Для обеспечения комбинирования таблиц для определения связей между данными, которые практически полностью отсутствуют в большинстве программных реализаций B-Tree и ISAM, используется языки, подобные SQL (IBM), Quel (Ingres) и RDO (Digital Equipment), причем стандартом отрасли в настоящее время стал язык SQL, поддерживаемый всеми производителями реляционных СУБД.

Оригинальная версия SQL - это интерпретируемый язык, предназначенный для выполнения операций над базами данных. Язык SQL был создан в начале 70_х как интерфейс для взаимодействия с базами данных, основанными на новой для того времени реляционной теории. Реальные приложения обычно написаны на других языках, генерирующих код на языке SQL и передающих их в СУБД в виде текста в формате ASCII. Нужно отметить также, что практически все реальные реляционные (и не только реляционные) системы помимо реализации стандарта ANSI SQL, известного сейчас в последней редакции под именем SQL2 (или SQL-92), включают в себя дополнительные расширения, например, поддержка архитектуры клиент-сервер или средства разработки приложений.

Строки таблицы составлены из полей, заранее известных базе данных. В большинстве систем нельзя добавлять новые типы данных. Каждая строка в таблице соответствует одной записи. Положение данной строки может изменяться вместе с удалением или вставкой новых строк.

Чтобы однозначно определить элемент, ему должны быть сопоставлены поле или набор полей, гарантирующих уникальность элемента внутри таблицы. Такое поле или поля называются первичным ключом (primary key) таблицы и часто являются числами. Если одна таблица содержит первичным ключ другой, это позволяет организовать связь между элементами разных таблиц. Это поле называется внешним ключом (foreign key).

Так как все поля одной таблицы должны содержать постоянное число полей заранее определенных типов, приходится создавать дополнительные таблицы, учитывающие индивидуальные особенности элементов, при помощи внешних ключей. Такой подход сильно усложняет создание сколько нибудь сложных взаимосвязей в базе данных. Желающим убедится, что это действительно так и не пожалевшим на это определенный отрезок времени, компания POET Software любезно предоставляет возможность ознакомиться с примером в своей “белой книге” “POET Technical Reference”. База данных рядового предприятия общепита (клиенты - Джордж Буш и Эдди Мэрфи) состоит из четырех таблиц.

Еще один крупный недостаток реляционных баз данных - это высокая трудоемкость манипулирования информацией и изменения связей.

1.2 Объектно-ориентированные базы данных

“Белыми книгами” с названием, вынесенным в заголовок, с избытком снабдит любая компания, занимающаяся объектными базами данных. Кое-что о преимуществах и недостатках объектно-ориентированных СУБД уже упоминалось выше, подведем в таком случае итог.

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

Если данные состоят из коротких, простых полей фиксированной длины (имя, адрес, баланс банковского счета), то лучшим решением будет применение реляционной базы данных. Если, однако, данные содержат вложенную структуру, динамически изменяемый размер, определяемые пользователем произвольные структуры (мультимедиа, например), представление их в табличной форме будет, как минимум, непростым. В то же время в ООСУБД каждая определенная пользователем структура - это объект, непосредственно управляемый базой данных.

В РСУБД связи управляются пользователем, создающим внешние ключи. Затем для обнаружения связей динамически во время выполнения система просматривает две (или больше) таблицы, сравнивая внешние ключи до достижения соответствия. Этот процесс, называемый объединением (join), является слабой стороной реляционной технологии. Более двух или трех уровней объединений - сигнал, чтобы искать лучшее решение. В ООСУБД пользователь просто объявляет связь, и СУБД автоматически генерирует методы управления, динамически создавая, удаляя и пересекая связи. Ссылки при этом прямые, нет необходимости в просмотре и сравнении или даже поиске индекса, который может сильно сказаться на производительности. Таким образом, применение объектной модели предпочтительнее для баз данных с большим количеством сложных связей: перекрестных ссылок, ссылок, связывающих несколько объектов с несколькими (many-to-many relationships) двунаправленными ссылками.

В отличие от реляционных, ООСУБД полностью поддерживают объектно-ориентированные языки программирования. Разработчики, применяющие С++ или Smalltalk, имеют дело с одним набором правил (позволяющих использовать такие преимущества объектной технологии, как наследование, инкапсуляция и полиморфизм). Разработчик не должен прибегать к трансляции объектной модели в реляционную и обратно. Прикладные программы обращаются и функционируют с объектами, сохраненными в базе данных, которая использует стандартную объектно-ориентированную семантику языка и операции. Напротив, реляционная база данных требует, чтобы разработчик транслировал объектную модель к поддерживаемой модели данных и включил подпрограммы, чтобы обеспечить это отображение во время выполнения. Следствием являются дополнительные усилия при разработке и уменьшение эффективности.

И, наконец, ООСУБД подходят (опять же без трансляций между объектной и реляционной моделями) для организации распределенных вычислений. Традиционные базы данных (в том числе и реляционные и некоторые объектные) построены вокруг центрального сервера, выполняющего все операции над базой. По существу, эта модель мало отличается от мэйнфреймовой организации 60_х годов с центральной ЭВМ - мэйнфреймом (mainframe), выполняющей все вычисления, и пассивных терминалов. Такая архитектура имеет ряд недостатков, главным из которых является вопрос масштабируемости. В настоящее время рабочие станции (клиенты) имеют вычислительную мощность порядка 30 _ 50 % мощности сервера базы данных, то есть большая часть вычислительных ресурсов распределена среди клиентов. Поэтому все больше приложений, и в первую очередь базы данных и средства принятия решений, работают в распределенных средах, в которых объекты (объектные программные компоненты) распределены по многим рабочим станциям и серверам и где любой пользователь может получить доступ к любому объекту. Благодаря стандартам межкомпонентного взаимодействия (об этом позже) все эти фрагменты кода комбинируются друг с другом независимо от аппаратного, программного обеспечения, операционных систем, сетей, компиляторов, языков программирования, различных средств организации запросов и формирования отчетов и динамически изменяются при манипулировании объектами без потери работоспособности.

1.3 Стандарты объектных баз данных

Для обеспечения переносимости приложений (приложение может работать на разных СУБД) и совместимости с СУБД (может взаимодействовать с разными СУБД), естественно, необходима выработка стандартов. Сразу заметим, что установление стандартов лишает производителя в некоторой степени свободы в принятии решений и увеличивает стоимость продукта за счет лицензионных отчислений и больше не будем обсуждать целесообразность (прямо скажем, очевидную) стандартизации.

В области объектных СУБД в настоящее время выработаны стандарты для:

объектной модели;

языка описания объектов;

языка организации запросов (Object Query Language - OQL);

“связующего” языка (C++ и, конечно же, Smalltalk);

администрирования;

обмена (импорт/экспорт);

Хотя у Microsoft и свое мнение на этот счет, организацией, выработавшей наиболее используемые на сегодня и устоявшиеся стандарты, является консорциум поставщиков ООСУБД ODMG (ООСУБД), которого поддерживают практически все действующие лица отрасли. В сотрудничестве с OMG, ANSI, ISO и другими организациями был создан стандарт ODMG-93. Этот стандарт включает в себя средства для построения законченного приложения, которое будет работать (после перекомпиляции) в любой совместимой с этой спецификацией ООСУБД. В книгу ODMG-93 входят следующие разделы:

Язык определения объектов (Object Definition Language - ODL);

Язык объектных запросов (Object Query Language - OQL);

Связывание с C++;

Связывание со Smalltalk.

1.4 Принципы построения баз данных

Всегда, когда возникает потребность манипулировать большими массивами данных, используются базы данных. База данных - это прежде всего набор таблиц, хотя в базу данных могут входит также процедуры и ряд других объектов. Таблицу можно представлять себе как обычную двумерную таблицу с характеристиками (атрибутами) какого-то множества объектов. Таблица имеет имя - идентификатор, по которому на нее можно сослаться. Каждое поле характеризуется именем и типом хранящихся данных. Имя поля - это идентификатор, который используется в различных программах для манипуляции данными. Он строится по тем же правилам, как любой идентификатор, т.е. пишется латинскими буквами, состоит из одного слова и т.д. .например, для таблицы введем для последующих ссылок имена полей Num, Dep, Fam, Nam, Par, Year, Sex, Charact, Photo.

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

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

При построении таблиц базы данных важно обеспечить непротиворечивость информации. Обычно это делается введением ключевых полей - обеспечивающих уникальность каждой записи. В приведенном выше примере можно было бы сделать ключевыми совокупность полей Fam, Nam, Par.

При работе с таблицей пользователь или программа как бы скользит курсором по записям. В каждый момент времени есть некоторая ткущая запись, с которой и ведется работа. Записи в таблице базы данных физически могут располагаться без какого либо порядка, просто в последовательности их ввода (появление новых сотрудников). Но когда данные таблицы предъявляются пользователю, они должны быть упорядочены. Пользователь может хотеть просматривать их в алфавитном порядке, или рассортированными по отделам, или по мере нарастания года рождения и т.п. Для упорядочения данных используется понятие индекса. Индекс показывает, в какой последовательности желательно просматривать таблицу. Он является как бы посредником между пользователем и таблицей (график 1).

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

51

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

График 1. Схема перемещения курсора по индексу

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

Создают базы данных и обрабатывают запросы к ним системы управления базами данных - СУБД. Известно множество СУБД, различающихся своими возможностями или обладающих примерно равными возможностями и конкурирующих друг с другом: Paradox, dBase, Microsoft Access, FoxPro, Oracle, InterBase, SyBase и много других.

Процесс определения того, какая база данных подходит для конкретного приложения, называется масштабированием. Delphi поддерживает следующие четыре модели баз данных:

Автономные

Файл-серверные

Клиент/сервер

Многоуровневые распределения

Если работа с данными в Delphi осуществляется через Borland Database Engine (BDE) - процессор баз данных фирмы Borland, то BDE должна быть поставлена на компьютере пользователя во всех моделях баз данных, кроме многоярусных.

1.5 Организация связи с базами данных в Delphi

В первых версиях Delphi основной работой с базами данных является Borland Database Engine (BDE) - процессор баз данных фирмы Borland. Не потерял он своего значения и сейчас. BDE служит посредником между приложением и базами данных. Он предоставляет пользователю единый интерфейс для пользователя от конкретной реализации базы данных. Приложение Delphi обращается к базе данных через BDE. В этом случае общение с базами данных соответствует схеме, приведенной на графике 2.3.

Приложение Delphi, когда ему надо связаться с базой данных, обращается к BDE и сообщает обычно псевдоним базы данных и необходимую таблицу в ней. BDE реализован в виде динамически присоединяемых библиотек DLL (IDAPI01.DLL, IDAPI32.DLL).

BDE по псевдониму находит драйвер, подходящий для указанной базы данных. Драйвер - это вспомогательная программа, которая понимает, как общаться с базами данных определенного типа. Если в BDE имеется собственный драйвер соответствующей СУБД, то BDE связывается через него с базой данных и с нужной таблицей в ней, обрабатывает запрос пользователя и возвращает в приложение результаты обработки. BDE поддерживает естественный доступ к таким базам данных, как Microsoft Access, FoxPro, Paradox, dBase и ряд других.

Если собственного драйвера нужной СУБД в BDE нет, то используется драйвер ODBC. ODBC (Open Database Connectivity) - DLL, аналогичная по функциям BDE, но разработанная фирмой Майкрософт. Она храниться в файле ODBC.DLL.

Delphi поддерживает SQL - стандартизованный язык запросов, позволяющий обмениваться данными с SQL-серверами, как SyBase, Microsoft SQL, Oracle, InterBase. Эта возможность используется особенно широко при работе на платформе клиент/сервер и в распределенных приложениях.

2. Описание объекта информатизации и сбор исходных данных

2.1 Описание объекта информатизации

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

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

Существование объекта информатизации в исходной форме (в качестве справочника на бумажном носителе) имеет ряд существенных ограничений:

недолговечность носителя и легкость приведения в негодность;

невозможность структурированного добавления новых объектов;

низкая вероятность быстрого нахождения необходимого объекта;

выборка объектов из множества по одному.

Преимущества создания информатизированного варианта объекта:

быстрота поиска;

выборка нескольких объектов за один проход;

удобство эксплуатации;

добавление и изменение данных без нарушения структуры объекта;

относительная долговечность использования.

2.2 Описание предметной области

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

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

Предметная область проекта укладывается в понятия: спортсмены. Таким образом, предметная область проекта представляется как пространство деятельности спортсменов.

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

Каждый объект в предметной области обладает рядом параметров, характеризующих его с разных сторон. Чтобы наиболее ёмко, но в то же время компактно предоставлять информацию об объекте, нужно знать какие из параметров представляют ценность для той или иной предметной области, т.к. один объект может быть задействованным в разных предметных областях по разным параметрам или критериям отбора.

Поэтому прежде чем создавать модель данных проекта необходимо проанализировать все параметры объектов со стороны предметной области.

При отборе параметров для проекта основным критерием отбора являлась важность информации.

Всю базу данных можно разделить на два больших отдельных модуля:

данные о спортсменах (в данном модуле собрана и нормализована более или менее важная информация);

графическое представление о том за какую страну или команду спортсмены выступают.

2.4 Модули, процедуры, функции проекта и их назначение

Unit1 [frmMain] - Главное окно приложения. Редактирование данных.

Unit2 [frmDiagrams] - Окно построения диаграмм по типу.

Unit3 [frmSearch] - Форма поиска данных таблицы.

Unit4 [frmAbout] - Окно «О программе».

Полный код программы представлен в Приложении.

2.5 Руководство пользователя

При запуске программы открывается основное окно (рис. 1). Оно содержит VCL-компоненты, необходимые для удобной и простой работы с базой: TStringGrid, TEdit, TLabel, TMainMenu, TGroupBox, TBevel и TButton. Также на форме содержится компонент класса TCheckBox, создаваемый динамически. Всё реализовано постредством интерактивного редактирования значения полей таблицы - изменения в неё вносятся напрямую, без использования посреднических компонентов класса TEdit и TButton. Чтобы осуществить такую возможность, в свойствах компонента StringGrid1 флаг goEditing в множестве Options был установлен в True. Также были прописаны обработчики событий OnClick и OnSelectCell. Следует также отметить, что при выборе какого-либо поля, значения его дополнительно отображаются в компонентах TEdit группы «Свойства». Изменять их оттуда невозможно, свойство Enabled у каждого установлено в False, т.е. они выполняют лишь дополнительную информационную функцию.

Рис. 1. Главное окно программы.

Форма по умолчанию располагается в центре экрана, в ней отключена возможность развертывания рабочего пространства (Maximize) и изменения размера окна. На ней находится главное меню, состоящее из следующих пунктов:

Файл

Создать

Открыть

Сохранить как

Выход

Вид

Сортировка

По цене

По имени

Диаграммы

Поиск

О программе

С пункта «Создать» начинается создание новой базы. Очищаются все поля, внутренние переменные и записи, происходит общий сброс к значениям по умолчанию. Действие подтверждается диалоговым окном «Yes/No» (рис. 2).

Рис.2 .Диалоговое окно сброса базы данных к значениям по умолчанию.

Команда «Открыть…» приводит к появлению системного диалогового окна TOpenDialog, с заранее настроенными параметрами (рис. 3). После открытия файла базы заполняются соответсвующие поля таблицы TStringGrid.

Рис. 3. Команда открыть базу данных.

Команда «Сохранить как…» выполняется аналогично предыдущей команде, с учётом лишь сохранения данных в файл, а не открытия (Рис.4.). Сохранение также описано во внутриклассовой процедуре WriteToFile.

Рис. 4. Команда сохранить базу данных.

Пункт «Выход» закрывает приложение (Рис. 5.).

Рис. 5. Команда выход из базы данных

Доступ к функциям сортировки полей таблицы осуществляется посредством команд «Сортировка - по имени/по цене». Методы сортировки практически идентичны, отличие лишь в номере обрабатываемого столбца. Ниже можно пронаблюдать пример работы функций (рис. 6 - 8).

Рис. 6. Данные до сортировки.

Рис. 7. Результат сортировки по цене.

Рис. 8. Результат сортировки по имени.

Меню «О программе…» имеет чисто информативный характер, оно отображает окно с информацией о разработчике приложения (рис. 9). Оно закрашено в черный цвет и имеет на фоне объект TImage. Закрытие его происходит путём нажатия кнопки «ОК».

Рис. 9. Меню «О программе».

Важным замечанием на этапе редактирования полей базы является то, что поле «В сборной» принимает лишь два значения: «Да» и «Нет»; по сути это True и False. Для подобной реализации используется динамический компонент CheckBox1, создаваемый непосредственно Runtime - в режиме работы программы, а не на этапе проектирования в интегрированной среде. При выборе ячейки поля «В сборной» он отображается над соответсвующей ячейкой и значение его свойства Checked влияет на то, какую запись в таблице мы видим - «Да» или «Нет». Данный метод редактирования ограничивает нас от возможных ошибок при вводе текста напрямую и является гораздо более удобным решением (рис. 10)

Рис. 10. Заполнение поля «В сборной».

Выбор пункта «Диаграммы» приводит к открытию соответствующего окна приложения. Приложение способно строить два типа диаграмм, различающихся визуально (рис. 11 - 12). Переключения типа осуществляется посредством выбора переключателя «Страны», «Команды». Построение идёт на основе группировки значений данных базы. Реализация - посредством компонента TChart. При закрытии окна происходит возврат к режиму редактирования данных.

Рис. 11. Окно построения диаграммы - группировка по странам.

Рис. 12. Окно построения диаграммы - группировка по командам.

Поиск записей также осуществляется в отдельном окне (рис. 13). Возможна точная настройка параметров поиска, включение/выключение отдельных компонентов запроса («ФИО», «Команда», «Страна», «Цена»). CheckBox рядом с полем ввода TEdit делает его доступным к изменению (свойство Enabled). Результаты заносятся в таблицу StringGrid1, аналогичную той, что на главной форме, за исключением лишь возможности непостредственного редактирования. На иллюстрации - поиск по запрсу «Страна: Россия» и «Команда: ЦСКА», соответственно - вывод всех футбольных игроков, играющих за Россию.

Рис. 13. Окно «Поиск».

2.6 Результаты тестирования проекта

спортсмен интерфейс программирование информационный

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

Этап отладки и тестирования программы преследует цель выявить и устранить ошибки в разработанном приложении. Оценка качества позволит выявить недочеты и, возможно, определить новые направления работы и пути усовершенствования продукта.

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

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

Данный этап тестирования предназначен для обнаружения ошибок в оформлении и увеличения эргономичности проекта.

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

Эргономическое направление отвечает за удобство работы пользователя, т.е. за соответствие элементов нормам четкости, размера, смысловой нагрузки.

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

В ходе тестирования программного продукта было выявлено, что некоторое количество кнопок работали не корректно и не соответствовали назначенным макросам, а именно это кнопки в главной кнопочной форме. Проблема была решена назначением определенным кнопкам корректных макросов. При связывании некоторых таблиц не удавалось установить связь «один-ко-многим», т.к. не было установлено ключевое поле в атрибуте счетчика. Приходилось уменьшать размер подчиненных форм, вкладок и самой главной формы.

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

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

С точки зрения разработчика проект находится на ранней стадии развития. Ещё остается обширное поле возможностей для доработки проекта таких, как улучшение быстродействия, усовершенствование интерфейса программы, доработки по составу данных, добавление механизмов защиты, добавление подробных подсказок для пользователей.

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

Заключение

Цель курсового проекта достигнута: была разработана база данных «Спортсмены» в Интегрированной Среде Разработки Delphi.

Курсовой проект был посвящен достаточно актуальной теме - автоматизации данных. Все записи, имеющиеся о спортсменах, были систематизированы. Эта программа производит обработку информации о спортсмене, цены приобретения спортсмена клубом, за какую страну играет, играет ли спортсмен за сборную или нет.

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

Была спроектирована простая в эксплуатации и обслуживании база данных, которая удовлетворяет требованиям пользователя.

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

При создании проекта была использована среда разработки баз данных Delphi на основе реляционных технологий. Применение методов нормализации позволило устранить дублирование хранимой информации для дальнейшего проектирования базы данных. При проектировании структуры БД были рассмотрены все достоинства и недостатки применения нормализации.

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

Литература

1. Фаронов, В.В. Программирование баз данных в Delphi 7.Учебный курс. / В.В. Фаронов - СПб.:Питер, 2006. -459с.

2. Михайлов, В.В. Проектирование баз данных информационных систем./ В.В. Михайлов, В.М. Савинков - М.: Финансы и статистика, 2007. - 351 с.

3. Фленов, М.А. Библия для программиста в среде Delphi./ М.А. Фленов - Москва, 2007.

4. Культин, Н.Б.Основы программирования в Delphi 7. / Н.Б. Культин - СПб. Питер, 2008.

5. Галисеев, Г.В. «Программирование в среде Delphi 7 Самоучитель». / Г.В. Галисеев - Москва, 2008 год.

6. Фаронов, В.В. «Delphi 7. учебный курс» / В.В. Фаронов - Питер, 2006 год.

7. Шупрута, В.В. "Delphi 2007. Учимся программировать" / В.В. Шупрута - Москва, 2007.

8. Фаронов, В.В. Delphi 7. Учебный курс / В.В. Фаронов - Москва, “Нолидж”. 2008.- 608 c.

9. Архангельский, А.И. Программирование в Delphi. / А.И. Архангельский - Москва. “БИНОМ”, 2007. - 768 с.

10. Бобровский, С.Е. Delphi 7: учебный курс. / С.Е. Бобровский - Спб.: “Питер”, 2008. - 640 с.

11. Фаронов, В.В. Программирование баз данных в Delphi. Учебный курс / В.В. Фаронов - Спб.: “Питер”, 2008 - 352с.

12. Каролин, Ф.С. Базы данных: проектирование, реализация и сопровождение. Теория и практика, 2-е изд. / Ф.С. Каролин - Издательский дом ”Вильямс”, 2007.

13. Глушаков, С.В. Базы данных: Учебный курс. / С.В. Глушаков, Д.В Ломотько- Москва.: АСТ, 2008.- 504 с.

14. Цикритизис, Д.Ф. Модели данных. / Д.Ф. Цикритизис - Москва. Финансы и статистика, 2006. - 344 с.

15. Карпова, Т.С. Базы данных. Модели, разработка, реализация. / Т.С. Карпова - СПб: Питер, 2006;

16. Полежаев, С.В. Базы данных. Учебный курс. / С.В. Полежаев, Д.В. Антонов - Харьков: Феникс; Киев: Абрис, 2007;

17. Дмитриева, М.В. Элементы современного программирования. / М.В. Дмитриева. - Питер, 2007.

18. Дмитриева, М.В. Базы данных. / М.В. Дмитриева, А.А. Кубенский - Саратов. Пб.: 2006.

19. Иванов, М.Н. Информатика Часть 2. Программирование. Учебно-методическое пособие. / М.Н. Иванов - Москва.; МГИУ, 2007

20. Глушаков, С.В. Базы данных: Учебный курс. / С.В. Глушаков - Ростов-на-Дону: Феникс, 2008. - 500 с.

Приложение

unit Unit1;

interface

uses

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

Dialogs, StdCtrls, Grids, Menus, ExtCtrls, XPMan;

const

cell_x = 4;

type

BaseField = record

Name : String[28];

Country : String[28];

Team : String[28];

Cost : String[28];

Side : Boolean;

end;

TfrmMain = class(TForm)

MainMenu1: TMainMenu;

N1: TMenuItem;

N12: TMenuItem;

N14: TMenuItem;

N2: TMenuItem;

N10: TMenuItem;

N22: TMenuItem;

N27: TMenuItem;

GroupBox1: TGroupBox;

StringGrid1: TStringGrid;

N28: TMenuItem;

N29: TMenuItem;

N30: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

N5: TMenuItem;

N11: TMenuItem;

N24: TMenuItem;

N31: TMenuItem;

Bevel1: TBevel;

Label6: TLabel;

Label7: TLabel;

Button7: TButton;

XPManifest1: TXPManifest;

OpenDialog1: TOpenDialog;

SaveDialog1: TSaveDialog;

GroupBox2: TGroupBox;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label5: TLabel;

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Edit4: TEdit;

PopupMenu1: TPopupMenu;

C1: TMenuItem;

N6: TMenuItem;

N7: TMenuItem;

N8: TMenuItem;

N9: TMenuItem;

N13: TMenuItem;

N15: TMenuItem;

procedure FormCreate(Sender: TObject);

procedure N12Click(Sender: TObject);

procedure N29Click(Sender: TObject);

procedure N30Click(Sender: TObject);

procedure CheckBox1Click(Sender: TObject);

procedure StringGrid1Click(Sender: TObject);

procedure FormClose(Sender: TObject; var Action: TCloseAction);

procedure N4Click(Sender: TObject);

procedure N3Click(Sender: TObject);

procedure N11Click(Sender: TObject);

procedure StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;

var CanSelect: Boolean);

procedure N22Click(Sender: TObject);

procedure N31Click(Sender: TObject);

procedure N14Click(Sender: TObject);

private

{ Private declarations }

public

procedure ResetView;

procedure WriteToFile(AFile: String);

procedure AppendToFile(AFile: String);

procedure ReadFromFile(AFile: String);

end;

var

frmMain: TfrmMain;

FileName: String;

K: BaseField;

F: File of BaseField;

CheckBox1: TCheckBox;

//All: Array [0..24] of BaseField;

implementation

uses Unit2, Unit3, Unit4;

{$R *.dfm}

//Сброс и очистка

procedure TfrmMain.ResetView;

var i: integer;

begin

For i := 0 to StringGrid1.ColCount - 1 do StringGrid1.Cols[i].Clear;

For i := 0 to StringGrid1.RowCount - 1 do StringGrid1.Rows[i].Clear;

StringGrid1.RowCount := 40;

Edit1.Clear;

Edit2.Clear;

Edit3.Clear;

Edit4.Clear;

CheckBox1.Checked := false;

StringGrid1.Cells[0,0]:='ФИО';

StringGrid1.Cells[1,0]:='Страна';

StringGrid1.Cells[2,0]:='Команда';

StringGrid1.Cells[3,0]:='Цена';

StringGrid1.Cells[4,0]:='В сборной';

end;

//Предварительные операции при создании формы

procedure TfrmMain.FormCreate(Sender: TObject);

begin

//Динамическое создание СheckBox1

CheckBox1:=TCheckBox.Create(frmMain);

CheckBox1.Parent := frmMain;

CheckBox1.Caption := 'В сборной';

CheckBox1.Visible := false;

CheckBox1.OnClick := CheckBox1Click;

//Очистка области памяти, занятой k

ZeroMemory(@k, SizeOf(k));

ResetView;

end;

//Файл - Создать...

procedure TfrmMain.N12Click(Sender: TObject);

begin

//ПРоверка, какая кнопка нажата на окне сообщения

If MessageDlg('Это приведёт к очистке. Продолжить?', mtConfirmation, [mbYes, mbNo], 0) = mrNo then Exit;

ResetView;

end;

//Файл - Открыть...

procedure TfrmMain.N29Click(Sender: TObject);

begin

If not OpenDialog1.Execute then Exit;

ResetView;

ReadFromFile(OpenDialog1.FileName);

end;

//Файл - Сохранить как...

procedure TfrmMain.N30Click(Sender: TObject);

begin

If not SaveDialog1.Execute then Exit;

WriteToFile(SaveDialog1.FileName);

end;

//Чтение данных из файла и заполнение таблицы StringGrid1

procedure TfrmMain.ReadFromFile(AFile: String);

var d : BaseField;

i : Integer;

s : string;

begin

ZeroMemory(@d, SizeOf(d));

AssignFile(F, AFile);

Reset(F);

i := 1;

while not EOF(F) do

begin

Read(F, d);

If d.Name = '' then Continue;

StringGrid1.Cells[0, i] := d.Name;

StringGrid1.Cells[1, i] := d.Country;

StringGrid1.Cells[2, i] := d.Team;

StringGrid1.Cells[3, i] := d.Cost;

If d.Side then s := 'Да' else s := 'Нет';

StringGrid1.Cells[4, i] := s;

Inc(i);

If i > StringGrid1.RowCount then

StringGrid1.RowCount := i;

end;

CloseFile(F);

end;

//Запись данных в файл из таблицы StringGrid1

procedure TfrmMain.WriteToFile(AFile: String);

var d : BaseField;

i : Integer;

begin

AssignFile(F, AFile);

Rewrite(F);

ZeroMemory(@d, SizeOf(d));

For i := 1 to StringGrid1.RowCount - 1 do

begin

d.Name := StringGrid1.Cells[0, i];

d.Country := StringGrid1.Cells[1, i];

d.Team := StringGrid1.Cells[2, i];

d.Cost := StringGrid1.Cells[3, i];

d.Side := (StringGrid1.Cells[4, i] = 'Да');

Write(F, d);

end;

CloseFile(F);

end;

//Изменение флажка "В сборной"

procedure TfrmMain.CheckBox1Click(Sender: TObject);

begin

If CheckBox1.Checked then StringGrid1.Cells[4, StringGrid1.Row] := 'Да' else StringGrid1.Cells[4, StringGrid1.Row] := 'Нет';

end;

//Реакция на изменение номера текущего поля в таблице. Обновление

procedure TfrmMain.StringGrid1Click(Sender: TObject);

begin

//Копируем в Editы соответствующие тексты таблицы

Edit1.Text:=StringGrid1.Cells[0, StringGrid1.Row];

Edit2.Text:=StringGrid1.Cells[1, StringGrid1.Row];

Edit3.Text:=StringGrid1.Cells[2, StringGrid1.Row];

Edit4.Text:=StringGrid1.Cells[3, StringGrid1.Row];

//Ставим CheckBox1 в нужное состояние (да, нет)

CheckBox1.Checked := (StringGrid1.Cells[4, StringGrid1.Row] = 'Да');

end;

//Добавление данных в конец существующего файла

procedure TfrmMain.AppendToFile(AFile: String);

var d : BaseField;

begin

If not FileExists(AFile) then

begin

AssignFile(F, AFile);

Rewrite(F);

CloseFile(F);

end;

AssignFile(F, AFile);

Reset(F);

Seek(F, FileSize(F));

ZeroMemory(@d, SizeOf(d));

d.Name := Edit1.Text;

d.Country := Edit2.Text;

d.Team := Edit3.Text;

d.Cost := Edit4.Text;

d.Side := CheckBox1.Checked;

Write(F, d);

CloseFile(F);

end;

//Закрытие приложения

procedure TfrmMain.FormClose(Sender: TObject; var Action: TCloseAction);

begin

CheckBox1.Destroy;

DeleteFile('Default.dat');

end;

//Сортировка по имени

procedure TfrmMain.N4Click(Sender: TObject);

var Done : Boolean;

l : Byte;

s : BaseField;

begin

With StringGrid1 do

Repeat

Done := false;

For l := 1 to RowCount - 2 do

begin

If (Cells[0, l] > Cells[0, l + 1]) and (Cells[0, l] <> '') then

begin

s.Name:=Cells[0,l];

s.Country:=Cells[1,l];

s.Team:=Cells[2,l];

s.Cost:=Cells[3,l];

s.Side:=(Cells[4,l] = 'Да');

Cells[0,l]:=Cells[0,l+1];

Cells[1,l]:=Cells[1,l+1];

Cells[2,l]:=Cells[2,l+1];

Cells[3,l]:=Cells[3,l+1];

Cells[4,l]:=Cells[4,l+1];

Cells[0,l+1]:=s.Name;

Cells[1,l+1]:=s.Country;

Cells[2,l+1]:=s.Team;

Cells[3,l+1]:=s.Cost;

If s.Side then Cells[4,l+1] := 'Да' else Cells[4,l+1] := 'Нет';

Done := true;

end;

end;

Until not Done;

WriteToFile('Default.dat');

ResetView;

ReadFromFile('Default.dat');

end;

//Сортировка по цене

procedure TfrmMain.N3Click(Sender: TObject);

var Done : Boolean;

l : Byte;

s : BaseField;

begin

With StringGrid1 do

Repeat

Done := false;

For l := 1 to RowCount - 2 do

begin

If (Cells[3, l] <> '') and (Cells[3, l + 1] <> '') then If (StrToInt(Cells[3, l]) > StrToInt(Cells[3, l + 1])) then

begin

s.Name:=Cells[0,l];

s.Country:=Cells[1,l];

s.Team:=Cells[2,l];

s.Cost:=Cells[3,l];

s.Side:=(Cells[4,l] = 'Да');

Cells[0,l]:=Cells[0,l+1];

Cells[1,l]:=Cells[1,l+1];

Cells[2,l]:=Cells[2,l+1];

Cells[3,l]:=Cells[3,l+1];

Cells[4,l]:=Cells[4,l+1];

Cells[0,l+1]:=s.Name;

Cells[1,l+1]:=s.Country;

Cells[2,l+1]:=s.Team;

Cells[3,l+1]:=s.Cost;

If s.Side then Cells[4,l+1] := 'Да' else Cells[4,l+1] := 'Нет';

Done := true;

end;

end;

Until not Done;

WriteToFile('Default.dat');

ResetView;

ReadFromFile('Default.dat');

end;

//Открытие окна Диаграмм

procedure TfrmMain.N11Click(Sender: TObject);

begin

frmDiagrams.Show;

end;

//Прорисовка CheckBox1 в нужной позиции внутри таблицы

procedure TfrmMain.StringGrid1SelectCell(Sender: TObject; ACol,

ARow: Integer; var CanSelect: Boolean);

var

r : TRect;

begin

if (cell_x>=StringGrid1.LeftCol) and

(cell_x<=StringGrid1.LeftCol+StringGrid1.VisibleColCount)

then CheckBox1.Visible := true

else

CheckBox1.Visible:=false;

if acol = cell_x then

begin

//Подгоняем наш CheckBox1 в размер выбранного поля в StringGrid1

r := StringGrid1.CellRect(ACol, ARow);

r.Left := r.left + GroupBox1.Left + stringgrid1.left + 2;

r.right := r.right + stringgrid1.left + 2;

r.top := r.top + GroupBox1.Top + stringgrid1.top + 4;

r.bottom := r.bottom + stringgrid1.top + 2;

CheckBox1.BoundsRect := r;

end

else

CheckBox1.Visible:=false;

end;

//Открытие окна Поиска

procedure TfrmMain.N22Click(Sender: TObject);

begin

frmSearch.Show;

end;

//Открытие окна О программе

procedure TfrmMain.N31Click(Sender: TObject);

begin

frmAbout.Show;

end;

//Выход из приложения по кнопке Закрыть и Файл-Выход

procedure TfrmMain.N14Click(Sender: TObject);

begin

Close;

end;

end.

unit Unit2;

interface

uses

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

Dialogs, StdCtrls, ExtCtrls, TeeProcs, TeEngine, Chart, Series;

type

Data = record

Caption : String [24];

Num : Byte;

Exist : Boolean;

end;

TfrmDiagrams = class(TForm)

RadioGroup1: TRadioGroup;

Chart1: TChart;

Series1: TPieSeries;

Label6: TLabel;

Label7: TLabel;

Bevel1: TBevel;

Series2: TBarSeries;

procedure RadioGroup1Click(Sender: TObject);

procedure FormShow(Sender: TObject);

private

procedure ResetSettings;

public

{ Public declarations }

end;

var

frmDiagrams: TfrmDiagrams;

Fields : Array [1..40] of Data;

implementation

uses Unit1, Grids;

{$R *.dfm}

//Изменение отображаемой диаграммы на основе выбранного пункта

procedure TfrmDiagrams.RadioGroup1Click(Sender: TObject);

var

i, j, A : integer;

flag: Boolean;

begin

ResetSettings;

If RadioGroup1.ItemIndex = 0 then A := 1 else A := 2;

Chart1.Series[0].Clear;

Chart1.Series[1].Clear;

With frmMain.StringGrid1 do

For j := 1 to RowCount - 1 do

begin

Flag := true;

For i := 1 to 40 do

begin

If (Flag) and(Fields[i].Exist) then

If Fields[i].Caption = Cells[A, j] then

begin

Inc(Fields[i].Num);

Flag := false;

end;

If (Flag) and (not (Fields[i].Exist)) then

begin

Fields[i].Exist := true;

Fields[i].Caption := cells[A, j];

Fields[i].Num := 1;

Flag := false;

end;

end;

If Flag then messagedlg('Ошибка', mtError, [mbOk], 0);

end;

For i:=1 to 40 do

If (Fields[i].Num > 0) and (Fields[i].Caption <> '') then

begin

If RadioGroup1.ItemIndex = 0 then

Chart1.Series[0].Add(Fields[i].Num, Fields[i].Caption, random(93562))

else

Chart1.Series[1].Add(Fields[i].Num, Fields[i].Caption, random(93562));

end;

end;

//Принудительный вызов события OnClick для первого отображения диаграмм

procedure TfrmDiagrams.FormShow(Sender: TObject);

begin

RadioGroup1Click(self);

end;

//Сброс всех настроек

procedure TfrmDiagrams.ResetSettings;

begin

ZeroMemory(@Fields, SizeOf(Fields));

Chart1.Series[0].Clear;

Chart1.Series[1].Clear;

end;

end.

unit Unit3;

interface

uses

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

Dialogs, Grids, StdCtrls, ExtCtrls;

type

TfrmSearch = class(TForm)

GroupBox1: TGroupBox;

StringGrid1: TStringGrid;

GroupBox2: TGroupBox;

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Edit4: TEdit;

CheckBox1: TCheckBox;

CheckBox2: TCheckBox;

CheckBox3: TCheckBox;

CheckBox4: TCheckBox;

Button1: TButton;

Label6: TLabel;

Label7: TLabel;

Bevel1: TBevel;

procedure FormShow(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure CheckBox1Click(Sender: TObject);

procedure CheckBox2Click(Sender: TObject);

procedure CheckBox4Click(Sender: TObject);

procedure CheckBox3Click(Sender: TObject);

private

procedure ResetView;

public

{ Public declarations }

end;

var

frmSearch: TfrmSearch;

implementation

uses Unit1;

{$R *.dfm}

{ TfrmSearch }

//Сброс всех настроек

procedure TfrmSearch.ResetView;

var i : integer;

begin

StringGrid1.RowCount := 40;

For i := 0 to StringGrid1.ColCount - 1 do StringGrid1.Cols[i].Clear;

For i := 0 to StringGrid1.RowCount - 1 do StringGrid1.Rows[i].Clear;

StringGrid1.Cells[0,0] := 'ФИО';

StringGrid1.Cells[1,0] := 'Страна';

StringGrid1.Cells[2,0] := 'Команда';

StringGrid1.Cells[3,0] := 'Цена';

StringGrid1.Cells[4,0] := 'В сборной';

Edit1.Clear;

Edit2.Clear;

Edit3.Clear;

Edit4.Clear;

Edit1.Enabled := false;

Edit2.Enabled := false;

Edit3.Enabled := false;

Edit4.Enabled := false;

CheckBox1.Checked := false;

CheckBox2.Checked := false;

CheckBox3.Checked := false;

CheckBox4.Checked := false;

end;

//При отображении формы

procedure TfrmSearch.FormShow(Sender: TObject);

begin

ResetView;

end;

//Действие кнопки Поиск

procedure TfrmSearch.Button1Click(Sender: TObject);

var

Max : Integer;

Match: Boolean;

A, i: integer;

begin

For i := 0 to StringGrid1.ColCount - 1 do StringGrid1.Cols[i].Clear;

For i := 0 to StringGrid1.RowCount - 1 do StringGrid1.Rows[i].Clear;

Max := 0;

For a := 1 to frmMain.StringGrid1.RowCount - 1 do

begin

Match := true; //Факт совпадения

If CheckBox1.Checked then

If pos(Edit1.Text, frmMain.StringGrid1.Cells[0, a]) = 0 then Match := false;

If CheckBox2.Checked then

If pos(Edit2.Text, frmMain.StringGrid1.Cells[1, a]) = 0 then Match := false;

If CheckBox3.Checked then

If pos(Edit3.Text, frmMain.StringGrid1.Cells[2, a]) = 0 then Match := false;

If CheckBox4.Checked then

If pos(Edit4.Text, frmMain.StringGrid1.Cells[3, a]) = 0 then Match := false;

If Match then

begin

Inc(max);

StringGrid1.Cells[0, Max] := frmMain.StringGrid1.Cells[0, a];

StringGrid1.Cells[1, Max] := frmMain.StringGrid1.Cells[1, a];

StringGrid1.Cells[2, Max] := frmMain.StringGrid1.Cells[2, a];

StringGrid1.Cells[3, Max] := frmMain.StringGrid1.Cells[3, a];

StringGrid1.Cells[4, Max] := frmMain.StringGrid1.Cells[4, a];

end;

end;

end;

//Доступность поля ФИО

procedure TfrmSearch.CheckBox1Click(Sender: TObject);

begin

Edit1.Enabled := CheckBox1.Checked;

end;

//Доступность поля Страна

procedure TfrmSearch.CheckBox2Click(Sender: TObject);

begin

Edit2.Enabled := CheckBox2.Checked;

end;

//Доступность поля Команда

procedure TfrmSearch.CheckBox4Click(Sender: TObject);

begin

Edit4.Enabled := CheckBox4.Checked;

end;

//Доступность поля Цена

procedure TfrmSearch.CheckBox3Click(Sender: TObject);

begin

Edit3.Enabled := CheckBox3.Checked;

end;

end.

unit Unit4;

interface

uses

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

Dialogs, StdCtrls, jpeg, ExtCtrls;

type

TfrmAbout = class(TForm)

Image1: TImage;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Button1: TButton;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

frmAbout: TfrmAbout;

implementation

{$R *.dfm}

//Закрытие окна

procedure TfrmAbout.Button1Click(Sender: TObject);

begin

Hide;

end;

end.

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


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

  • Разработка информационной и инфологической модели базы данных на тему "Командировка". Выбор модели данных и составление ее концептуальной схемы. Получение доступа к БД средствами Delphi, разработка пользовательского интерфейса. Реализация SQL-запросов.

    реферат [1,2 M], добавлен 16.06.2009

  • Разработка сайта для хранения и обработки информации об абитуриентах в среде программирования Delphi 7. Архитектура базы данных. Функциональная схема программы. Даталогическая модель данных. Сущности БД и архива. Элементы пользовательского интерфейса.

    дипломная работа [4,2 M], добавлен 30.03.2015

  • Разработка простейшей базы данных с использованием приемов работы с Microsoft Access в среде программирования Delphi. Назначение базы данных, условия эксплуатации, выполнения и запуска программы "База данных районного отдела налоговой инспекции".

    курсовая работа [1,3 M], добавлен 14.12.2012

  • Разработка приложения для работы с базой данных с использованием объектно-ориентированного и визуального программирования. Обзор языка элементов языка программирования Delphi. Проектирование базы данных автозаправки. Клиентская система приложения.

    курсовая работа [2,3 M], добавлен 31.01.2016

  • Возможности Microsoft Access, типы данных, оценка степени безопасности, принципы защиты информации. Инфологическое проектирование базы данных. Основные преимущества Office Access 2007. Разработка и описание пользовательского интерфейса, решаемые задачи.

    курсовая работа [1,5 M], добавлен 28.04.2014

  • Моделирование базы данных "Обязательное медицинское страхование" с использованием методологии IDEF1X. Разработка базы данных в программной среде FoxPro 9.0, с использованием языка программирования SQL. Описания хранимых в базе данных таблиц и запросов.

    курсовая работа [257,2 K], добавлен 15.03.2016

  • Разработка автоматизированной информационной системы для обеспечения учета образовательных учреждений в среде Delphi на языке программирования Pascal. Создание базы данных и интерфейса для работы с АИС. Сущности и атрибуты логической модели данных.

    курсовая работа [429,3 K], добавлен 15.05.2014

  • Анализ данных предметной области. Информационно-логическая модель базы данных. Физическое проектирование и мероприятия по защите и обеспечению целостности базы данных. Приложение интерфейса для SQL-сервера базы данных на языке программирования Delphi.

    курсовая работа [2,2 M], добавлен 30.05.2013

  • Обзор преимуществ и недостатков среды программирования Delphi, ее сравнение с аналогичными продуктами. Разработка инфологической, датологической, модели базы данных. Проектирование структуры программного обеспечения и понятного интерфейса базы данных.

    курсовая работа [964,8 K], добавлен 27.09.2014

  • Создание программы, осуществляющей хранение информации о Ресторане. Структура предприятия, нормализация отношений. Разработка пользовательского интерфейса базы данных "АРМ администратора ресторана" в Borland Delphi 7. Характеристики для поиска данных.

    курсовая работа [835,5 K], добавлен 18.06.2015

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