🏠 Домашнее задание: разделение на модули

📁 Блок: Практикум / Базы данных ⏱️ Время изучения: ~120 мин 🎯 Сложность: Средняя
#lower #find #sort

⚡ Кратко

Домашнее задание — финальный этап практикума: разделить программу на модули и проверить запуск в VS Code.

🏠 Финальный этап: разделение на модули

К этому моменту программа магазина книг уже умеет регистрировать пользователей, загружать книги, авторизовывать клиентов, показывать каталог, искать, покупать и логировать поиски. Осталось привести проект в аккуратную модульную структуру.

Шаг 1. Создайте структуру папок и файлов

bookstore_project/
├── main.py
├── db_setup.py
├── auth.py
├── book_importer.py
├── user_actions.py
├── search_logs.py
└── books.csv

Шаг 2. Перенесите код по файлам

  • db_setup.py — константы базы данных, функция подключения, SQL для создания таблиц users, books, purchases.
  • auth.pyregister_user и login_user.
  • book_importer.pyimport_books_from_csv.
  • user_actions.pyview_available_books, search_books_by_title, purchase_book, user_menu.
  • search_logs.py — подключение к MongoDB, log_search_query, show_popular_queries.

Шаг 3. Настройте импорты

В main.py импортируйте нужные функции:

from db_setup import create_database_and_tables
from auth import login_user, register_user
from book_importer import import_books_from_csv
from user_actions import user_menu


def main():
    connection = create_database_and_tables()
    import_books_from_csv(connection, "books.csv")

    while True:
        print("\n--- Bookstore ---")
        print("1. Register")
        print("2. Login")
        print("0. Exit")
        choice = input("Choose action: ")

        if choice == "1":
            register_user(connection)
        elif choice == "2":
            user_id = login_user(connection)
            if user_id:
                user_menu(connection, user_id)
        elif choice == "0":
            break


if __name__ == "__main__":
    main()

Шаг 4. Проверьте запуск в VS Code

  1. Откройте папку bookstore_project в VS Code.
  2. Убедитесь, что интерпретатор Python выбран корректно (Ctrl+Shift+P → Python: Select Interpreter).
  3. Запустите main.py через кнопку ▶ или терминал: python main.py.
  4. Проверьте главное меню: регистрация, вход, выход.
  5. Проверьте меню клиента: просмотр книг, поиск, покупка, популярные запросы.
  6. После покупки убедитесь, что в таблице purchases появилась запись, а остаток книги и баланс уменьшились.
  7. Сделайте несколько поисков и проверьте, что они появились в MongoDB в коллекции bookstore_logs_searches.

Шаг 5. Чек-лист самопроверки

  • □ Программа запускается из main.py без ошибок.
  • □ При импорте модулей не выполняется ввод/вывод и не запускается главное меню.
  • □ Все SQL-запросы параметризованы.
  • □ После покупки вызывается connection.commit().
  • □ Покупка фиксируется в таблице purchases.
  • □ Поиски сохраняются в MongoDB и участвуют в топе запросов.
  • □ Каждый файл отвечает за одну логическую часть.
💡 Совет: если VS Code не видит собственные модули, убедитесь, что папка bookstore_project открыта как корень рабочей области, а не как подпапка.