Учебная работа. Реферат: Разработка базы данных учета материально-технического оснащения кабинета специальной технологи

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (7 оценок, среднее: 4,71 из 5)
Загрузка...
Контрольные рефераты

Учебная работа. Реферат: Разработка базы данных учета материально-технического оснащения кабинета специальной технологи

Столичный Инженерно-Физический Институт

(Муниципальный институт)

Объяснительная записка к курсовому проекту

По теме:”Разработка базы данных учета материально-технического оснащения кабинета специальной технологии института №32 г.Москвы”

Научный управляющий: Кудрявцев К.Я.

Выполнила

Студентка группы К7-361

Панова Юлия

Москва, 2005 год


ОГЛАВЛЕНИЕ

Техническое задание
. — 3 -

Литература
. — 4 -

Отзыв о работе студента
. — 4 -

Теоретическая часть
. — 5 -

Реляционные базы данных
. — 6 -

Visual FoxPro.
— 6 -

Объекты Visual FoxPro
. — 8 -

Что обязана содержать база данных, чтоб создать ее макс. действенной?
. — 10 -

Почему СУБД
FoxPro?
. — 11 -

Практическое выполнение учебно-исследовательской работы.
— 12 -

Техническое задание на курсовой проект.
— 13 -

Реляционная модель базы данных.
— 14 -

Создание таблиц
. — 17 -

Создание форм
.. — 19 -

Форма
“Основная форма

. — 19 -

Форма
“Уроки

. — 20 -

Форма “Уроки (добавить новейший)”
. — 21 -

Форма “Информация по курсу”
. — 22 -

Форма
“Раздаточные материалы

. — 23 -

Форма
“Кассеты

. — 25 -

Запросы
.. — 26 -

Создание отчетов
. — 28 -

Листинги обработчиков
. — 30 -

Заключение по работе
. — 39 -








МОСКОВСКИЙ ИНЖЕНЕРНО-ФИЗИЧЕСКИЙ ИНСТИТУТ

(ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ)

Кафедра ИНФОРМАЦИОННЫЕ технологии

ТЕХНИЧЕСКОЕ

ЗАДАНИЕ

на учебно-исследовательскую работу и курсовое

проектирование








Студентки группы К7-361_Пановой Юлии

Тема:

Разработка базы данных учета материально-технического оснащения кабинета специальной технологии института №32 г.Москвы в среде

Visual

FoxPro

Содержание технического задания:

  • исследование литературы о способностях и перспективах предстоящего развития СУБД
    Visual
    FoxPro 8.0., о языке программирования
    FoxPro.
  • исследование структурированного языка запросов
    SQL.
  • Исследование особенностей предметной области.
  • Проектирование базы данных (создание реляционной модели)
  • Создание главных частей базы данных: таблиц, форм, отчетов, запросов.
  • Разработка обработчиков событий на языке
    FoxPro.

  • Приборы для опыта:

    СУБД
    VisualFoxPro8.0

    ЛИТЕРАТУРА

  • Microsoft Visual FoxPro О
    . В
    . Бартеньев
    Диалог
    -МИФИ
    Москва
    2005г
    .
  • Visual
    FoxPro С. Каратыгин А. Тихонов Л. Тихонова Издательство БИНОМ Москва 1999
  • HTTP://www.firststeps.ru/foxpro/fx/fx1.html
  • http://omck.info/1subd.php
  • HTTP://www.computerbooks.ru/books/Programming/Book-FoxPro-7/index.html
  • http://www.compdoc.ru/bd/foxpro/
  • http://www.linksoft.ru/working.html







  • Пространство выполнения УИР и КП_____каф.36__________________________

    Руководитель________________________(Кудрявцев К. Я.)

    Дата выдачи задания ”____”__________________200__ г.

    ОТЗЫВ О РАБОТЕ СТУДЕНТА

    __________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

    __________________________________________________________________________________________________________________________________________________________

    Руководитель__________________________”______”__________________200_г.

    Теоретическая часть

    Реляционные базы данных

    В 1970 году статья научного сотрудника компании IBM доктора Е. Ф. Коддао реляционной модели данных произвела революцию в подходе к хранению и обработке инфы. На базе данной для нас модели в семидесятые годы были разработаны 1-ые реляционные базы данных, а в истинное время они рассматриваются как эталон для современных коммерческих СУБД.


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

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

    Visual FoxPro.

    Visual FoxPro — не попросту последующая версия одной из более стремительных СУБД для индивидуальных компов. Это совсем новенькая программка, которая просто дозволяет создать то, что в прошлых версиях давалось с величайшим трудом либо было просто труднодоступно.
    интерфейс Visual FoxPro отвечает представлениям о современной графической среде, напоминая интерфейс других программ Microsoft. Тут основная работа с данными производится при помощи разных инструментальных средств, потому команды меню нередко имеют вспомогательный нрав и их состав гибко изменяется зависимо от того, какое средство интенсивно в данный момент.
    Отличительные черты Visual FoxPro можно обрисовать последующим образом:

    1. Обеспечение способности резвой разработки прикладной программки базируется на включении средств, которые разрешают повысить скорость работы программера. Сначала это средства объективно-ориентировочного программирования, дозволяющие юзеру сформировывать составляющие собственного проекта (объекта), которые потом могут неоднократно употребляться. Не считая того, объекты могут быть сделаны при помощи зрительных средств и зрительно употребляться в хоть какое время.

    2. Обеспечение полного набора средств для управления событиями.

    3. Обеспечение массивного набора инструментальных средств для программера.
    Создатели систем автоматизации обработки данных, не считая массивного набора зрительных средств проектирования могут применять широкие способности по интеграции систем хранения данных и доступа к серверам данных при помощи технологии ODBC. Главные новаторства — это расширение встроенного языка SQL, возможность обновления данных на сервере через редактирование курсоров, интегрированный механизм обеспечения транзакций, возможность воззвания к серверу на том диалекте SQL, который поддерживает . наличие словаря данных делает наиболее резвой разработку структуры баз данных и упрощает ее последующую эксплуатацию и поддержку.

    4. Обеспечение полной интеграции Visual FoxPro в семейство прикладных программ Micrpоsoft. Единый интерфейс с более пользующимися популярностью прикладными программками Microsoft делает работу в интерактивном режиме интуитивно понятной. Поддержка правой клавиши мыши дозволяет избежать длительных путешествий по системе меню и существенно упрощает исследование новейших способностей СУБД. Просто изберите курсором объект и нажмите правую клавишу мыши. На неких диалоговых окнах, которые нередко употребляются в работе на полосе заголовка, возник переключатель в виде анимированной пиктограммы (push pin), позволяющий просто включить режим, при котором это окно будет постоянно размещено на фронтальном плане. Visual FoxPro обеспечивает полную поддержку OLE 2.0, что упрощает взаимодействие с остальным программным обеспечением в среде WINDOWS. Кроме оставшейся способности загрузки наружных функций средством команды SET LIBRARY возникла возможность воззвания к функциям динамических DLL библиотек WINDOWS средством команды DECLARE.

    5. Сопоставимость с ранее разработанным обеспечением в среде FoxPro.

    Главные достоинства


    Основное предназначение



    Visual FoxPro


    Высочайший уровень объектной модели. Высочайшая скорость обработки данных. Интеграция объектно-ориентированного языка программирования с Xbase и SQL. Многоплатформенность.


    Создание приложений масштаба компании. Создание приложений для работы на разных платформах (Windows 3.x, Windows 95, Macintosh и т. д.)




    Объекты Visual FoxPro

    Visual FoxPro состоит из отдельных компонент, которые употребляются для хранения инфы, ее отображения и редактирования. В Visual FoxPro вся информация хранится в базе данных, которая состоит из таблиц, отношений меж таблицами, индексов, триггеров и хранимых процедур. Любая таблица имеет неповторимое имя и хранится в отдельном файле, наименование которого совпадает с именованием таблицы. Сделанный файл имеет расширение DBF.

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

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

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

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

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

    Запросы являются средством подборки данных из одной либо нескольких таблиц. В Visual FoxPro для сотворения запроса вы сможете применять как конструктор запросов, так и спец язык Structured Query Language (SQL). Результаты выполнения запроса могут отображаться в форме, выводиться в виде отчетов и диаграмм либо сохраняться в обозначенной вами таблице.

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

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

    Для объединения компонент создаваемого приложения употребляется проект, в который врубаются все вышеперечисленные составляющие. Внедрение проекта упрощает разработку приложения и его сопровождение.

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

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

    Таблица 1. Расширения названий файлов объектов Visual FoxPro

    Наименование объекта


    Расширения



    Проект


    PRJ, FPC, CAT, PJX, PJT



    база данных


    DBC



    Таблица Visual FoxPro


    DBF



    Составной индексный файл


    CDX



    Memo-поле и поле типа General


    FRT



    Форма


    sex



    запрос


    QPR



    Отчет


    FRX, FRM



    Почтовая наклейка


    LBX, LBL



    Меню


    MNX



    Библиотека класса


    VCX



    программка, библиотека программ,текст меню, текст запроса


    PRG, FXP, MPR, QPR



    Набросок


    BMP, JPG, GIF, ICO, DIB, CUR, ANI



    Звукозапись


    WAV




    Что обязана содержать база данных, чтоб создать ее очень действенной?

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

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

    Почему СУБД

    FoxPro
    ?

    FoxPro — одна из более действенных настольных СУБД. Данный продукт принадлежит компании Microsoft и тесновато интегрирован с иными его продуктами. Единый интерфейс с более пользующимися популярностью прикладными программками Microsoft делает работу в интерактивном режиме интуитивно понятной.

    FoxPro владеет своим внутренним механизмом управления реляционной БД, тесноватой связью меж языком и данными, всеполноценными способностями объектно-ориентированного программирования и широким диапазоном функций VFP 8.0 дозволяет создавать производительные, масштабируемые БД-ориентированные решения с поддержкой баз данных с таблицами объемом до 2 Гб. При всем этом VFP 8.0 прибыльно различается от остальных инструментов Microsoft умеренными системными требованиями и высочайшей эффективностью разрабатываемых приложений (производительность, размеры БД и программного кода).

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

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

    Практическое выполнение учебно-исследовательской работы.

    Техническое задание на курсовой проект.

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

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

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

    Данная задачка определена педагогом специальной технологии института №32 городка Москвы Пановой Е.В.(учебный курс предназначен для поваров-кондитеров)

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

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

    • К хоть какому уроку может относиться несколько кассет и раздаточных материалов, буквально также, как и каждое из перечисленных может относиться к нескольким урокам сразу.
    • Ввод инфы по курсу (курс; количество часов, читаемых по курсу; количество групп, относящихся к курсу)
    • Возможность просмотра по избранному уроку перечня учебных материалов, относящихся к нему (информация обязана выдаваться юзеру в виде отчета).
    • Возможность просмотра перечня уроков преподаваемых за определенный месяц и суммарный подсчет полного количества уроков за данный период (информация обязана содержаться в виде отчета).
    • Возможность просмотра перечня уроков преподаваемых на 1, 2 и 3 курсах (информация обязана содержаться в виде отчета).
    • Возможность просмотра перечня уроков, относящегося к кассете и раздаточному материалу.
    • Возможность поиска урока по наименованию его темы.
    • Возможность сортировки уроков по курсу и номеру урока.
    • Разработка интерфейса обязана отвечать личным требованиям заказчика.
    • Возможность проверки правильности вводимых данных.
    • база данных создается при помощи СУБД FoxPro, нужные обработчики создаются с внедрением языка FoxPro

    Реляционная модель базы данных.










    Рис. 1.Реляционная модель базы данных.

    Реляционная модель базы данных представляет собой совокупа таблиц, представляющих объектные огромного количества, поля (строчки) которых представляют собой их атрибуты. Для задания связей меж таблицами, нужно найти доп поля, содержащие коды частей связанных таблиц. Для связи объектных множеств “Уроки” и ”Катушка”, также “Уроки” и “Раздаточные материалы” вводится доп таблицы связей “ Уроки-Кассеты” и ”Уроки-Раздаточные материалы”типа почти все ко почти всем, содержащие главные поля связанных частей.

    В данной модели рассматриваются 6 объектных множеств. Атрибут “ID номер“, присутствующий у всякого объектного огромного количества, нужен для конкретной идентификации всякого элемента огромного количества.

    1) Объектное огромное количество “Уроки”

    • ID урока
    • Курс
    • Месяц
    • Номер урока
    • Тема урока

    Служит для описания уроков предмета спец. технологии.

    2) Объектное огромное количество “Кассеты”

    • ID кассеты
    • Заглавие кассеты
    • Продолжительность кассеты

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

    3) Объектное огромное количество “Раздаточные материалы”

    • ID раздаточного материала
    • Заглавие раздаточного материала
    • Вид раздаточного материала

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

    4) Объектное огромное количество “Уроки-Кассеты”

    • ID кассеты
    • ID урока

    Служит для связи 2-ух объектных множеств “Уроки” и ”Кассеты” (реализация связи почти все ко почти всем).

    5) Объектное огромное количество “Уроки-Раздаточные материалы”

    • ID раздаточного материала
    • ID урока

    Служит для связи 2-ух объектных множеств “Уроки” и ”Раздаточные материалы” (реализация связи почти все ко почти всем).

    6) Объектное огромное количество “Курс”

    • Курс
    • количество часов
    • Количество групп

    Служит для описания доборной инфы, относящейся курсу.

    Меж объектными огромными количествами установлены дела:

    1) Объектное огромное количество “Уроки” соединено с объектным обилием “Уроки-Кассеты” отношением один ко почти всем, потому что для всякого урока может существовать несколько кассет, относящихся к данному уроку.

    2) Объектное огромное количество “Кассеты” соединено с объектным обилием “Уроки-Кассеты” отношением один ко почти всем, потому что любая катушка может относиться к нескольким урокам.

    3) Объектное огромное количество “Уроки” соединено с объектным обилием “Уроки-Раздаточные материалы” отношением один ко почти всем, потому что для всякого урока может существовать несколько раздаточных материалов, относящихся к данному уроку.

    4) Объектное огромное количество “Раздаточные материалы” соединено с объектным обилием “Уроки-Раздаточные материалы” отношением один ко почти всем, потому что любой раздаточный материал может относиться к нескольким урокам.

    5) Объектное огромное количество “Курс” соединено с объектным обилием “Уроки” отношением один ко почти всем, потому что к любому курсу относится несколько уроков, тогда как любой урок совершенно точно принадлежит определенному курсу.


    Создание таблиц.

    Все таблицы создаются в режиме конструктора.

    Главные характеристики, применяемые в таблицах БД:

    — Заглавие поля

    — Тип поля

    — Ширина поля

    наличие индексации поля

    Основная изюминка данной БД состоит в том, что все таблицы являются вольными.





    Рис. № 2 Вид таблицы “Уроки” в режиме конструктора

    Рис. №3 Вид таблицы “Кассеты” в режиме конструктора

    Рис. № 4 Вид таблицы “Раздаточные материалы” в режиме конструктора

    Рис. №5 Вид таблицы “Курс ” в режиме конструктора

    Рис. № 6 Вид таблицы “Уроки-кассеты ” в режиме конструктора

    Рис. №7 Вид таблицы “Уроки-Раздаточные материалы ” в режиме конструктора


    Создание форм

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

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

    Форма


    Основная форма





    Рис. №8 Форма “Основная форма”

    При запуске программки перед юзером возникает “Основная форма”, показывающая ссылки (клавиши) на главные составляющие БД и позволяющая стремительно переместится в интересующую его область.

    Клавиши формы:

    • Клавиша “Уроки” закрывает данную форму и открывает форму “Уроки”
    • Клавиша “Способ. материалы” закрывает данную форму и открывает форму “Методические материалы”
    • Клавиша “Кассеты” закрывает данную форму и открывает форму “Кассеты”
    • Клавиша “Выход” завершает работу программки.


    Форма




    Уроки



    Рис. №9 Форма “Уроки”

    Форма “Уроки” является обычной однотабличной формой (основанной на таблице “Уроки”), сделанной в режиме конструктора. Служит для комфортного просмотра нужной инфы по урокам. Требование к виду и типу инфы приведены ранее в техническом задании к учебно-исследовательской работе.

    Форма дозволяет:

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

    Клавиши формы:

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

    — по кассетам: выводит перечень кассет, относящихся к данному уроку.

    — по раздаточным материалам: выводит перечень раздаточных материалов, относящихся к уроку

    — перечень уроков в месяц: выводит перечень уроков, проведенных в месяц.




    Форма “Уроки (добавить новейший)”

    Рис. №10 Форма “Уроки (добавить новейший)”



    Форма “Уроки (добавить новейший)” является обычной однотабличной формой (основанной на таблице “Уроки”), сделанной в режиме конструктора.

    Форма дозволяет:

    • Заносить новейшие данные по урокам

    Поля формы:

    • поле курс: содержит список курсов (1,2,3)
    • поле месяц: содержит перечень учебных месяцев (сентябрь-май)
    • поле номер урока: описывает номер урока
    • поле количество внесенных уроков: заполняется автоматом согласно выбору курса
    • поле тема урока: описывает заглавие темы урока

    Клавиши формы:

    • Клавиша “Сохранить” сохраняет внесенные в форму данные.
    • Клавиша “Выход” закрывает данную форму.





    Форма “Информация по курсу”

    Рис. №11 Форма “Информация по курсу”

    Форма “ информация по курсу” является обычной однотабличной формой (основанной на таблице “Курс”), сделанной в режиме конструктора.

    Форма дозволяет:

    • просматривать данные
    • изменять данные
    • сформировывает перечень проведенных уроков за курс

    Клавиши формы:

    • Клавиша “Поменять” дозволяет изменять любые данные, не считая курса

    • Клавиша “Сохранить” сохраняет внесенные конфигурации.
    • Клавиша “Выход” закрывает данную форму.
    • Клавиша “Отчет по курсу” сформировывает перечень проведенных уроков за курс


    Форма



    Раздаточные материалы


    Рис. №12 Форма “Раздаточные материалы”



    Данная система базирована на понятии набора форм (
    FormSet). Внедрение набора нужно для синхронизации форм “Раздаточные материалы” и “Таблица уроков” .

    В конструкции употребляются три таблицы “Уроки”, “Раздаточные материалы” и “Уроки-Раздаточные материалы”. Набор создается в режиме конструктора. Требование к виду и типу инфы приведены ранее в техническом задании к учебно-исследовательской работе.

    Форма “Раздаточные материалы” дозволяет:

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

    Поля формы

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

    Клавиши формы:

    • Клавиша ”1-ая” возвращает указатель на 1-ый элемент из перечня
    • Клавиша ”Крайняя” возвращает указатель на крайний элемент из перечня
    • Клавиша ”Последующая” переводит указатель на последующий элемент по списку
    • Клавиша ”Предшествующая” возвращает указатель на предшествующий элемент из перечня значений.
    • Клавиша ”Добавить” очищает поля ввода, при этом опосля нажатие данной для нас клавиши другие клавиши стают труднодоступными, кроме клавиш ”Удалить” и ”Сохранить”. Если опосля нажатия клавиши ”Добавить”, юзер передумал заносить новейшие данные, для выхода из этого режима нужно надавить клавишу ”Удалить”, если запись все таки необходимо внести, опосля наполнения полей нужно надавить клавишу “Сохранить”, тогда данные будут сохранены в таблице.
    • Клавиша “Удалить” удаляет разд. материал, разрывая все имеющиеся связи с уроками.

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

    Форма “Таблица уроков” дозволяет:

    • Показать таблицу уроков

    Клавиши формы:

    • Клавиша “Скрыть таблицу” делает форму невидимой


    Форма



    Кассеты


    Рис. №13 Форма “Кассеты”



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

    употребляются три таблицы “Уроки”, “Кассеты” и “Уроки-Кассеты”.

    Запросы





    Рис. №14 запрос“Поиск”

    Рис. №15 запрос “Удаление урока”





    Рис. №16 запрос “Перечень уроков в месяц”





    Рис. №17 запрос“Прикрепление и открепления урока от материала”





    Рис. №18 запрос “Перечень уроков за курс”


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

    Для получения инфы по урокам за курс, вводится номер курса, и опосля соответственной проверки, выдается отчет.

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


    Создание отчетов.

    Все отчеты создавались в режиме конструктора. Данные отчета отвечают требованиям запросов. Любой отчет добавочно содержит номера страничек. Отчет “Количество уроков проведенных в месяц” содержит вычисляемое поле “Количество уроков”

    Рис. №19 отчет “Перечень кассет, относящихся к данному уроку”

    Рис. №20 отчет “Перечень раздаточных материалов, относящихся к данному уроку”

    Рис. №21 отчет “Количество уроков проведенных в месяц”

    Рис. №22 отчет “Перечень уроков за курс”


    Листинги обработчиков.

    Обработчик клавиши “Выход” главный формы.

    IF MESSAGEBOX(‘Выйти из программки?’, 4 + 32 + 256, ‘Выход’)=6

    _screen.ActiveForm.Release()

    CLEAR EVENTS

    QUIT

    ELSE

    _screen.ActiveForm.Refresh()

    ENDIF

    Обработчик действия сортировки данных таблицы формы “Уроки”.

    IF this.Value=1 then

    thisform.DataEnvironment.cursor1.order=’kurs_id’

    ELSE

    thisform.DataEnvironment.cursor1.order=’num_lesson’

    ENDIF

    thisform.grid1.Refresh

    Обработчик действия клавиши “Поиск” формы “Уроки”.

    PUBLIC found_lesson

    with thisform

    found_lesson =INPUTBOX(‘Введите тему урока либо ее начало’,’Поиcк’)

    IF NOT EMPTY(found_lesson)

    &&Задает правила, согласно которым Visual FoxPro ассоциирует две строчки разной длины

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

    SET EXACT OFF

    s=RECNO()

    LOCATE FOR Uir_tab_lesson.nam_lesson= found_lesson

    IF NOT FOUND() THEN && все отлично и запись (и) найдены

    messagebox(‘Поиск не отдал результатов’,48)

    && Возврат к записи с которой был начат поиск

    GO s

    .Command7.Enabled=.f.

    ELSE

    .command7.Enabled=.t.

    ENDIF

    ENDIF

    .grid1.setfocus

    ENDWITH

    Обработчик действия клавиши “Дальше” формы “Уроки”.

    SET EXACT OFF

    s=RECNO()

    && Поиск последующей, отвеч. строке поиска записи

    CONTINUE

    IF NOT FOUND()

    GO s

    This.Enabled= .F.

    ENDIF

    ThisForm.Grid1.SetFocus

    Обработчик действия клавиши “Обновить” формы “Уроки”.

    _screen.ActiveForm. refresh()

    IF thisform.Optiongroup1.Value=1 then

    thisform.DataEnvironment.cursor1.order=’kurs_id’

    ELSE

    thisform.DataEnvironment.cursor1.order=’num_lesson’

    ENDIF

    thisform.grid1.Refresh

    Обработчик действия клавиши “Показать” формы “Уроки”.

    IF Thisform.Optiongroup2.Option1.Value=1

    uuu=INPUTBOX(‘Введите ID урока’,’Заявка’)

    t=val(uuu)

    IF EMPTY(uuu)=.f. then

    SELECT Uir_tab_kasseta.name_kas, Uir_tab_kasseta.time_kas;

    FROM ;

    uir_tab_lk INNER JOIN uir_tab_kasseta ;

    ON Uir_tab_lk.kass_id = Uir_tab_kasseta.kass_id;

    WHERE Uir_tab_lk.lesson_id = t;

    INTO TABLE time_tab7

    REPORT FORM uir_report7 preview

    SELECT time_tab7

    DELETE ALL

    PACK

    ELSE thisform.Refresh

    endif

    ENDIF

    IF Thisform.Optiongroup2.Option2.Value=1

    uuu=INPUTBOX(‘Введите ID урока’,’Заявка’)

    t=val(uuu)

    IF EMPTY(uuu)=.f. then

    SELECT Uir_tab_mat.name_mat,Uir_tab_mat.vid_mat;

    FROM uir_tab_lm INNER JOIN uir_tab_mat ;

    ON Uir_tab_lm.mat_id = Uir_tab_mat.mat_id;

    WHERE Uir_tab_lesson.lesson_id = t;

    INTO TABLE time_tab8

    REPORT FORM uir_report8 preview

    SELECT time_tab8

    DELETE ALL

    Pack

    ELSE thisform.Refresh

    Endif

    ENDIF

    IF Thisform.Optiongroup2.Option3.Value=1

    PUBLIC uuu_mes

    uuu_mes=INPUTBOX(‘Введите месяц’,’Заявка’)

    IF EMPTY(uuu_mes)=.f. then

    SELECT Uir_tab_lesson.kurs_id, Uir_tab_lesson.num_lesson,;

    Uir_tab_lesson.nam_lesson;

    FROM uir_tab_lesson;

    WHERE Uir_tab_lesson.mes_id = uuu_mes;

    INTO TABLE time_tab1

    REPORT FORM uir_report4 preview

    SELECT time_tab1

    DELETE ALL

    PACK

    ELSE thisform.Refresh

    Endif

    ENDIF

    Обработчик действия клавиши “Удалить” формы “Уроки”.

    uuuz=INPUTBOX(‘Введите ID урока, который желаете удалить’,’Удаление записи из таблицы’)

    IF EMPTY(uuuz)=.f. then

    DO WHILE Type(uuuz)!=’N’

    MESSAGEBOX(‘Вы ввели неточное

    uuuz=INPUTBOX(‘Введите ID урока, который желаете удалить’,’Удаление записи из таблицы’)

    ENDDO

    tu=val(uuuz)

    LOCAL ARRAY ss1(20)

    SELECT Uir_tab_lesson.nam_lesson;

    FROM uir_tab_lesson;

    WHERE Uir_tab_lesson.lesson_id =tu;

    INTO ARRAY ss1

    If EMPTY(ss1)

    MESSAGEBOX(‘Такового значения ID нет в перечне данных’)

    else

    SELECT Uir_tab_lesson

    DELETE;

    FROM Uir_tab_lesson;

    WHERE uir_tab_lesson.lesson_id = tu

    PACK

    SELECT Uir_tab_lm

    DELETE;

    FROM Uir_tab_lm;

    WHERE uir_tab_lm.lesson_id = tu

    PACK

    SELECT Uir_tab_lk

    DELETE;

    FROM Uir_tab_lk;

    WHERE uir_tab_lk.lesson_id = tu

    PACK

    _screen.ActiveForm.Release()

    DO FORM uir_les_form8

    ENDIF

    ELSE Thisform.Refresh

    ENDIF

    Обработчик действия клавиши “1-ая” формы “Раздаточные материалы”.

    IF !BOF()

    GO TOP

    ENDIF

    _screen.ActiveForm.Refresh()

    ee1=thisform.Text1.Value

    SELECT Uir_tab_lesson.nam_lesson;

    FROM uir_tab_mat INNER JOIN uir_tab_lm ;

    ON Uir_tab_mat.mat_id = Uir_tab_lm.mat_id ;

    INNER JOIN uir_tab_lesson ;

    ON Uir_tab_lm.lesson_id = Uir_tab_lesson.lesson_id;

    WHERE Uir_tab_mat.mat_id =ee1;

    INTO ARRAY less1

    IF ISNULL(less1)

    less1[1]=’ ‘

    ENDIF

    thisform.List1.Refresh

    Обработчик действия клавиши “Следущая” формы “Раздаточные материалы”.

    IF !EOF()

    SKIP

    ENDIF

    _screen.ActiveForm.Refresh()

    ee1=thisform.Text1.Value

    SELECT Uir_tab_lesson.nam_lesson;

    FROM uir_tab_mat INNER JOIN uir_tab_lm ;

    ON Uir_tab_mat.mat_id = Uir_tab_lm.mat_id ;

    INNER JOIN uir_tab_lesson ;

    ON Uir_tab_lm.lesson_id = Uir_tab_lesson.lesson_id;

    WHERE Uir_tab_mat.mat_id =ee1;

    INTO ARRAY less1

    IF ISNULL(less1)

    less1[1]=’ ‘

    ENDIF

    thisform.List1.Refresh

    Обработчик действия клавиши “Предшествующая” формы “Раздаточные материалы”.

    IF !BOF ( )

    SKIP — 1

    ENDIF

    _screen. ActiveForm. Refresh ()

    ee1=thisform.Text1.Value

    SELECT Uir_tab_lesson.nam_lesson;

    FROM uir_tab_mat INNER JOIN uir_tab_lm ;

    ON Uir_tab_mat.mat_id = Uir_tab_lm.mat_id ;

    INNER JOIN uir_tab_lesson ;

    ON Uir_tab_lm.lesson_id = Uir_tab_lesson.lesson_id;

    WHERE Uir_tab_mat.mat_id =ee1;

    INTO ARRAY less1

    IF ISNULL(less1)

    less1[1]=’ ‘

    ENDIF

    thisform.List1.Refresh

    Обработчик действия клавиши “Крайняя ” формы “Раздаточные материалы”.

    IF !EOF()

    GO BOTTOM

    ENDIF

    _screen.ActiveForm.Refresh( )

    ee1=thisform.Text1.Value

    SELECT Uir_tab_lesson.nam_lesson;

    FROM uir_tab_mat INNER JOIN uir_tab_lm ;

    ON Uir_tab_mat.mat_id = Uir_tab_lm.mat_id ;

    INNER JOIN uir_tab_lesson ;

    ON Uir_tab_lm.lesson_id = Uir_tab_lesson.lesson_id;

    WHERE Uir_tab_mat.mat_id =ee1;

    INTO ARRAY less1

    IF ISNULL(less1)

    less1[1]=’ ‘

    ENDIF

    thisform.List1.Refresh

    Обработчик действия клавиши “Добавить ” формы “Раздаточные материалы”.

    PUBLIC new_mat_id as Integer

    SET ORDER TO mat_id

    CALCULATE MAX(mat_id) TO new_mat_id

    new_mat_id=new_mat_id+1

    CLEAR

    SELECT uir_tab_mat

    APPEND BLANK

    ThisForm.Text1.Value=new_mat_id

    ee=thisform.Text1.Value

    RELEASE less1

    DIMENSION less1(20)

    thisform.List1.Refresh

    _screen.ActiveForm.Refresh( )

    thisform.Command4.Visible= .T.

    thisform.Command2.Enabled= .f.

    thisform.Commandgroup1.Command1.Enabled= .F.

    thisform.Commandgroup1.Command2.Enabled= .F.

    thisform.Commandgroup1.Command3.Enabled= .F.

    thisform.Commandgroup1.Command4.Enabled= .F.

    thisform.Commandgroup1.Command5.Enabled= .F.

    thisform.Commandgroup1.Command8.Enabled= .F.

    Обработчик действия клавиши “Удалить” формы “Раздаточные материалы”.

    tu=thisform.Text1.value

    IF MESSAGEBOX(‘Вы убеждены, что желаете стереть запись?’, 4 + 32 + 256, ‘Выход’)=6

    SELECT uir_tab_mat

    SET EXCLUSIVE ON

    DELETE

    pack

    SELECT uir_tab_lm

    SET EXCLUSIVE ON

    DELETE;

    FROM Uir_tab_lm;

    WHERE Uir_tab_lm.mat_id = tu

    PACK

    _screen.ActiveForm.Release()

    DO FORM uir_form21

    MESSAGEBOX(‘Данные удалены из таблицы!’)

    ELSE

    _screen.ActiveForm.Refresh()

    Endif

    Обработчик действия клавиши “Открепить от урока” формы “Раздаточные материалы”.

    tu=thisform.Text1.value

    uuu=INPUTBOX(‘Введите ID урока’,’Заявка’)

    IF EMPTY(uuu)=.f. then

    DO WHILE Type(uuu)!=’N’

    MESSAGEBOX(‘Вы ввели неточное

    uuu=INPUTBOX(‘Введите ID урока’,’Заявка’)

    ENDDO

    ttz=val(uuu)

    LOCAL ARRAY ss7(20)

    SELECT Uir_tab_lm.mat_id;

    FROM uir_tab_lm;

    WHERE Uir_tab_lm.mat_id = ttz;

    INTO ARRAY ss7

    If EMPTY(ss7)

    MESSAGEBOX(‘Данная катушка не содержится в перечне’)

    ELSE

    SELECT uir_tab_lm

    DELETE;

    FROM Uir_tab_lm;

    WHERE Uir_tab_lm.lesson_id =ttz and Uir_tab_lm.mat_id=tu

    PACK

    THISFORMset.forms(2).visible=.f.

    _screen.ActiveForm.Release()

    DO FORM uir_form20

    MESSAGEBOX(‘Связь разорвана!’)

    endif

    ELSE thisform.Refresh

    endif

    Обработчик действия клавиши “Прикрепить к уроку” формы “Раздаточные материалы”.

    SELECT uir_tab_lm

    uuu=INPUTBOX(‘Введите ID урока’,’Заявка’)

    IF EMPTY(uuu)=.f. then

    DO WHILE Type(uuu)!=’N’

    MESSAGEBOX(‘Вы ввели неточное

    uuu=INPUTBOX(‘Введите ID урока’,’Заявка’)

    ENDDO

    tz=val(uuu)

    LOCAL ARRAY ss6(20)

    SELECT Uir_tab_lesson.nam_lesson;

    FROM uir_tab_lesson;

    WHERE Uir_tab_lesson.lesson_id =tz;

    INTO ARRAY ss6

    If EMPTY(ss6)

    MESSAGEBOX(‘Такового значения ID нет в перечне данных’)

    ELSE

    LOCAL ARRAY ss5(20)

    SELECT Uir_tab_lm.mat_id;

    FROM uir_tab_lm;

    WHERE Uir_tab_lm.lesson_id = tz;

    INTO ARRAY ss5

    If EMPTY(ss5)=.f.

    MESSAGEBOX(‘Таковая катушка уже есть в перечне’)

    else

    y=thisform.Text1.Value

    INSERT INTO uir_tab_lm VALUES (tz,y)

    THISFORMset.forms(2).visible=.f.

    _screen.ActiveForm.release

    DO FORM uir_form21

    endif

    endif

    ELSE thisform.Refresh

    endif

    Обработчик действия клавиши “Сохранить” формы “Уроки (добавить новейший)”.

    LOCAL qt as Character;

    yy as Integer;

    rt as Integer;

    wu=ThisForm.Text5.Value

    yy=ThisForm.Text4.Value

    qt=ThisForm.Combo2.Value

    rt=ThisForm.Combo1.Value

    wt=VAL(yy)

    t=new_lesson_id

    IF EMPTY(wu)

    IF EMPTY(yy)

    IF EMPTY (qt)

    IF EMPTY(rt)

    MESSAGEBOX(‘Данные не были введены!’)

    ELSE

    INSERT INTO uir_tab_lesson VALUES (t,rt,qt,wt,wu)

    MESSAGEBOX(‘Данные добавлены в таблицу!’)

    Thisform.Command1.Enabled= .f.

    _screen.ActiveForm.Release()

    DO FORM uir_form12

    ENDIF

    ELSE

    INSERT INTO uir_tab_lesson VALUES (t,rt,qt,wt,wu)

    MESSAGEBOX(‘Данные добавлены в таблицу!’)

    Thisform.Command1.Enabled= .f.

    _screen.ActiveForm.Release()

    DO FORM uir_form12

    ENDIF

    ELSE

    INSERT INTO uir_tab_lesson VALUES (t,rt,qt,wt,wu)

    MESSAGEBOX(‘Данные добавлены в таблицу!’)

    Thisform.Command1.Enabled= .f.

    _screen.ActiveForm.Release()

    DO FORM uir_form12

    ENDIF

    ELSE

    INSERT INTO uir_tab_lesson VALUES (t,rt,qt,wt,wu)

    MESSAGEBOX(‘Данные добавлены в таблицу!’)

    Thisform.Command1.Enabled= .f.

    _screen.ActiveForm.Release()

    DO FORM uir_form12

    ENDIF

    Заключение по работе.

    Целью учебно-исследовательской работы являлось:

    • Исследование СУБД Visual FoxPro 8.0.и языка программирования FoxPro.
    • исследование структурированного языка запросов SQL.
    • Исследование особенностей предметной области.
    • Проектирование базы данных (создание реляционной модели)
    • Создание главных частей базы данных: таблиц, форм, отчетов, запросов.
    • Разработка обработчиков событий на языке FoxPro.
    • Приобретение способностей работы с СУБД Visual FoxPro 8.0

    Курсовой проект посвящен разработке базы данных для учета материально-технического оснащения кабинета специальной технологии института №32 г.Москвы

    В процессе УИР и КП сотворена база данных, отвечающая техническому заданию на курсовой проект, с внедрением средств FoxPro 8.0.

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

    ЛИТЕРАТУРА

  • Microsoft Visual FoxPro О
    . В
    . Бартеньев
    Диалог
    -МИФИ
    Москва
    2005г
    .
  • Visual
    FoxPro С. Каратыгин А. Тихонов Л. Тихонова Издательство БИНОМ Москва 1999
  • HTTP://www.firststeps.ru/foxpro/fx/fx1.html
  • http://omck.info/1subd.php
  • HTTP://www.computerbooks.ru/books/Programming/Book-FoxPro-7/index.html
  • http://www.compdoc.ru/bd/foxpro/
  • http://www.linksoft.ru/working.html
  • ]]>