Программа для работы кассира

Вы можете нажать сюда для просмотра программы.

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

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

Информация о завершённых продажах и кассовых сменах сохраняется в базе данных orders.db. Каждая продажа связывается с кассиром и открытой сменой, а завершённым заказам автоматически присваиваются номера вида ORD-000001.

Работа с кассовыми сменами

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

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

Если приложение было закрыто до завершения смены, незакрытая смена автоматически восстанавливается при следующем запуске.

Хранение и контроль данных

Для проверки целостности финансовой базы используется контрольная сумма SHA-256. При запуске программы содержимое orders.db сравнивается с сохранённой контрольной суммой из orders.db.sha256. После штатного изменения данных контрольная сумма обновляется автоматически.

Основные действия программы записываются в файл cash_register.log: запуск и завершение работы приложения, открытие и закрытие смен, сканирование товаров, проведение продаж, внесение и изъятие наличных, проверка целостности базы и возникающие ошибки. Журнал можно открыть непосредственно из интерфейса программы в режиме только для чтения.

Основные возможности

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

Технологии

Проект написан на Python. Графический интерфейс создан с помощью Tkinter. Для хранения данных о товарах используется таблица ODS, а операции и сведения о кассовых сменах сохраняются в локальной базе данных.

Для Windows предусмотрена сборка программы в отдельный CashRegister.exe с помощью PyInstaller. Приложение можно запускать без консольного окна, а рабочие файлы создаются и хранятся рядом с исполняемым файлом.

Цель проекта

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

Долганов Ян Львович
Долганов Ян Львович
Junior Python Developer

Мои научные интересы сосредоточены на разработке на Python, программной инженерии, backend-разработке и современных подходах к проектированию и созданию надёжных программных систем.