Проектирование программного обеспечения электронной энциклопедии "Великие математики"

Разработка электронной энциклопедии "Великие математики", предназначенной для администрирования и просмотра информации о великих математиках древности и современности. Системный анализ предметной области. Логическое проектирование баз данных в СУБД.

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

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

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

32

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

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

Проектирование программного обеспечения электронной энциклопедии "Великие математики"

СОДЕРЖАНИЕ

  • ВВЕДЕНИЕ
  • 1. ОБЩАЯ ЧАСТЬ
    • 1.1 Системный анализ предметной области
    • 1.2 Логическое проектирование БД (ER-анализ)
    • 1.3 Формирование набора предварительных отношений с указанием предполагаемого первичного ключа
    • 1.4 Входные документы и формы
    • 1.5 Описание информационных процедур
    • 1.6 Выбор стандарта БД
    • 1.7 Выбор среды разработки
  • 2. СПЕЦИАЛЬНАЯ ЧАСТЬ
    • 2.1 Описание БД в терминах СУБД
    • 2.2 Проектирование БД в СУБД
    • 2.3 Проектирование спец. СУБД
      • 2.3.1 Проектирование ядра СУБД
      • 2.3.2 Проектирование входных форм
      • 2.3.3 Проектирование запросов
  • 3. ТЕСТИРОВАНИЕ ПРОГРАММНОГО ПРОДУКТА
  • 4. ИНСТРУКЦИЯ ПО ЭКСПЛУАТАЦИИ И УСТАНОВКЕ
  • 5. ЗАКЛЮЧЕНИЕ
  • 6. СПИСОК ИСТОЧНИКОВ
  • 7. ПРИЛОЖЕНИЕ

ВВЕДЕНИЕ

база данное электронная энциклопедия

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

Возможности человека в обработке информации резко возросли с использованием компьютеров. В применении ЭВМ для решения задач информационного обслуживания можно выделить два периода:

1) Начальный период, когда решением задач обработки информации, организацией данных занимался небольшой круг людей - системные программисты. Этот период характерен тем, что создавались программные средства для решения конкретной задачи обработки данных. При этом для решения другой задачи, в которой использовались эти же данные, нужно было создавать новые программы;

2) Период системного применения ЭВМ. Для решения на ЭВМ комплекса задач создаются программные средства, оперирующие одними и теми же данными, использующие единую информационную модель объекта. Эти средства не зависят от характера объекта, его модели, их можно применять для информационного обслуживания различных задач. Человечество пришло к организации информации в информационных системах.

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

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

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

1. ОБЩАЯ ЧАСТЬ

1.1 Системный анализ предметной области

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

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

ЗАДАНИЕ НА ПРОЕКТИРОВАНИЕ

Разработать электронную энциклопедию «Великие математики».

РАСШИРЕННАЯ ФОРМУЛИРОВКА ЗАДАНИЯ

Электронная энциклопедия «Великие математики» должна рассказывать о великих ученых древности и современности, их биографических сведениях (ФИО, год рождения, год смерти, страна проживания) и принадлежности к определённой исторической эпохе (Наименование эпохи, Периодизация эпохи). А также об открытиях и трудах великих творцов математики (Раздел математики, Наименование труда, Год создания).

ОПИСАНИЕ ОБЪЕКТОВ ПРЕДМЕТНОЙ ОБЛАСТИ И ИХ ХАРАКТЕРИСТИК

Объект 1 - Математики.

Характеристики объекта 1:

1) Порядковый номер;

2) ФИО математика;

3) Год рождения;

4) Год смерти;

5) Страна проживания;

6) Историческая эпоха.

Объект 2 - Труды математика.

Характеристики объекта 2:

1) Порядковый номер;

2) Наименование труда;

3) Год создания;

4) Раздел математики.

Объект 3 - Страна проживания.

Характеристики объекта 3:

1) Порядковый номер;

2) Наименование страны.

Объект 4 - Историческая эпоха.

Характеристики объекта 4:

1) Порядковый номер;

2) Наименование эпохи;

3) Периодизация эпохи.

Объект 5 - Раздел математики.

Характеристики объекта 5:

3) Порядковый номер;

4) Наименование раздела.

ОБЩЕСИСТЕМНЫЕ ОГРАНИЧЕНИЯ НА ИНФОРМАЦИЮ

1) ФИО математика обязательно должно быть заполнено;

2) Труд обязательно должно принадлежать какому-либо математику;

3) Труд должен принадлежать только одному математику;

4) Математик обязательно должен относиться к какой-либо эпохе;

5) Труд обязательно должен принадлежать какому-либо разделу.

ПОЛЬЗОВАТЕЛИ

1) Администратор-программист энциклопедии;

2) Пользователь.

ОПИСАНИЕ ЗАДАЧ «Администратор-программист энциклопедии»

1) Оперативный поиск информации о математиках (ФИО математика, Наименование труда);

2) Оперативный поиск информации по странам (Наименование страны);

3) Оперативный поиск информации по эпохам (Наименование эпохи);

4) Манипуляция данными (редактирование, добавление, удаление записей, загрузка изображений портретов математиков).

ОПИСАНИЕ ЗАДАЧ «Пользователь»

1) Просмотр информации и графических изображений портретов математиков;

2) Оперативный поиск информации о математиках (ФИО математика, Историческая эпоха, Страна проживания, Наименование труда).

1.2 Логическое проектирование БД (ER-анализ)

ФОРМИРОВАНИЕ АТРИБУТОВ ИСХОДНОГО ОТНОШЕНИЯ

1) Ном_мат - Порядковый номер математика;

2) ФИО_мат - ФИО математика;

3) Год_рож - Год рождения математика;

4) Год_смер - Год смерти математика;

5) Ном_страна - Порядковый номер страны проживания;

6) Назв_страна - Наименование страны проживания;

7) Ном_эпоха - Порядковый номер исторической эпохи;

8) Назв_эпоха - Наименование исторической эпохи;

9) Пер_эпоха - Периодизация исторической эпохи;

10) Ном_труд - Порядковый номер труда математика;

11) Назв_труд - Наименование труда математика;

12) Год_труд - Год создания труда математиком;

13) Ном_разд - Порядковый номер раздела;

14) Назв_разд - Наименование раздела.

ВЫДЕЛЕНИЕ СУЩНОСТЕЙ И СВЯЗЕЙ МЕЖДУ НИМИ

Исходя из системного анализа и атрибутов исходного отношения, можно выделить следующие сущности с ключевыми атрибутами:

1) Математик (Ном_мат);

2) Труд (Ном_труд);

3) Эпоха (Ном_эпоха);

4) Страна (Ном_страна);

5) Раздел (Ном_разд).

Выделенные сущности находятся в следующих связях:

1) МАТЕМАТИК создал ТРУД;

2) МАТЕМАТИК проживал СТРАНА;

3) МАТЕМАТИК относится ЭПОХА;

4) ТРУД относится РАЗДЕЛ.

ПОСТРОЕНИЕ ДИАГРАММЫ ER-ТИПА с учетом всех сущностей и связей между ними:

Таблица 1 - Связь «Математик-Труд»

Рисунок 1 - Связь «Математик - Труд»

Таблица 2 - Связь «Математик-Страна»

Рисунок 2 - Связь «Математик - Страна»

Таблица 3 - Связь «Математик-Эпоха»

Рисунок 3 - Связь «Математик - Эпоха»

Таблица 4 - Связь «Труд-Раздел»

Рисунок 4 - Связь «Труд - Раздел»

Рисунок 5 - Общие связи таблиц

1.3 Формирование набора предварительных отношений с указанием предполагаемого первичного ключа

Таблица 5 - Отношение «ТРУД относится РАЗДЕЛ»

Таблица 6 - Отношение «МАТЕМАТИК создал ТРУД»

Таблица 7 - Отношение «МАТЕМАТИК проживал СТРАНА»

Таблица 8 - Отношение «МАТЕМАТИК относится ЭПОХА»

Рисунок 6 - Схема базы данных

ДОБАВЛЕНИЕ НЕКЛЮЧЕВЫХ АТРИБУТОВ

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

Таблица 9 - Добавление неключевых атрибутов в отношение «МАТЕМАТИК»

Атрибут

Тип

Описание

Ном_мат

Числовой, ПК

Номер математика

ФИО_мат

Текстовый

ФИО математика

Год_рож

Числовой

Год рождения математика

Год_смер

Числовой

Год смерти математика

Ном_страна

Числовой, ВК

Код страны

Ном_эпоха

Числовой, ВК

Код эпохи

Таблица 10 - Добавление неключевых атрибутов в отношение «СТРАНА»

Атрибут

Тип

Описание

Ном_страна

Числовой, ПК

Номер страны

Назв_страна

Текстовый

Наименование страны

Таблица 11 - Добавление неключевых атрибутов в отношение «ЭПОХА»

Атрибут

Тип

Описание

Ном_эпоха

Числовой, ПК

Номер эпохи

Назв_эпоха

Текстовый

Наименование эпохи

Пер_эпоха

Текстовый

Периодизация эпохи

Таблица 12 - Добавление неключевых атрибутов в отношение «ТРУД»

Атрибут

Тип

Описание

Ном_труд

Числовой, ПК

Номер труда

Назв_труд

Текстовый

Наименование труда

Год_труд

Числовой

Год создания труда

Ном_мат

Числовой, ВК

Код математика

Ном_разд

Числовой, ВК

Код раздела

Таблица 13 - Добавление неключевых атрибутов в отношение «РАЗДЕЛ»

Атрибут

Тип

Описание

Ном_разд

Числовой, ПК

Номер раздела

Назв_разд

Текстовый

Наименование раздела

1.4 Входные документы и формы

Входными данными в проектируемой информационной системе будут являться таблицы:

1) МАТЕМАТИКИ - в данной таблице хранится информация о великих математиках древности и современности;

2) ТРУДЫ - в данной таблице хранится информация о трудах математиков;

3) СТРАНЫ - в данной таблице хранится информация о странах, в которых проживали математики;

4) ЭПОХА - в данной таблице хранится информация об исторических эпохах, в которых жили математики;

5) РАЗДЕЛ - в данной таблице хранится информация о разделах математики, которым принадлежат труды великих математиков.

1.5 Описание информационных процедур

Вся обработка БД построена на применение языка структурированных запросов SQL.

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

1.6 Выбор стандарта БД

СУБД Paradox for Windows компании Borland пакет Paradox 7 - это существенно улучшенный продукт, более простой в употреблении и предоставляющий более мощные средства разработки.

Для разработки БД использовалась утилита Database Desktop, входящая в поставку Delphi.

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

Использование BDE технологи предоставляет множество преимуществ:

1) Непосредственный доступ к локальным базам данных;

2) Доступ к SQL-серверам с помощью набора драйверов Borland SQL Links;

3) Доступ к любым источникам данных, имеющим драйвер ODBC;

4) Создание приложений «клиент-сервер», использующих разнородные данные;

5) Использование SQL (Structured Query Language -- язык запросов к серверным СУБД), в том числе и при работе с локальными данными;

6) Изоляцию приложения от средств языковой поддержки.

1.7 Выбор среды разработки

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

Для реализации электронной энциклопедии «Великие математики» была выбрана система программирования Delphi версии 7 фирмы Enterprise (Borland), так как она предоставляет наиболее широкие возможности для программирования приложений ОС Windows.

Delphi - это продукт Borland International для быстрого создания приложений. Высокопроизводительный инструмент визуального построения приложений включает в себя настоящий компилятор кода и предоставляет средства визуального программирования, несколько похожие на те, что можно обнаружить в Microsoft Visual Basic или в других инструментах визуального проектирования. В основе Delphi лежит язык Object Pascal, который является расширением объектно-ориентированного языка Pascal.

Основным преимуществом Delphi является его среда программирования с визуальным конструктором программ. Эта среда (вместе с объектной библиотекой VCL) позволяет эффективно программировать под MS Windows, не отвлекаясь на выяснение всех деталей Win API, а работать над логикой программы. Delphi -- полнофункциональная интегрированная среда разработки приложений под платформу Wintel, основанная на языке программирования Object Pascal. "Паскаль" -- достаточно легкий язык программирования, необычайно гибок и прекрасно подходит для решения широкого круга задач, в том числе для создания баз данных. Так же Delphi обладает уникальной компонентной системой, благодаря которой работа программиста значительно упрощается.

Преимущества Delphi по сравнению с другими программными продуктами.

1) Быстрота разработки приложения;

2) Высокая производительность разработанного приложения;

3) Настоящий 32-битный код, полученный в результате компиляции оптимизирующим компилятором;

4) Низкие требования разработанного приложения к ресурсам компьютера;

5) Возможность полного доступа к функциям операционных систем Windows;

6) Наращиваемость за счет встраивания новых компонент и инструментов в среду Delphi;

7) Возможность разработки новых компонент и инструментов собственными средствами Delphi (существующие компоненты и инструменты доступны в исходных текстах);

8) Удачная проработка иерархии объектов.

2. СПЕЦИАЛЬНАЯ ЧАСТЬ

2.1 Описание БД в терминах СУБД

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

Используя СУБД Paradox 7, с помощью утилиты Database Desktop можно создавать как структуру реляционных таблиц, так и всевозможные ограничения целостности таблиц, индексы, первичные ключи и внешние ключи. Таблицы, созданные в Database Desktop хранятся в виде файлов с расширением *.dbf.

Необходимо установить working directory, что бы в дальнейшем все созданные таблицы сохранялись в той директорией, в которой вы укажете. Создадим пять таблиц с именами TMath, TOpen, TStrana, TAge, TRazdel (Рисунок 5).

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

Select TMath.*, TAge.*, TStrana.*

from TMath, TAge, TStrana

where TMath.Age=TAge.Age

and TMath.Strana=TStrana.Strana

В этом запросе выбираем все поля таблиц TMath, TAge, TStrana, где соответствующие внешние ключи таблицы TМath равны первичным ключам родительских таблиц TAge, TStrana.

Аналогичный запрос используется на форме манипуляции с данными FmAdmin:

Select TMath.*, TAge.NAge, TStrana.NStrana

from TMath, TAge, TStrana

where TMath.Age=TAge.Age

and TMath.Strana=TStrana.Strana

Различие этих запросов заключается лишь в выборе конкретных полей NAge (Наименование эпохи) и NStrana (Наименование страны) из таблиц TAge (Эпоха) и TStrana (Страна).

2.2 Проектирование БД в СУБД

Разработка БД средствами СУБД выглядит следующим образом:

Рисунок 7 - Структура таблицы TMath (Математики)

Рисунок 8 - Структура таблицы TOpen (Труды математиков)

Рисунок 9 - Структура таблицы TStrana (Страны)

Рисунок 10 - Структура таблицы TAge (Эпоха)

Рисунок 11 - Структура таблицы TAge (Эпоха)

2.3 Проектирование спец. СУБД

2.3.1 Проектирование ядра СУБД

Проектирование ядра СУБД осуществляется посредством системы разработки программного обеспечения - ИСР Delphi 7.

Разрабатывая электронную энциклопедию, следует ограничить права пользователя на редактирование, добавление и удаление данных. Для этого будет использована форма входа в приложение, предоставляющая выбор режима использования (пользователь или администратор) энциклопедии «Великие математики» (Рисунок 12).

Рисунок 12 - Форма FmLogin (Вход)

Для выбора пользователем одной из нескольких взаимоисключающих альтернатив был выбран компонент RadioGroup палитры компонентов Standart. Определить, какую из кнопок выбрал пользователь, можно по свойству ItemIndex, которое показывает индекс выбранной кнопки. Индексы, как всегда в Delphi, начинаются с 0. По умолчанию ItemIndex = -1, что означает отсутствие выбранной кнопки.

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

Как уже было отмечено, для пользователя права ограничатся только просмотром информации. Для этого была заведена специальная переменная «admin» типа boolean, принимающая значения false (ложь) при выборе пользовательского режима. Эта переменная будет использована в дальнейшем на главной форме самой энциклопедии (Рисунок 13).

Рисунок 13 - Форма FmMain (Главная форма энциклопедии)

Главная форма энциклопедии запускается независимо от выбора режима. На этой форме использован компонент TQuery, расположенный на палитре компонентов BDE. Компонент TQuery позволяет использовать операторы SQL для того, чтобы определять или создавать наборы данных, которые можно отобразить на экране.

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

1. Active - указывает, открыт (true) или закрыт (false) данный запрос;

2. SQL - чтобы ввести SQL запрос. Свойство SQL - вероятно, самая важная часть TQuery.

3. RequestLive - определяет возможность модификации данных, Если RequestLive имеет значение false, результат запроса возвращается в состоянии read-only.

В данном приложении свойство RequestLive всех компонентов TQuery имеет значение false.

В качестве компонента визуализации используем компонент DBGrid со страницы Data Control. Это визуальный компонент, в котором будут отображаться данные. Компонент TDataSource палитры компонентов Data Access управляет взаимодействием между компонентом DBGrid и компонентом Query .

По нажатию кнопок разделов будем менять вывод данных следующим образом:

Q1.SQL.Clear; //Очищаем свойство SQL

q1.SQL.Add ('select Math, FIO from TMath'); // Добавляем запрос

Q1.Close; Q1.Open; // Активируем Query

DBGrid1.Columns[0].FieldName:='FIO'; // Вывод в DBGrid

butt:=1; // фиксируем нажатие имено 1 кнопки раздела

Label4.Caption:='ФИО математика'; // Указываем поле для поиска

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

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

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

В пользовательском режиме при двойном щелчке по DBGrid активируется форма просмотра великих математиков FmMath (Рисунок 14).

Рисунок 14 - Форма FmMath (Просмотр великих математиков)

Форма FMath содержит два компонента TQuery. Компонент TQuery - QMath используется для отбора данных о математиках, а компонент QOpen - трудов математиков. При щелчке по DBGrid1, который используется для визуализации списка математиков, данные формы меняется следующим образом:

nz:=QMath.Fields[0].Value; // фиксируем выбранного математика

QOpen.SQL.Clear; //очищаем запрос для вывода трудов математика

QOpen.SQL.Add('Select TOpen.*, TRazdel.NRazdel'); //выбираем поля

QOpen.SQL.Add('from TOpen, TRazdel'); //указываем таблицы

QOpen.SQL.Add(' where TOpen.Razdel=TRazdel.Razdel'); //связываем таблицы TRazdel и TOpen

QOpen.SQL.Add(' and TOpen.Math='+IntToStr(nz));

//Добавляем запрос на вывод трудов именно выбранного математика

QOpen.Open; QOpen.Open; // активируем запрос для вывода трудов математика

if FileExists(FmMain.dir+'/Text/'+IntToStr(nz)+'.txt') then

// Проверяем, существуют ли текстовые данные о выбранном математике

FmMath.Memo1.Lines.LoadFromFile(FmMain.dir+'/Text/'+IntToStr(nz)+'.txt'); // загружаем текстовые данные в Memo1

if FileExists(FmMain.dir+'/Image/Math/'+IntToStr(nz)+'.jpg') then

// Проверяем, существует ли графический файл для выбранного математика

FmMath.Image1.Picture.LoadFromFile(FmMain.dir+'/Image/Math/'+

IntToStr(nz)+'.jpg'); // загружаем графическое изображение в Image1

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

2.3.2 Проектирование входных форм

В данной работе входные формы используются при выборе режима администратора. При проектировании входных форм, была создана одна основная форма для манипуляции с основными данными (Рисунок 14), а также небольшие формы под справочники.

Рисунок 15 - Форма манипуляции с данными энциклопедии (FmAdmin)

Для связи с данными из таблиц используем компоненты TQuery и TTable, расположенные на палитре компонентов BDE.

Компонент TQuery формы манипуляции с данными энциклопедии «Великие математики» FmAdmin необходим только для визуализации данных из нескольких таблиц. Сами операции с данными будут производиться компонентом TTable, свойство TableName которого определяет имя таблицы базы данных. Осуществление манипуляции данными с помощью кнопок формы FmAdmin можно посмотреть в приложении работы.

Для удобства, к редактированию справочников можно перейти как из главной формы энциклопедии, описанной разделе 2.3.1, так и из основной формы манипуляции с данными. Одна из форм справочников представлена на рисунке 16.

Рисунок 16 - Форма справочника «Разделы» (FmRazdel)

Каждая форма справочника использует только одну таблицу, поэтому был использован компонент TTable и операции с данными происходят напрямую, в отличие от форм, где есть необходимость использовать компонент TQuery для отображения данных из нескольких таблиц. На форме справочников также использовано свойство TableName компонента TTable - для подключения таблицы. Компонент DataSource служит для связи между компонентом TTable и компонентами палитры DataControls DBGrid и DBNavigator.

DBNavigator палитры компонентов Data Controls служит для манипуляции с данными из таблиц справочников.

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

Свойство ConfirmDelete компонента DBNavigator установлено в True и вызывает отображение диалоговой панели при каждом нажатии на кнопку Delete.

2.3.3 Проектирование запросов

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

В качестве параметров служат следующие параметры:

1) loCaseInsensitive - Регистр букв не учитывается.

2) loPartialKey - Частичное совпадение значения поиска.

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

Для осуществления поиска в приложении используем функцию Locate компонентов TTable и TQuery. Locate - Этот универсальный метод поиска устанавливает текущую запись как первую строку, удовлетворяющую набору критериев поиска. Поиск главной формы энциклопедии зависит от выбранного раздела, который фиксировался переменной butt:

if Edit1.Text< >'' then

BEGIN

case butt of

1: q1.Locate('FIO', Edit1.Text,[loCaseInsensitive, loPartialKey]);

2: q1.Locate('NOpen', Edit1.Text,[loCaseInsensitive, loPartialKey]);

3: q1.Locate('NStrana', Edit1.Text,[loCaseInsensitive, loPartialKey]);

4: q1.Locate('NAge', Edit1.Text,[loCaseInsensitive, loPartialKey]);

end;

END ELSE

ShowMessage(' Введите критерий поиска! ');

Поиск формы FmMath (Просмотр математиков) осуществляется только по полю ФИО математика таблицы TMath(Математики):

if Edit1.Text< >'' then

BEGIN

qmath.Locate('FIO', Edit1.Text,[loCaseInsensitive, loPartialKey]);

nz:=QMath.Fields[0].Value;

QO; // процедура обновления данных для трудов математиков QOpen

QOpen.SQL.Add(' where TOpen.Math='+IntToStr(nz));

QOpen.Open;

if FileExists(FmMain.dir+'/Text/'+IntToStr(nz)+'.txt') then

FmMath.Memo1.Lines.LoadFromFile(FmMain.dir+'/Text/'+IntToStr(nz)+'.txt');

if FileExists(FmMain.dir+'/Image/Math/'+IntToStr(nz)+'.jpg') then

FmMath.Image1.Picture.LoadFromFile(FmMain.dir+'/Image/Math/'+IntToStr(nz)+'.jpg');

END ELSE

ShowMessage(' Введите критерий поиска! ');

Процедуру обновления набора данных QO для компонента QOpen (TQuery) можно посмотреть в приложении работы.

3. ТЕСТИРОВАНИЕ ПРОГРАММНОГО ПРОДУКТА

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

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

4. ИНСТРУКЦИЯ ПО ЭКСПЛУАТАЦИИ И УСТАНОВКЕ

Электронная энциклопедия «Великие математики» осуществляется в два этапа:

1. Скопировать папку с программой в любую удобную папку или область на жёстком диске компьютера;

2. Открытие Файла Mathem.exe в папке с программой.

Эксплуатация: После запуска программы появится форма выбора режима использования энциклопедии (Рисунок 17).

Рисунок 17 - Форма входа в приложение (FmLogin)

Далее опишем структуру приложения при выборе пользовательского режима. Осуществив вход в приложение, пользователю будет представлена главная форма энциклопедии, содержащая разделы и поиск по разделам (Рисунок 18).

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

1) «Великие математики» - ФИО математика;

2) «Труды математиков» - Наименование труда;

3) «Страны математиков» - Название страны;

4) «Исторические эпохи» - Наименование эпохи.

Рисунок 18 - Главная форма «Великие математики»

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

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

Набор информации на форме просмотра математиков будет зависеть от выбранного раздела и записи на главной форме энциклопедии:

1) «Великие математики» - откроется форма, содержащая набор данных обо всех имеющихся в приложении математиках. На форме просмотра первоначально будут располагаться данные о выбранном математике;

2) «Труды математиков» - как и в предыдущем случае, откроется форма, содержащая набор данных обо всех имеющихся в приложении математиках. На форме просмотра первоначально будут располагаться данные о математике создавшей выбранный труд;

3) «Страны математиков» - откроется форма просмотра математиков, проживавших в выбранной стране;

4) «Исторические эпохи» - откроется форма просмотра данных о математиках, проживавших в выбранную историческую эпоху.

Рисунок 19 - Форма просмотра математиков (FmMath)

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

Пользователь также может увеличить изображение портрета математика (Рисунок 20) нажав на портрет (также и закрыть).

Рисунок 20 - Просмотр портрета математика

При выборе режима администрирования необходимо будет ввести пароль (Рисунок 21).

Рисунок 21 - Вход в приложение в режиме администратора

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

При переходе по записям разделов «Великие математики» и «Труды математиков» откроется главная форма манипуляции данными математиков и их трудов (Рисунок 22).

Рисунок 22 - Форма манипуляции данными математиков и трудов

На этой форме можно осуществить:

1) Добавление новых записей и редактирование имеющихся записей математиков и трудов (Рисунок 23);

Рисунок 23 - Добавление/редактирование записей формы FmMath

2) Добавление и редактирование биографических сведений по математикам (Рисунок 24);

Рисунок 24 - Добавление/редактирование биографии математика

3) Поиск по ФИО математика (Также как и в предыдущих случаях - по части слова и без учета регистра);

4) Загрузку и сохранение графических изображений портретов математиков файлов формата «.jpg» (Рисунок 25);

Рисунок 25 - Загрузка изображения портрета математика

5) Удаление данных;

6) Переход к манипуляции данными справочников «Эпоха», «Разделы» и «Страна» (Рисунок 26).

Рисунок 26 - Справочник стран

При переходе по записям разделов «Страны математиков» и «Исторические эпохи» главной формы энциклопедии в режиме администратора также откроются соответствующие справочники. На рисунке 27 представлен справочник «Исторические эпохи»:

Рисунок 27 - Справочник «Исторические эпохи»

5. ЗАКЛЮЧЕНИЕ

В результате выполнения курсового проекта был произведен системный анализ, рассмотрен принцип составления ERD - анализа для проектирования базы данных. Также был разработана электронная энциклопедия «Великие математики» в среде разработки Borland Delphi 7, которая представляет собой интегрированную систему, ядро которой составляет база данных (БД).

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

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

Цель курсовой работы была достигнута.

6. СПИСОК ИСТОЧНИКОВ

1. Архангельский А.Я. Программирование в Delphi 7. - М.: ЗАО «Издательство БИНОМ», 2005. - 200с.

2. Бобровский А.Н. Delphi 7. Учебный курс. - Санкт-Петербург: ЗАО «Питербук» , 2006 год, - 639 стр.

3. Большой Энциклопедический Словарь» [Электронный ресурс]. - Электрон. дан. - [М.].: ЛАНИ, СПИИРАН, группа ExOS Copyright © 2004 - 2009. - Режим доступа: http://www.vslovar.ru/

4. Галерея «Великие математики» [Электронный ресурс]. - Электрон. дан. - [Ноябрьск].: Персональный сайт учителя математики Зайцевой И.А., Copyright © 2006 -2011. - Режим доступа: http://www.zaitseva-irina.ru/

5. Глушаков С.В., Клевцов А.Л. Delphi 7. Эффективное руководство. - М.: Хранитель, 2008. - 640с.

6. Гофман, Хамоненко Delphi 7. Наиболее полное руководство. - Санкт-Петербург: БХВ-Петербург, 2008. - 1216с.

7. Егоров Е.В. Работа с базами данных в Delphi 7 - М.: АСТ Москва, 2008. - 450с.

8. Кандзюба С.П., Громов В.Н. Delphi 7. Базы данных и приложения. Лекции и упражнения. - Киев: ДинСофт, 2008. - 576с.

9. Кузнецов С.Д. Базы данных. Модели и языки. - Бином, 2008.

10. Культин Н.Е. Программирование в Turbo Pascal 7.0 и Delphi , 2009.

11. Марков Евгений, Дарахвелидзе Петр Программирование в Delphi 7. - Санкт-Петербург: БХВ-Петербург, 2009. - 780с.

12. Одинцов И. Профессиональное программирование. Системный подход. - Санкт-Петербург: ЗАО «Питербук», 2005. - 150с.

13. Орлов С.А. Технология разработки программного обеспечения. Разработка сложных программных систем. - Санкт-Петербург: БХВ-Петербург, 2007. - 570с.

14. Осипов Д.В. Delphi. Профессиональное программирование. - М.: Символ-Плюс, 2006. - 120с.

15. Основы современных баз данных [Электронный ресурс]. - Электрон. дан. - [М.].: Сервер Информационных Технологий, Copyright © 2005 - 2011. - Режим доступа: http://citforum.ru/

16. Петров В.Н. Информационные системы. - Санкт-Петербург: Питер, 2007. - 168с.

17. Поган А.М., Царенко Ю.А. Программирование в Delphi. - М: «ЭКСМО», 2006. - 309с.

18. Рубенкинг Н., Программирование в Delphi 7. - Киев: ДинСофт, 2005. - 280с.

19. Сорокин А.В. Delphi Разработка баз данных. - Санкт-Петербург: Питер. 2005. - 400с.

20. Фаронов В.В. Delphi 7. Учебный курс. - Санкт-Петербург: Питер, 2008. - 672с.

21. Чиртик А., Борисок В., Корвель Ю. Delphi. Трюки и эффекты. - Санкт-Петербург: Питер, 2007. - 400c.

7. ПРИЛОЖЕНИЕ

Форма входа в приложение (FmLogin)

unit uGalery;

interface

uses

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

Dialogs, StdCtrls, Buttons, ExtCtrls, jpeg;

type

TFmLogin = class(TForm)

Panel1: TPanel;

RG1: TRadioGroup;

Image1: TImage;

BitBtn1: TBitBtn;

Panel2: TPanel;

Edit1: TEdit;

Label1: TLabel;

Label2: TLabel;

procedure BitBtn1Click(Sender: TObject);

procedure RG1Click(Sender: TObject);

procedure Edit1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

admin:boolean;

end;

var

FmLogin: TFmLogin;

implementation

uses uMain;

{$R *.dfm}

procedure TFmLogin.BitBtn1Click(Sender: TObject);

begin

CASE RG1.ItemIndex of

0: begin admin:=false; FmMain.ShowModal; end;

1: begin

if Edit1.Text='den' then begin admin:=true; FmMain.ShowModal; end

else Label2.Caption:='Пароль неверный';

Edit1.Text:='';

end;

END;//CASE

end;

procedure TFmLogin.RG1Click(Sender: TObject);

begin

CASE RG1.ItemIndex of

0: begin Panel2.Visible:=false; end;

1: begin Panel2.Visible:=true; end;

END;//CASE

end;

procedure TFmLogin.Edit1Click(Sender: TObject);

begin

Label2.Caption:='';

end;

end.

Главная форма энциклопедии “Великие математики» (FmMain)

unit uMain;

interface

uses

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

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

type

TFmMain = class(TForm)

Panel2: TPanel;

Panel1: TPanel;

Button1: TButton;

Button2: TButton;

Button3: TButton;

Button4: TButton;

Label1: TLabel;

DataSource1: TDataSource;

Label2: TLabel;

DBGrid1: TDBGrid;

Q1: TQuery;

Panel5: TPanel;

Label4: TLabel;

Button6: TButton;

Button7: TButton;

Edit1: TEdit;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure Button4Click(Sender: TObject);

procedure Button7Click(Sender: TObject);

procedure DBGrid1DblClick(Sender: TObject);

procedure FormActivate(Sender: TObject);

procedure Button6Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

butt:short;

math,age,open,strana:short;

dir:string;

end;

var

FmMain: TFmMain;

implementation

uses uGalery, uMath, uAdmin, uStrana, uAge;

{$R *.dfm}

procedure TFmMain.Button1Click(Sender: TObject);

begin

Q1.SQL.Clear;

q1.SQL.Add('select Math, FIO from TMath');

Q1.Close; Q1.Open;

DBGrid1.Columns[0].FieldName:='FIO';

butt:=1;

Label4.Caption:='ФИО математика';

end;

procedure TFmMain.Button2Click(Sender: TObject);

begin

Q1.SQL.Clear;

q1.SQL.Add('select Open, NOpen from TOpen');

Q1.Close; Q1.Open;

DBGrid1.Columns[0].FieldName:='NOpen';

butt:=2;

Label4.Caption:='Открытие математика';

end;

procedure TFmMain.Button3Click(Sender: TObject);

begin

Q1.SQL.Clear;

q1.SQL.Add('select Strana, NStrana from TStrana');

Q1.Close; Q1.Open;

DBGrid1.Columns[0].FieldName:='NStrana';

butt:=3;

Label4.Caption:='Страна проживания';

end;

procedure TFmMain.Button4Click(Sender: TObject);

begin

Q1.SQL.Clear;

q1.SQL.Add('select Age, NAge, Period from TAge');

Q1.Close; Q1.Open;

DBGrid1.Columns[0].FieldName:='NAge';

DBGrid1.Columns[1].FieldName:='Period';

butt:=4;

Label4.Caption:='Историческая эпоха';

end;

procedure TFmMain.Button7Click(Sender: TObject);

begin

FmLogin.Close;

end;

procedure TFmMain.DBGrid1DblClick(Sender: TObject);

begin

if FmLogin.admin=false then

BEGIN

case butt of

1: begin

Math:=q1.Fields[0].Value;

FmMath.QM;

FmMath.QMath.Open;

FmMath.QMath.Locate('Math', IntToStr(Math),[]);

end;

2: begin

Open:=q1.Fields[0].Value;

FmMath.QM; FmMath.QO; FmMath.QMath.Open;

FmMath.QOpen.Locate('Open', IntToStr(Open),[]);

Math:=FmMath.QOpen.Fields[3].Value;

FmMath.QMath.Locate('Math', IntToStr(Math),[]);

end;

3: begin

Strana:=q1.Fields[0].Value;

FmMath.QM;

FmMath.QMath.SQL.Add(' and TMath.Strana='+IntToStr(Strana));

FmMath.QMath.Open;

Math:=FmMath.QMath.Fields[0].Value;

end;

4: begin

Age:=q1.Fields[0].Value;

FmMath.QM;

FmMath.QMath.SQL.Add(' and TMath.Age='+IntToStr(Age));

FmMath.QMath.Open;

Math:=FmMath.QMath.Fields[0].Value;

end;

end;

FmMath.QO;

FmMath.QOpen.SQL.Add(' and TOpen.Math='+IntTostr(Math));

FmMath.QOpen.Open;

if FileExists(dir+'/Text/'+IntToStr(Math)+'.txt') then

FmMath.Memo1.Lines.LoadFromFile(dir+'/Text/'+IntToStr(Math)+'.txt');

if FileExists(dir+'/Image/Math/'+IntToStr(Math)+'.jpg') then

FmMath.Image1.Picture.LoadFromFile(dir+'/Image/Math/'+IntToStr(Math)+'.jpg');

FmMath.ShowModal;

END

ELSE

BEGIN

case butt of

1: begin

Math:=q1.Fields[0].Value;

FmAdMin.QMat;

FmAdMin.QMath.Locate('Math', IntToStr(Math),[]);

FmAdmin.nom:=IntToStr(math);

FmAdmin.QOp;

if FileExists(dir+'/Image/Math/'+FmAdmin.nom+'.jpg') then

FmAdmin.Image1.Picture.LoadFromFile(dir+'/Image/Math/'+FmAdmin.nom+'.jpg');

FmAdmin.ShowModal;

end;

2: begin

Open:=q1.Fields[0].Value;

FmAdMin.QMat;

FmAdmin.TOpen.Locate('Open', IntToStr(Open),[]);

Math:=FmAdmin.TOpen.Fields[3].Value;

FmAdmin.QMath.Locate('Math', IntToStr(Math),[]);

FmAdmin.nom:=IntToStr(math); FmAdmin.QOp;

if FileExists(dir+'/Image/Math/'+FmAdmin.nom+'.jpg') then

FmAdmin.Image1.Picture.LoadFromFile(dir+'/Image/Math/'+FmAdmin.nom+'.jpg');

FmAdmin.ShowModal;

end;

3: begin

Strana:=q1.Fields[0].Value;

FmStrana.Table1.Locate('Strana', IntToStr(Strana),[]);

FmStrana.ShowModal;

end;

4: begin

Age:=q1.Fields[0].Value;

FmAge.Table1.Locate('Age', IntToStr(Age),[]);

FmAge.ShowModal;

end;

end;

END;

end;

procedure TFmMain.FormActivate(Sender: TObject);

begin

dir:=GetCurrentDir;

Q1.SQL.Clear;

q1.SQL.Add('select Math, FIO from TMath');

Q1.Close; Q1.Open;

DBGrid1.Columns[0].FieldName:='FIO';

butt:=1;

Label4.Caption:='ФИО математика';

end;

procedure TFmMain.Button6Click(Sender: TObject);

begin

if Edit1.Text<>'' then

BEGIN

case butt of

1: q1.Locate('FIO', Edit1.Text,[loCaseInsensitive, loPartialKey]);

2: q1.Locate('NOpen', Edit1.Text,[loCaseInsensitive, loPartialKey]);

3: q1.Locate('NStrana', Edit1.Text,[loCaseInsensitive, loPartialKey]);

4: q1.Locate('NAge', Edit1.Text,[loCaseInsensitive, loPartialKey]);

end;

END ELSE

ShowMessage(' Укажите критерий поиска! ');

end;

end.

Форма «Просмотр великих математиков» (FmMath)

unit uMath;

interface

uses

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

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

type

TFmMath = class(TForm)

DBGrid1: TDBGrid;

Memo1: TMemo;

DBGrid2: TDBGrid;

QMath: TQuery;

QOpen: TQuery;

DataSource1: TDataSource;

DataSource2: TDataSource;

Panel1: TPanel;

DBText1: TDBText;

Label3: TLabel;

DBText3: TDBText;

DBText2: TDBText;

Panel2: TPanel;

Panel3: TPanel;

Panel4: TPanel;

Image1: TImage;

Panel5: TPanel;

Button6: TButton;

Button7: TButton;

Edit1: TEdit;

Label4: TLabel;

Label2: TLabel;

DBText4: TDBText;

DBText5: TDBText;

Label1: TLabel;

procedure QM;

procedure QO;

procedure Image1Click(Sender: TObject);

procedure FormActivate(Sender: TObject);

procedure DBGrid1CellClick(Column: TColumn);

procedure Button7Click(Sender: TObject);

procedure Button6Click(Sender: TObject);

private

{ Private declarations }

nz:short;

public

{ Public declarations }

end;

var

FmMath: TFmMath;

implementation

uses uMain, uPort, uGalery;

{$R *.dfm}

procedure TFmMath.QM;

begin

QMath.SQL.Clear;

QMath.SQL.Add('Select TMath.*, TAge.*, TStrana.*');

QMath.SQL.Add(' from TMath, TAge, TStrana');

QMath.SQL.Add(' where TMath.Age=TAge.Age');

QMath.SQL.Add(' and TMath.Strana=TStrana.Strana');

QMath.Open;

end;

procedure TFmMath.QO;

begin

QOpen.SQL.Clear;

QOpen.SQL.Add('Select TOpen.*, TRazdel.NRazdel');

QOpen.SQL.Add('from TOpen, TRazdel');

QOpen.SQL.Add('where TOpen.Razdel=Trazdel.Razdel');

QOpen.Open;

end;

procedure TFmMath.Image1Click(Sender: TObject);

begin

if FileExists(FmMain.dir+'/Image/Math/'+IntToStr(nz)+'.jpg') then

FmPort.Image1.Picture.LoadFromFile(FmMain.dir+'/Image/Math/'+IntToStr(nz)+'.jpg');

FmPort.ShowModal;

end;

procedure TFmMath.FormActivate(Sender: TObject);

begin

nz:=FmMain.math;

end;

procedure TFmMath.DBGrid1CellClick(Column: TColumn);

begin

nz:=QMath.Fields[0].Value;

QO;

QOpen.SQL.Add(' and TOpen.Math='+IntToStr(nz)); QOpen.Open;

if FileExists(FmMain.dir+'/Text/'+IntToStr(nz)+'.txt') then

FmMath.Memo1.Lines.LoadFromFile(FmMain.dir+'/Text/'+IntToStr(nz)+'.txt');

if FileExists(FmMain.dir+'/Image/Math/'+IntToStr(nz)+'.jpg') then

FmMath.Image1.Picture.LoadFromFile(FmMain.dir+'/Image/Math/'+IntToStr(nz)+'.jpg');

end;

procedure TFmMath.Button7Click(Sender: TObject);

begin

FmLogin.Close;

end;

procedure TFmMath.Button6Click(Sender: TObject);

begin

if Edit1.Text<>'' then

BEGIN

qmath.Locate('FIO', Edit1.Text,[loCaseInsensitive, loPartialKey]);

nz:=QMath.Fields[0].Value;

QO;

QOpen.SQL.Add(' and TOpen.Math='+IntToStr(nz)); QOpen.Open;

if FileExists(FmMain.dir+'/Text/'+IntToStr(nz)+'.txt') then

FmMath.Memo1.Lines.LoadFromFile(FmMain.dir+'/Text/'+IntToStr(nz)+'.txt');

if FileExists(FmMain.dir+'/Image/Math/'+IntToStr(nz)+'.jpg') then

FmMath.Image1.Picture.LoadFromFile(FmMain.dir+'/Image/Math/'+IntToStr(nz)+'.jpg');

END ELSE

ShowMessage(' Введите критерий поиска! ');

end;

end.

Форма работы с данными энциклопедии «Великие математики» (FmAdmin)

unit uAdmin;

interface

uses

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

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

ExtDlgs, Mask;

type

TFmAdmin = class(TForm)

TMath: TTable;

QMath: TQuery;

DataSource1: TDataSource;

TOpen: TTable;

QOpen: TQuery;

DataSource2: TDataSource;

Panel1: TPanel;

DBGrid1: TDBGrid;

Panel2: TPanel;

Button3: TButton;

Button2: TButton;

Panel3: TPanel;

Button4: TButton;

Button5: TButton;

Panel4: TPanel;

Edit0: TEdit;

Edit1: TEdit;

Edit4: TEdit;

Edit5: TEdit;

DBLAge: TDBLookupComboBox;

DBLStrana: TDBLookupComboBox;

TAge: TTable;

TStrana: TTable;

DataSourceAge: TDataSource;

DataSourceStrana: TDataSource;

Panel5: TPanel;

DBGrid2: TDBGrid;

Panel6: TPanel;

Button6: TButton;

Button7: TButton;

Panel7: TPanel;

Button8: TButton;

Button9: TButton;

Panel8: TPanel;

Edit6: TEdit;

Edit7: TEdit;

Panel9: TPanel;

Label4: TLabel;

Button10: TButton;

Button12: TButton;

Edit9: TEdit;

OpenPictureDialog1: TOpenPictureDialog;

Panel10: TPanel;

Edit8: TMaskEdit;

Panel11: TPanel;

Edit2: TMaskEdit;

Panel12: TPanel;

Edit3: TMaskEdit;

Button1: TButton;

Label2: TLabel;

Panel13: TPanel;

Button13: TButton;

Button14: TButton;

Image1: TImage;

Label1: TLabel;

Panel14: TPanel;

Button15: TButton;

Button11: TButton;

Label3: TLabel;

Edit10: TEdit;

TRazdel: TTable;

DataSourceRazdel: TDataSource;

Button16: TButton;

DBLRazdel: TDBLookupComboBox;

procedure FormActivate(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure DBLAgeClick(Sender: TObject);

procedure DBLStranaClick(Sender: TObject);

procedure Edit5Click(Sender: TObject);

procedure Edit4Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure Button4Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button5Click(Sender: TObject);

procedure DBGrid1DblClick(Sender: TObject);

procedure DBGrid1CellClick(Column: TColumn);

procedure QOp;

procedure Button9Click(Sender: TObject);

procedure Button8Click(Sender: TObject);

procedure Button7Click(Sender: TObject);

procedure Button6Click(Sender: TObject);

procedure DBGrid2DblClick(Sender: TObject);

procedure Button12Click(Sender: TObject);

procedure Button10Click(Sender: TObject);

procedure Button13Click(Sender: TObject);

procedure QMat;

procedure Button14Click(Sender: TObject);

procedure Button11Click(Sender: TObject);

procedure Button15Click(Sender: TObject);

procedure DBLRazdelClick(Sender: TObject);

procedure Button16Click(Sender: TObject);

procedure Edit10Click(Sender: TObject);

private

{ Private declarations }

age, strana,razdel:short;

r,g:short;

nz:short;

public

{ Public declarations }

nom:string[4];

end;

var

FmAdmin: TFmAdmin;

implementation

uses uBio, uMain, uGalery, uStrana, uAge, uRazdel;

{$R *.dfm}

procedure TFmAdmin.QMat;

begin

QMath.SQL.Clear;

QMath.SQL.Add('Select TMath.*, TAge.NAge, TStrana.NStrana');

QMath.SQL.Add(' from TMath, TAge, TStrana ');

QMath.SQL.Add(' where TMath.Age=TAge.Age');

QMath.SQL.Add(' and TMath.Strana=TStrana.Strana');

QMath.Open;

end;

procedure TFmAdmin.QOp;

begin

QOpen.SQL.Clear;

QOpen.SQL.Add('Select TOpen.*, TRazdel.NRazdel from TOpen, TRazdel');

QOpen.SQL.Add(' where TOpen.Razdel=Trazdel.Razdel and TOpen.Math='+nom);

QOpen.Open;

end;

procedure TFmAdmin.FormActivate(Sender: TObject);

begin

nom:=IntToStr(QMath.Fields[0].Value);

QOp;

end;

procedure TFmAdmin.Button1Click(Sender: TObject);

begin

nom:=IntToStr(QMath.Fields[0].Value);

if FileExists(FmMain.dir+'/Text/'+nom+'.txt') then

FmBio.Memo1.Lines.LoadFromFile(FmMain.dir+'/text/'+nom+'.txt');

FmBio.ShowModal;

end;

procedure TFmAdmin.DBLAgeClick(Sender: TObject);

begin

age:=TAge.Fields[0].Value;

Edit4.Text:= TAge.Fields[1].Value;

DBLAge.Visible:=False;

end;

procedure TFmAdmin.DBLStranaClick(Sender: TObject);

begin

strana:=TStrana.Fields[0].Value;

Edit5.Text:= TStrana.Fields[1].Value;

DBLStrana.Visible:=False;

end;

procedure TFmAdmin.Edit5Click(Sender: TObject);

begin

DBLStrana.Visible:=true;

end;

procedure TFmAdmin.Edit4Click(Sender: TObject);

begin

DBLAge.Visible:=true;

end;

procedure TFmAdmin.Button3Click(Sender: TObject);

begin

TMath.FindKey([StrToInt(nom)]);

TMath.Delete;

qMath.Close; qMath.Open;

Image1.Picture:=nil;

nom:=IntTostr(qmath.Fields[0].Value);

QOp;

end;

procedure TFmAdmin.Button4Click(Sender: TObject);

begin

Panel4.Visible:=false;

DBLAge.Visible:=false;

DBLStrana.Visible:=false;

Panel3.Visible:=false;

end;

procedure TFmAdmin.Button2Click(Sender: TObject);

begin

TMath.Last;

if TMath.Fields[0].IsNull then nom:='1'

else nom:=IntToStr(TMath.Fields[0].Value+1);

Edit0.Text:=nom;

Edit1.Text:='';

Edit2.Text:='';

Edit3.Text:='';

Edit4.Text:='';

Edit5.Text:='';

age:=0;

strana:=0;

Panel4.Visible:=true;

Panel3.Visible:=true;

R:=1;

end;

procedure TFmAdmin.Button5Click(Sender: TObject);

begin

IF (age<>0) and (strana<>0) and (Edit1.Text<>'') and (Edit2.Text<>'') and (Edit3.Text<>'') THEN

BEGIN

If R=1 then

Begin

Image1.Picture:=nil;

TMath.Append;

TMath.Fields[0].Value:=StrToInt(nom);

TMath.Fields[1].Value:=Edit1.Text;

TMath.Fields[2].Value:=Edit2.Text;

TMath.Fields[3].Value:=Edit3.Text;

TMath.Fields[4].Value:=strana;

TMath.Fields[5].Value:=age;

TMath.Next;

end

else

Begin

TMath.FindKey([StrToInt(nom)]);

TMath.Edit;

TMath.Fields[1].Value:=Edit1.Text;

TMath.Fields[2].Value:=Edit2.Text;

TMath.Fields[3].Value:=Edit3.Text;

TMath.Fields[4].Value:=strana;

TMath.Fields[5].Value:=age;

TMath.Post;

end;

QMath.Close; QMath.Open; QMath.Last;

Panel4.Visible:=false;

DBLAge.Visible:=false;

DBLStrana.Visible:=false;

Panel3.Visible:=false;

QOp;

END

ELSE

SHOWMESSAGE(' Введите все данные ');

end;

procedure TFmAdmin.DBGrid1DblClick(Sender: TObject);

begin

R:=2;

nom:=IntToStr(qmath.Fields[0].Value);

edit0.Text:=nom;

edit1.Text:=qmath.Fields[1].Value;;

edit2.Text:=qmath.Fields[2].Value;

edit3.Text:=qmath.Fields[3].Value;

edit4.Text:=qmath.Fields[6].Value;

edit5.Text:=qmath.Fields[7].Value;

age:=qmath.Fields[5].Value;

strana:=qmath.Fields[4].Value;

Panel4.Visible:=true;

Panel3.Visible:=true;

end;

procedure TFmAdmin.DBGrid1CellClick(Column: TColumn);

begin

nom:=IntTostr(qmath.Fields[0].Value);

QOp;

if FileExists(FmMain.dir+'/Image/Math/'+nom+'.jpg') then

Image1.Picture.LoadFromFile(FmMain.dir+'/Image/Math/'+nom+'.jpg')

else Image1.Picture:=nil;

end;

procedure TFmAdmin.Button9Click(Sender: TObject);

begin

TOpen.Last;

if TOpen.Fields[0].IsNull then nz:=1

else nz:=TOpen.Fields[0].Value+1;

Edit6.Text:=IntToStr(nz);

Edit7.Text:='';

Edit8.Text:='';

Edit10.Text:='';

G:=1;

razdel:=0;

Panel7.Visible:=false;

Panel6.Visible:=true; Panel8.Visible:=true;

DBLRazdel.Visible:=false;

end;

procedure TFmAdmin.Button8Click(Sender: TObject);

begin

TOpen.FindKey([nz]);

TOpen.Delete;

qopen.Close; qopen.Open;

DBLRazdel.Visible:=false;

end;

procedure TFmAdmin.Button7Click(Sender: TObject);

begin

IF (Edit7.Text<>'') and (Edit8.Text<>'') and (razdel<>0) THEN

BEGIN

If G=1 then

Begin

TOpen.Append;

TOpen.Fields[0].Value:=nz;

TOpen.Fields[1].Value:=Edit7.Text;

TOpen.Fields[2].Value:=Edit8.Text;

TOpen.Fields[3].Value:=StrToInt(nom);

TOpen.Fields[4].Value:=razdel;

TOpen.Next;

end

else

Begin

TOpen.FindKey([nz]);

TOpen.Edit;

TOpen.Fields[0].Value:=nz;

TOpen.Fields[1].Value:=Edit7.Text;

TOpen.Fields[2].Value:=Edit8.Text;

TOpen.Fields[3].Value:=StrToInt(nom);

TOpen.Fields[4].Value:=razdel;

TOpen.Post;

end;

QOpen.Close; QOpen.Open; QOpen.Last;

Panel8.Visible:=false;

Panel6.Visible:=false;

DBLRazdel.Visible:=false;

Panel7.Visible:=true;

END

ELSE

SHOWMESSAGE(' Введите все данные ');

end;

procedure TFmAdmin.Button6Click(Sender: TObject);

begin

Panel8.Visible:=false;

Panel6.Visible:=false;

Panel7.Visible:=true;

DBLRazdel.Visible:=false;

end;

procedure TFmAdmin.DBGrid2DblClick(Sender: TObject);

begin

G:=2;

if QOpen.Fields[0].IsNull then ShowMessage('Добавьте запись о трудах математика ')

else begin

nz:=qopen.Fields[0].Value;

edit6.Text:=IntToStr(nz);

edit7.Text:=qopen.Fields[1].Value;;

edit8.Text:=qopen.Fields[2].Value;

edit10.Text:=qopen.Fields[5].Value;

Panel8.Visible:=true;

Panel6.Visible:=true;

Panel7.Visible:=false;

end;

end;

procedure TFmAdmin.Button12Click(Sender: TObject);

begin

FmLogin.Close;

end;

procedure TFmAdmin.Button10Click(Sender: TObject);

begin

if Edit9.Text<>'' then

BEGIN

qmath.Locate('FIO', Edit9.Text,[loCaseInsensitive, loPartialKey]);

nom:=IntToStr(QMath.Fields[0].Value);

QOp;

if FileExists(FmMain.dir+'/Image/Math/'+nom+'.jpg') then

Image1.Picture.LoadFromFile(FmMain.dir+'/Image/Math/'+nom+'.jpg')

else Image1.Picture:=nil;

END ELSE

ShowMessage(' Введите критерий поиска! ');

end;

procedure TFmAdmin.Button13Click(Sender: TObject);

begin

if(OpenPictureDialog1.Execute) then

Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);


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

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

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

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

    курсовая работа [717,7 K], добавлен 23.06.2011

  • Системный анализ предметной области. Нормальные формы таблиц. Физическое проектирование базы данных. Реализация структуры БД в СУБД MySQL. Запросы на создание таблиц, добавление и выборку данных. Реализация триггера и функции. Программный код WEB-страниц.

    курсовая работа [748,9 K], добавлен 01.11.2014

  • Системный анализ предметной области. Выбор инструментальных средств для создания программного обеспечения. Программирование на стороне SQL-сервера. Создание клиентского Win-приложения, пользовательский интерфейс. Физическое проектирование базы данных.

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

  • Этапы проектирования базы данных. Инфологическое проектирование. Определение требований к операционной обстановке. Выбор СУБД и других программных средств. Логическое и физическое проектирование реляционной базы данных. Технология доступа к информации.

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

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

    курсовая работа [926,7 K], добавлен 20.05.2015

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

    дипломная работа [790,1 K], добавлен 13.02.2016

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

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

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

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

  • Проектирование базы данных в среде СУБД MS Access. Автоматизация учета информации о товаре в магазине. Определение требований и функций системы. Анализ предметной области. Разработка, создание таблиц, запросов, форм и отчетов. Инструкция для пользователя.

    отчет по практике [523,6 K], добавлен 21.04.2014

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