Информационная система предназначена для хранения, учета и управления данными о программных продуктах, установленных на компьютерах организации. Система должна обеспечивать централизованное хранение информации о программном обеспечении, кабинетах установки, ответственных лицах и обновлениях версий.
Система должна включать удобный графический интерфейс пользователя, обеспечивающий ввод и редактирование информации.
Информационная система должна обеспечивать хранение и обработку следующих данных:
Информация о программных продуктах
- Название программного продукта
- Фирма-разработчик
- Номер версии
- Назначение (например: текстовый редактор, мультимедийная программа и т. д.)
Информация о местах установки
- Номера кабинетов, в которых установлены указанные программные продукты
Информация об ответственных лицах
- Фамилия, имя, отчество
Схема (рисунок 2) представляет физическую структуру базы данных, предназначенной для учета установок программного обеспечения в организации. Ниже подробно описаны основные таблицы и их взаимосвязи.
Эта таблица содержит сведения о программных продуктах:
id
— уникальный идентификатор программного продукта (первичный ключ)id_разработчика
— внешний ключ, ссылающийся на таблицуРазработчики
id_категории
— внешний ключ, ссылающийся на таблицуКатегории
название
— наименование программного продукта
Содержит информацию о фирмах, разрабатывающих программное обеспечение:
id
— уникальный идентификатор разработчиканазвание
— наименование фирмы-разработчика
Содержит классификацию программ по назначению (например, текстовые редакторы, графические редакторы и т. д.):
id
— уникальный идентификатор категорииназвание
— наименование категории
Фиксирует факт установки определённого программного продукта определённой версии в определённое время и с указанием ответственного сотрудника:
id
— уникальный идентификатор установкиid_ПО
— внешний ключ, ссылающийся на таблицуПО
id_версии
— внешний ключ, ссылающийся на таблицуВерсии
дата_установки
— дата выполнения установкиid_сотрудника
— внешний ключ, ссылающийся на таблицуСотрудники
, определяющий лицо, ответственное за установку
Содержит сведения о сотрудниках, ответственных за установку и сопровождение программного обеспечения:
id
— уникальный идентификатор сотрудникаФИО
— фамилия, имя и отчество сотрудника
Сотрудники связываются с установками через таблицу Установки
.
Хранит информацию о версиях программного обеспечения:
id
— уникальный идентификатор версииназвание
— номер или обозначение версии (например,1.0
,2025.1
и т. п.)
Позволяет отслеживать, какая конкретно версия программного продукта была установлена.
Представляет связь между установками программного обеспечения и номерами кабинетов, где оно было установлено:
id_установки
— внешний ключ, указывающий на таблицуУстановки
номер_кабинета
— номер кабинета, в котором находится компьютер с установленным ПО
Поскольку одна установка может быть выполнена в нескольких кабинетах, используется отдельная таблица для реализации связи «многие-ко-многим».
В качестве системы управления базами данных (СУБД
) для реализации проекта выбрана MySQL
. Это популярная реляционная СУБД
с открытым исходным кодом, обладающая высокой производительностью, и широко используется в коммерческих и образовательных проектах и легко интегрируется с различными языками программирования, включая C#
.
Основными причинами выбора MySQL
стали:
- Бесплатная лицензия (
GPL
) - Поддержка языка
SQL
- Возможность подключения из среды разработки
Visual Studio
черезMySQL Connector
- Широкое распространение и большое количество учебных материалов
Для администрирования базы данных использовалось приложение MySQL Workbench
, предоставляющее визуальный интерфейс для проектирования схемя, выполнения SQL
-запросов и управления таблицами.
Была разработана модель базы данных, отражающая структуру проекта. Все таблицы были созданы в среде MySQL Workbench
, обеспечивая соблюдение требований к целостности данных и логическим связям между сущностями. База данных включает в себя следующие основные таблицы:
Developers
— хранит информацию о разработчиках программного обеспечения. Таблица включает уникальный идентификатор и имя разработчика.Categories
— содержит категории программного обеспечения (например, офисные программы, антивирусы и т.д.).Software
— основная таблица, содержащая сведения о программном обеспечении. Связана с таблицамиDevelopers
иCategories
через внешние ключи.Versions
— отражает различные версии программного обеспечения.Employees
— содержит информацию о сотрудниках, за которыми закреплены установки программ.Installations
— регистрирует установку конкретной версии программного обеспечения определённому сотруднику на конкретную дату. Связана с таблицамиSoftware
,Versions
иEmployees
.Installation_Rooms
— дополнительная таблица, реализующая связь между установками и помещениями, в которых они производились. Используется составной первичный ключ поinstallation_id
иroom_number
.
Все таблицы связаны с использованием внешних ключей. Для оптимизации хранения и запросов были применены следующие подходы:
- Использование типа
INT AUTO_INCREMENT
для первичных ключей. - Ограничение
NOT NULL
для обязательных полей, таких как имена и идентификаторы. - Организация связей «многие к одному» (
Software
→Developer
) и «один ко многим» (Installations
→Installation_Rooms
).
Процесс создания базы данных завершился успешным выполнением всех SQL
-команд в MySQL Workbench
, после чего была проведена начальная проверка структуры, в том числе тестовые INSERT
-запросы для проверки связей и ограничений.
Обмен данными с базой данных в объектной модели происходит с помощью библиотеки MySql.Data.dll
, используя классы MySqlConnection
и MySqlCommand
.
Реализован синглтон-класс DataBaseManager
, инкапсулирующий взаимодействие с базой через библиотеку, предоставляя высокоуровневые методы получения, изменения и удаления строк в таблицах.
Классы InstallInfo
, SoftwareInfo
, EmployeeInfo
, DeveloperInfo
, CategoryInfo
выражают установку, ПО
, фирму, категорию и сотрудника соответственно.
Параметры в запросах обрабатываются чтобы избежать SQL
-инъекций.
Заполнение таблиц в программе происходит, используя механизмы привязки данных (DataBinding
) WPF
.
Главное окно приложения (рисунок 1) содержит навигационное меню слева, позволяющее переключаться между основными разделами:
Установки
ПО
Разработчики
Категории
Сотрудники
После запуска приложения по умолчанию открывается раздел «Установки». В этом разделе отображается таблица с полной информацией о произведённых установках программного обеспечения. Таблица включает следующие столбцы:
- Сотрудник — имя сотрудника, за которым закреплена установка.
- Кабинеты — список номеров кабинетов, в которых была выполнена установка.
- ПО — наименование установленного программного продукта.
- Версия — установленная версия программного обеспечения.
- Разработчик — фирма, разработавшая
ПО
. - Категория — категория программного обеспечения (например, «Инструменты разработки», «Графические редакторы»).
- Дата установки — дата, когда была выполнена установка.
Информация формируется на основе данных из таблиц Installations
, Employees
, Software
, Versions
, Developers
, Categories
и Installation_Rooms
. Для представления связи «одна установка — несколько кабинетов» используется объединение и группировка значений room_number
по installation_id
.
Под таблицей расположены кнопки управления:
- Добавить — открывает форму для создания новой записи в текущем разделе.
- Изменить — позволяет редактировать выбранную запись в таблице.
- Удалить — удаляет выбранную запись.
- Установить фильтрацию — позволяет установить фильтрацию по определённым условиям.
При добавлении новой установки открывается модальное окно, содержащее элементы ввода сотрудника, ПО
, кабинетов, версии и даты установки (рисунок 3).
Кабинеты вводятся через пробел (например, 201 202 203
), сотрудник и ПО
выбираются в раскрывающихся списках, дата установки вводится в соответствующем элементе, в котором можно вводить дату в формате ДЕНЬ.МЕСЯЦ.ГОД или выбрать в календаре, нажатием на значок, располагающимся справа внутри рамки элемента.
После нажатия на элемент «Готово», программа проверит корректность введённой информации и в таблице установок будет создана новая запись.
Запись создаётся вызовом метода InsertInstall
класса DataBaseManager
. Метод принимает параметры: id
ПО
, id
сотрудника, версию и дату установки.
Версия выражается строкой и метод находит id
версии в таблице версий и вставляет этот id
в запрос вставки, а дата выражается системным типом DateTime
, это создаёт большую гибкость при работе с датами, например позволяет сравнивать даты используя перегруженные операторы сравнения.
При создании интерфейса был реализован абстрактный класс-обёртка TableView
над DataGrid
, в котором реализованы методы установки источника данных и обрабатываются выделения элементов в таблице. От этого класса наследуются классы, которые выражают определённые таблицы, например класс InstallsTableView
выражает таблицу установок.
Стиль интерфейсов некоторых элементов переопределён и прописан в ресурсах приложения в файле App.xaml
.
Реализовано предотвращение многократного запуска приложения одновременно используя механизм синхронизации Mutex
.
Реализована функция фильтрации данных (рисунок 4), что значительно повышает удобство работы пользователя с системой.
Реализованы следующие возможности фильтрации:
- Фильтрация по сотруднику — позволяет отобразить все установки программного обеспечения, выполненные конкретными сотрудниками. Выбор осуществляется из списка с фамилиями сотрудников.
- Фильтрация по ПО — позволяет выбрать
ПО
, которое могло быть установлено. - Фильтрация по кабинетам — пользователь может указать один или несколько номеров кабинетов, чтобы увидеть, какое
ПО
установлено в этих помещениях. - Фильтрация по дате установки — реализована возможность отображения установок в заданном интервале дат (с и по включительно). Это удобно для анализа активности установки программ за определённый период.
Если в каком-то из разделов не выбраны элементы, тогда предполагается что по этому разделу фильтрация не происходит.
Для работы информационной системы требуется установка MySQL Community Server
:
- Перейдите на официальный сайт MySQL: https://dev.mysql.com/downloads/mysql/
- Выберите версию
MySQL Community Server 8.4.6 LTS
- Скачайте и запустите установщик
- В процессе установки:
- Выберите тип установки
Developer Default
- Установите
root пароль
- Завершите установку, приняв все параметры по умолчанию
После установки MySQL
необходимо восстановить тестовые данные:
- Настройте файл
init.bat
- Откройте файл
init.bat
в текстовом редакторе - Найдите строку с параметром пароля и замените на тот, который вы указали при установке
MySQL
- Сохраните файл
- Запустите инициализацию
- Запустите
init.bat
для выполнения
Скрипт автоматически:
- Создаст базу данных
installsdb_db
- Импортирует все данные из
backup.sql
- Настроит необходимые таблицы и связи