- •Базы данных
- •1. Введение в базы данных
- •1.1. Базы данных и информационные системы
- •1.2. Архигсюура информационной системы
- •1.3. Системы управления базами данных
- •1.4. Локальные информационные системы
- •1.5. Способы разработки и выполнения приложений
- •1.6. Схема обмена данными при работе с бд
- •2. Модели и типы данных
- •2.1. Иерархическая модель
- •Сотоудники
- •2.2. Сетевая модель
- •2.3. Реляционная модель
- •2.4. Постреляционная модель
- •2.5. Многомерная модель
- •1996 1994 Петров Смирнов Яковлев
- •2.6. Объектно-ориентированная модель
- •2.7. Типы данных
- •3. Реляционная модель данных
- •3.1. Определение реляционной модели
- •3.2. Индексирование
- •3.3. Связывание таблиц
- •3.4. Контроль целостности связей
- •3.5. Теоретические языки запросов
- •I аспределенное Удаленное Распределен- Удаленн! 1йдо- Распределен- предстаеление представление ная функция ступ к данным наяЬд
- •4.5. Информационные системы в Интернете и интранете
- •Часть 2. I Ъоектиросанн ? и использование бд
- •7. Средства автоматизации проектирования
- •7.1. Основные определения
- •7.8. Рекомендации по применению case-систем
- •9. Дополнительные вопросы применения баз данных
- •9.1. Программно-аппаратные платформы
- •9.2. Перспективы развития субд
- •9.3. Стандартизация баз данных
- •9.4. Характеристика технологии ado.Net
- •10.1. Общая характеристика
- •10.2. Новые возможности Microsoft Access 2002
- •10.3.Средства поддержки проектирования
- •10.4. Создание основных элементов бд
- •IQdbl mdb
- •Option Compare Database Public Function funl() beep End Function
- •10.5. Работа с гиперссылками
- •10.6. Использование языка sql
- •Аргументы макрокоманды ' Инструкция sQl. Select distinctrow tof
- •10.7. Защита баз данных
- •10.9. Обслуживание баз данный
- •10.10. Репликация баз данных
- •Реплицируемые объекты
- •Реплицируемые объекты
- •10.11. Работа с мультимедиа-данными
- •Тип объекта
- •Comic Chat Boom Microsoft Graph so Music Prop pry Page 2 1 Option f ropery Page21 Ры-ndox FableВидео-клип
- •10.12. Создание файлов приложений
- •10.13. Страницы доступа к данным
- •Краткая характеристика отличий сДд от форм и отчетом
- •10.14. Разработка проекта
- •Распределение атрибутов по вариантам
- •11.1. Пользовательский интерфейс
- •11.2. Характеристика проекта
- •11.3. Компиляция и выполнение проекта
- •11.4. Разработка приложения
- •11.5. Средства интегрированной среды разработки
- •Управление параметрами среды
- •11.6. Базы данных и средства работы с ними
- •Компоненты приложений для баз данных
- •11.7. Создание таблиц базы данных
- •11.8. Создание приложения bde
- •Значения свойств компонентов
- •11.9. Работа с отчетами
- •12. Субд Visual FoxPro 8.0
- •12.1. Общая характеристика
- •12.2. Новые возможности Visual FoxPro 8.0
- •12.3. Элементы проекта
- •12.4. Интерфейс Visual FoxPro
- •12.5. Средства автоматизации разработки
- •12.6. Создание баз данных
- •12.7. Таблицы и индексы
- •12.8. Организация межтабличных связей
- •12.9. Обеспечение ссылочной целостности
- •12.10. Создание запросов
- •Variables:
- •13. Microsoft sql Server 2000
- •13.1. Характеристика sql Server
- •13.2. Язык запросов Transact-sql
- •13.3. Системные базы данных и таблицы
- •13.4. Создание баз данных
- •13.5. Работа с таблицами
- •15.1. Принципы функционирования Web-приложений
- •15.2. Архитектура Web-приложений, публикующих бд
- •15.3. Обзор Web-серверов
- •15.4. Использование Personal Web-server
- •15.5. Использование Microsoft Internet Information Server
- •15.6. Использование Apache дляMicrosoft Windows 9х/2000
- •Вы видите это вместо ожидаемой страницы?
- •15.7. Варианты создания Web-узла
- •16. Интерфейсы программирования Web-приложений
- •16.1. Общий интерфейс взаимодействия cgi
- •18. Публикация бд средствами Microsoft Access
- •18.1. Характеристика вариантов публикации
11.2. Характеристика проекта
В этом разделе рассматриваются: состав проекта, файл проекта, файлы формы, файлы модулей, файл ресурсов и параметры проекта.
Состав проекта
Создаваемое в среде С++ Builder приложение состоит из нескольких элементов, ("бьединенных в проект. В состав проекта входят следующие элементы (в скобках указаны расширения имен файлов):
исходный код проекта (срр);
исходный код модулей форм и модулей (срр);
заголовочные фай. ы модулей форм и модулей (h);
представления форм (dfm — для Windows, xfm — кроссплатформенный вариант);
параметры проекта (bpr);
параметры среды (cfg);
описание ресурсов (res).
Взаимосвязи между отдельными частями (файлами) проекта показаны на рис. 11.4.
Кроме приведенных файлов, автоматически могут создаваться и другие файлы, например, резервные копии файлов: -dp — для фай чоь с расширением dpr; ~ср — для файлов с расширением ср: ~h — для файлов с расширением .h. При создании группы проектов создается текстовый файл с расширением .bpg; при работе с пакетами создаются двоичные файлы с расширениями .bpl и .bpi.
При запуске С++ Builder автоматически создается новый проект с именем Projeci.1, отображаемым :t заголовке главного окна С++ Builder. Этот проект имеет в своем составе одну Лорму Forml, название которой видно в окне Формы. Разработчик может изменить предлагаемое по умолчанию имя проекта. а также установить параметры среды таким образом, что после 3ai рузки
Рис.
11.4. Связи между файлами проекта
С++ Builder будет авт омат ически загружаться приложение, оазработт a кото рпго выполнялась в последний раз.
Обычно файлы проекта располагаются в одном каталоге. Поскольку даже относительно простой проект включает в себя доста точно много файлов, а при добавлении к проекту новых форм количество этих файлов увеличивается. для каждого нового проекта целесообразно создавать отдельный ка га- лог, где и сохранять все фаи^ы проекта.
Головной файл проекта
Головной файл проекта является цент ральным файлом проекта, имеет расширение .срр и представляет собой собственно программу. Для приложения, имеющего в составе одну форму, головной файл проекта имеет следующий иид:
//
//Директивы препроцессора include <vcl h> #pragma hdrstop
//
// Мгжрог.ы USEFILECreadme.txt"); USEFORMfmain.cpp", FormMain); USER CS( "scrollba. res");
//
// Главная функция WinMain
WINAPI WinMain(HINSTANCE, HINSTANCE, LPPTR, int) {
try {
Application->lnitialize();
Application->CreateForm( classid(TFormMain), &FormMain);
Application->Run();
}
catch (Fxception &exception) {
Application - >Sf .owException( &excepiion);
}
return 0;
}
//
Имя проекта (программы) совпадает с именем головного фай та проекта и указывается при сохранении этого фай па на диске, первоначально это имя Project"!. То же имя имеют файлы ресурсов и параметров проекта, при переименовании файла проекта данные файлы переименовываются автоматически.
Сборка всего проекта выполняется при компиляции фай. ia проекта. При этом имя создаваемого приложения (ехе-файл) ичи динамически загружаемой библиотеки (dll-файл) совпадает с названием файла проекта. В дальнейшем мы будем подразумевать, что создается приложение, а не динамически загружаемая библиотека.
В начале головного фай ла проекта содержатся различные директивы препроцессора. В частности с помощью директивы #include <vcl.h^> выполняется подключение заготовочного файла с объявлениями, используемыми в библиотеке визуальных компонентов.
Далее следуют макросы, с помощью которых выполняется подлючение (Ьайлов ресурсов и форм. В частности, макрос USEFORM("Main.cpp", FormMain) выполняет подключение модуля формы, расположенной в фай гте с именем Мат.срр и имеющей имя FormMain. В свою очередь, макрос USERES('lscrollba.res") выполняет поключение файла ресурс op scrollba.res.
Далее расположена главная функция приложения — WinMain. Первый и второй параметры этой функции являются дескрипторами данною экземп ляра приложения и предыдущего экземпляра приложения (если одновременно выполняется несколько таких приложений) Третий параметр служит ука зателем на строку с параметрами, передаваемыми приложению через командную строку.
Прет рамма проекта содержит три опера гора, выполняющих инициализацию приложения (Applies on->lrniianze();), создание формы (Applicatu >п- >CreateForm( olassid(TFormMain), &FormMain);) Forml и запуск приложения (Appncation->Run();). Названные операторы размещены в блоке try, за которым следует блок catch. Сделано это с целью обработки исключений, возможных при выполнении приложения. При этом используется стандартный обраоотчик исключений с применением функции ShowException.
При выполнении разработчиком каких-либо операций с проектом С++ Builder формирует код файла проекта автоматически. Например, при добав лении новой формы в файл проекта добавляв >т< ч две строки кода, относящиеся к этой форме, а при исключении формы из проекта эти строки автоматически исключаются. При необходимости программист может вносить изменения ь файл проекта самостоятельно, однако подобные действия могут разрушить целостность проекта и поэтому обычно выполняют! i только опыт ными программистами. Отметим, что некоторые операции, например, создание обработчика события для объекта Application, системой С++ Builder ав томатически не выполняются и требуют самостоятельного кодирования в файл° проекта.
Отображение :сода головного файла проекта в окне Редактора кода задается командой Project\View Source (Проект\Просмотр источника).
В Файче проекта для многих приложений имеется похожий кол, поэтому в дальнейшем при рассмотрении большинства приложений содержимое этого файла нами не приводится.
Файлы формы
Для каждой формы в с< »ставе проекта автома гически со щаются файл представления формы (расширение .dfm) и файлы модуля фоомы: заголовочный фай I (расширение .h) и файл исходного кода формы (расширение .срр).
Файл представления формы является ресурсом С++ Builder и содержит характеристики формы и ее компонентов. Разработчик обычно yj |равляет этим файтом через окна Формы и Инспектора объектов. При конструировании формы в файл опи( ания автоматически вносятся соответс твующие изменения. Содержимое файла представления формы определяет ее вид. При необходимости можно отобразить этот файл на экране в текстовом виде, что вы полняется командой View as Text (Просмотреть как текст) контекстн» iro меню формы. При этом окно Формы пропадает с экрана, а содержимое файла представления формы открывается в окне Редактора кода и доступно для просмотра и редактирования. Например, файл представления формы, включающей кнопку (object Button 1) и одностроиный редактор (object Editl), содержит следующий текст: object Form 1: TForm 1 Left =192 Top = 133 Width = 544 Height = 375 Caption = 'Forml' Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.He.ght = -11 Font.Name = 'MS Sans Serif*
Font.Style = [] OldCreateOrder = False PixelsPerlnch = 96 TextHeight= 13 object Button 1: TButton Left = 144 Top = 40 Width = 57 Height = 49 Caption = 'Buttonl' TabOrder = 0 end
object Editl: TEdit Left = 224 Top = 136 Width = 57 Height = 21 TabOrder = 1 Text = 'Ed.tr end end
Чтобы вернуться обратно от просмотра текстового вида фай. ia представ дения к просмотру внешнего вида формы, нужно выполнить команду View as Form (Просмотреть как форму) также контекстною меню формы
Файл представ чения содержит перечень всех объектов формы, включая саму форму, а также свойства этих объектов. Для каждого объ< кта указывается его тип; для формы ее тип (класс) TForm 1 описывается в модуле этой формы. Если в строчке Caption = 'Forml', определяющей заголовок формы, вме сто Forml ввести, например, текст Первая форма, то заголовок формы изменится на новый. Однако на практике подобные действия обычно выполняются в окне Инспектора объектов.
Повторное открытие окна формы выполняется командой View\Forms (Просмотр\Формы) или комбинацией клавиш <Sbift>+<F12>, после чего открывается диалоговое окно View Form (Просмотр форм), в списке которого и выбирается нужная форма.
Одновременно можно отобразить на экране несколько форм. Для закрытия того или иного окна Формы нужно выполнить команду File\Close (Файл\3акрыть) или щелкнуть мышью на кнопке закрытия соответствующего окна.
Заголовочный файл модуля формч содержит описание класса формы. Например, для формы, на которой размещены кнопка (Buttonl), надпись (Label 1) и однострочный редактор (Editl), заголовочный файл модуля формы содержит следующий код:
/I
#ifndef Unit 1Н #detine UnitlН
//
#inclurie <Classes.hpp> #include <Controls.hpp> «include <StdCtrls.hpp> #include < Forms.hpp>
//
class TForml : public TForm{
published:// IDE-manaqed Components
TButton *Button1;
TLabel * Label1;
TEdit*Edit1;
void _ fastcall Button1 Cnck(TOhject *Sender); private.// User declarations public:// User declarations
_ fastcall TForml (TComponent* Owner);};
//
extern PACKAGE TForml *Form1;
//
#endif
В начале заголовочного файла содержатся директивы препроцессора, подключаемые автоматически. При необходимости соответствующие директивы разработчик может добавлять вручную. Далее следует описание класса формы (в нашем примере TForml). В разделе. _published содержатся автомагические добавляемые о о ьявления помещенных в форму компонентов (Button 1, Label 1 и Edit I) и обработчиков событий для них (Button 1 Click). В разделах private (собственный) и public (общедоступный) разработчик может помещать свои объявления типов, переменных и функций. Кроме того, в разделе public находится автоматически включенный прототип конструктора формы (_fastcall TForml (TComponent* Owner);). Объявления, размещенные в разделе private, доступны только в пределах данного модуля; объявления, размещенные в разделе public, доступны для других классов и модулей. Далее размещено автоматически подключенное предложение PACKAGE, которое выходит за рамки нашего рассмотрения.
Файл исходного кода фор кы, называемый также фай чом реали \ации, содержит1 директивы препроцессора, об ьявления типов и переменных, а также исходный код обработчиков событий, которые определяют функциональность приложения. Файл Dea тизации, к поимеру, может иметь следуюший вид:
//
//Директивы препроцессора #include<vcl.h> #pragma hdrstop «include "Unitl.h"
//
#pragma package( smartJnit) #pragma resource "*.dfm" // Объявление формы как обт екта TForml *Form1;
//
// Вызов конструктора формы fastcall TForm1: :TForm1 (TComponent* Owner)
: TForm (Owner){
}
// Место размещения объявлений типов // и переменых,описаний функций
//
//Обработчик еобытия нажатия кнопки Buttonl
void _fastcall TForml:: Button 1Click(TObject *Sendor){
Editl ->T3Xt = "0"; }
/I
В начале файла реализации модуля формы содержа гея автоматически включаемые директивы препроцессора. При необходимости разработчик может добавлять свои директивы препроцессора, к примеру, для подключения других модулей. В тело функции вызова конструктор? формы можно добавлять операторы, реализуемые при создании формы. Впрочем, часто для этих целей создается обработчик события OnCreate для формы.
С++ Builder автоматически создает файлы модуля формы при добавлении новой формы. По умолчанию к проекту добавляется новая форма типа TForm, не содержащая компонентов.
При размещении в форме компонентов, а также при создании обработчиков событий в модуль формы вносятся соответствующие изменения. При этом часть этих изменений С++ Buildei выполняет автоматически, а часть пишет разработчик. Обычно все действия paaj 1аботчика, связанные с программированием, выполняются именно в модулях форм.
Тексты файлов модулей форм отображаются it редактируются с помощью Редактора кода. Открыть файл модуля формы можно в стандартном окне открытия Лайла (команда File\Open (Файл\Открыть)) или в диалоговом окне
View Unit, открываемом командой View\Units (Просмотр\Модули) или нажатием комбинации клавиш <Ctrl>+<F12>. В окне открытия файла модуля формы можно выбрать также файл проекта. После выбора нужного модуля (или проекта) и нажатия кнопки ОК его текст появляется на отдельной странице Редактора кода.
Если выбран модуль формы, то в окне Редактора кода первоначально отображается содержимое файла реализации формы (например, Unit 1.срр). Чтобы перейти к отображению содержимого заголовочного файла этого же модуля формы, достаточно в нижней части окна Редактора кода выбрать вкладку с названием Unitl .h (см. рис. 11.5).
Отметим, что файлы каждой формы (представления и модуля) имеют одинаковые имена, отличные от имени файла проекта.
g
Unitl.срр
BED Unitl.h
|
UnR2.cpp
| -
; : •
#ifndef
UnitlH Sdefine UnitlH
1
^include
<Cla3ses.hpp> #include
<Controls.hpp> ^include <StdCtrIs.hpp>
Uinclude <Forws.hpp> /
j
J
Щ'. ±L -J
" T."■•
> '
-\-y-~
JJS,iv. Г."
■ *
V'VVV*.a
л
« *;•.-<* У. ■ !•>. • * ±A 17:
63
ГЧ Modified
insert \U
nitl.
cpp\UM
h fpiagram / —
-
Uj
Л
Рис.
11.5. Вид заголовочного файла модуля
формы в окне Редактора кода
iVV'i
✓VV %
✓ . ч v
Файлы модулей
Кроме модулей в составе форм, при программировании можно использовать и отдельные модули, не связанные с какой-либо формой. Они оформляются по обычным правилам языка С++ и сохраняются в отдельных файлах. Для подключения модуля его имя указывается в директиве препроцессора #include того модуля или проекта, который использует средства этого модуля.
В отдельном модуле можно и полезно размещать процедуры, функции, константы и переменные, общие для нескольких модулей проекта.
Файл ресурсов
При первом сохранении проекта автоматически создается файл ресурсов (расширение .res) с именем, совпадающим с именем файла проекта. Файл ресурсов может содержать следующие ресурсы:
значки;
растровые изображения;
курсоры.
Перечисленные компоненты являются ресурсами Windows, поскольку они разработаны и интерпретируются в соответствии со стандартами этой операционной системы.
Первоначально файл ресурсов содержит значок проекта, которым по умолчанию является изображение (Ъакела. В дальнейшем его можно изменить или заменить.
Для работы с файлами ресурсов в состав С++ Builder вк тючен графичес кий редактор Image Editor версии 3.0, вызываемый командой Tools\lmage Editor (Средсгва\Редактор изображений).
Файл ресурсов имеет иерархическую структуру, в которой рес> рсы разбиты на группы, и каждый ресурс имеет уникальное в пределах группы имя. Имя ресурса задается при его создании и в последующем используется в приложении для доступа к этому ресурсу. Значок прое кта находится в группе Icon и по умолчанию имеет имя MAINICON.
Кроме файла с расширением res, объедини ющего несколько ресурсов, редактор Image Editor также позволяет работать с файлами, содержащими следующие ресурсы (в скобках указано расширение имени фай ia):
значки компонентов (dcr);
растровые изображения (bmp);
значки приложений (ico);
курс* |ры (сиг).
Параметры проекта
Для установки параметров проекта используется окно параметров проекта (Project Options), открываемое командой Project\Options (Проект\Пара- метры) или нажатием комбинации клавиш <Shift>+<Ctrl>+<Fl 1>. Параметры разбиты на группы, каждая из которых располагае гея в окне параметров проекта на сьоей странице (рис. 11.6).
После установки отдельных параметров С++ Builder автоматически вносит нужные изменения в соо гветствующие файлы проекта. Так, параметры из страниц Forms и Application вносятся в файлы проекта и ресурсов, а параметры из страниц Compiler и Linker — в файл параметров проекта.
Ниже для примера приводятся фрагменты файла параметров проекта.
<IDEOPTIONS>
[Version Info]
/ /
lncludeVerlnfo=0
DLL=0
Locale=1049
CodePage=1251
[Debugging]
DebugSourceDirs^$(BCB)\source\vcl
Ш|
[Compiler] SI iowlnfoMsgs=0 LinkDebugVcNO LinkCCLIB-0
Project Options for Projectl.exe
Version Infn j Packages ] Tasm CORBA j Codeuuard Pasc< I Luiker Advanced Linker Pirectories/ConHition-ih
Form- Application Compiler Advanced Compiler С++
Menibei pointers.- —
(* All case? С Multiple inheritance С Single inheritance Smallest
Г" Honor member precirion
Cumpatibility
Г Dun't restrirt roi loop scope Г Don't mangLwode modifiers
- Genjial
p" Zero '^ngth ';mpty base classes" [7 Zero lengin ciiiptu clasc members ~ Template:
Г Extern*!
Exception handling
F Enable RTTI f7 Enable exception--" Г Location informatio' W Destiuctui cleanup Г Fast exc option prologs
Mailables
<• Smart С External С Local С 'ublic
Compile mode —
Г Force С++rompilc
OK
Cancel
Help
Рис. 11.6. Окно параметров проект а
Как видим, фай i параметров проекта представляет собой текстовый файл, в котором построчно записаны параметры и их значения.