ДОНЕЦКИЙ НАЦИОНАЛЬНЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
Факультет компьютерных наук и технологий
Кафедра прикладной математики и информатики
КУРСОВАЯ РАБОТА
ПО КУРСУ БАЗЫ ДАННЫХ
На тему: «Разработка СУБД обеспечения деятельности приёмной комиссии университета»
Руководитель: Выполнил:
доцент каф. ПМИ студент гр. ИПО-14
Андрюхин А.И.
“__”______ 2015 р. “__”______ 2016 р.
Донецк 2016
Реферат
Отчет по курсовой работе содержит: 45 страниц, 26 рисунков, 15 таблиц, 9 источников, 5 приложений.
Объект исследования – реляционные базы данных, язык структурированных запросов.
Цель – закрепить практические навыки разработки реляционных баз данных (БД), получить углубленные знания языка структурированных запросов (SQL), других языков программирования и технологии «клиент – сервер», приобрести практические навыки самостоятельной разработки основных компонентов прикладного программного обеспечения.
Результат – в соответствии с логической моделью данных, разработана СУБД обеспечения деятельности приёмной комиссии университета на языке VFP, с использованием синтаксиса SQL по созданию базы данных, включающая создание всех необходимых таблиц.
РЕЛЯЦИОННЫЕ БАЗЫ ДАННЫХ, ЗАПРОС, АТРИБУТ, ПЕРВИЧНЫЙ КЛЮЧ, ВТОРИЧНЫЙ КЛЮЧ, ОБЪЕКТ, КЛЮЧЕВОЙ ЭЛЕМЕНТ, SQL
СОДЕРЖАНИЕ
Введение. 4
1 Теория и практическая реализация систем
управления базами данных. 5
1.1 Основные понятия теории баз данных. 5
1.2 Визуальная среда создания систем управления реляционными бд Visual FoxPro 7
1.3 Многопользовательская работа в visual foxpro. 9
2 Разработка базы данных. 11
2.1 Обследование предметной области. 11
2.2 Процедура нормализации. 13
2.3 Разработка логической модели данных. 16
2.4 Разработка физической модели данных. 16
2.5 Разработка программы автогенерации. 17
3 Разработка программного приложения. 19
3.1 Разработка представлений. 19
3.2 Разработка форм. 20
3.3 Разработка отчетов. 33
3.4 Разработка меню.. 35
3.5 Обеспечение многопользовательской работы.. 35
3.6 Результаты тестирования приложения. 37
Выводы.. 39
Перечень ссылок. 40
Приложение А Руководство пользователя. 41
ВВЕДЕНИЕ
В процессе выполнения курсовой работы разрабатываются отдельные части информационного и программного обеспечения реальной компьютерной подсистемы.
Цель выполнения курсовой работы:
· Закрепление практических навыков разработки реляционных баз данных (БД), использование персональных компьютеров (ПК) и современных средств автоматизированной разработки моделей данных (МД) и систем управления базами данных (СУБД);
· Получение углубленных знаний языка структурированных запросов (SQL), других языков программирования и технологии «клиент – сервер»;
· Приобретение практических навыков самостоятельной разработки основных компонентов прикладного программного обеспечения.
При выполнении курсовой работы необходимо:
· Исследовать предметную область и разработать постановку задачи;
· Проработать рекомендованную литературу;
· Подобрать дополнительную литературу, интернет-источники информации;
· Разработать логическую и физическую МД;
· Разработать программу генерации БД;
· Реализовать БД с помощью СУБД;
· Разработать прикладное программное обеспечение на базе СУБД FoxPro.
1 ТЕОРИЯ И ПРАКТИЧЕСКАЯ РЕАЛИЗАЦИЯ СИСТЕМ УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ
1.1 Основные понятия теории баз данных
Базу данных можно определить как унифицированную совокупность данных, совместно используемую различными задачами в рамках некоторой единой автоматизированной информационной системы (ИС).
Теория управления базами данных как самостоятельная дисциплина начала развиваться приблизительно с начала 50-х годов двадцатого столетия. За это время в ней сложилась определенная система фундаментальных понятий.
Предметной областью принято называть часть реального мира, подлежащую изучению с целью организации управления в этой сфере и последующей автоматизации процесса управления.
Объектом называется элемент информационной системы, сведения о котором хранятся в базе данных.
Атрибут – это информационное отображение свойств объекта. Каждый объект характеризуется некоторым набором атрибутов.
Ключевым элементом данных называются такой атрибут (или группа атрибутов), который позволяет определить значения других элементов-данных.
Запись данных – это совокупность значений связанных элементов данных.
Первичный ключ – это атрибут (или группа атрибутов), который уникальным образом идентифицируют каждый экземпляр объекта (запись).
Вторичным ключом называется атрибут (или группа атрибутов), значение которого может повторяться для нескольких записей (экземпляров объекта).
Процедуры хранения данных в базе должны подчиняться некоторым общим принципам, среди которых в первую очередь следует выделить:
· целостность и непротиворечивость данных, под которыми понимается как физическая сохранность данных, так и предотвращение неверного использования данных, поддержка допустимых сочетаний их значений, защита от структурных искажений и несанкционированного доступа;
· минимальная избыточность данных обозначает, что любой элемент данных должен храниться в базе в единственном виде, что позволяет избежать необходимости дублирования операций, производимых с ним.
Программное обеспечение, осуществляющее операции над базами данных, получило название СУБД – система управления базами данных. Очевидно, что его работа должна быть организована таким образом, чтобы выполнялись перечисленные принципы.
Модели организации данных – набор принципов, определяющих организацию логической структуры хранения данных в базе, получил название модели данных. Модели баз данных определяются тремя компонентами:
· допустимой организацией данных;
· ограничениями целостности;
· множеством допустимых операций.
В теории систем управления базами данных выделяют модели трех основных типов: иерархическую, сетевую и реляционную.
В реляционной модели объекты и взаимосвязи между ними представляются с помощью таблиц. Для ее формального определения используется фундаментальное понятие отношения.
В реляционной базе данных каждая таблица должна иметь первичный ключ (ключевой элемент) – поле или комбинацию полей, которые единственным образом идентифицируют каждую строку в таблице.
Важным преимуществом реляционной модели является то, что в ее рамках действия над данными могут быть сведены к операциям реляционной алгебры, которые выполняются над отношениями. Это такие операции, как объединение, пересечение, вычитание, декартово произведение, выборка, проекция, соединение, деление.
Важнейшей проблемой, решаемой при проектировании баз данных, является создание такой их структуры, которая бы обеспечивала минимальное дублирование информации и упрощала Процедуры обработки и обновления данных.
1.2 Визуальная среда создания систем управления реляционными бд visual foxpro
Visual FoxPro (VFP) – это инструмент, который представляет собой визуальную среду создания систем управления реляционными БД.
Встроенный механизм обработки курсоров БД, тесная связь между данными, языком и другими мощными функциями, делают пакет FoxPro удобным и функциональным инструментом для решения задач любого масштаба, касающихся баз данных.
Система располагает сосредоточенным на работе с данными, объектно-ориентированным языком, который предлагает пользователям гибкий инструментарий. Он направлен на создание приложений на основе баз данных для индивидуального пользования, для функционирования в клиент-серверных средах и в глобальной сети.
В свое распоряжение пользователи получают все необходимое, чтобы уверенно управлять информацией – средства для упорядочивания таблиц, создания интегрированных СУБД, обработки запросов, а также инструменты полноценной разработки приложений для конечных потребителей.
Visual FoxPro включает объектно-ориентированный и процедурный язык программирования систем управления реляционными базами данных, разработанный корпорацией Microsoft. Основой для данного программного продукта послужил язык программирования FoxPro. Относится к семейству языков xBase, разработанных на базе синтаксиса языка программирования dBase.
К основным достоинствам Visual FoxPro следует отнести:
· широко распространенный формат таблиц БД (как результат, простая организация обмена информацией с иными приложениями Microsoft);
· современную организацию реляционных БД, позволяющую хранить информацию об индексах и связях, таблицах базы, задавать условия следования ссылочной целостности, формировать удаленные и локальные представления, хранимые процедуры, связи с серверами;
· высокоскоростная работа с большими БД;
· наглядность работы с БД;
· быстрота построения приложений посредством использования Конструкторов, Мастеров, Построителей, наличие режима подсказок IntelliSense, способствующего быстрому написанию текстов программ;
· наличие инструментов для разработки приложений, которые работают с данными по технологии «клиент-сервер»";
· возможность создания сетевых приложений для работы с БД и Web-сервисами, проектов с их компиляцией в программы, исполняемые в VFP, ОС Microsoft Windows или браузере;
· наличие в дистрибутиве большой библиотеки примеров, существенно облегчающих освоение всех возможностей системы.
1.3 Многопользовательская работа в visual foxpro
В многопользовательских приложениях необходимо обеспечить доступ к данным множеству пользователям. При разработке сетевых приложений по управлению базами данных необходимо предусмотреть разрешение конфликтов, возникающих при попытке двух и более пользователей одновременно изменить одни и те же данные. Visual FoxPro предлагает несколько вариантов решения этой проблемы, позволяя пользователю использовать перед изменением таблиц или записей автоматические или ручные методы их блокировки. При доступе к записям таблицы блокировка запрещает кому-либо изменять заблокированную область, пока пользователь не завершит свои изменения и не разблокирует эти данные.
В Visual FoxPro можно использовать два типа блокировок: блокировку таблицы и записи. Блокировка таблицы запрещает доступ другим пользователям ко всей таблице, пока редактируется одна или несколько записей. Применение блокировки записи не допускает изменения записи кем-либо, кроме пользователя, установившего блокировку.
По возможности следует использовать блокировку записи, потому что она запрещает изменение только одной записи, а не всей таблицы.
В Visual FoxPro может осуществляться автоматическая или ручная блокировка данных. При использовании определенных команд FoxPro попытается автоматически заблокировать записи или всю таблицу.
Все команды с автоматической блокировкой снимают ее после выполнения.
В Visual FoxPro для многопользовательской работы можно использовать сеансы работы с данными, которые представляют из себя среду окружения, связанную с формой или набором форм. С помощью сеансов работы с данными можно открывать одну и ту же форму на разных рабочих станциях или даже на одном компьютере, при этом каждая из них будет использовать отдельную копию данных.
Одним из мощных средств организации многопользовательской работы в Visual FoxPro является буферизация данных, которая позволяет лучше использовать локальные ресурсы и снижает нагрузку на сеть. При буферизации все сделанные изменения хранятся в оперативной памяти на рабочей станции и не обновляются на файл-сервере, пока не будет выполнена соответствующую команду.
В Visual FoxPro используются два типа буферизации: буферизация таблиц и записей. При буферизации записей после завершения редактирования записи, все изменения записываются в базу данных.
2 РАЗРАБОТКА БАЗЫ ДАННЫХ
2.1 Обследование предметной области
Требуется разработать БД обеспечения деятельности приёмной комиссии университета.
Каждый год университет зачисляет новых абитуриентов для возможного их поступления после сдачи вступительных экзаменов или прохождения собеседования. На бюджетную основу могут быть зачислены:
· абитуриенты, получившие на школьном экзамене установленный балл ЕГЭ и успешно прошедшие собеседование;
· абитуриенты, набравшие необходимый для бесплатного поступления балл на университетских экзаменах;
· абитуриенты, имеющие направление от госпредприятия.
Все остальные студенты могут поступить в университет на платной основе, набрав необходимое установленное число баллов на вступительных экзаменах.
Набор данных приведен в таблице 2.1.
Таблица 2.1 – Набор данных
№ |
Поле |
Тип |
Размер |
Описание |
1 |
PersonId |
Числовой |
5 |
Регистрационный номер абитуриента |
2 |
Name |
Текстовый |
40 |
ФИО абитуриента |
3 |
DayDate |
Дата |
Авто |
Дата регистрации |
4 |
Picture |
Поле OLE |
Авто |
Фотография |
5 |
Address |
Текстовый |
60 |
Адрес абитуриента |
6 |
Phone |
Текстовый |
15 |
Телефон абитуриента |
7 |
Birth |
Дата |
Авто |
Дата рождения абитуриента |
8 |
School |
Текстовый |
20 |
Название оконченной школы |
9 |
Money |
Логический |
1 |
Возможность оплаты обучения (Да/Нет) |
10 |
Passport |
Текстовый |
20 |
Номер паспорта |
11 |
PassportDate |
Дата |
Авто |
Дата выдачи паспорта |
12 |
Region |
Текстовый |
40 |
Кем выдан паспорт |
13 |
Attestat |
Текстовый |
20 |
Номер аттестата |
14 |
Middle |
Числовой |
Авто |
Средний балл аттестата |
15 |
Faculty |
Текстовый |
40 |
Название выбранного факультета |
16 |
Speciality |
Текстовый |
40 |
Название выбранной специальности |
17 |
Registrar |
Текстовый |
15 |
Фамилия принявшего документы |
18 |
Talk |
Логический |
1 |
Рекомендован для собеседования |
19 |
Result |
Числовой |
Авто |
Набрано баллов при поступлении |
20 |
Contract |
Логический |
1 |
Договор с предприятием (Да/Нет) |
21 |
ContractId |
Числовой |
10 |
Номер договора |
22 |
ContractAbout |
Поле Memo |
Авто |
Условия договора |
23 |
ContrAddress |
Текстовый |
60 |
Адрес предприятия |
24 |
ContPhone |
Текстовый |
15 |
Телефон предприятия |
25 |
Payment |
Логический |
1 |
Платит предприятие (Да/Нет) |
26 |
EGE |
Текстовый |
20 |
Номер аттестата ЕГЭ |
27 |
Lesson |
Текстовый |
20 |
Предмет, по которому сдан ЕГЭ |
28 |
Score |
Числовой |
Авто |
Набрано баллов по ЕГЭ |
29 |
YesId |
Числовой |
5 |
Номер после зачисления |
30 |
Type |
Числовой |
1 |
Основа, на которой зачислен |
2.2 ПРОЦЕДУРА НОРМАЛИЗАЦИИ
В результате выполнения процедуры нормализации выделены следующие таблицы:
1. Факультеты (Таблица 2.2);
2. Специальности (Таблица 2.3);
3. Предприятия (Таблица 2.4);
4. Приняли документы (Таблица 2.5);
5. Предметы (Таблица 2.6);
6. Основания для зачисления (Таблица 2.7);
7. Абитуриенты (Таблица 2.8);
8. Студенты (информация о поступлении) (Таблица 2.9);
9. Баллы ЕГЭ (Таблица 2.10).
В каждой из таблиц поле Id – первичный ключ.
Таблица 2.2 – Факультеты
№ |
Поле |
Тип |
Размер |
Описание |
1 |
Id |
Числовой |
Авто |
Уникальный идентификатор |
2 |
Name |
Текстовый |
40 |
Наименование |
Таблица 2.3 – Специальности
№ |
Поле |
Тип |
Размер |
Описание |
1 |
Id |
Числовой |
Авто |
Уникальный идентификатор |
2 |
FacultyId |
Числовой |
Авто |
Факультет |
3 |
Name |
Текстовый |
40 |
Наименование |
Таблица 2.4 – Предприятия
№ |
Поле |
Тип |
Размер |
Описание |
1 |
Id |
Числовой |
Авто |
Уникальный идентификатор |
2 |
Name |
Текстовый |
40 |
Наименование |
3 |
Address |
Текстовый |
60 |
Адрес |
Продолжение таблицы 2.4
№ |
Поле |
Тип |
Размер |
Описание |
4 |
Phone |
Текстовый |
15 |
Телефон |
5 |
State |
Логический |
Авто |
Государственное (Да/Нет) |
Таблица 2.5 – Приняли документы
№ |
Поле |
Тип |
Размер |
Описание |
1 |
Id |
Числовой |
Авто |
Уникальный идентификатор |
2 |
Name |
Текстовый |
40 |
ФИО |
Таблица 2.6 – Предметы
№ |
Поле |
Тип |
Размер |
Описание |
1 |
Id |
Числовой |
Авто |
Уникальный идентификатор |
2 |
Name |
Текстовый |
40 |
Наименование |
Таблица 2.7 – Основания для зачисления
№ |
Поле |
Тип |
Размер |
Описание |
1 |
Id |
Числовой |
Авто |
Уникальный идентификатор |
2 |
Name |
Текстовый |
40 |
Наименование |
3 |
Form |
Логический |
Авто |
Бюджет (Да/Нет) |
Таблица 2.8 – Абитуриенты
№ |
Поле |
Тип |
Размер |
Описание |
1 |
Id |
Числовой |
Авто |
Уникальный идентификатор |
2 |
PersonId |
Числовой |
5 |
Регистрационный номер абитуриента |
3 |
Name |
Текстовый |
40 |
ФИО абитуриента |
4 |
DayDate |
Дата |
Авто |
Дата регистрации |
5 |
Picture |
Поле OLE |
Авто |
Фотография |
6 |
Address |
Текстовый |
60 |
Адрес абитуриента |
7 |
Phone |
Текстовый |
15 |
Телефон абитуриента |
8 |
Birth |
Дата |
Авто |
Дата рождения абитуриента |
Продолжение таблицы 2.8
9 |
School |
Текстовый |
20 |
Название оконченной школы |
10 |
Money |
Логический |
1 |
Возможность оплаты обучения (Да/Нет) |
11 |
Passport |
Текстовый |
20 |
Номер паспорта |
12 |
PassportDate |
Дата |
Авто |
Дата выдачи паспорта |
13 |
Region |
Текстовый |
40 |
Кем выдан паспорт |
14 |
Attestat |
Текстовый |
20 |
Номер аттестата |
15 |
Middle |
Числовой |
Авто |
Средний балл аттестата |
16 |
SpecialityId |
Числовой |
Авто |
Специальность |
17 |
RegistrarId |
Числовой |
Авто |
Принял документы |
18 |
Talk |
Логический |
1 |
Рекомендован для собеседования |
19 |
Result |
Числовой |
Авто |
Набрано баллов при поступлении |
20 |
Contract |
Логический |
1 |
Договор с предприятием (Да/Нет) |
21 |
EnterpriseId |
Числовой |
Авто |
Предприятие |
22 |
ContractId |
Числовой |
10 |
Номер договора |
23 |
ContractAbout |
Поле Memo |
Авто |
Условия договора |
24 |
Payment |
Логический |
1 |
Платит предприятие (Да/Нет) |
25 |
EGE |
Текстовый |
20 |
Номер аттестата ЕГЭ |
Таблица 2.9 – Студенты
№ |
Поле |
Тип |
Размер |
Описание |
1 |
Id |
Числовой |
Авто |
Уникальный идентификатор |
2 |
EnrolleeId |
Числовой |
Авто |
Абитуриент |
3 |
YesID |
Числовой |
5 |
Номер после зачисления |
4 |
TypeId |
Числовой |
Авто |
Основание для зачисления |
Таблица 2.10 – Баллы ЕГЭ
№ |
Поле |
Тип |
Размер |
Описание |
1 |
Id |
Числовой |
Авто |
Уникальный идентификатор |
2 |
EnrolleeId |
Числовой |
Авто |
Абитуриент |
3 |
LessonId |
Числовой |
Авто |
Предмет |
4 |
Score |
Числовой |
Авто |
Набрано баллов |
2.3 РАЗРАБОТКА ЛОГИЧЕСКОЙ МОДЕЛИ ДАННЫХ
Логическая модель данных (ЛМД) имеет следующий вид (рисунок 2.1).
Рисунок 2.1 – Логическая модель данных
2.4 РАЗРАБОТКА ФИЗИЧЕСКОЙ МОДЕЛИ ДАННЫХ
В соответствии с логической моделью данных, разработана программа на языке VFP с использованием синтаксиса SQL по созданию базы данных, включающая создание всех необходимых таблиц (Приложение А).
Схема данных приведена на рисунке 2.2.
Рисунок 2.2 – Схема данных
2.5 РАЗРАБОТКА ПРОГРАММЫ АВТОГЕНЕРАЦИИ
Для полноценного тестирования и отладки работы разрабатываемого приложения, необходим значительный объем данных в БД. Количество и качество данных должно быть сопоставимо с реальными данными при практической эксплуатации приложения. Для решения этой задачи разработана программа на языке VFP с использованием синтаксиса SQL по генерации тестовых данных (Приложение Б).
Автогенерация данных выполняется с использованием функции, генерирующей случайное число. Для генерации используется набор шаблонных значений, по которым формируются отдельные записи в таблицах. Информация о количестве сгенерированных данных приведена в таблице 2.11.
Таблица 2.11 – Баллы ЕГЭ
№ |
Название таблицы |
Количество записей |
1 |
Факультеты |
4 |
2 |
Специальности |
8 |
3 |
Предприятия |
100 |
4 |
Приняли документы |
20 |
5 |
Предметы |
11 |
6 |
Основания для зачисления |
4 |
7 |
Абитуриенты |
2000 |
8 |
Студенты |
1221 (в случае повторной генерации может отличаться) |
9 |
Баллы ЕГЭ |
14135 (в случае повторной генерации может отличаться) |
3 РАЗРАБОТКА ПРОГРАММНОГО ПРИЛОЖЕНИЯ
3.1 Разработка представлений
Для организации удобного интерфейса пользователя необходимо предоставлять информацию не точно в том виде, в котором эта информация хранится в БД. Необходимо группировать данные из нескольких таблиц, скрывать отдельные поля, отбирать необходимые данные. Visual FoxPro предлагает удобный инструмент для решения такого рода задач – представления (Local View). При разработке представлений может быть использован язык SQL.
Для решения задачи представления информации об абитуриентах с использованием SQL разработано представление vEnrollee (рисунок 3.1).
SELECT e.Id, e.PersonId, e.Name, e.DayDate, e.Picture, e.Address, e.Phone, e.Birth, e.School, e.Money, e.Passport, e.PassportDate, e.Region, e.Attestat, e.Middle, e.SpecialityId, sp.Name AS SpecialityName, sp.FacultyId, f.Name AS FacultyName, e.RegistrarId, r.Name AS RegistrarName, e.Talk, e.Result, e.Contract, e.EnterpriseId, ent.Name AS EnterpriseName, e.ContractId, e.ContractAbout, e.Payment, e.EGE, ege.Score, s.YesID, s.TypeId, t.Name AS TypeName, t.Form, s.Id AS StudentId
FROM Enrollee AS e
LEFT JOIN Student AS s ON s.EnrolleeId = e.Id
LEFT JOIN Types AS t ON t.Id = s.TypeId
LEFT JOIN
( SELECT eg.EnrolleeId AS EnrolleeId, SUM(eg.Score) AS Score FROM EnrolleeEGE AS eg GROUP BY eg.EnrolleeId) AS ege ON ege.EnrolleeId = e.Id
LEFT JOIN Speciality AS sp ON sp.Id = e.SpecialityId
LEFT JOIN Faculty AS f ON f.Id = sp.FacultyId
LEFT JOIN Registrar AS r ON r.Id = e.RegistrarId
LEFT JOIN Enterprise AS ent ON ent.Id = e.EnterpriseId
Рисунок 3.1 – Представление vEnrollee
Для решения задачи представления информации о сдаче абитуриентами ЕГЭ с использованием SQL разработано представление vEnrolleeEGE (рисунок 3.2).
select l.Id , l.Name , e.Id as EnrolleeEGEId , e.Score from Lesson as l left join EnrolleeEGE as e on e.LessonId = l.Id and e.EnrolleeId = vEnrollee.Id
Рисунок 3.2 – Представление vEnrolleeEGE
Для решения задачи представления информации о специальностях с использованием SQL разработано представление vSpeciality (рисунок 3.3).
SELECT s.id, s.facultyid, s.name FROM Speciality AS s WHERE s.FacultyId = Faculty.Id
Рисунок 3.3 – Представление vSpeciality
3.2 РАЗРАБОТКА ФОРМ
Работу с данными на уровне пользовательского интерфейса можно разделить на два уровня:
· Работа со списком записей одной таблицы;
· Работа с одной записью таблицы.
Каждый из указанных уровней реализован отдельной формой. Одна форма служит для редактирования, добавления, удаления, поиска записи (одна или несколько форм с разными режимами работы). Другая форма – для просмотра всех записей, поиска записей, перехода к форме редактирования, добавления, удаления, поиска записи.
С целью унификации, для разных таблиц и представлений, по возможности, используются одни и те же формы. С целью унификации программного кода, для решения однотипных задач используются одни те же процедуры и функции, которые вынесены в отдельный модуль Guide (Приложение В.)
Набор форм для таблиц и представлений базы данных приведен в таблице 3.1.
Таблица 3.1 – Формы работы с данными
Таблица или представление |
Форма работы со списком записей |
Добавление |
Редактирование |
Удаление |
Поиск |
Faculty |
FacultyForm |
MainEditForm |
MainEditForm |
MainEditForm |
MainEditForm |
vSpeciality |
FacultyForm |
MainEditForm |
MainEditForm |
MainEditForm |
MainEditForm |
Enterprise |
MainForm |
EnterEditForm |
EnterEditForm |
EnterEditForm |
MainEditForm |
Registrar |
MainForm |
MainEditForm |
MainEditForm |
MainEditForm |
MainEditForm |
Lesson |
MainForm |
MainEditForm |
MainEditForm |
MainEditForm |
MainEditForm |
Types |
MainForm |
TypesEditForm |
TypesEditForm |
TypesEditForm |
MainEditForm |
vEnrollee |
MainForm |
StudentEditForm |
StudentEditForm |
StudentEditForm |
StudentSearchForm |
vEnrolleeEGE |
MainForm |
EgeEditForm |
EgeEditForm |
MainEditForm |
На рисунке 3.4 представлена форма EgeEditForm в режиме конструктора.
Рисунок 3.4 – Форма EgeEditForm в режиме конструктора
На рисунке 3.5 представлена форма EnterEditForm в режиме конструктора.
Рисунок 3.5 – Форма EnterEditForm в режиме конструктора
На рисунке 3.6 представлена форма FacultyForm в режиме конструктора.
Рисунок 3.6 – Форма FacultyForm в режиме конструктора
На рисунке 3.7 представлена форма MainEditForm в режиме конструктора.
Рисунок 3.7 – Форма MainEditForm в режиме конструктора
На рисунке 3.8 представлена форма MainForm в режиме конструктора.
Рисунок 3.8 – Форма MainForm в режиме конструктора
На рисунке 3.9 представлена форма StudentEditForm в режиме конструктора.
Рисунок 3.9 – Форма StudentEditForm в режиме конструктора
На рисунке 3.10 представлена форма StudentSearchForm в режиме конструктора.
Рисунок 3.10 – Форма StudentSearchForm в режиме конструктора
На рисунке 3.11 представлена форма TypeEditForm в режиме конструктора.
Рисунок 3.11 – Форма TypesEditForm в режиме конструктора
В своей работе все формы используют процедуры и функции из модуля Guide (Приложение В.). Процедуры и функции из модуля Guide представлены в таблице 3.2.
Таблица 3.2 – Процедуры и функции модуля Guide
Процедура или функция |
Назначение |
1 |
2 |
CalcType |
Определение основания поступления абитуриента |
xCTOD |
Преобразование строки в дату с контролем типа |
CIIF |
Перевод из числового типа в логический тип |
FIIC |
Перевод из логического типа в числовой тип |
TestId |
Проверка идентификатора записи |
ResId |
Вычисление результата операции |
xGoRec |
Открытие таблицы, установка индекса, переход к записи |
ExecGuide |
Открытие таблицы или представления на просмотр записей |
ExecEditGuide |
Добавление, удаление, редактирование, поиск записи |
Продолжение таблицы 3.2
1 |
2 |
AddColumn |
Добавление колонки к сетке (grid) |
CreateColumns |
Формирование колонок в сетке (grid) |
TestForm |
Проверка поддерживаемой формы при вызове команды меню |
AddGuide |
Выполнение команды «Добавление» |
EditGuide |
Выполнение команды «Редактирование» |
DeleteGuide |
Выполнение команды «Удаление» |
SearchGuide |
Выполнение команды «Поиск» |
InitGuide |
Инициализация формы просмотра записей при открытии |
OkGuide |
Выход из формы просмотра записей по нажатию на кнопку «OK» |
InitEditGuide |
Инициализация формы добавления / редактирования / удаления / поиска записей при открытии |
OkEditGuide |
Выход из формы добавления / редактирования / удаления / поиска записей по нажатию на кнопку «OK» |
ShowErrorRef |
Вывод сообщения об ошибке при попытке удаления записи |
ShowErrorField |
Вывод сообщения об ошибке при попытке редактирования / добавления записи |
RepoA1 |
Формирование отчета «Среднее число баллов абитуриентов 10 наиболее встречающихся школ» |
RepoA2 |
Формирование отчета «Наиболее успешные школы» |
RepoB |
Формирование отчета «Средний балл поступивших абитуриентов» |
Рассмотрим работу форм на примере MainForm и MainEditForm.
При открытии формы MainForm выполняется обработка события Init (рисунок 3.12).
LPARAMETERS _Name, _Caption, _Id, _Modal
IF VARTYPE(_Name) != "C"
_Name = "vEnrollee"
_Caption = "Приёмная комиссия университета"
_Id = -1
_Modal = 2
ENDIF
DO Guide
RETURN InitGuide(THISFORM, _Name, _Caption, _Id, _Modal)
Рисунок 3.12 – Обработка события Init формы MainForm
Процедура обработки события имеет 4-е необязательных параметра:
· Имя таблицы или представления;
· Заголовок формы,
· Идентификатор записи, на которую будет выполнен переход;
· Режим открытия – просмотр или выбор записи.
Если параметры не заданы, значению устанавливаются по умолчанию. Далее выполняется вызов функции из модуля Guide.
При нажатии на кнопку «OK» на форме выполняется обработчик события кнопки (рисунок 3.13).
DO Guide
OkGuide(THISFORM)
Рисунок 3.13 – Обработка события нажатия кнопки «OK» формы MainForm
При открытии формы MainEditForm выполняется обработка события Init (рисунок 3.14).
LPARAMETERS _Name, _Caption, _Id, _Mode
DO Guide
RETURN InitEditGuide(THISFORM, _Name, _Caption, _Id, _Mode)
Рисунок 3.14 – Обработка события Init формы MainEditForm
Процедура обработки события имеет 4-е параметра:
· Имя таблицы или представления;
· Заголовок формы,
· Идентификатор записи;
· Режим открытия – Добавление / Редактирование / Удаление / Поиск
В процедуре выполняется вызов функции из модуля Guide.
При нажатии на кнопку «OK» на форме выполняется обработчик события кнопки (рисунок 3.15).
DO Guide
OkEditGuide(THISFORM)
Рисунок 3.15 – Обработка события нажатия кнопки «OK» формы MainEditForm
Программный код всех форм приведен в приложении Г.
Открытие приложения должно выполняться посредством вызова модуля _Curs. Программный код приложения приведен на рисунке 3.16.
SET DELETED ON
OPEN DATABASE "Selection"
DO "Menu.mpr"
DO FORM "MainForm.scx"
Рисунок 3.16 – Программный код приложения _Curs
В приложении _Curs выполняется:
1. Установка режима «Не показывать удаленные записи»;
2. Открытие базы данных;
3. Открытие меню;
4. Открытие формы MainForm со значениями по умолчанию.
3.3 РАЗРАБОТКА ОТЧЕТОВ
Решение задачи построения отчетных форм состоит из двух этапов:
· выбор данных из базы данных;
· формирование на основании выбранных данных отчетов.
Для решения первой подзадачи оптимальным является использование представлений (Local View). При разработке представлений может быть использован язык SQL. Для построения отчетных форм на основании разработанных представлений, использован стандартный визуальный инструментарий Visual FoxPro по созданию отчетов.
Для формирования отчета «Среднее число баллов абитуриентов 10 наиболее встречающихся школ» разработан запрос RepoA1 (рисунок 3.17).
SELECT TOP 10 E.school, AVG(E.result) AS avgresult, COUNT(1) AS _cnt;
FROM ;
Enrollee E;
WHERE ( result ) IS NOT NULL;
AND ( result ) > ( 0 );
GROUP BY E.school;
ORDER BY 3 DESC
Рисунок 3.17 – Запрос RepoA1
Для формирования отчета «Наиболее успешные школы» разработан запрос RepoA2 (рисунок 3.18). Среднее число баллов наиболее успешных школ по городу в целом. Находим студентов с наиболее высокими баллами и ищем их школу. Выбираются все студенты, баллы, школы, выполняется группировка по школе, определяется максимальный балл среди студентов школы. Результат сортируется по баллам.
SELECT E.school, MAX(E.result) AS avgresult;
FROM ;
Enrollee E;
WHERE ( result ) IS NOT NULL;
AND ( result ) > ( 0 );
GROUP BY E.school;
ORDER BY 2 DESC
Рисунок 3.18 – Запрос RepoA2
Для формирования отчета «Средний балл поступивших абитуриентов, поступивших по каждой специальности каждого факультета» разработан запрос RepoB (рисунок 3.19).
SELECT f.Id AS FacultyId , f.Name AS FacultyName , s.Id AS SpecialityId , s.Name AS SpecialityName , x.Middle FROM ( SELECT e.SpecialityId , SUM(e.Middle)/COUNT(1) AS Middle FROM Enrollee AS e JOIN Student AS s ON s.EnrolleeId = e.Id GROUP BY e.SpecialityId WHERE s.TypeId IS NOT NULL AND s.TypeId > 0 ) AS x JOIN Speciality AS s ON s.Id = x.SpecialityId JOIN Faculty AS f ON f.Id = s.FacultyId
Рисунок 3.19 – Запрос RepoB
3.4 РАЗРАБОТКА МЕНЮ
Для разработки меню использован мастер среды Visual FoxPro (рисунок 3.20).
Рисунок 3.20 – Разработка меню с использованием мастер среды Visual FoxPro
При выборе команд меню выполняется вызов соответствующих методов из модуля Guide. Подключение меню выполняется в модуле _Curs.
3.5 ОБЕСПЕЧЕНИЕ МНОГОПОЛЬЗОВАТЕЛЬСКОЙ РАБОТЫ
При решении задачи обеспечения многопользовательской работы приложения необходимо реализовать выполнение следующих требований:
· обеспечение целостности данных;
· масштабируемость;
· высокая скорость работы.
Для решения задачи с учетом вышеперечисленных требований, в разрабатываемом программном обеспечении используются следующие функциональные возможности VFP:
· транзакции;
· модификация данных с использованием команд с применением синтаксиса SQL;
· обработка исключений.
Транзакции обеспечивают наибольшую защиту существующим данным. Visual FoxPro предоставляет три команды, которые обеспечивают контроль за транзакциями:
· BEGIN TRANSACTION – команда предназначена для инициализации транзакции;
· ROLLBACK – выполняет откат всех изменений, сделанных после последней команды BEGIN TRANSACTION;
· END TRANSACTION – блокирует записи, записывает на диск все изменения, сделанные после ближайшей команды BEGIN TRANSACTION, затем снимает блокировку с записей.
Если другие пользователи в сети пытаются получить доступ к записям, которые модифицируются в транзакции, им придется ждать завершения транзакции. Поэтому транзакции в разработанной программе минимальны по длине и включают запросы SQL на модификацию данных.
Для модификации данных в программе используются команды SQL (таблица 3.3).
Таблица 3.3 – Команды модификации данных
Команда |
Описание |
Что блокируется |
Блокировка |
UPDATE FROM |
Изменение записей |
Вся таблица |
Автоматическая |
INSERT INTO |
Добавление записей |
Заголовок таблицы |
Автоматическая |
DELETE FROM |
Удаление записей |
Текущая запись |
Автоматическая |
Возможны два подхода к обработке возможных ошибок при совместном доступе к данным:
· программная блокировка/разблокировка записей или таблицы перед началом выполнения модификации данных с обработкой результата операции блокировки (команды FLOCK, RLOCK);
· безусловное выполнение модификации данных с обработкой ошибки операции.
В реализуемом программном продукте выбран второй способ работы при модификации данных. Для обработки ошибки выполнения используется механизм структурированного управления ошибок исполнения с помощью команды TRY ... CATCH ... FINALLY. Используя эту команду, можно анализировать выполнение отдельных команд (TRY-блок) программы как на этапе отладки, так и во время коммерческой эксплуатации программы. Причем FINALLY-блок позволяет восстанавливать состояние системы после обработки (средствами САТСН-блока) возникшей в TRY-блоке ошибки.
3.6 РЕЗУЛЬТАТЫ ТЕСТИРОВАНИЯ ПРИЛОЖЕНИЯ
Существующие на сегодня методы тестирования программного обеспечения (ПО) не позволяют однозначно и полностью выявить все дефекты и установить корректность функционирования анализируемой программы, поэтому все существующие методы тестирования действуют в рамках формального процесса проверки исследуемого или разрабатываемого ПО.
Существует множество подходов к решению задачи тестирования ПО, но эффективное тестирование сложных программных продуктов – это процесс в высшей степени творческий, не сводящийся к следованию строгим и чётким процедурам или созданию таковых.
Качество программного обеспечения можно определить как совокупную характеристику исследуемого ПО с учётом следующих составляющих:
· Надёжность;
· Сопровождаемость;
· Практичность;
· Эффективность;
· Мобильность;
· Функциональность.
Используемая программная платформа (Visual FoxPro), а также следование в процессе проектирования и разработки требованиям и рекомендациям, предъявляемым к приложениям БД, позволяет говорить о том, что разработанное программное обеспечение удовлетворяет большинству вышеприведенных характеристик. Практическое тестирование в режиме опробования подтверждает данное утверждение. В ходе тестовых испытаний проверены операции по работе со всеми таблицами БД (добавление, редактирование, удаление записей), построены и сверены все отчетные формы, проведена проверка всех User Interface (UI) форм, всех модулей приложения.
Выполнено ручное тестирование:
· функциональности;
· производительности;
· интерфейса пользователя;
· безопасности;
Результат тестирования по всем позициям позитивный.
ВЫВОДЫ
В ходе выполнения курсовой работы закреплены на практике полученные знания и навыки алгоритмизации и программирования с использованием современной вычислительной техники. Разработана СУБД учета в страховой компании.
Разработанная СУБД учета может быть рекомендована к применению в университете.
В дальнейшем система может быть расширена за счет добавления нового функционала, прежде всего новых отчетных форм. Для практического применения системы следует разработать подробную документацию для пользователей и администраторов. В качестве документации для разработчика может использоваться отчет по курсовой работе.
В случае необходимости может быть выполнена интеграция с применяемым в университете специализированным ПО.
Руководство по использованию разработанного программного обеспечения приведено в приложении Д.
ПЕРЕЧЕНЬ ССЫЛОК
1. Гурвиц Г.А. Разработка реального приложения с использованием Visual FoxPro 9. – Хабаровск.: ДВГУПС, 2007. - 200с.
2. Клепинин В., Агафонова Т. Visual FoxPro 9.0. – СПб, БХВ, 2007. – 1217с.
3. Лебедев А. Visual FoxPro 9.0. – М.: НТ Пресс, 2005. -328с.
4. Базы данных: Учебник для высших учебных заведений / Под ред. проф. А.Д. Хомоненко. - СПб.: КОРОНА принт, 2000.
5. Гарсиа–Молиа Г., Ульман Дж. Д., Уидом Дж. Системы баз данных. Полный курс.– М: Изд.дом “Вильямс”, 2003.
6. Вейскас Д. Эффективная работа с Visual FoxPro. – СПб, Питер, 2000.
7. Литвин П., Гетц К., Гунделой М. Разработка настольных приложений в Visual FoxPro 9.0. Для профессионалов. Изд-во Питер, 2002.
8. Боуман Д.,Эмерсон С., Дарновски М. Практическое руководство по SQL, 4-ое издание.:Пер.с англ. – М.:Издательский дом “Вильямс”,2001.
9. Чекалов А.П. Базы данных от проектирования до разработки приложений. – СПб: БХВ–Петербург, 2003.
ПРИЛОЖЕНИЕ А
РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ
Для запуска приложения необходимо выполнить команду _curs.FXP. После выполнения команды откроется приложение Visual FoxPro с разработанным приложением (рисунок А.1).
Рисунок А.1 – Приложение «Приёмная комиссия университета»
Структура команд главного меню приложения приведена в таблице А.1.
Таблица А.1 – Структура команд главного меню приложения
№ |
Команда меню |
Назначение |
1 |
Приемная комиссия |
Открытие основной таблицы с данными приложения на просмотр записей |
2 |
Редактирование |
|
2.1 |
Добавить |
Добавление записи в таблицу связанную с текущей активной формой |
2.2 |
Изменить |
Редактирование записи в таблицу связанную с текущей активной формой |
2.3 |
Удалить |
Удаление записи в таблицу связанную с текущей активной формой |
2.4 |
Поиск |
Поиск записи в таблице связанной с текущей активной формой |
3 |
Справочники |
|
3.1 |
Факультеты и специальности |
Открытие таблицы справочника на просмотр записей |
3.2 |
Предприятия |
Открытие таблицы справочника на просмотр записей |
3.3 |
Приняли документы |
Открытие таблицы справочника на просмотр записей |
3.4 |
Предметы |
Открытие таблицы справочника на просмотр записей |
3.5 |
Основания для зачисления |
Открытие таблицы справочника на просмотр записей |
4 |
Отчеты |
|
4.1 |
Среднее число баллов абитуриентов 10 наиболее встречающихся школ |
Построение отчета, открытие формы отчета в режиме preview |
4.2 |
Наиболее успешные школы |
Построение отчета, открытие формы отчета в режиме preview |
4.3 |
Средний балл поступивших абитуриентов |
Построение отчета, открытие формы отчета в режиме preview |
Форма в режиме просмотра записей (рисунок А.2) содержит следующие функциональные элементы интерфейса:
· кнопки для операций над записями – «Добавить», «Изменить», «Удалить», «Поиск». Функциональность кнопок дублирует пункт главного меню «Редактирование»;
· кнопку закрытия формы «Закрыть»;
· сетку (grid) с данными.
Рисунок А.2 – Форма в режиме просмотра записей
Форма в режиме выбора записи (рисунок А.3), вызываемая при редактировании и добавлении для выбора информации из справочника, отличается от формы в режиме просмотра записей тем, что вместо кнопки «Закрыть», на форме расположены кнопки «ОК» и «Отмена». По первой кнопке происходит выбор записи и закрытие формы, по второй – только закрытие формы.
Рисунок А.3 – Форма в режиме выбора записи
Форма просмотра и выбора для факультета и специальности отличается от других форм и построена по принципу Master-Detail (рисунок А.4). В данной форме содержится две сетки (grid) и два набора кнопок по работе с записями.
Рисунок А.4 – Форма просмотра и выбора для факультета и специальности