Cashier's work program

You can click here to view the program.

Program for the Cashier is an educational cash register application developed in Python using Tkinter. The project is designed to automate the main operations of a cashier: opening and closing shifts, searching for products by barcode, processing sales, accounting for money in the cash drawer, and saving the history of operations.

Product information is stored in the editable codes.ods file. A barcode, name, and price are specified for each product. The cashier can scan or enter a barcode, after which the program finds the corresponding product and adds it to the current sale.

Information about completed sales and cash register shifts is stored in the orders.db database. Each sale is linked to the cashier and the open shift, while completed orders are automatically assigned numbers in the ORD-000001 format.

Working with Cash Register Shifts

Before starting work, the user selects a cashier and opens a cash register shift. When opening the shift, the initial amount of money in the cash drawer is specified.

During the shift, the program records sales and allows manual cash deposits or withdrawals to be registered. When closing the cash register, the actual counted amount is entered. The program calculates the expected balance and saves any possible discrepancy.

If the application was closed before the shift was completed, the unclosed shift is automatically restored the next time the program is launched.

Data Storage and Control

An SHA-256 checksum is used to verify the integrity of the financial database. When the program starts, the contents of orders.db are compared with the saved checksum from orders.db.sha256. After a normal data modification, the checksum is updated automatically.

The main actions of the program are recorded in the cash_register.log file: application startup and shutdown, opening and closing shifts, scanning products, processing sales, depositing and withdrawing cash, checking database integrity, and any errors that occur. The log can be opened directly from the program interface in read-only mode.

Main Features

  • selecting a cashier before starting work;
  • opening and closing a cash register shift;
  • searching for products by barcode;
  • processing and saving sales;
  • automatic order numbering;
  • accounting for cash in the cash drawer;
  • depositing and withdrawing money;
  • calculating the expected and actual cash balance;
  • restoring an unclosed shift after restarting the program;
  • maintaining an activity log;
  • checking database integrity using SHA-256;
  • building a standalone Windows application.

Technologies

The project is written in Python. The graphical user interface is created using Tkinter. An ODS spreadsheet is used to store product data, while operations and information about cash register shifts are stored in a local database.

For Windows, the program can be built as a separate CashRegister.exe using PyInstaller. The application can be launched without a console window, while working files are created and stored next to the executable file.

Project Goal

The main goal of the project is to develop a standalone desktop application that simulates the operation of a cashier workstation and to implement, in practice, working with a graphical user interface, local data storage, cash register shifts, operation logging, and data integrity control.

Ian L. Dolganov
Ian L. Dolganov
Junior Python Developer

My academic interests focus on Python development, software engineering, backend development, and modern approaches to designing and developing reliable software systems.