Главная страница
Навигация по странице:

  • 2.4 Описание основных этапов разработки программы

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

  • Специальная литература

  • Материалы сети Интернет

  • дипломка делфи. 1 проектирование информационной системы предприятия постановка задачи


    Скачать 0.52 Mb.
    Название1 проектирование информационной системы предприятия постановка задачи
    Анкордипломка делфи
    Дата30.09.2019
    Размер0.52 Mb.
    Формат файлаdoc
    Имя файладипломка делфи.doc
    ТипРешение
    #88136
    страница3 из 3
    1   2   3

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

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

    Навигационный способ доступа даёт возможность осуществлять следующие операции:

    – сортировка записей;

    – навигация по набору данных;

    – редактирование записей;

    – вставка и удаление записей;

    – фильтрация записей;

    – поиск записей.

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

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

    – изменить значение полей записи;

    – подтвердить изменения или отказаться от них.

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

    – перевести набор данных в режим записи;

    – задать значение полей новой записи;

    – подтвердить изменения или отказаться от них.

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

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

    При сортировке по двум полям записи сначала упорядочиваются по значениям первого поля, а затем группы записей с одинаковым значением первого поля сортируются по второму полю. Сортировка наборов данных Table и Query выполняется различными способами. Сортировка наборов данных Table выполняется автоматически по текущему индексу. При смене индекса происходит автоматическое переупорядочивание записей. Таким образом, сортировка возможна по полям, для которых создан индекс.

    Для сортировки по нескольким полям нужно создавать индекс, включающий эти поля. Направление сортировки определяется параметром ixDescending текущего индекса, по умолчанию он выключен, и упорядочивание выполняется в порядке возрастания значений. Если для индекса признак ixDescending включен, то сортировка выполняется в порядке убывания значений. Поля, по которым сортируются записи, устанавливаются через свойств IndexName.

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

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

    – процедура First – установка на первую строку;

    – процедура Next – установка на следующую строку;

    – процедура Last – установка на последнюю строку;

    – процедура Prior – установка на предыдущую строку.

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

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

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

    – по выражению;

    – по диапазону.

    По умолчанию фильтрация записей не ведётся, и набор данных Table содержит все записи связанной с ним таблицы БД, а в набор данных Query включаются все записи, удовлетворяющие SQL-запросу, содержащемуся в свойстве SQL. Фильтрация похожа на SQL–запросы, но является менее мощным средством. По сравнению с SQL–запросами фильтрация менее эффективна, так как ограничивается количество записей, видимых в наборе.

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

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

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

    – имена полей таблицы;

    – литералы;

    – операции сравнения;

    – арифметические операции;

    – логические операции;

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

    Если имя поля содержит пробелы, то его заключают в квадратные скобки. Имена переменных в выражении фильтра использовать нельзя. Если в выражении фильтра требуется включить значение переменной или свойства какого-либо компонента, то это значение должно быть преобразовано в строковый тип. Операции сравнения представляют собой обычные отношения <,>,=,<=,>=,<>. Арифметическими являются операции +, -,* и /. В качестве логических операций можно использовать AND, OR и NOT. Круглые скобки применяются для изменения порядка выполнения арифметических и логических операций.

    Набор данных Table допускается два способа задания условии фильтрации: су помощью выражения фильтра Filter и в обработчике события OnFilterRecord.

    В случае набора данных Query для записей можно использовать: SQL-запрос, обработчик события OnFilterRecord, выражения фильтра.

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

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

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

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

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

    Для поиска записей по полям служат методы Locate и Lookup, причем поля могут быть не индексированными. Функция Locate ищет запись с заданными значениями полей. Если удовлетворяющие условиям поиска записи существует, то указатель текущей записи устанавливается на первую из них. Если запись найдена, функция возвращает значение True, в противном случае значение False. Обычно при разработки приложения пользователю предоставляется возможность влиять на процесс поиска су помощью управляющих элементов, расположенных на форме. При этом действия пользователя по управлению поиском в наборе данных мало, чем отличаются от аналогичных действий при выполнении фильтрации. Функция Lookup так же осуществляет поиску записи, удовлетворяющей определённым условиям, но, в отличие от метода Locate, не перемещает указатель текущей записи, а считывает информацию из полей записи. Еще одно отличие между двумя методами заключается в том, что метод Lookup осуществляет поиск на точное соответствие значений для поиска и значений в полях записей с учетом регистра букв.

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

    2.4 Описание основных этапов разработки программы
    Все данные, используемые в приложении, хранятся в базе данных в MS ACCESS. В Access реализована надёжная система защиты от несанкционированного доступа к файлам. База данных храниться в одном файле. Поэтому был сделан выбор в пользу этого СУБД.

    База данных будет состоять нескольких таблиц: клиенты, услуги, прием, журнал услуг, журнал продпж, журнал ремонта, товары, расход (Рисунок 1).

    Таблицы создаются в режиме конструктора путем задания имен полей, их типов и свойств. Дважды щелкнув на ярлыке <Создание таблицы с помощью конструктора> (Create table in Design View) или нажав на кнопку <Создать> (New) в верхней части окна базы данных, выбрав из списка в окне <Новая таблица> (New Table) элемент Конструктор (Design View) и нажав кнопку <ОК> откроем пустое окно Конструктора таблиц (Рисунок 2).

    В окне Конструктора таблиц в столбец <Имя поля> (Field Name) введем имена полей создаваемой таблицы. В столбце <Тип данных> (Data Type) для каждого поля таблицы выберем из раскрывающегося списка тип данных, которые будут содержаться в этом поле. В столбце <Описание> (Description) можно ввести описание данного поля (не обязательно). В нижней части окна Конструктора таблиц на вкладках <Общие> (General) и <Подстановка> (Lookup) ввести свойства каждого поля или оставить значения свойств, установленные по умолчанию.


    Рисунок 1 – Таблицы базы данных


    Рисунок 2 – Конструктор таблицы «Услуги»

    После описания всех полей будущей таблицы нажмем кнопку <Закрыть> (в верхнем правом углу окна таблицы). На вопрос: ” Сохранить изменения макета или структуры таблицы <имя таблицы>?” (Do you want to save changes to the design of table <имя таблицы>?), нажать кнопку <Да> (Yes). В окне <Сохранить как> (Save As) в поле <Имя таблицы> (Table Name) введем имя создаваемой таблицы и нажмем кнопку <ОК>. В ответ на сообщение: ”Ключевые поля не заданы” (There is no primary key defined) и вопрос: “Создать ключевое поле сейчас?” (Do you want to create a primary key now?) нажмем кнопку <Да> (Yes) и зададим ключевое поле.

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

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

    Приложение разрабатывается в Delphi с использованием технологии ADO для соединения с базой данных15.

    Проект будет состоять из нескольких окон и модуля данных. В модуле данных размещаются компоненты ADO. Преимуществом размещения компонентов доступа к данным в модуле данных является то, что изменение значения любого свойства проявится сразу же во всех обычных модулях, к которым подключен этот модуль данных. Кроме этого, все обработчики событий этих компонентов, т. е. вся логика работы с данными приложения, собраны в одном месте, что тоже весьма удобно. Создадим новый проект в Delphi. Для создания модуля данных можно воспользоваться Репозиторием объектов или главным меню Delphi. Значок модуля данных Data Module расположен на странице New (Рисунок 3):



    Рисунок 3 – Создание модуля данных
    На основе технологии ADO в Delphi созданы соответствующие компоненты-наборы TADOTable, TADOQuery, TADOStoredProc , повторяющие в функциональном отношении компоненты TTable, TQuery, TstoredProc, но не требующие развертывания и настройки на клиентской машине BDE. Используем компоненты ADOConnection и ADOQuery. Компонент ADOConnection осуществляет связь остальных компонентов с ADO. Для этих целей у него имеется строка ConnectionString. После того, как с помощью этой строки связь с данными установлена, на компонент могут ссылаться другие ADO-компоненты, разделяя установленную им связь.

    Преимущество использования ADOConnection состоит в том, что строка подключения теперь хранится в одном месте, вместо того чтобы храниться в нескольких разных компонентах. Еще одно более важное преимущество заключается в том, что несколько разных компонентов могут использовать одно и то же соединение с сервером базы данных. Для индикации базы данных, к которой следует подключиться, в рамках ADO используются строки подключения (connection strings). Создадим строку подключения используя специальный редактор (редактор свойства ConnectionString) (Рисунок 4):


    Рисунок 4 – Редактор свойства ConnectionString
    Нажмем кнопку на Build (Сформировать), чтобы запустить разработанный компанией Microsoft редактор строк подключения (Рисунок 5):



    Рисунок 5 – Редактор строк подключения
    Рассмотрим этот инструмент подробнее, так как он является важным средством при работе с ADO. На первой вкладке показаны провайдеры OLE DB и провайдеры обслуживания, установленные на компьютере. Перечень провайдеров может быть разным для разных версий MDAC, кроме того, новые провайдеры могут появиться в списке в результате установки на компьютере новых прикладных программ. Выбираем Microsoft Jet 4.0 OLE DB Provider для баз данных Access16.

    Во второй вкладке вводим путь к файлу базы данных на диске. Доступ к базе осуществляется с паролем, поэтому в сведениях для входа вводим пароль (Рисунок 6):


    Рисунок 6 – Свойства канала передачи данных
    На вкладке Advanced (Дополнительно) можно контролировать режим доступа к базе данных. Здесь можно настроить эксклюзивный доступ или доступ только для чтения. Выбираем режимы: ReadWrite — чтение и запись; Share Deny None — полный доступ всем на чтение и запись. Это нужно для того чтобы обе части приложения могли обращаться к базе.

    На вкладке All (Все) перечисляются все параметры строки подключения. Этот список может быть разным для разных провайдеров OLE DB. Закрыв редактор Microsoft, вернемся к редуктору строк подключения Borland. В рабочем окне этого редактора будет показана строка, которая будет присвоена ConnectionString .

    После установки соединения используем компонент TADOQuery. Компонент TADOQuery позволяет выполнять SQL-запросы при работе с данными через ADO. Соединение с хранилищем данных осуществляется стандартным методом. Текст запроса содержится в свойстве SQL17.

    Параметры запроса содержатся в свойстве Parameters. В случае, если компонент возвращает набор данных, его следует открывать методом Open или присвоить свойству Active значение True.

    Далее приступаем к разработке главного окна приложения (Рисунок 7):


    Рисунок 7 – Главное окно приложения

    Размещаем необходимые компоненты: PageControl, Edit, RadioButton, ListBox, StaticText, Label, Panel.  Компонент Delphi MainMenu предназначен для добавления к программе главного меню, элемента, без которого не обходится ни одно из приложений для Windows.

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

    Проект состоит из модуля данных, основного окна, окна для редактирования, добавления и удаления данных. В модуле данных размещаются компоненты для связи с базой данных. Компоненты аналогичны компонентам главной программы. Здесь используется компонент DataSource. Невизуальный компонент DataSource представляет собой источник данных, который обеспечивает связь между набором данных и компонентами отображения и редактирования данных. Устанавливаем свойства компонентов, так же как и в основной программе.

    Далее переходим к основному окну приложения. Размещаем необходимые на нем компоненты: MainMenu, DBGrid, Edit, Label, Button.

    Размещаем кнопки и поля для ввода на форме.

    Компонент DBGrid отображает набор данных в формате электронной таблицы. В компоненте DBGrid будет отображаться все данные в базе.

    Связываем свойство DataSource DBGrid c компонентом DataSource модуля данных.
    2.5 Описание программы

    Минимальные системные требования программы:

    – процессор с тактовой частотой 500 МГц или выше;

    – ОЗУ объемом 256 МБ или больше;

    – 2 ГБ свободного дискового пространства;

    – монитор с разрешением 1024 х 768 или выше;

    – операционные системы Windows XP с пакетом обновления 3 (SP3) (32-разрядная), Windows Vista с пакетом обновления 1, Windows Server 2003 R2 с установленным MSXML 6.0, Windows Server 2008 (32- или 64-разрядная), Windows 7 или более поздних версий.

    ЗАКЛЮЧЕНИЕ
    В ходе данной дипломной работы была создана база данных с применением современного средства разработки приложений Borland Delphi. В ней реализованы все основные аспекты современных баз данных, в том числе язык запросов SQL.

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

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

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

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

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

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

    СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ И ЛИТЕРАТУРЫ



    Специальная литература
    1. Андон, Ф. Язык запросов SQL: Учебный курс / Ф.Андон  СПб: Питер, 2006.­­ – 295c.

    2. Боровский, А. Н. Программирование в Delphi 2005 / А.Н.Боровский — СПб.: БХВ-Петербург, 2005. - 448 с.

    3. Вирт, Н.О. Алгоритмы и структуры данных / Н.О. Вирт.  М.: Мир, 1989.  257 с.

    4. Гофман, В.Э. Работа с базами данных в Delphi / В.Э.Гофман — СПб.: БХВ-Петербург, 2001. — 656 с.

    5. Гофман, В. Э. Delphi. Быстрый старт / В.Э. Гофман — СПб.: БХВ-Петербург, 2003. — 288 с.

    6. Дарахвелидзе, П. Г. Delphi 2005 для Win32 / П.Г. Дарахвелидзе, Е.П.Марков — СПб.: БХВ-Петербург, 2005. — 1136 с.

    7. Дженнингс, Р. Использование Microsoft Access 2002 / Р. Дженнингс — М.: Вильямс, 2002. — 1012 с.

    8. Карпова, Т. Базы данных: модели, разработка, реализация / Т. Карпова — СПб.: Питер, 2001. — 304 с.

    9. Кириллов, В.В. Основы проектирования реляционных баз данных. Учебное пособие / В.В.Кирилов — СПб.: ИТМО, 1994. — 90 с.

    10. Кириллов, В.В. Структуризованный язык запросов (SQL) / В.В.Кирилов — СПб.: ИТМО, 1994. — 80 с.

    11. Малыхина, М.П. Базы данных: основы, проектирование, использование / М.П. Малыхина — СПб.: БХВ-Петербург, 2004. — 512с.

    12. Сорокин, А.В. Delphi. Разработка баз данных / А.В. Сорокин — СПб.: Питер, 2005. — 477 с.

    13. Фаронов, В. В. Delphi 2005. Разработка приложений для баз данных и Интернета / В.В.Фаронов — СПб.: Питер, 2006. — 603 с.

    14. Фленов, М. Е. Программирование в Delphi глазами хакера / М.Е. Фленов — СПб.: БХВ-Петербург, 2003. — 368 с.

    15. Фленов, М. Е. Библия Delphi / М.Е. Фленов — СПб.: БХВ-Петербург, 2004. — 880 с.
    Материалы сети Интернет
    16. Приемы работы с базами данных в Delphi. [Электронный ресурс] – Электрон. дан. URL: http:// www.gtsoftware18rus.3dn.ru/publ (дата обращения: 10.03.2012). – Загл. с экрана.

    17. Работа с базами данных в Delphi с помощью ADO [Электронный ресурс] // Электронная статья. 2009. 15 фев. – Электрон. дан. URL: http://prodelphi.ucoz.ru/publ/rabota_s_bazami_dannykh_v_delphi_s_pomoshhju_ado/1–1–0–56 (дата обращения: 08.02.2012). – Загл. с экрана.


    1 Дженнингс, Р. Использование Microsoft Access 2002 / Р. Дженнингс — М.: Вильямс, 2002. — 1012 с.

    2 Карпова, Т. Базы данных: модели, разработка, реализация / Т. Карпова — СПб.: Питер, 2001. — 304 с.

    3 Фленов, М. Е. Библия Delphi / М.Е. Фленов — СПб.: БХВ-Петербург, 2004. — 880 с.

    4 Дарахвелидзе , П. Г. Delphi 2005 для Win32 / П.Г. Дарахвелидзе, Е.П.Марков — СПб.: БХВ-Петербург, 2005. — 1136 с.

    5 Гофман, В.Э. Работа с базами данных в Delphi / В.Э.Гофман — СПб.: БХВ-Петербург, 2001. — 656 с.

    6 Приемы работы с базами данных в Delphi. [Электронный ресурс] – Электрон. дан. URL: http:// www.gtsoftware18rus.3dn.ru/publ (дата обращения: 10.03.2013). – Загл. с экрана.

    7 Андон, Ф. Язык запросов SQL: Учебный курс / Ф.Андон — СПб: Питер, 2006.


    8 Кириллов, В.В. Основы проектирования реляционных баз данных. Учебное пособие / В.В.Кирилов — СПб.: ИТМО, 1994. — 90 с.

    9 Вирт, Н.О. Алгоритмы и структуры данных / Н.О. Вирт.  М.: Мир, 1989.  257 с.

    10 Работа с базами данных в Delphi с помощью ADO [Электронный ресурс] // Электронная статья. 2009. 15 фев. – Электрон. дан. URL: http://prodelphi.ucoz.ru/publ/rabota_s_bazami_dannykh_v_delphi_s_pomoshhju_ado/1–1–0–56 (дата обращения: 08.02.2013). – Загл. с экрана.

    11 Сорокин, А.В. Delphi. Разработка баз данных / А.В. Сорокин — СПб.: Питер, 2005. — 477 с.

    12 Малыхина, М.П. Базы данных: основы, проектирование, использование / М.П. Малыхина — СПб.: БХВ-Петербург, 2004. — 512с.

    13 Фленов, М. Е. Программирование в Delphi глазами хакера / М.Е. Фленов — СПб.: БХВ-Петербург, 2003. — 368 с.

    14 Фаронов, В. В. Delphi 2005. Разработка приложений для баз данных и Интернета / В.В.Фаронов — СПб.: Питер, 2006. — 603 с.

    15 Боровский, А. Н. Программирование в Delphi 2005 / А.Н.Боровский — СПб.: БХВ-Петербург, 2005. — 448 с.

    16 Гофман, В. Э. Delphi. Быстрый старт / В.Э. Гофман — СПб.: БХВ-Петербург, 2003. — 288 с.

    17 Кириллов, В.В. Структуризованный язык запросов (SQL) / В.В.Кирилов — СПб.: ИТМО, 1994. — 80 с.


    1   2   3


    написать администратору сайта