# Информационная система «Учёт экспонатов музея»

# Аннотация

«Учёт экспонатов музея» — клиентское Windows-приложение для просмотра и изменения сведений о музейных экспонатах. Программа разработана на C# с использованием Windows Forms, работает с отдельно развёрнутой базой данных PostgreSQL и подключается к ней с помощью библиотеки Npgsql.

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

# Введение

Основные возможности программы:

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

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

# Назначение и условия применения

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

Для работы необходимы:

- компьютер под управлением Windows;
- установленная платформа .NET Framework 4.7.2;
- доступ к заранее развёрнутому серверу PostgreSQL;
- корректно настроенные параметры подключения к базе данных;
- наличие в базе таблиц `Exhibit`, `Creator` и `Museum`;
- наличие функции `get_exhibit_count_by_author`;
- права учётной записи базы данных на чтение и изменение используемых таблиц;
- установленные вместе с приложением библиотеки, включая Npgsql.

Клиентское приложение не устанавливает и не настраивает сервер PostgreSQL автоматически. Перед первым запуском база данных должна быть развёрнута и доступна по сети.

# Установка

1. [ ] Получить установочный файл `MuseumExhibitsSetup.exe`.
2. [ ] Убедиться, что сервер PostgreSQL запущен и доступен с рабочего компьютера.
3. [ ] При необходимости установить .NET Framework 4.7.2.
4. [ ] Запустить `MuseumExhibitsSetup.exe`.
5. [ ] Разрешить запуск установщика, если Windows выведет предупреждение.
6. [ ] Выбрать папку установки или оставить предложенный путь.
7. [ ] Подтвердить создание ярлыков в меню «Пуск» и на рабочем столе.
8. [ ] Дождаться завершения копирования файлов приложения и зависимостей.
9. [ ] Запустить программу через созданный ярлык.
10. [ ] Убедиться, что в главном окне загрузились список экспонатов и список авторов.

Удаление приложения выполняется через стандартный раздел Windows для удаления программ либо с помощью файла деинсталляции, созданного Inno Setup.

Удаление клиентского приложения не удаляет базу данных с сервера PostgreSQL.

# Описание операций

## Просмотр экспонатов

После запуска программа подключается к серверу PostgreSQL и загружает список экспонатов.

В таблице отображаются:

- идентификатор экспоната;
- тип экспоната;
- дата создания;
- цена экземпляра;
- себестоимость создания;
- автор;
- идентификатор музея.

Для просмотра большого количества записей используются полосы прокрутки таблицы.

## Обновление данных

Кнопка **«Обновить»** повторно загружает сведения из базы данных.

Эту операцию следует выполнять после изменения данных другим пользователем или непосредственно на сервере. После успешного обновления программа выводит сообщение «Данные обновлены».

## Добавление экспоната

Для добавления записи необходимо заполнить поля в группе «Данные для добавления»:

- `ID` — уникальный числовой идентификатор экспоната;
- `Тип` — наименование типа экспоната;
- `Дата` — дата создания;
- `Цена` — цена экземпляра;
- `Себестоимость` — затраты на создание или приобретение;
- `Автор` — значение, выбранное из списка авторов;
- `ID музея` — идентификатор существующего музея.

После заполнения полей следует нажать кнопку **«Добавить»**.

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

После успешного добавления таблица обновляется, поля ввода очищаются, а программа выводит сообщение «Экспонат добавлен!».

## Изменение цены

Для изменения цены необходимо:

1. Выбрать экспонат в таблице.
2. Нажать кнопку **«Изменить цену»**.
3. Ввести новое числовое значение.
4. Подтвердить операцию.

После успешного изменения таблица обновляется и появляется сообщение «Цена обновлена!».

Другие сведения об экспонате в текущей версии приложения не редактируются.

## Удаление экспоната

Для удаления необходимо:

1. Выбрать экспонат в таблице.
2. Нажать кнопку **«Удалить»**.
3. Проверить выбранную запись.
4. Подтвердить удаление в диалоговом окне.

Если выбрать ответ «Нет», операция будет отменена.

Удаление может быть отклонено базой данных, если на экспонат ссылаются связанные записи.

## Подсчёт количества экспонатов автора

Кнопка **«Тест процедуры»** вызывает функцию подсчёта количества экспонатов автора.

Для выполнения операции необходимо:

1. Нажать кнопку **«Тест процедуры»**.
2. Ввести числовой идентификатор автора.
3. Подтвердить ввод.
4. Просмотреть результат в нижней части главного окна.

Программа вызывает функцию PostgreSQL `get_exhibit_count_by_author` и отображает количество экспонатов, связанных с указанным автором.

# Сборка проекта

Для сборки исходного кода необходимы:

- Visual Studio с поддержкой проектов .NET Framework;
- .NET Framework 4.7.2 Developer Pack;
- восстановленные NuGet-пакеты проекта;
- доступ к серверу PostgreSQL для проверки работы приложения.

Рекомендуемый порядок сборки:

1. Открыть решение `MuseumWinForms.sln` в Visual Studio.
2. Восстановить NuGet-пакеты.
3. Проверить параметры подключения к PostgreSQL.
4. Выбрать конфигурацию `Release`.
5. Выполнить сборку решения.
6. Получить исполняемые файлы в каталоге `MuseumWinForms/bin/Release`.
7. Добавить содержимое каталога Release в установочный пакет Inno Setup.

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

# Термины и сокращения

| Термин | Определение |
|---|---|
| БД | База данных, в которой хранятся сведения информационной системы |
| СУБД | Система управления базами данных |
| PostgreSQL | СУБД, используемая для централизованного хранения данных |
| Клиентское приложение | Программа, установленная на компьютере оператора и подключающаяся к БД |
| Экспонат | Объект, сведения о котором хранятся в музейном каталоге |
| Автор | Создатель произведения или другого музейного объекта |
| Музей | Организация, в которой хранится или учитывается экспонат |
| Цена экземпляра | Указанная в базе данных стоимость экспоната |
| Себестоимость | Затраты, связанные с созданием или приобретением экспоната |
| Идентификатор | Уникальное числовое значение записи |
| Windows Forms | Технология создания графических приложений для Windows |
| .NET Framework | Программная платформа, необходимая для запуска приложения |
| Npgsql | Библиотека для подключения приложений .NET к PostgreSQL |
| Inno Setup | Средство создания установочного файла Windows |
| Git | Система контроля версий исходного кода |
