Курсовой проект (548453), страница 2
Текст из файла (страница 2)
Видно, что подключение прошло успешно, а это значит что сделано правильно.
Вообще говоря, если подключаться через сервер, а не файл, это позволяет обращаться к базе данных с нескольких рабочих мест, что расширяет возможности использования базы данных.
-
Реализация базы данных средствами Visual Studio
Наша модель базы данных, а далее – уже реализация это базы будет представлена в таком виде (это база данных на MS SQL Server 2005 средствами MS Visual Studio 2005).
Рассмотрим каждую таблицу в отдельности, чтобы понять ее структуру (строковые размеры данных соответствуют размерам, приведенные в физической модели базы данных):
| Эта таблица включает в себя такие поля как: - идентификатор (уникальный номер) - идентификатор таблицы Дисциплины - идентификатор таблицы Учебный план - идентификатор таблицы Преподаватели - часы занятий в неделю: обязат. - часы занятий в неделю: лаб.пр. - часы занятий в неделю: самост. - экзамены - зачеты - часы учеб. занятий в неделю: лекции - часы учеб. занятий в неделю: лабор. - часы учеб. занятий в неделю: практ. - идентификатор таблицы вид расчетного задания - консульт. - идентификатор таблицы Группы - идентификатор таблицы Кафедры |
| Включает поля: - идентификатор (уникальный номер) - имя преподавателя - идентификатор таблицы Должности - идентификатор таблицы Ученые степени - идентификатор таблицы Категории |
| Включает поля: - идентификатор (уникальный номер) - название должности |
| Включает поля: - идентификатор (уникальный номер) - название ученой степени |
| Включает поля: - идентификатор (уникальный номер) - название категории |
| Включает поля: - идентификатор (уникальный номер) - идентификатор таблицы Специальности - номер учебного плана - год - номер семестра - количество недель |
| Включает поля: - идентификатор (уникальный номер) - код специальности - название специальности |
| Включает поля: - идентификатор (уникальный номер) - условное обозначение вида работы - полное название вида работы |
| Включает поля: - идентификатор (уникальный номер) - название группы - год приема - количество студентов - идентификатор таблицы Кафедры |
| Включает поля: - идентификатор (уникальный номер) - название кафедры (аббревиатура) - полное название кафедры - идентификатор таблицы Институты (факультеты) |
| Включает поля: - идентификатор (уникальный номер) - название института/факультета (аббревиатура) - полное название института/факультета |
-
Редактирование данных в БД средствами Visual Studio
В окне Server Explorer, где представлены таблицы базы данных на Microsoft SQL Server в виде дерева (см. рис. 4.1.), для каждой таблицы можно открыть окно, нажатием на кнопку Show Table Data. Именно в этом окне предоставляется возможность редактирования данных таблицы. Выглядит это окно редактирования приблизительно так, как представлено на рис. 4.2. Приблизительно, потому что полный объем не вошел в рисунок в виду большого количества колонок.
-
Реализация отображения базы данных
Отображение базы данных (компонент DataSet) необходим для того, чтобы исключить лишние обращения к базе данных и к серверу. Это очень важная особенность, ведь если с базой работают множество пользователей, нагрузка на сервер может быть довольно большой – количество запросов во много раз больше, что приведет к замедлению работы исполнения запросов.
Поэтому, за счет DataSet на компьютере клиента находится отображение базы, с которой он работает. По завершении работы базы клиента и сервера синхронизируются (вернее, в серверную базу вносятся изменения, сделанные в базе данных клиента)
Отображение нашей базы данных на MS Visual Studio 2005 выглядит следующим образом:
Все числовые данные имеют тип Int32, строковые – String. Размеры строковых данных соответствуют тем, которые приведены в физической модели базы данных.
На скрине видно, что в каждой таблице имеются еще и TableAdapter’ы. Это своего рода мосты для соединения DataSet и источником данных. Здесь имеются такие методы, как Fill и GetData()
-
Метод Fill
Этот метод предназначен для того, чтобы заполнять таблицу нужными данными из источника (файл базы данных)
-
Метод GetData()
Предназначен для того, чтобы брать данные из таблицы отображения.
-
Реализация программного обеспечения
Главной особенностью в реализации программного обеспечения является тот факт, что все классы, отвечающие за редактирования таблиц базы данных, наследуются от одного базового класса, что придает удобство в реализации. Методы этого базового класса были описаны выше. Виртуальные методы базового класса необходимо перекрыть в классе-потомке. Все эти методы позволяют менять у потомка такие параметры как: название заголовка формы, заполнение и сохранение нужной таблицы базы данных (один класс-потомок работает только с одной таблицей, в смысле редактирование данных; однако при отображении данных пользователю, возможно использования нескольких таблиц базы данных с целью показывать данные в понятной пользователю форме).
-
Интерфейс программы
Главное окно представляет собой MDI приложение, которое имеет следующее меню:
Отчеты
Инструменты
|
|
Каждая из таблиц для редактирования БД вызывается соответствующим пунктом меню «Таблицы».
Отчет о нагрузке на преподавателей, также создается по нажатию на соответствующий пункт меню «Отчеты».
Как дополнительная возможность программного обеспечения, существует пункт меню «Консоль», которая позволяет исполнять SQL запросы к базе данных, введенные пользователем и выводить результат в таблицу (компонент DataTable). Для этого, конечно, необходимо знать названия таблиц и полей, и, в основном, создавалась с целью удобства в реализации программного обеспечения, но также этим могут воспользоваться и другие «посвященные» пользователи.
-
Окно редактирования таблиц БД
Рассмотрим одно из окон, предназначенное для редактирования данных в одной из таблиц. Возьмем, к примеру, окно «Преподаватели». С помощью данной формы возможно редактирование и отображение таблицы Преподаватели в базе данных.
Итак, при открытии данного окна, вызывается метод Fill (из TableAtapter’а необходимой таблицы базы данных). Этот метод получает данные таблицы БД и заполняет ими таблицу (компонент) на форме. После внесенных изменений, пользователь может нажать на кнопку «применить», чтобы все изменения были внесены в базу. Если же просто закрыть окно программы, то изменения будут держаться только до тех пор, пока программа не будет выгружена полностью. Т.е. пока программа работает, все вносимые изменения она производит с образом базы (DataSet), который хранится у клиента (пользователя). По сути, нажатие на кнопку «применить» вызывает метод GetData() (в TableAdapter’е), который берет данные из таблицы на форме и сохраняет их в базе данных.
Также, в этом окне находится кнопка «Сохранить в XML». Она вызывает диалоговое окно сохранения, где можно выбрать куда сохранить XML файл. В этом XML файле хранятся данные текущей таблицы. Впоследствии, этот файл можно будет открыть модулем создания отчетов и просмотреть в нормальном виде.
«Загрузить из XML» обратная функция сохранению, она загружает из указанного места XML файл и отображает его в таблице на форме.
-
Дополнительная возможность – консоль
В качестве дополнительного «бонуса» была реализована «Консоль», которая позволяет пользователю вводить свои запросы к базе данных и получать результат в виде таблицы на форме. В первую очередь, это удобство затрагивает разработчика программы, т.к. простому непосвященному пользователю необходимо будет знать названия баз данных и их полей.
Приведем пример работы данного модуля. Построим такой SQL запрос, который должен вывести все данные о Группах. В таблице Группы у нас содержится идентификатор на таблицу Кафедры, поэтому необходимо связать эти две таблицы (можно, конечно и не связывать, но тогда результат запроса будет не очень красивым).
Приведем пример SQL запроса:
select group_id, group_name, group_year, kol_students, kafedra_name, kafedra_longname from Groups join Kafedras on Groups.kafedra_id=Kafedras.kafedra_id |
В программе это выглядит следующим образом: