Десктоп-приложение на Java Swing для работы с PostgreSQL: просмотр и редактирование карточек пациентов, вложенные файлы тестов (в БД в Base64), экспорт выбранной записи в Excel (.xlsx).
Версия приложения: 1.4.1 (исходный проект — 2015 г., обновления — см. историю коммитов).
- JDK 11 или новее (проверено на JDK 21).
- PostgreSQL с созданными таблицами (см.
sql/schema.sql). - Сборка: Apache Maven 3.6+.
-
Установите PostgreSQL и создайте базу, например
hospital. -
Примените схему:
psql -U postgres -d hospital -f sql/schema.sql
-
Соберите проект и подтяните зависимости в
lib/(для Eclipse и запуска без fat-jar):mvn -q compile mvn -q dependency:copy-dependencies -DoutputDirectory=lib
-
Запуск через Maven:
mvn -q exec:java -Dexec.mainClass=MainFrame
Либо из IDE: главный класс —
MainFrame, classpath — каталогbin+ все JAR изlib/. -
В меню Файл → Настройки БД укажите хост, порт (по умолчанию
5432), имя базы, пользователя и пароль, нажмите Подключиться.
| Путь | Назначение |
|---|---|
src/MainFrame.java |
Весь UI и логика работы с БД |
sql/schema.sql |
Создание таблиц patients и tests |
pom.xml |
Зависимости: драйвер PostgreSQL, Apache POI (Excel) |
Каталог lib/ с JAR-файлами не хранится в git (генерируется командой dependency:copy-dependencies). Файлы экспорта и временные данные пишутся в каталог tmp/ (он в .gitignore).
- Просмотр — таблица пациентов с фильтрами, переход к деталям, экспорт строки в
tmp/<id>.xlsx. - Детали — добавление/изменение/удаление записи, дерево файлов тестов, просмотр содержимого файла.
- Опция Временные файлы — при экспорте дополнительно сохранять декодированные бинарные данные в
tmp/~<имя>.dat.
- Запросы к БД собираются через
Statementи конкатенацию строк: при вводе специальных символов возможны ошибки SQL и риск SQL-инъекций. Для продакшена имеет смысл перевести операции наPreparedStatementи валидацию ввода. - Имена колонок в фильтре поиска в коде соответствуют полям в
SELECT *(порядок колонок в таблице должен совпадать с ожидаемым в UI).
Уточните у автора исходного проекта; в репозитории файл лицензии не приложен.