Автоматизированная интегрированная система "Статистика о средних специальных учебных заведениях"

Проектирование автоматизированной информационной системы аккумулирования в городском отделе образования сведений о средних специальных учебных заведениях города под управлением СУБД Microsoft SQL Server. Схемы алгоритмов и описание программных модулей.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 10.11.2017
Размер файла 1,1 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Министерство образования и науки Российской Федерации

Государственное бюджетное образовательное учреждение высшего профессионального образования

"Самарский государственный аэрокосмический университет имени академика С.П. Королева"

(Национальный исследовательский университет)

Кафедра информационных систем и технологий

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

к курсовому проекту

на тему: "Автоматизированная интегрированная система "Статистика о средних специальных учебных заведениях"

по дисциплине: "Проектирование баз данных интегрированных автоматизированных систем"

Выполнил: Прудников А.В.,

группа М 6121

Руководитель: Чигарина Е.И.

Самара, 2013

Содержание

Реферат

  • 1. Описание предметной области
    • 1.1 Исходные данные
    • 1.2 Постановка задачи
  • 2. Описание логической модели базы данных
  • 3. Анализ на нормальные формы отношений
  • 4. Выбор средства реализации базы данных
    • 4.1 Общие сведения о СУБД
    • 4.2 Обоснование выбора СУБД
  • 5. Описание физической модели базы данных
  • 6. Описание программного обеспечения системы
    • 6.1 Описание пользовательского интерфейса
    • 6.2 Реализация ограничений целостности и контроль ввода данных
    • 6.3 Схемы основных алгоритмов
    • 6.4 Описание основных программных модулей

Реферат

Пояснительная записка 30 с, 18 рис.

СРЕДНИЕ СПЕЦИАЛЬНЫЕ УЧЕБНЫЕ ЗАВЕДЕНИЯ, СПЕЦИАЛЬНОСТЬ, ГРУППА, СОБСТВЕННОСТЬ УЧРЕЖДЕНИЯ, ПРЕДПРИНИМАТЕЛЬСКИЕ СТРУКТУРЫ, ПЛОЩАДЬ ТЕРРИТОРИИ, СУБД, C#, MSSQL, ADO.NET, ОТЧЕТЫ

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

База данных системы реализована под управлением СУБД Microsoft SQL Server 2008.

Система написана на языке C# в среде VisualStudio 2010 и функционирует под управлением операционных систем Windows.

1. Описание предметной области

1.1 Исходные данные

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

1.2 Постановка задачи

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

Реализовать запросы к базе данных:

1. Сформировать отчет с указанием общего числа техникумов города, сгруппировав по собственности здания, указав внутри групп размер площади по разделам, общая площадь территории, общее количество специальностей, общее число групп, наличие (количество) предпринимательских структур, обеспеченность транспортом.

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

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

4. Вывод сведений о предпринимательских структурах, относящихся к конкретному техникуму.

2. Описание логической модели базы данных

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

Логическая модель данных будет построена по методологии IDEF1X. Рассмотрим основные понятия используемой методологии.

Сущность (entity) - это "предмет", который может быть идентифицирован некоторым способом, отличающим его от других "предметов" (определение Питера Чена). Каждая сущность обладает набором атрибутов. Атрибут - отдельная характеристика сущности. Сущность состоит из экземпляров, каждый из которых должен отличаться от другого экземпляра.

Связь (relationship) - это логическая ассоциация, устанавливаемая между сущностями, которая представляет бизнес-правило или ограничение. Связи отображаются как линии между сущностями. В зависимости от роли в связи сущность может быть родительской или дочерней. В методике IDEF1X у дочерней сущности на связи присутствует точка. Мощность связи обозначается буквами P (1 или N экземпляров сущностей) или Z (0 или 1 экземпляров сущностей), если мощность не указана, то подразумевается от 0 до N экземпляров сущностей.

В модели по методологии IDEF1X нельзя использовать связи между сущностями типа N:M, поэтому необходимо разбиение на две связи (обязательно идентифицирующие) и введение дополнительной сущности.

Существует два типа сущностей:

· зависимая сущность. Для определения экземпляра такой сущности необходимо сослаться на экземпляр независимой сущности, с которой связана зависимая сущность;

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

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

- Среднее специальное учебное заведение (регистрационный номер, название, адрес, телефон, код собственности учреждения, код собственности здания, площадь территории, код рентабельности);

- Специализация (код специализации, регистрационный номер учебного заведения, количество групп, количество учащихся);

- Вид специализации (код вида специализации, название вида специализации);

- Собственность учреждения (код собственности учреждения, название собственности учреждения);

- Собственность здания (код собственности здания, название собственности здания);

- Транспорт (код транспорта, регистрационный номер учебного заведения, количество транспорта);

- Вид транспорта (код вида транспорта, название вида транспорта, тип вида транспорта);

- Занимаемая площадь (код занимаемой площади, регистрационный номер учебного заведения, площадь занимаемой территории);

- Вид занимаемой площади (код вида занимаемой площади, название вида занимаемой площади, тип вида занимаемой площади);

- Рентабельность (код рентабельности, название рентабельности);

- Предпринимательская структура (код предпринимательской структуры, название предпринимательской структуры, ФИО директора предпринимательской структуры, род деятельности предпринимательской структуры, телефон предпринимательской структуры);

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

Основываясь на методологии IDEF1X, между сущностями можем установить следующие связи:

- Учебное заведение-Вид специализации: мощность связи N:M, поэтому необходимо ввести дополнительную сущность Специализация. Связь разбивается на 2 идентифицирующие: Учебное заведение-Специализация и Специализация-Вид специализации;

- Собственность учреждения-Учебное заведение: неидентифицирующая связь, т.к. сущности, между которыми она проводится, являются независимыми. Мощность связи 1:N, т.к. в одном учебном заведении может быть только 1 вид собственности учреждения, но одна собственность учреждения может быть в ноль, один или нескольких учебных заведениях;

- Собственность здания-Учебное заведение: неидентифицирующая связь, т.к. сущности, между которыми она проводится, являются независимыми. Мощность связи 1:N, т.к. в одном учебном заведении может быть только 1 вид собственности здания, но одна собственность здания может быть в ноль, один или нескольких учебных заведениях;

- Учебное заведение-Вид транспорта: мощность связи N:M, поэтому необходимо ввести дополнительную сущность Транспорт. Связь разбивается на 2 идентифицирующие: Учебное заведение-Транспорт и Транспорт-Вид транспорта;

- Учебное заведение-Вид занимаемой площади: мощность связи N:M, поэтому необходимо ввести дополнительную сущность Занимаемая площадь. Связь разбивается на 2 идентифицирующие связи: Учебное заведение-Занимаемая площадь и Занимаемая площадь-Вид занимаемой площади;

- Учебное заведение-Предпринимательские структуры: мощность связи N:M, поэтому необходимо ввести дополнительную сущность Предпринимательские структуры учебных заведений. Связь разбивается на 2 идентифицирующие: Учебное заведение- Предпринимательские структуры учебных заведений и Предпринимательские структуры учебных заведений - Предпринимательские структуры;

- Рентабельность-Учебное заведение: неидентифицирующая связь, т.к. сущности, между которыми она проводится, являются независимыми. Мощность связи 1:N, т.к. в одном учебном заведении может быть только 1 вид рентабельности, но один вид рентабельности может быть в ноль, один или нескольких учебных заведениях;

Логическая модель базы данных представлена на рисунке 1.

Рисунок 1 - Логическая модель базы данных

3. Анализ на нормальные формы отношений

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

Аппарат нормализации отношений разработан Коддом. В нем определены различные нормальные формы. Каждая нормальная форма ограничивает типы допустимых функциональных зависимостей отношений. Кодд выделил три нормальные формы: 1НФ, 2НФ, 3НФ.

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

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

3НФ - Отношение находится в 3НФ, если оно находится в 2НФ, и отсутствуют транзитивные зависимости не ключевых атрибутов от ключа.

Т.е. отсутствуют функциональные зависимости вида:

АВС

СВ

СА

ВА

Проведя анализ на нормальные формы отношений, получим:

1НФ:

Все отношения находятся в 1НФ, так как значения всех атрибутов атомарные, т.е. значения атрибутов не являются множеством, списком или диапазоном.

2НФ:

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

Отношение Специализация: Ключ является составным (код специализации, регистрационный номер учебного заведения).

Код специализации количество студентов.

Код специализации количество групп.

Регистрационный номер учебного заведения количество студентов.

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

Таким образом, отсутствует частичная функциональная зависимость атрибутов, не входящих в ключ, от ключа. Отношение Специализация находится во 2НФ.

Отношение Транспорт: Ключ является составным (код транспорта, регистрационный номер учебного заведения).

Код транспорта количество транспорта.

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

Таким образом, отсутствует частичная функциональная зависимость атрибутов, не входящих в ключ, от ключа. Отношение Транспорт находится во 2НФ.

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

Код занимаемой площади площадь.

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

Таким образом, отсутствует частичная функциональная зависимость атрибутов, не входящих в ключ, от ключа. Отношение Занимаемая площадь находится во 2НФ.

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

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

3НФ:

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

Отношение Учебное заведение:

1) Регистрационный номер Название Адрес

Адрес Название. Т.к. по одному адресу может быть только одно учебное заведение.

2) Регистрационный номер Название Телефон

Телефон Название

3) Регистрационный номер Название Собственность учреждения

Название Регистрационный номер

4) Регистрационный номер Название Площадь территории

Название Регистрационный номер

И т.д.

Таким образом, отношение Учебное заведение находится в 3НФ, т.к. оно находится во 2НФ и в нем отсутствуют транзитивные функциональные зависимости атрибутов, не входящих в ключ, от ключа.

Отношение Специализация:

1) Код специализации Кол-во групп Кол-во учащихся

2) Код специализации Кол-во учащихся Кол-во групп

И т.д.

Таким образом, отношение Специализация находится в 3НФ, т.к. оно находится во 2НФ и в нем отсутствуют транзитивные функциональные зависимости атрибутов, не входящих в ключ, от ключа.

Отношение Транспорт:

1) Код транспорта Регистрационный номер Кол-во транспорта

Регистрационный номер Код транспорта

2) Код транспорта Кол-во транспорта Регистрационный номер

И т.д.

Таким образом, отношение Транспорт находится в 3НФ, т.к. оно находится во 2НФ и в нем отсутствуют транзитивные функциональные зависимости атрибутов, не входящих в ключ, от ключа.

Отношение Занимаемая площадь:

1) Код вида занимаемой площади Регистрационный номер Площадь

Регистрационный номер Код вида занимаемой площади

2) Код вида занимаемой площади Площадь Регистрационный номер

И т.д.

Таким образом, отношение Занимаемая площадь находится в 3НФ, т.к. оно находится во 2НФ и в нем отсутствуют транзитивные функциональные зависимости атрибутов, не входящих в ключ, от ключа.

Отношение Предпринимательские структуры:

1) Код предпринимательской структуры Название Телефон

Телефон Название

2) Код предпринимательской структуры ФИО директора Телефон

Телефон ФИО директора

И т.д.

Таким образом, отношение Предпринимательские структуры находится в 3НФ, т.к. оно находится во 2НФ и в нем отсутствуют транзитивные функциональные зависимости атрибутов, не входящих в ключ, от ключа.

Отношение Вид транспорта:

1) Код транспорта Тип Название

2) Код транспорта Название Тип

И т.д.

Таким образом, отношение Вид транспорта находится в 3НФ, т.к. оно находится во 2НФ и в нем отсутствуют транзитивные функциональные зависимости атрибутов, не входящих в ключ, от ключа.

Отношение Вид занимаемой площади:

1) Код вида занимаемой площади Название Тип

2) Код вида занимаемой площади Тип Название

И т.д.

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

4. Выбор средства реализации базы данных

4.1 Общие сведения о СУБД

Система управления базами данных (СУБД) - специализированная программа или комплекс программ, предназначенная для организации и ведения базы данных.

Для решения данной задачи СУБД должна обладать основными свойствами:

? должна быть распределенного типа;

? должна поддерживать операционную систему Microsoft Windows XP и выше;

? должна быть нетребовательной к программным и аппаратным ресурсам;

? должна поддерживать пространственные данные;

? должна иметь минимальную стоимость;

? должна обладать клиент - серверной архитектурой.

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

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

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

Сервер - логический процесс, отвечающий за выполнение запросов.

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

В настоящее время существует множество СУБД, наиболее известными являются:

- Oracle - клиент - серверная СУБД разработана специально для работы в распределенных сетях. Эта РСУБД промышленного применения, предлагает уникальные функции автонастройки и самодиагностики. Данный продукт Oracle рассматривает безопасность с точки зрения критически важных требований к конфиденциальности информации и защите данных и обеспечению целостности данных. Есть возможности ограничения доступа к отдельным частям таблицы, регулирование доступа к данным внешними средствами. Присутствуют встроенные средства: резервного копирования и восстановления, логического восстановления недавних изменений в базе данных, обнаружение нарушений в процессе работы СУБД. Основными недостатками данной СУБД является требовательность к ресурсам системы (минимум 512 Мб оперативной памяти и 5 Гб свободного пространства на жестком диске), а также высокая цена (от $190 до $120000);

- Microsoft SQL Server - популярная СУБД. Предназначена для создания различных по размеру баз данных, включая крупные базы данных масштаба предприятия. Используется в различных целях и на различных уровнях и помогает управлять приложениями быстро и эффективно. MS SQL Server создан для управления терабайтами данных, способный обрабатывать такие компоненты, как видео, фотографии, бинарные данные, текст, и многое другое. Основными недостатками является то, что определять для пользователя, какой максимальный объём ресурсов СУБД ему доступен (например, не больше 20 %) нельзя, а также очень высокая цена (от 850$ и выше).

- MySQL является реляционной СУБД, поддерживает SQL (структурированный язык запросов) и может применяться в качестве SQL-сервера. Это означает, что общаться с сервером можно на языке SQL: клиент посылает серверу запрос, тот его обрабатывает и отдает клиенту только те данные, которые были получены в результате этого запроса. Тем самым клиенту не требуется выкачивать данные и производить вычисления, как, например, в Microsoft Access. MySQL - это программное обеспечение (ПО) с открытым кодом, его можно свободно изучать и изменять. Пакет распространяется на условиях General Public License (GPL), его можно бесплатно загрузить из Интернета для некоммерческого применения.

4.2 Обоснование выбора СУБД

В качестве средства реализации БД была выбрана система MS SQL Server 2008 Express. Microsoft SQL Server 2008 Express - это мощная и надежная система управления данными, обеспечивающая множество функций, защиту данных и высокую производительность для внедренных приложений-клиентов, "легких" веб-приложений и локальных хранилищ данных. SQL Server 2008 Express предназначен для упрощенного развертывания и быстрого создания прототипов; его можно получить бесплатно и свободно распространять вместе с приложениями.

SQL Server 2008 упрощает развёртывание, управление и оптимизацию данных предприятия и аналитических приложений. Как платформа управления данными предприятия, он предоставляет единую консоль управления, которая позволяет администраторам данных, находящимся в любом месте вашей организации, отслеживать, управлять и настраивать все базы данных и связанные службы по всему предприятию. Он предоставляет расширяемую инфраструктуру управления, которая может быть легко запрограммирована при помощи SQL Management Objects (SMO), позволяя пользователям переделывать и расширять их среду управления и независимым поставщикам программных продуктов (ISV) создавать дополнительные инструменты и функциональность для дальнейшего расширения возможностей, поставляемых по умолчанию.

5. Описание физической модели базы данных

Перейдем от логической модели базы данных к физической модели (рисунок 2). По физической модели сгенерируем схему базы данных в СУБД MSSQL Server. Схема БД показана на рисунке 3.

Рисунок 2 - Физическая модель данных

На основании полученной схемы отношений с учетом особенностей реализации и типа полей была получена структура таблиц базы данных:

Таблица "Собственность учреждения":

CREATE TABLE [dbo]. [tblAgency](

[Id] [bigint]IDENTITY(1,1) NOT NULL,

[Name] [varchar](50) NOT NULL,

CONSTRAINT [PK_tblAgency]PRIMARY KEY NONCLUSTERED

(

[Id]ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],

CONSTRAINT [U_tblAgency_Name]UNIQUE NONCLUSTERED

(

[Name]ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

Таблица "Собственность здания":

CREATE TABLE [dbo]. [tblBuilding](

[Id] [bigint]IDENTITY(1,1) NOT NULL,

[Name] [varchar](50) NOT NULL,

CONSTRAINT [PK_tblBuilding]PRIMARY KEY NONCLUSTERED

(

[Id]ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],

CONSTRAINT [U_tblBuilding_Name]UNIQUE NONCLUSTERED

(

[Name]ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

Таблица "Предпринимательские структуры":

CREATE TABLE [dbo]. [tblEnterpriseStructure](

[Id] [bigint]IDENTITY(1,1) NOT NULL,

[Name] [varchar](50) NOT NULL,

[Career] [varchar](50) NOT NULL,

[DirectorFIO] [varchar](50) NOT NULL,

[Phone] [int]NOT NULL,

CONSTRAINT [PK_tblEnterpriseStructure]PRIMARY KEY CLUSTERED

(

[Id]ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],

CONSTRAINT [U_tblEnterpriseStructure_Name]UNIQUE NONCLUSTERED

(

[Name]ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

Таблица "Рентабельность":

CREATE TABLE [dbo]. [tblProfitability](

[Id] [bigint]IDENTITY(1,1) NOT NULL,

[Name] [varchar](50) NOT NULL,

CONSTRAINT [PK_tblProfitability]PRIMARY KEY NONCLUSTERED

(

[Id]ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],

CONSTRAINT [U_Profitability_Name]UNIQUE NONCLUSTERED

(

[Name]ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

Рисунок 3 - Схема описания базы данных в MS SQL Server

Таблица "Специализация":

CREATE TABLE [dbo]. [tblSpecialization](

[Id] [bigint]IDENTITY(1,1) NOT NULL,

[Name] [varchar](50) NOT NULL,

CONSTRAINT [PK_tblSpecialization]PRIMARY KEY NONCLUSTERED

(

[Id]ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],

CONSTRAINT [U_tblSpecialization_Name]UNIQUE NONCLUSTERED

(

[Name]ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

Таблица "Площадь территории":

CREATE TABLE [dbo]. [tblSquare](

[Id] [bigint]IDENTITY(1,1) NOT NULL,

[Name] [varchar](50) NOT NULL,

[Type] [varchar](50) NOT NULL,

CONSTRAINT [PK_tblSquare]PRIMARY KEY CLUSTERED

(

[Id]ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],

CONSTRAINT [U_tblSquare_Name]UNIQUE NONCLUSTERED

(

[Name]ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

Таблица "Транспорт":

CREATE TABLE [dbo]. [tblTransport](

[Id] [bigint]IDENTITY(1,1) NOT NULL,

[Name] [varchar](50) NOT NULL,

[Type] [varchar](50) NOT NULL,

CONSTRAINT [PK_tblTransport]PRIMARY KEY CLUSTERED

(

[Id]ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],

CONSTRAINT [U_tblTransport_Name]UNIQUE NONCLUSTERED

(

[Name]ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

Таблица "Учебное заведение":

CREATE TABLE [dbo]. [tblPtu](

[RegNumber] [bigint]IDENTITY(1,1) NOT NULL,

[Name] [varchar](50) NOT NULL,

[Address] [varchar](150) NULL,

[Telephone] [int]NOT NULL,

[Agency_Id] [bigint]NOT NULL,

[Building_Id] [bigint]NOT NULL,

[Square] [decimal](8, 2) NOT NULL,

[Profitability_Id] [bigint]NOT NULL,

CONSTRAINT [PK_tblPTU]PRIMARY KEY CLUSTERED

(

[RegNumber]ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],

CONSTRAINT [U_tblPtu_Name]UNIQUE NONCLUSTERED

(

[Name]ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

Связь с табицей "Собственность учреждения":

ALTER TABLE [dbo]. [tblPtu]WITH CHECK ADD CONSTRAINT [FK_tblPtu_tblAgency]FOREIGN KEY([Agency_Id])

REFERENCES [dbo]. [tblAgency]([Id])

Связь с табицей "Собственность здания":

ALTER TABLE [dbo]. [tblPtu]WITH CHECK ADD CONSTRAINT [FK_tblPtu_tblBuilding]FOREIGN KEY([Building_Id])

REFERENCES [dbo]. [tblBuilding]([Id])

Связь с табицей "Рентабельность":

ALTER TABLE [dbo]. [tblPtu]WITH CHECK ADD CONSTRAINT [FK_tblPtu_tblProfitability]FOREIGN KEY([Profitability_Id])

REFERENCES [dbo]. [tblProfitability]([Id])

Таблица для связи таблиц "Предпринимательские структуры" и "Учебное заведение":

CREATE TABLE [dbo]. [tblPtuEnterpriseStructure](

[Ptu_RegNumber] [bigint]NOT NULL,

[EnterpriseStructure_Id] [bigint]NOT NULL,

CONSTRAINT [PK_tblPtuEnterpriseStructure]PRIMARY KEY CLUSTERED

(

[Ptu_RegNumber]ASC,

[EnterpriseStructure_Id]ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

Связь с таблицей "Предпринимательские структуры":

ALTER TABLE [dbo]. [tblPtuEnterpriseStructure]WITH CHECK ADD CONSTRAINT [FK_tblPtuEnterpriseStructure_tblEnterpriseStructure]FOREIGN KEY([EnterpriseStructure_Id])

REFERENCES [dbo]. [tblEnterpriseStructure]([Id])

Связь с таблицей "Учебное заведение":

ALTER TABLE [dbo]. [tblPtuEnterpriseStructure]WITH CHECK ADD CONSTRAINT [FK_tblPtuEnterpriseStructure_tblPtu]FOREIGN KEY([Ptu_RegNumber])

REFERENCES [dbo]. [tblPtu]([RegNumber])

Таблица для связи таблиц "Специализация" и "Учебное заведение":

CREATE TABLE [dbo]. [tblPtuSpec](

[Spec_Id] [bigint]NOT NULL,

[Ptu_RegNumber] [bigint]NOT NULL,

[Groups_Count] [int]NOT NULL,

[Students_Count] [int]NOT NULL,

CONSTRAINT [PK_tblPtuSpec]PRIMARY KEY NONCLUSTERED

(

[Spec_Id]ASC,

[Ptu_RegNumber]ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

Связь с таблицей "Учебное заведение":

ALTER TABLE [dbo]. [tblPtuSpec]WITH CHECK ADD CONSTRAINT [FK_tblPtuSpec_tblPtu]FOREIGN KEY([Ptu_RegNumber])

REFERENCES [dbo]. [tblPtu]([RegNumber])

ON UPDATE CASCADE

ON DELETE CASCADE

Связь с таблицей "Специализация":

ALTER TABLE [dbo]. [tblPtuSpec]WITH CHECK ADD CONSTRAINT [FK_tblPtuSpec_tblSpecialization]FOREIGN KEY([Spec_Id])

REFERENCES [dbo]. [tblSpecialization]([Id])

Реализация значения по умолчанию для поля "Количество групп":

ALTER TABLE [dbo]. [tblPtuSpec]ADD DEFAULT ((0)) FOR [Groups_Count]

Реализация значения по умолчанию для поля "Количество учащихся":

ALTER TABLE [dbo]. [tblPtuSpec]ADD DEFAULT ((0)) FOR [Students_Count]

Таблица для связи таблиц "Занимаемые площади" и "Учебное заведение":

CREATE TABLE [dbo]. [tblPtuSquare](

[Ptu_RegName] [bigint]NOT NULL,

[Square_Id] [bigint]NOT NULL,

[Square] [decimal](6, 2) NOT NULL,

CONSTRAINT [PK_tblPtuSquare]PRIMARY KEY CLUSTERED

(

[Ptu_RegName]ASC,

[Square_Id]ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

Связь с таблицей "Учебное заведение":

ALTER TABLE [dbo]. [tblPtuSquare]WITH CHECK ADD CONSTRAINT [FK_tblPtuSquare_tblPtu]FOREIGN KEY([Ptu_RegName])

REFERENCES [dbo]. [tblPtu]([RegNumber])

Связь с таблицей "Занимаемые площади":

ALTER TABLE [dbo]. [tblPtuSquare]WITH CHECK ADD CONSTRAINT [FK_tblPtuSquare_tblSquare]FOREIGN KEY([Square_Id])

REFERENCES [dbo]. [tblSquare]([Id])

Таблица для связи таблиц "Транспорт" и "Учебное заведение":

CREATE TABLE [dbo]. [tblPtuTransport](

[Transport_Id] [bigint]NOT NULL,

[Ptu_RegNumber] [bigint]NOT NULL,

[Amount] [int]NOT NULL,

CONSTRAINT [PK_tblPtuTransport_2]PRIMARY KEY CLUSTERED

(

[Transport_Id]ASC,

[Ptu_RegNumber]ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

Связь с таблицей "Учебное заведение":

ALTER TABLE [dbo]. [tblPtuTransport]WITH CHECK ADD CONSTRAINT [FK_tblPtuTransport_tblPtu]FOREIGN KEY([Ptu_RegNumber])

REFERENCES [dbo]. [tblPtu]([RegNumber])

Связь с таблицей "Транспорт":

ALTER TABLE [dbo]. [tblPtuTransport]WITH CHECK ADD CONSTRAINT [FK_tblPtuTransport_tblTransport]FOREIGN KEY([Transport_Id])

REFERENCES [dbo]. [tblTransport]([Id])

В таблицах реализованы ограничения уникальности полей по полю "Name", указаны ключевые поля и соединения таблиц между собой при помощи связей 1:N и N:M. Также в некоторых таблицах имеются поля в которых описаны значения по умолчанию и реализованы ограничения целостности Cascade.

6. Описание программного обеспечения системы

6.1 Описание пользовательского интерфейса

При запуске приложения сначала появляется форма входа пользователя (рисунок 4). На ней имеются поля логина и пароля и выбора роли входящей учетной записи: пользователь или администратор.

Рисунок 4 - Форма входа для пользователя

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

Роли "Администратор" разрешается выполнение любых операций.

После запуска в режиме администратор появляется главная форма приложения (рисунок 5). На главной форме есть меню с пунктами "Справочники", "Учебное заведение", "Запросы", "Отчеты".

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

На форме можно просматривать все записи, связанные с учебными заведениями. Для этого необходимо выделить интересующее учебное заведение и просмотреть вкладки: "Специализации", "Транспорт", "Площадь", "Предпринимательские структуры". Аналогичный просмотр этих вкладок реализован через пункт меню "Учебное заведение" в главном меню формы.

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

Рисунок 5 - Главная форма приложения

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

Рисунок 5 - Форма добавления нового учебного заведения

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

Рисунок 7 - Форма добавления транспорта для учебного заведения

Для редактирования справочников необходимо выбрать пункт меню "Справочники".

В выпадающем меню нужно выбрать редактируемый справочник и произвести его редактирование при помощи доступных команд "Добавление", "Удаление", "Редактирование". Пример редактирования справочника собственности учреждения показан на рисунках 8-9.

Рисунок 8 - Просмотр справочника собственности учреждения

Рисунок 9 - Редактирование собственности учреждения

Для просмотра запросов необходимо выбрать пункт меню "Запросы" и выбрать специализацию по которой будет выполняться запрос. Пример запроса показан на рисунке 10.

Рисунок 10 - Отчет об учебных заведениях по специальности АСОиУ

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

Рисунок 11 - Сводный отчет

6.2 Реализация ограничений целостности и контроль ввода данных

Ограничения целостности, связанные с ведением справочников, и контроль ввода данных реализованы средствами приложения.

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

Рисунок 12 - Информационное сообщение при попытке удаления записи из справочника собственности учреждения

Аналогично для всех справочников.

Уникальность имен реализуется на уровне приложения. Пример проверки уникальности показан на рисунке 13.

Рисунок 13 - Проверка уникальности поля

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

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

В базе данных в справочниках поля "Название" ограничены длиной 50 символов, и чтобы не произошло ошибки при записи строки длиной более 50 символов реализовано ограничение на ввод в текстовое поле до 50 символов (рисунок 14).

Рисунок 14 - Ограничение на ввод длинных строк 50 символов

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

Рисунок 15 - Добавление пробелов в начале и в конце строки

Рисунок 16 - Строка корректно отображается при выводе

6.3 Схемы основных алгоритмов

Наиболее важными действиями при работе с базой данных является добавление данных, их выборка и составление отчетов.

При добавлении данных стоит учитывать корректность введенных данных и в зависимости от этого выполнять добавление в базу данных или нет. Алгоритм подобного действия приведен на рисунке 17.

Рисунок 17 - Схема выполнения добавления данных в базу данных

Не менее важным этапом при работе с программой является выбор данных для отображения. Чтобы вывести данные из базы данных необходимо составить sql запрос, который правильно отработает и вернет запрашиваемые строки. Затем следует получить эти данные и отобразить в программе (рисунок 18).

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

Рисунок 18 - Схема выполнения запросов на получение данных из базы данных

6.4 Описание основных программных модулей

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

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

public PtuEntity []GetPtuDetails(long pSpecId)

{

var list = new List<PtuEntity>();

var command = new SqlCommand("SELECT * FROM dbo.f_GetPtuDetails(@pSpecId)", _sqlConnectionBaser);

command.Parameters.Add("@pSpecId", pSpecId);

var reader = command.ExecuteReader();

while (reader.Read())

{

if (reader.HasRows)

{

list.Add(new PtuEntity(

reader.GetInt64(0),

reader.GetString(1),

reader.GetString(2),

reader.GetInt32(3),

reader.GetString(4),

reader.GetString(5),

(double)reader.GetDecimal(6),

reader.GetString(7)

));

}

}

reader.Close();

return list.ToArray();

}

Код процедуры f_GetPtuDetails:

ALTER FUNCTION [dbo]. [f_GetPtuDetails](@pSpecId BIGINT)

RETURNS TABLE

AS

RETURN

(

SELECT ptu.RegNumber, ptu. [Name], ptu. [Address],

ptu.Telephone, a. [Name], b. [Name],

[Square], p. [Name]

FROM tblPtu ptu JOIN tblPtuSpec ps ON ps.Ptu_RegNumber = ptu.RegNumber JOIN tblSpecialization s

ON s.Id = ps.Spec_Id JOIN tblAgency a ON a.Id = ptu.Agency_Id JOIN tblBuilding b ON ptu.Building_Id = b.Id

JOIN tblProfitability p ON ptu.Profitability_Id = p.Id

WHERE s.Id = @pSpecId

)

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

Кусок кода, отвечающий за формирование отчета в MSSQL, приведен ниже.

CREATE VIEW [dbo]. [CommonPtuView]

AS

SELECT p.RegNumber, p.Name, b.Name AS BuildingName, p. [Square], ISNULL(s.Name,'Занимаемых площадей нет') AS AddSquareName,

ent.EntCount,

spec.SpecSum,

trans.TransCount,

spec.SpecCount,

ISNULL(ps. [Square],0) AS AddSquare,

(SELECT COUNT(*) FROM tblPtu) AS PtuCount

FROM tblPtu p JOIN tblBuilding b ON b.Id = p.Building_Id

LEFT JOIN tblPtuSquare ps ON ps.Ptu_RegName = p.RegNumber

LEFT JOIN tblSquare s ON s.Id = ps.Square_Id

LEFT JOIN (SELECT COUNT(ps1.Spec_Id) AS SpecCount, ISNULL(SUM(ps1.Groups_Count),0) AS SpecSum,

p1.RegNumber AS RegNumber

FROM tblPtu p1 LEFT JOIN tblPtuSpec ps1 ON ps1.Ptu_RegNumber = p1.RegNumber

GROUP BY p1.RegNumber) spec ON spec.RegNumber = p.RegNumber

LEFT JOIN (SELECT ISNULL(SUM(pt2.Amount),0) AS TransCount, p2.RegNumber AS RegNumber

FROM tblPtu p2 LEFT JOIN tblPtuTransport pt2 ON pt2.Ptu_RegNumber = p2.RegNumber

GROUP BY p2.RegNumber) trans ON trans.RegNumber = p.RegNumber

LEFT JOIN (SELECT COUNT(pes3.EnterpriseStructure_Id) AS EntCount, p3.RegNumber AS RegNumber

FROM tblPtu p3 LEFT JOIN tblPtuEnterpriseStructure pes3 ON pes3.Ptu_RegNumber = p3.RegNumber

GROUP BY p3.RegNumber) ent ON ent.RegNumber = p.RegNumber

Размещено на Allbest.ru

...

Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.