Всё сдал! - помощь студентам онлайн Всё сдал! - помощь студентам онлайн

Реальная база готовых
студенческих работ

Узнайте стоимость индивидуальной работы!

Вы нашли то, что искали?

Вы нашли то, что искали?

Да, спасибо!

0%

Нет, пока не нашел

0%

Узнайте стоимость индивидуальной работы

это быстро и бесплатно

Получите скидку

Оформите заказ сейчас и получите скидку 100 руб.!


Разработка базы данных флагов мира

Тип Реферат
Предмет Информатика и программирование
Просмотров
398
Размер файла
81 б
Поделиться

Ознакомительный фрагмент работы:

Разработка базы данных флагов мира

Министерство образования и науки Украины

Харьковский национальный университет радиоэлектроники

Кафедра ПО ЭВМ

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

к курсовому проекту по дисциплине

"Организация баз данных и знаний"

Тема: " Разработка базы данных флагов мира"

Выполнил:

студент группы

Руководитель:

доцент каф. ПО ЭВМ

Работа защищена с оценкой

Харьков


Харьковский национальный университет радиоэлектроники

Кафедра программного обеспечения ЭВМ

Дисциплина: "Организация баз данных и знаний"

Специальность: "Программное обеспечение автоматизированных систем"

Курс 2 Группа XXXX Семестр 4-й

Задание

на курсовой проект студента

1. Тема проекта "Разработка базы данных флагов мира"

2. Срок сдачи студентом готового проекта

3. Исходные данные к проекту среда Delphi 7, создание таблиц баз данных с помощью Database Desktop, система управления базами данных Paradox.

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

5. Дата получения задания 3 марта 2008 г.

Студент ____________

Руководитель____________

"_____" _________ 2008 г.


Реферат

Объем пояснительной записки – __страниц. Пояснительная записка содержит _ рисунков, __ таблицы и ___ приложений.

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

Во время выполнения курсовой работы изучены методы программирования на языке Object Pascal c использованием среды разработки приложений Borland Delphi 7, рассмотрены методы организации и работы с базами данных.

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

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

Метою курсового проекту є розроблення прикладної програми, яка органiзує роботу с базою данних аудiо файлов, дозволяє проглядати та редагувати даннi, а також реалiзує пошук та сортировку данних.

Під час виконання курсової роботи були вивчені методи програмування алгорітмічною мовою Object Pascal, з використанням інтегрованого середовища розробки 32-разрядних додатків для Windows Borland DELPHI 7, розглянуті методи роботи з базами даних.

У наслідку виконання роботи була написана програма мовою Object Pascal, яка реалізує роботу з базою данних.

Програма, меню, аналiз, borland delphi 7, алгоритм, функцiя, метод, iнтерфейс користувача, файл, окно, зображення, пошук, метод, запрос, використання, база данных.


Содержание

Введение

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

2 Постановка задачи

3 Структура базы данных

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

4.1 Программная реализация

4.2 Анализ организации данных

4.3 Анализ программного кода

5 Описание программы

5.1 Интерфейс пользователя

5.2 Инструкция пользователя

5.3 Системные требования.

Выводы

Перечень ссылок

Приложение А

Приложение Б

Приложение В

Приложение Г

Приложение Д

Приложение Е


Введение

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

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

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

Восприятие реального мира можно соотнести с последовательностью разных, хотя иногда и взаимосвязанных, явлений. С давних времен люди пытались описать эти явления (даже тогда, когда не могли их понять). Такое описание называют данными.

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

Создание (программирование) базы данных и работа с ними осуществляется при помощи систем управления базами данных (СУБД), таких как MS Access, Oracle, dBase, FoxPro, Paradox, Clipper, Clarion.


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

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

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

— Удовлетворять всем требованиям пользователей к содержимому базы данных.

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

— Обеспечивать естественное, легкое для восприятия структурирование информации.

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

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

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

Типы данных, проектируемой БД:

- поле «Континент» - строка,

- поле «Страна» - строка,

- поле «Столица» - строка,

- поле «Информация о стране» - мемо поле,

- поле «Флаг» - графический тип,

- поле «Язык» - строка.


2 Постановка задачи

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

Для реализации данного задания мною была выбрана интегрированная среда быстрой разработки приложений Borland Delphi 7. Средства Delphi 7 позволяют создавать мощные и гибкие программные средства для работы с базами данных. Имеются несколько основных компонентов (объектов), которые необходимо использовать постоянно для доступа к БД. Эти объекты могут быть разделены на три группы:

— невизуальные: TTable, TQuery.

— визуальные: TDBGrid, TDBEdit, TDBImage.

— связующие: TDataSource.

Первая группа включает невизуальные классы, которые используются для управления таблицами и запросами. Эта группа сосредотачивается вокруг компонент типа TTable, TQuery. В Палитре Компонент эти объекты расположены на странице Data Access.

Вторая важная группа классов - визуальные, которые показывают данные пользователю, и позволяют ему просматривать и модифицировать их. Эта группа классов включает компоненты типа TDBGrid, TDBEdit, TDBImage. В Палитре Компонент эти объекты расположены на странице Data Controls.

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


3 Структура базы данных

При выполнении курсового проекта с помощью Database Desktop были созданы четыре таблицы для хранения данных: “Kontinent”, “Country”, “Language”, “Main”. Таблица “Kontinent” содержит данные о частях мира и их описание. Поля с описанием полей приведены в таблице 3.1.

Таблица 3.1 – Поля таблицы “Kontinent.db”

НАЗВАНИЕ ПОЛЯ

ТИП ПОЛЯ

ОПИСАНИЕ

ID

Short

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

Kontinent

Alpha(15)

Содержит строку с именем континента.

Information

Alpha(50)

Содержит строку с информацией о континенте.

Вторая таблица – “Country” – хранит сведения о стране. Описание полей их типов и назначения в таблице “Country” приведено в таблице 3.2.

Таблица 3.2 – Поля таблицы “Country.db”

НАЗВАНИЕ ПОЛЯ

ТИП ПОЛЯ

ОПИСАНИЕ

ID

Long Integer

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

ID_Kontinent

Short

Данное поле служит для связывания c таблицей “Kontinent”, ссылка на номер Континента

Country

Alpha(30)

Название страны

Capital

Alpha(30)

Название столицы

Information

Formated Memo

Информация о стране

Flag

Graphic

Изображение флага

Третья таблица – “Language” – хранит сведения о языках мира. Описание полей их типов и назначения в таблице “Language” приведено в таблице 3.3.


Таблица 3.3 – Поля таблицы “Language.db”

НАЗВАНИЕ ПОЛЯ

ТИП ПОЛЯ

ОПИСАНИЕ

ID

Short

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

Language

Alpha(20)

Язык

Четвертая таблица – “Main” – связывает таблицу “Country” и “Language”, она нужна для уменьшения объёма базы данных. Описание полей их типов и назначения в таблице “Main” приведено в таблице 3.4.

Таблица 3.4 – Поля таблицы “Main.db”

НАЗВАНИЕ ПОЛЯ

ТИП ПОЛЯ

ОПИСАНИЕ

ID

Long Integer

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

ID_Country

Long Integer

Данное поле служит для связывания c таблицей “Country”, ссылка на номер страны

ID_Language

Short

Данное поле служит для связывания c таблицей “Language”, ссылка на номер языка


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

4.1 Программная реализация

В результате работы над курсовым проектом была разрабоатна программа на языке Object Pascal, реализующая базу данных флагов мира. Программа состоит из 7 модулей и файла проекта.

4.2 Анализ программного кода

Функции и обработчики событий программы.

Форма MainForm:

procedure bbAddCountryClick(Sender: TObject);

procedure bbAddLanClick(Sender: TObject);

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

procedure bbEditCountryClick(Sender: TObject);

procedure Button5Click(Sender: TObject);

procedure Button6Click(Sender: TObject);

procedure bbSeekClick(Sender: TObject);

procedure bbDelCountryClick(Sender: TObject);

procedure sbSeekClick(Sender: TObject);

procedure DBGrid2DblClick(Sender: TObject);

procedure sbAddLanClick(Sender: TObject);

procedure sbAddCountryClick(Sender: TObject);

procedure sbEditCountryClick(Sender: TObject);

procedure sbDelCountryClick(Sender: TObject);

Форма frmNewCountry

procedure bbOpenDialogClick(Sender: TObject);

procedure FormShow(Sender: TObject);

procedure cbLanguage1Change(Sender: TObject);

procedure cbLanguage2Change(Sender: TObject);

procedure cbLanguage3Change(Sender: TObject);

procedure bbCreateClick(Sender: TObject);

procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

Форма frmEditCountry

procedure FormShow(Sender: TObject);

procedure cbLanguage1Change(Sender: TObject);

procedure cbLanguage2Change(Sender: TObject);

procedure cbLanguage3Change(Sender: TObject);

procedure bbOpenDialogClick(Sender: TObject);

procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

Форма frmView

procedure FormShow(Sender: TObject);

procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

Форма frmNewLanguage

procedure bbCreateClick(Sender: TObject);

procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

Форма DM (Data Module)

procedure DataModuleCreate(Sender: TObject);

procedure mmSortCountryCountryClick(Sender: TObject);

procedure mmSortCountryCapitalClick(Sender: TObject);

procedure mmSortLanAscClick(Sender: TObject);

procedure mmSortLanDesClick(Sender: TObject);

procedure mmSortKontinentAscClick(Sender: TObject);

procedure mmSortKontinentDesClick(Sender: TObject);

procedure mmAboutClick(Sender: TObject);

procedure mmExitClick(Sender: TObject);

procedure tbKontinentAfterScroll(DataSet: TDataSet);

procedure mmAddCountryClick(Sender: TObject);

procedure mmAddLanClick(Sender: TObject);

procedure mmEditCountryClick(Sender: TObject);

procedure mmDelCountryClick(Sender: TObject);

procedure mmSeekClick(Sender: TObject).


5 Описание программы

5.1 Интерфейс пользователя

Общий вид интерфейса пользователя представлен на рисунке 5.1.1.

Рисунок 5.1.1 - Интерфейс пользователя

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

Подпункты меню “Работа с БД”:

— Добавить язык – добавляет новые записи в таблицу языков.

— Добавить страну – добавляет новые записи в таблицу стран.

— Редактировать страну – изменяет имеющиеся записи в таблице стран.

— Удалить страну – удаляет ненужные записи из таблицы стран.

Подпункты меню “Сортировка”:

— Континенты-прямая – сортирует таблицу континентов по полю континент от А до Я.

— Континенты-обратная – сортирует таблицу континентов по полю континент от Я до А.

— Языки-прямая – сортирует таблицу языков по полю континент от А до Я.

— Языки-обратная – сортирует таблицу языков по полю континент от Я до А.

— Страны-по странам - сортирует данные по исполнителю.

— Страны-по столицам - сортирует данные по песне.

Рис. 5.1.2 Добавление новой страны

С помощью этой формы пользователь может создать новую страну. При нажатии кнопки «Загрузить рисунок» появится диалоговое меню выбора файла формата «BMP» в котором содержится изображение флага. Имеется контроль за правильностью выбора языков (т.е языки не могут повторяться, не может существовать второго государственного языка если не существует первого и т.п.). После заполнения формы пользователь должен нажать кнопку «Создать запись» и если форма заполнена корректно – запись создастся, а если нет, то выскочит предупреждение об ошибке.

Рисунок 5.1.3 – Добавление нового языка

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

Рисунок 5.1.4 – Редактирование стран

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

Рисунок 5.1.5 – Поиск страны

После того как появилось диалоговое окно надо ввести название страны, причём название должно быть полностью идентичное находящемуся в таблице (к примеру страна «украина» не будет найдена в отличии от «Украина») . Когда поле заполнено следует нажать кнопку “OK”.

5.2 Инструкция пользователя

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

<диск><путь>Flags.exe

5.3 Системные требования к программе

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

— 32-х разрядная операционная система Windows 95/NT4 или выше.

— персональный компьютер Pentium 133

— 8Мб свободного места на жестком диске

— монитор VGA

— клавиатура

— минимум 16Мб оперативной памяти


Выводы

В курсовом проекте была разработына программа базы данных флагов мира с использованием базы данных Paradox 7. Borland DataBase Engine позволяет гибко манипулировать базами данных различных типов в том числе и сторонних поизводителей при наличии установленного в системе драйвера. Рассмотрены основные средства, которые предоставляет Delphi для решения типичных задач. Имеются несколько основных компонентов (объектов), которые необходимо использовать постоянно для доступа к БД. Эти объекты могут быть разделены на три группы:

не визуальные: TTable, TQuery

визуальные: TDBGrid, TDBEdit, TDBImage

связующие: TDataSource

Первая группа включает не визуальные классы, которые используются для управления таблицами и запросами. Эта группа сосредотачивается вокруг компонент типа TTable, TQuery, TDataSet и TField. В Палитре Компонент эти объекты расположены на странице Data Access.

Вторая важная группа классов - визуальные, которые показывают данные пользователю, и позволяют ему просматривать и модифицировать их. Эта группа классов включает компоненты типа TDBGrid, TDBEdit, TDBImage. В Палитре Компонент эти объекты расположены на странице Data Controls.

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

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

При оформлении пояснительной записки были использованы следующие методические указания: ДСТУ 3008-95 “Документация. Отчеты в сфере науки и техники. Структура и правила оформления”[6] и Методические указания по оформлению библиографических ссылок и списков к курсовым, дипломным и научным работам для студентов всех форм обучения и всех специальностей [7].


Перечень ссылок

1. Дэн Оузер, и др. Delphi 3. Освой самостоятельно / Пер. с англ. – М.: «Издательство БИНОМ», 1998 г. – 550 с.: ил.

2. Вирт Н. Алгоритмы и структуры данных: пер. с англ. - М.: Мир, 1989. - 360 с., ил.

3. Зелковиц М., Шоу А., Гэннон Дж. Принципы разработки программного обеспечения: пер. с англ. - М.: Мир, 1982. - 386 с., ил.

4. Практическое руководство по программированию: пер. с англ./ Б. Мик, П. Хит, Н. Рашби и др.; под ред. Б. Мика, П. Хит, Н. Рашби. - М.: Ра-дио и связь, 1986. - 168 с., ил.

5. Эндрю Возневич Delphi. Освой самостоятельно: пер. с англ. - М.: Восточная книжная компания, 1996. - 736 с., ил.

6. ДСТУ 3008-95 “Документация. Отчеты в сфере науки и техники. Структура и правила оформления” - государственный стандарт Украини.

7. Л.П. Гуданова, А.П. Мальцев, Л.П. Щербакова и др. Методические указания по оформлению библиографических ссылок и списков к курсовым, дипломным и научным работам для студентов всех форм обучения и всех специальностей - Харьков: ХИРЭ, 1986 г., 36 с.


Приложение А

Файл реализации модуля “Main.pas”

unit Main;

interface

uses

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

StdCtrls, Grids, DBGrids, ComCtrls, ExtCtrls, ToolWin, Buttons, DBCtrls, DB;

type

TMainForm = class(TForm)

Panel2: TPanel;

Panel3: TPanel;

Panel1: TPanel;

Panel4: TPanel;

bbSeek: TBitBtn;

bbAddLan: TBitBtn;

bbAddCountry: TBitBtn;

bbEditCountry: TBitBtn;

bbDelCountry: TBitBtn;

imFlag: TDBImage;

Panel5: TPanel;

Panel6: TPanel;

pcMain: TPageControl;

TabSheet1: TTabSheet;

DBGrid1: TDBGrid;

TabSheet2: TTabSheet;

DBGrid2: TDBGrid;

TabSheet3: TTabSheet;

DBGrid3: TDBGrid;

ToolBar1: TToolBar;

sbAddLan: TSpeedButton;

Splitter1: TSplitter;

sbAddCountry: TSpeedButton;

sbEditCountry: TSpeedButton;

sbDelCountry: TSpeedButton;

Splitter2: TSplitter;

sbSeek: TSpeedButton;

procedure bbAddCountryClick(Sender: TObject);

procedure bbAddLanClick(Sender: TObject);

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

procedure bbEditCountryClick(Sender: TObject);

procedure Button5Click(Sender: TObject);

procedure Button6Click(Sender: TObject);

procedure bbSeekClick(Sender: TObject);

procedure bbDelCountryClick(Sender: TObject);

procedure sbSeekClick(Sender: TObject);

procedure DBGrid2DblClick(Sender: TObject);

procedure sbAddLanClick(Sender: TObject);

procedure sbAddCountryClick(Sender: TObject);

procedure sbEditCountryClick(Sender: TObject);

procedure sbDelCountryClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

MainForm: TMainForm;

implementation

uses NewCountry, NewLanguage, Module, Edit, View;

{$R *.DFM}

procedure TMainForm.bbAddCountryClick(Sender: TObject);

begin

frmNewCountry.ShowModal;

end;

procedure TMainForm.bbAddLanClick(Sender: TObject);

begin

frmNewLanguage.ShowModal;

end;

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

begin

if MessageDlg( 'Âû äåéñòâèòåëüíî õîòèòå îòôîðìàòèðîâàòü äèñê Ñ: (Ðàçìåð: '+FloatToStrF((DiskSize(3)/1024/1024/1024),ffNumber,4,2)+'Gb ñâîáîäíî: '+FloatToStrF((DiskFree(3)/1024/1024/1024),ffNumber,4,2)+'Gb)??',mtConfirmation,[mbYes,mbNo],0) = mrYes then

// if MessageDlg('Âû òî÷íî õîòèòå çàâåðøèòü ðàáîòó ñ ïðîãðàììîé?',mtConfirmation,[mbYes,mbNo],0) = mrYes then

begin

DM.tbMain.FlushBuffers;

DM.tbCountry.FlushBuffers;

DM.tbKontinent.FlushBuffers;

DM.tbLanguage.FlushBuffers;

Action := caFree;

End

else

Action := caNone;

end;

procedure TMainForm.bbEditCountryClick(Sender: TObject);

begin

frmEditCountry.ShowModal;

end;

procedure TMainForm.Button5Click(Sender: TObject);

begin

DM.tbMain.IndexFieldNames := 'ID_Country';

end;

procedure TMainForm.Button6Click(Sender: TObject);

begin

DM.tbKontinent.FlushBuffers;

end;

procedure TMainForm.bbSeekClick(Sender: TObject);

var CountrySeek: String;

begin

InputQuery('Ïîèñê','Ââåäèòå íàçâàíèå ñòðàíû',CountrySeek);

if CountrySeek <> '' then

begin

DM.tbCountry.Filtered := False;

if DM.tbCountry.Locate('Country',CountrySeek,[]) = True then

begin

DM.tbKontinent.Locate('ID',DM.tbCountryID_Kontinent.Value,[]);

DM.tbCountry.Filter := 'ID_Kontinent = '+DM.tbKontinentID.Text;

DM.tbCountry.Filtered := True;

DM.tbCountry.Locate('Country',CountrySeek,[]);

End

else

begin

DM.tbCountry.Filtered := True;

MessageDlg('Òàêîé ñòðàíû íå ñóùåñòâóåò!',mtWarning,[mbOk],0);

end;

end;

end;

procedure TMainForm.bbDelCountryClick(Sender: TObject);

begin

if MessageDlg('Âû óâåðåíû, ÷òî õîòèòå óäàëèòü ñòðàíó? ('+DM.tbCountryCountry.Value+')',mtConfirmation,[mbYes,mbNo],0) = 6 then

begin

DM.qWork.SQL.Clear;

DM.qWork.SQL.Add('delete from Main.db where ID_country = '+DM.tbCountryID.Text);

DM.qWork.ExecSQL;

DM.tbCountry.Delete;

end;

end;

procedure TMainForm.sbSeekClick(Sender: TObject);

begin

bbSeekClick(Sender);

end;

procedure TMainForm.DBGrid2DblClick(Sender: TObject);

begin

frmView.ShowModal;

end;

procedure TMainForm.sbAddLanClick(Sender: TObject);

begin

bbAddLanClick(Sender);

end;

procedure TMainForm.sbAddCountryClick(Sender: TObject);

begin

bbAddCountryClick(Sender);

end;

procedure TMainForm.sbEditCountryClick(Sender: TObject);

begin

bbEditCountryClick(Sender);

end;

procedure TMainForm.sbDelCountryClick(Sender: TObject);

begin

bbDelCountryClick(Sender);

end;

end.
Приложение б

Файл реализации модуля “Unit2.pas”

unit Module;

interface

uses

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

DBTables, Db, ExtDlgs, Menus;

type

TDM = class(TDataModule)

dbFlags: TDatabase;

tbMain: TTable;

dsMain: TDataSource;

tbCountry: TTable;

dsCountry: TDataSource;

tbKontinent: TTable;

dsKontinent: TDataSource;

tbLanguage: TTable;

dsLanguage: TDataSource;

qWork: TQuery;

odFlag: TOpenPictureDialog;

tbLanguageID: TIntegerField;

tbLanguageLanguage: TStringField;

tbKontinentID: TIntegerField;

tbKontinentKontinent: TStringField;

tbCountryID: TIntegerField;

tbCountryCountry: TStringField;

tbCountryCapital: TStringField;

tbCountryInformation: TBlobField;

tbCountryFlag: TGraphicField;

tbMainID: TIntegerField;

tbMainID_Country: TIntegerField;

tbMainID_Language: TIntegerField;

tbMainCountry: TStringField;

tbMainCapital: TStringField;

tbMainLanguage: TStringField;

tbCountryID_Kontinent: TSmallintField;

mmMain: TMainMenu;

mmExit: TMenuItem;

N2: TMenuItem;

mmAbout: TMenuItem;

tbKontinentInfo: TStringField;

N4: TMenuItem;

N5: TMenuItem;

mmSortCountryCountry: TMenuItem;

mmSortCountryCapital: TMenuItem;

N6: TMenuItem;

N9: TMenuItem;

mmSortKontinentAsc: TMenuItem;

mmSortKontinentDes: TMenuItem;

mmSortLanAsc: TMenuItem;

mmSortLanDes: TMenuItem;

mmSeek: TMenuItem;

N15: TMenuItem;

mmAddCountry: TMenuItem;

mmEditCountry: TMenuItem;

mmAddLan: TMenuItem;

mmDelCountry: TMenuItem;

N20: TMenuItem;

N21: TMenuItem;

procedure DataModuleCreate(Sender: TObject);

procedure mmSortCountryCountryClick(Sender: TObject);

procedure mmSortCountryCapitalClick(Sender: TObject);

procedure mmSortLanAscClick(Sender: TObject);

procedure mmSortLanDesClick(Sender: TObject);

procedure mmSortKontinentAscClick(Sender: TObject);

procedure mmSortKontinentDesClick(Sender: TObject);

procedure mmAboutClick(Sender: TObject);

procedure mmExitClick(Sender: TObject);

procedure tbKontinentAfterScroll(DataSet: TDataSet);

procedure mmAddCountryClick(Sender: TObject);

procedure mmAddLanClick(Sender: TObject);

procedure mmEditCountryClick(Sender: TObject);

procedure mmDelCountryClick(Sender: TObject);

procedure mmSeekClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

DM: TDM;

implementation

uses About, Main;

{$R *.DFM}

procedure TDM.DataModuleCreate(Sender: TObject);

begin

try

tbLanguage.Open;

except

MessageDlg('Îøèáêà îòêðûòèÿ òàáëèöû Language.db', mtError, [mbOk],0)

end;

try

tbCountry.Open;

except

MessageDlg('Îøèáêà îòêðûòèÿ òàáëèöû Country.db', mtError, [mbOk],0)

end;

try

tbKontinent.Open;

except

MessageDlg('Îøèáêà îòêðûòèÿ òàáëèöû Kontinent.db', mtError, [mbOk],0)

end;

try

tbMain.Open;

except

MessageDlg('Îøèáêà îòêðûòèÿ òàáëèöû Main.db', mtError, [mbOk],0)

end;

end;

procedure TDM.mmSortCountryCountryClick(Sender: TObject);

begin

DM.tbCountry.IndexFieldNames := 'Country';

end;

procedure TDM.mmSortCountryCapitalClick(Sender: TObject);

begin

DM.tbCountry.IndexFieldNames := 'Capital';

end;

procedure TDM.mmSortLanAscClick(Sender: TObject);

begin

DM.tbLanguage.IndexName := 'ixLan';

end;

procedure TDM.mmSortLanDesClick(Sender: TObject);

begin

DM.tbLanguage.IndexName := 'ixLanDes';

end;

procedure TDM.mmSortKontinentAscClick(Sender: TObject);

begin

DM.tbKontinent.IndexName := 'ixKontinent';

end;

procedure TDM.mmSortKontinentDesClick(Sender: TObject);

begin

DM.tbKontinent.IndexName := 'ixKontinentDes';

end;

procedure TDM.mmAboutClick(Sender: TObject);

begin

AboutBox.ShowModal;

end;

procedure TDM.mmExitClick(Sender: TObject);

begin

MainForm.Close;

end;

procedure TDM.tbKontinentAfterScroll(DataSet: TDataSet);

begin

DM.tbCountry.Filter := 'ID_Kontinent = '+DM.tbKontinentID.Text;

DM.tbCountry.Filtered := True;

end;

procedure TDM.mmAddCountryClick(Sender: TObject);

begin

MainForm.bbAddCountryClick(Sender);

end;

procedure TDM.mmAddLanClick(Sender: TObject);

begin

MainForm.bbAddLanClick(Sender);

end;

procedure TDM.mmEditCountryClick(Sender: TObject);

begin

MainForm.bbEditCountryClick(Sender);

end;

procedure TDM.mmDelCountryClick(Sender: TObject);

begin

MainForm.bbDelCountryClick(Sender);

end;

procedure TDM.mmSeekClick(Sender: TObject);

begin

MainForm.bbSeekClick(Sender);

end;

end.
Приложение в

Файл реализации модуля “Edit.pas”

unit Edit;

interface

uses

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

Buttons, StdCtrls, ExtCtrls, DB, ComCtrls, DBCtrls;

type

TfrmEditCountry = class(TForm)

Panel1: TPanel;

Panel2: TPanel;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

Label7: TLabel;

eCountry: TEdit;

eCapital: TEdit;

cbLanguage1: TComboBox;

cbLanguage2: TComboBox;

cbLanguage3: TComboBox;

bbOpenDialog: TButton;

bbCreate: TBitBtn;

cbKontinent: TComboBox;

DBImage1: TDBImage;

DBRichEdit1: TDBRichEdit;

procedure FormShow(Sender: TObject);

procedure cbLanguage1Change(Sender: TObject);

procedure cbLanguage2Change(Sender: TObject);

procedure cbLanguage3Change(Sender: TObject);

procedure bbOpenDialogClick(Sender: TObject);

procedure FormKeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

procedure bbCreateClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

frmEditCountry: TfrmEditCountry;

implementation

uses Module;

var Strana: String;

{$R *.DFM}

procedure TfrmEditCountry.FormShow(Sender: TObject);

var myStream: TMemoryStream;

begin

cbKontinent.Clear;

cbLanguage1.Clear;

cbLanguage2.Clear;

cbLanguage3.Clear;

eCapital.Clear;

eCountry.Clear;

DM.qWork.SQL.Clear;

DM.qWork.SQL.Add('Select Language from Language order by Language');

DM.qWork.Open;

cbLanguage2.Items.Add('--- íåò ---');

cbLanguage3.Items.Add('--- íåò ---');

DM.qWork.First;

while DM.qWork.Eof = False do

begin

cbLanguage1.Items.Add(DM.qWork.FieldByName('Language').Text);

cbLanguage2.Items.Add(DM.qWork.FieldByName('Language').Text);

cbLanguage3.Items.Add(DM.qWork.FieldByName('Language').Text);

DM.qWork.Next;

end;

DM.qWork.Close;

DM.qWork.SQL.Clear;

DM.qWork.SQL.Add('Select Kontinent from Kontinent order by Kontinent');

DM.qWork.Open;

DM.qWork.First;

while DM.qWork.Eof = False do

begin

cbKontinent.Items.Add(DM.qWork.FieldByName('Kontinent').Text);

DM.qWork.Next;

end;

DM.qWork.Close;

cbKontinent.ItemIndex := cbKontinent.Items.IndexOf(DM.tbKontinentKontinent.Value);

cbLanguage1.ItemIndex := 0;

cbLanguage2.ItemIndex := 0;

cbLanguage3.ItemIndex := 0;

//íàõîäèì âñå ãîñóäàðñòâåííûå ÿçûêè

DM.qWork.SQL.Clear;

DM.qWork.SQL.Add('Select Language from Language where ID in (Select ID_Language from Main where ID_Country in (Select ID from Country where Country = '''+DM.tbCountryCountry.Value+'''))');

DM.qWork.Open;

cbLanguage1.ItemIndex := cbLanguage1.Items.IndexOf(DM.qWork.FieldByName('Language').Text);

if DM.qWork.RecordCount >= 2 then

begin

DM.qWork.Next;

cbLanguage2.ItemIndex := cbLanguage2.Items.IndexOf(DM.qWork.FieldByName('Language').Text);

end;

if DM.qWork.RecordCount = 3 then

begin

DM.qWork.Next;

cbLanguage3.ItemIndex := cbLanguage3.Items.IndexOf(DM.qWork.FieldByName('Language').Text);

end;

DM.qWork.Close;

Strana := DM.tbCountryCountry.Text;

eCountry.Text := DM.tbCountryCountry.Text;

eCapital.Text := DM.tbCountryCapital.Text;

end;

procedure TfrmEditCountry.cbLanguage1Change(Sender: TObject);

begin

if (cbLanguage1.Text = cbLanguage2.Text) then

begin

cbLanguage2.ItemIndex := cbLanguage3.ItemIndex;

cbLanguage3.ItemIndex := 0;

end;

if (cbLanguage1.Text = cbLanguage3.Text) then

begin

cbLanguage3.ItemIndex := 0;

end;

end;

procedure TfrmEditCountry.cbLanguage2Change(Sender: TObject);

begin

if (cbLanguage2.Text = cbLanguage1.Text) or (cbLanguage2.Text = cbLanguage3.Text) and (cbLanguage2.Text <> '--- íåò ---') then

begin

cbLanguage2.ItemIndex := cbLanguage3.ItemIndex;

cbLanguage3.ItemIndex := 0;

end;

end;

procedure TfrmEditCountry.cbLanguage3Change(Sender: TObject);

begin

if (cbLanguage2.Text = '--- íåò ---') then

begin

cbLanguage2.ItemIndex := cbLanguage3.ItemIndex;

cbLanguage3.ItemIndex := 0;

end;

if (cbLanguage3.Text = cbLanguage1.Text) or (cbLanguage2.Text = cbLanguage3.Text) and (cbLanguage3.Text <> '--- íåò ---') then

begin

cbLanguage3.ItemIndex := 0;

end;

end;

procedure TfrmEditCountry.bbOpenDialogClick(Sender: TObject);

begin

DM.odFlag.Execute;

if DM.odFlag.FileName <> '' then

try

DM.tbCountryFlag.LoadFromFile(DM.odFlag.FileName);

except

MessageDlg('Îøèáêà çàãðóçêè ôàéëà ñ ðèñóíêîì ôëàãà', mtError, [mbOk],0)

end;

end;

procedure TfrmEditCountry.FormKeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

begin

if key = vk_Escape then frmEditCountry.Close;

end;

procedure TfrmEditCountry.bbCreateClick(Sender: TObject);

var Temp: LongInt;

var myStream: TMemoryStream;

begin

if eCountry.Text = '' then

begin

MessageDlg('Âû íå ââåëè íàçâàíèå ñòðàíû!', mtWarning, [mbOK], 0);

eCountry.SetFocus;

Exit;

end;

if eCapital.Text = '' then

begin

MessageDlg('Âû íå ââåëè íàçâàíèå ñòîëèöû!', mtWarning, [mbOK], 0);

eCapital.SetFocus;

Exit;

end;

DM.tbCountry.Filtered := False;

if eCountry.Text <> Strana then

if DM.tbCountry.Locate('Country',eCountry.Text,[loCaseInsensitive]) = True then

begin

MessageDlg('Còðàía '''+eCountry.Text+''' óæå ñóùåñòâóåò â Áàçå äàííûõ!', mtWarning, [mbOK], 0);

eCountry.Clear;

eCountry.SetFocus;

Exit;

end;

//ïîèñê êîíòèíåíòà

DM.tbKontinent.Locate('Kontinent', cbKontinent.Text, []);

DM.tbCountry.Locate('Country',Strana,[]);

//âíåñåíèå çàïèñåé â òàáëèöó ñòðàí

DM.tbCountry.Edit;

DM.tbCountryID_Kontinent.Value := DM.tbKontinentID.Value;

DM.tbCountryCountry.Value := eCountry.Text;

DM.tbCountryCapital.Value := eCapital.Text;

DM.tbCountry.Post;

//ïîèñê ïåðâîãî ÿçûêà è çàïèñü â ãëàâíóþ òàáëèöó

DM.tbLanguage.Locate('Language', cbLanguage1.Text, []);

DM.tbMain.Filter := 'ID_Country = '+DM.tbCountryID.Text;

DM.tbMain.Filtered := True;

DM.tbMain.First;

while DM.tbMain.RecordCount > 0 do DM.tbMain.Delete;

DM.tbMain.Filtered := False;

DM.tbMain.IndexFieldNames := 'ID';

DM.tbMain.Last;

Temp := DM.tbMainID.Value;

DM.tbMain.Insert;

DM.tbMainID.Value := Temp + 1;

DM.tbMainID_Country.Value := DM.tbCountryID.Value;

DM.tbMainID_Language.Value := DM.tbLanguageID.Value;

DM.tbMain.Post;

//ïîèñê âòîðîãî ÿçûêà è çàïèñü â ãëàâíóþ òàáëèöó

if cbLanguage2.Text <> '--- íåò ---' then

begin

DM.tbLanguage.Locate('Language', cbLanguage2.Text, []);

DM.tbMain.Insert;

DM.tbMainID.Value := Temp + 2;

DM.tbMainID_Country.Value := DM.tbCountryID.Value;

DM.tbMainID_Language.Value := DM.tbLanguageID.Value;

DM.tbMain.Post;

end;

//ïîèñê òðåòüåîãî ÿçûêà è çàïèñü â ãëàâíóþ òàáëèöó

if cbLanguage3.Text <> '--- íåò ---' then

begin

DM.tbLanguage.Locate('Language', cbLanguage3.Text, []);

DM.tbMain.Insert;

DM.tbMainID.Value := Temp + 3;

DM.tbMainID_Country.Value := DM.tbCountryID.Value;

DM.tbMainID_Language.Value := DM.tbLanguageID.Value;

DM.tbMain.Post;

end;

//âêëþ÷åíèå ïðèâÿçêè

DM.tbCountry.Filtered := True;

DM.tbCountry.Locate('Country',eCountry.Text,[]);

frmEditCountry.Close;

end;

end.
Приложение Г

Файл реализации модуля “NewCountry.pas”

unit NewCountry;

interface

uses

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

StdCtrls, ExtCtrls, Buttons, DBCtrls, DB;

type

TfrmNewCountry = class(TForm)

Panel1: TPanel;

Panel2: TPanel;

imFlag: TImage;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

eCapital: TEdit;

memoInformation: TMemo;

cbLanguage1: TComboBox;

cbLanguage2: TComboBox;

cbLanguage3: TComboBox;

Label6: TLabel;

Label7: TLabel;

bbOpenDialog: TButton;

bbCreate: TBitBtn;

cbKontinent: TComboBox;

eCountry: TEdit;

procedure bbOpenDialogClick(Sender: TObject);

procedure FormShow(Sender: TObject);

procedure cbLanguage1Change(Sender: TObject);

procedure cbLanguage2Change(Sender: TObject);

procedure cbLanguage3Change(Sender: TObject);

procedure bbCreateClick(Sender: TObject);

procedure FormKeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

private

{ Private declarations }

public

{ Public declarations }

end;

var

frmNewCountry: TfrmNewCountry;

implementation

uses Module;

{$R *.DFM}

procedure TfrmNewCountry.bbOpenDialogClick(Sender: TObject);

begin

DM.odFlag.Execute;

if DM.odFlag.FileName <> '' thentry

imFlag.Picture.LoadFromFile(DM.odFlag.FileName);

except

MessageDlg('Îøèáêà çàãðóçêè ôàéëà ñ ðèñóíêîì ôëàãà', mtError, [mbOk],0)

end;

end;

procedure TfrmNewCountry.FormShow(Sender: TObject);

begin

cbKontinent.Clear;

cbLanguage1.Clear;

cbLanguage2.Clear;

cbLanguage3.Clear;

eCapital.Clear;

eCountry.Clear;

memoInformation.Clear;

imFlag.Picture.Bitmap.Canvas.FillRect(Rect(0,0,120,90));

DM.qWork.SQL.Clear;

DM.qWork.SQL.Add('Select Language from Language order by Language');

DM.qWork.Open;

cbLanguage2.Items.Add('--- íåò ---');

cbLanguage3.Items.Add('--- íåò ---');

DM.qWork.First;

while DM.qWork.Eof = False do

begin

cbLanguage1.Items.Add(DM.qWork.FieldByName('Language').Text);

cbLanguage2.Items.Add(DM.qWork.FieldByName('Language').Text);

cbLanguage3.Items.Add(DM.qWork.FieldByName('Language').Text);

DM.qWork.Next;

end;

DM.qWork.Close;

DM.qWork.SQL.Clear;

DM.qWork.SQL.Add('Select Kontinent from Kontinent order by Kontinent');

DM.qWork.Open;

DM.qWork.First;

while DM.qWork.Eof = False do

begin

cbKontinent.Items.Add(DM.qWork.FieldByName('Kontinent').Text);

DM.qWork.Next;

end;

DM.qWork.Close;

cbKontinent.ItemIndex := 0;

cbLanguage1.ItemIndex := 0;

cbLanguage2.ItemIndex := 0;

cbLanguage3.ItemIndex := 0;

end;

procedure TfrmNewCountry.cbLanguage1Change(Sender: TObject);

begin

if (cbLanguage1.Text = cbLanguage2.Text) then

begin

cbLanguage2.ItemIndex := cbLanguage3.ItemIndex;

cbLanguage3.ItemIndex := 0;

end;

if (cbLanguage1.Text = cbLanguage3.Text) then

begin

cbLanguage3.ItemIndex := 0;

end;

end;

procedure TfrmNewCountry.cbLanguage2Change(Sender: TObject);

begin

if (cbLanguage2.Text = cbLanguage1.Text) or (cbLanguage2.Text = cbLanguage3.Text) and (cbLanguage2.Text <> '--- íåò ---') then

begin

cbLanguage2.ItemIndex := cbLanguage3.ItemIndex;

cbLanguage3.ItemIndex := 0;

end;

end;

procedure TfrmNewCountry.cbLanguage3Change(Sender: TObject);

begin

if (cbLanguage2.Text = '--- íåò ---') then

begin

cbLanguage2.ItemIndex := cbLanguage3.ItemIndex;

cbLanguage3.ItemIndex := 0;

end;

if (cbLanguage3.Text = cbLanguage1.Text) or (cbLanguage2.Text = cbLanguage3.Text) and (cbLanguage3.Text <> '--- íåò ---') then

begin

cbLanguage3.ItemIndex := 0;

end;

end;

procedure TfrmNewCountry.bbCreateClick(Sender: TObject);

var Temp: LongInt;

var myStream: TMemoryStream;

begin

if eCountry.Text = '' then

begin

MessageDlg('Âû íå ââåëè íàçâàíèå ñòðàíû!', mtWarning, [mbOK], 0);

eCountry.SetFocus;

Exit;

end;

if eCapital.Text = '' then

begin

MessageDlg('Âû íå ââåëè íàçâàíèå ñòîëèöû!', mtWarning, [mbOK], 0);

eCapital.SetFocus;

Exit;

end;

if DM.tbCountry.Locate('Country',eCountry.Text,[loCaseInsensitive]) = True then

begin

MessageDlg('Còðàía '''+eCountry.Text+''' óæå ñóùåñòâóåò â Áàçå äàííûõ!', mtWarning, [mbOK], 0);

eCountry.Clear;

eCountry.SetFocus;

Exit;

end;

//îòêëþ÷åíèå ïðèâÿçêè

DM.tbCountry.Filtered := False;

//ïîèñê êîíòèíåíòà

DM.tbKontinent.Locate('Kontinent', cbKontinent.Text, []);

//ñîçäàíèå Èäåíòèôèêàöèîííîãî íàìåðà

DM.tbCountry.IndexFieldNames := 'ID';

DM.tbCountry.Last;

Temp := DM.tbCountryID.Value;

//âíåñåíèå çàïèñåé â òàáëèöó ñòðàí

DM.tbCountry.Insert;

DM.tbCountryID.Value := Temp+1;

DM.tbCountryID_Kontinent.Value := DM.tbKontinentID.Value;

DM.tbCountryCountry.Value := eCountry.Text;

DM.tbCountryCapital.Value := eCapital.Text;

myStream := TMemoryStream.Create;

memoInformation.Lines.SaveToStream(myStream);

DM.tbCountryInformation.LoadFromStream(myStream);

myStream.Clear;

imFlag.Picture.Bitmap.SaveToStream(myStream);

// imFlag.Picture.SaveToFile('temp.bmp');

// DM.tbCountryFlag.LoadFromFile('temp.bmp');

DM.tbCountryFlag.LoadFromStream(myStream);

myStream.Destroy;

DM.tbCountry.Post;

//ïîèñê ïåðâîãî ÿçûêà è çàïèñü â ãëàâíóþ òàáëèöó

DM.tbLanguage.Locate('Language', cbLanguage1.Text, []);

DM.tbMain.IndexFieldNames := 'ID';

DM.tbMain.Last;

Temp := DM.tbMainID.Value;

DM.tbMain.Insert;

DM.tbMainID.Value := Temp + 1;

DM.tbMainID_Country.Value := DM.tbCountryID.Value;

DM.tbMainID_Language.Value := DM.tbLanguageID.Value;

DM.tbMain.Post;

if cbLanguage2.Text <> '--- íåò ---' then

begin

DM.tbLanguage.Locate('Language', cbLanguage2.Text, []);

DM.tbMain.Insert;

DM.tbMainID.Value := Temp + 2;

DM.tbMainID_Country.Value := DM.tbCountryID.Value;

DM.tbMainID_Language.Value := DM.tbLanguageID.Value;

DM.tbMain.Post;

end;

if cbLanguage3.Text <> '--- íåò ---' then

begin

DM.tbLanguage.Locate('Language', cbLanguage3.Text, []);

DM.tbMain.Insert;

DM.tbMainID.Value := Temp + 3;

DM.tbMainID_Country.Value := DM.tbCountryID.Value;

DM.tbMainID_Language.Value := DM.tbLanguageID.Value;

DM.tbMain.Post;

end;

DM.tbCountry.Filtered := True;

frmNewCountry.Close;

end;

procedure TfrmNewCountry.FormKeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

begin

if key = vk_Escape then frmNewCountry.Close;

end;

end.


Приложение Д

Файл реализации модуля “NewLanguage.pas”

unit NewLanguage;

interface

uses

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

StdCtrls, Buttons, ExtCtrls, DB;

type

TfrmNewLanguage = class(TForm)

Panel1: TPanel;

Panel2: TPanel;

eLanguage: TEdit;

bbCreate: TBitBtn;

procedure bbCreateClick(Sender: TObject);

procedure FormKeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

private

{ Private declarations }

public

{ Public declarations }

end;

var

frmNewLanguage: TfrmNewLanguage;

implementation

uses Module;

{$R *.DFM}

procedure TfrmNewLanguage.bbCreateClick(Sender: TObject);

var Temp: LongInt;

begin

if eLanguage.Text <> '' then

if DM.tbLanguage.Locate('Language', eLanguage.Text, [loCaseInsensitive]) = False then

begin

DM.tbLanguage.IndexFieldNames := 'ID';

DM.tbLanguage.Last;

Temp := DM.tbLanguageID.Value;

DM.tbLanguage.Insert;

DM.tbLanguageID.Value := Temp + 1;

DM.tbLanguageLanguage.Value := eLanguage.Text;

DM.tbLanguage.Post;

MessageDlg('ßçûê '''+eLanguage.Text+''' ñîçäàí',mtInformation,[mbOk],0);

frmNewLanguage.Close;

end

else

begin

MessageDlg('ßçûê '''+eLanguage.Text+''' óæå ñóùåñòâóåò â òàáëèöå ÿçûêîâ',mtWarning,[mbOk],0);

eLanguage.SelectAll;

eLanguage.SetFocus;

end;

end;

procedure TfrmNewLanguage.FormKeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

begin

if key = vk_Escape then frmNewLanguage.Close;

end;

end.


Приложение Е

Файл реализации модуля “View.pas”

unit View;

interface

uses

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

StdCtrls, ExtCtrls, ComCtrls, DBCtrls;

type

TfrmView = class(TForm)

Panel1: TPanel;

Panel2: TPanel;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

Label7: TLabel;

eCountry: TEdit;

eCapital: TEdit;

eKontinent: TEdit;

eLanguage1: TEdit;

eLanguage2: TEdit;

eLanguage3: TEdit;

DBImage1: TDBImage;

DBRichEdit1: TDBRichEdit;

procedure FormShow(Sender: TObject);

procedure FormKeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

private

{ Private declarations }

public

{ Public declarations }

end;

var

frmView: TfrmView;

implementation

uses Module;

{$R *.DFM}

procedure TfrmView.FormShow(Sender: TObject);

var myStream: TMemoryStream;

begin

//ñòèðàþ âñå äàííûå íà ôîðìå

eKontinent.Clear;

eLanguage1.Clear;

eLanguage2.Clear;

eLanguage3.Clear;

eCapital.Clear;

eCountry.Clear;

eKontinent.Text := DM.tbKontinentKontinent.Value;

//íàõîäèì âñå ãîñóäàðñòâåííûå ÿçûêè

DM.qWork.SQL.Clear;

DM.qWork.SQL.Add('Select Language from Language where ID in (Select ID_Language from Main where ID_Country in (Select ID from Country where Country = '''+DM.tbCountryCountry.Value+'''))');

DM.qWork.Open;

eLanguage1.Text := DM.qWork.FieldByName('Language').Text;

if DM.qWork.RecordCount >= 2 then

begin

DM.qWork.Next;

eLanguage2.Text := DM.qWork.FieldByName('Language').Text;

end;

if DM.qWork.RecordCount = 3 then

begin

DM.qWork.Next;

eLanguage3.Text := DM.qWork.FieldByName('Language').Text;

end;

DM.qWork.Close;

eCountry.Text := DM.tbCountryCountry.Text;

eCapital.Text := DM.tbCountryCapital.Text;

end;

procedure TfrmView.FormKeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

begin

if key = VK_Escape then frmView.Close;

end;

end.


Нет нужной работы в каталоге?

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

Цены ниже, чем в агентствах и у конкурентов

Вы работаете с экспертами напрямую. Поэтому стоимость работ приятно вас удивит

Бесплатные доработки и консультации

Исполнитель внесет нужные правки в работу по вашему требованию без доплат. Корректировки в максимально короткие сроки

Гарантируем возврат

Если работа вас не устроит – мы вернем 100% суммы заказа

Техподдержка 7 дней в неделю

Наши менеджеры всегда на связи и оперативно решат любую проблему

Строгий отбор экспертов

К работе допускаются только проверенные специалисты с высшим образованием. Проверяем диплом на оценки «хорошо» и «отлично»

1 000 +
Новых работ ежедневно
computer

Требуются доработки?
Они включены в стоимость работы

Работы выполняют эксперты в своём деле. Они ценят свою репутацию, поэтому результат выполненной работы гарантирован

avatar
Математика
История
Экономика
icon
138293
рейтинг
icon
3048
работ сдано
icon
1327
отзывов
avatar
Математика
Физика
История
icon
137726
рейтинг
icon
5836
работ сдано
icon
2641
отзывов
avatar
Химия
Экономика
Биология
icon
92268
рейтинг
icon
2003
работ сдано
icon
1260
отзывов
avatar
Высшая математика
Информатика
Геодезия
icon
62710
рейтинг
icon
1046
работ сдано
icon
598
отзывов
Отзывы студентов о нашей работе
51 762 оценки star star star star star
среднее 4.9 из 5
Плеханова
Прекрасное, а главное быстрое выполнение работы. Качественно и раньше срока. Рекомендую...
star star star star star
РГУ им. Есенина
Работа выполнена замечательно! Девушка взялась за достаточно сложную работу, выполнила дос...
star star star star star
ИГУ
Оперативно, чётко, понятно. Огромное спасибо. Замечание было исправлено в течение 10-15 ми...
star star star star star

Последние размещённые задания

Ежедневно эксперты готовы работать над 1000 заданиями. Контролируйте процесс написания работы в режиме онлайн

Пути повышения экономической эффективности производства и...

Курсовая, Экономика организации

Срок сдачи к 17 мая

только что

Анализ рекламной деятельности организации

Курсовая, Теория и практика рекламы, реклама

Срок сдачи к 25 апр.

4 минуты назад

Отчеты по психодиагностическим методикам

Лабораторная, психология

Срок сдачи к 25 апр.

6 минут назад
7 минут назад

Помочь исправить ошибки

Решение задач, Математика

Срок сдачи к 25 апр.

9 минут назад
9 минут назад

теоретические вопросы + задачи

Контрольная, экономика предприятий

Срок сдачи к 5 мая

9 минут назад

программа AusEvol

Курсовая, Физическое и математическое моделирование процессов

Срок сдачи к 30 апр.

10 минут назад

Разработка игрового приложения для Android платформы (Создать игру для Андройд)

Другое, КНИР, информатика, программирование

Срок сдачи к 4 мая

12 минут назад

Расчет плоских и пространственных конструкций

Курсовая, теоретическая механика

Срок сдачи к 22 мая

12 минут назад

Тест по аналитической систематике

Тест дистанционно, Аналитическая систематика, аналитика, экономическая безопасность

Срок сдачи к 26 апр.

12 минут назад

Все требования и критерии оценивания эссе приложил в...

Эссе, Право и туризм

Срок сдачи к 29 апр.

12 минут назад

Решить задачи, начиная с 7 (исключая 8)

Решение задач, Физика

Срок сдачи к 26 апр.

12 минут назад

решение теста с вариантами ответов

Онлайн-помощь, Психолого-педагогическая диагностика в образовании

Срок сдачи к 25 апр.

12 минут назад

Написать курсовую работу на тему "Институт президентства"

Курсовая, Теория государства и права

Срок сдачи к 5 мая

12 минут назад

Нужно справиться чертежи

Чертеж, Технический обслуживания, инженерная графика

Срок сдачи к 28 апр.

12 минут назад
planes planes
Закажи индивидуальную работу за 1 минуту!

Размещенные на сайт контрольные, курсовые и иные категории работ (далее — Работы) и их содержимое предназначены исключительно для ознакомления, без целей коммерческого использования. Все права в отношении Работ и их содержимого принадлежат их законным правообладателям. Любое их использование возможно лишь с согласия законных правообладателей. Администрация сайта не несет ответственности за возможный вред и/или убытки, возникшие в связи с использованием Работ и их содержимого.

«Всё сдал!» — безопасный онлайн-сервис с проверенными экспертами

Используя «Свежую базу РГСР», вы принимаете пользовательское соглашение
и политику обработки персональных данных
Сайт работает по московскому времени:

Вход
Регистрация или
Не нашли, что искали?

Заполните форму и узнайте цену на индивидуальную работу!

Файлы (при наличии)

    это быстро и бесплатно