Реферат по предмету "Информатика, программирование"


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

Министерство образования и науки Украины
Харьковский национальный университетрадиоэлектроники
Кафедра ПО ЭВМ
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
к курсовому проекту по дисциплине
«Организация баз данныхи знаний»
Тема: " Разработка базы данныхфлагов мира"
Выполнил:
студентгруппы
Руководитель:
доценткаф. ПО ЭВМ
Работазащищена с оценкой
Харьков

Харьковский национальный университетрадиоэлектроники
Кафедра программногообеспечения ЭВМ
Дисциплина: «Организациябаз данных и знаний»
Специальность: «Программноеобеспечение автоматизированных систем»
Курс 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зує пошук тасортировку данних.
Під час виконаннякурсової роботи були вивчені методи програмування алгорітмічною мовою ObjectPascal, з використанням інтегрованого середовища розробки 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. Средства Delphi7 позволяют создавать мощные и гибкие программные средства для работы с базамиданных. Имеютсянесколько основных компонентов (объектов), которые необходимо использоватьпостоянно для доступа к БД. Эти объекты могут быть разделены на три группы:
—      невизуальные: 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; varAction: 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,[]) = Truethen
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 byLanguage');
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 orderby 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 IDin (Select ID_Language from Main where ID_Country in (Select ID from Countrywhere 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
ifDM.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 byLanguage');
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 orderby 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;
ifDM.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 IDin (Select ID_Language from Main where ID_Country in (Select ID from Countrywhere 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 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.