🏠 Домашнее задание: разделение на модули
⚡ Кратко
Домашнее задание — финальный этап практикума: разделить программу на модули и проверить запуск в 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.py—register_userиlogin_user.book_importer.py—import_books_from_csv.user_actions.py—view_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
- Откройте папку
bookstore_projectв VS Code. - Убедитесь, что интерпретатор Python выбран корректно (Ctrl+Shift+P →
Python: Select Interpreter). - Запустите
main.pyчерез кнопку ▶ или терминал:python main.py. - Проверьте главное меню: регистрация, вход, выход.
- Проверьте меню клиента: просмотр книг, поиск, покупка, популярные запросы.
- После покупки убедитесь, что в таблице
purchasesпоявилась запись, а остаток книги и баланс уменьшились. - Сделайте несколько поисков и проверьте, что они появились в MongoDB в коллекции
bookstore_logs_searches.
Шаг 5. Чек-лист самопроверки
- □ Программа запускается из
main.pyбез ошибок. - □ При импорте модулей не выполняется ввод/вывод и не запускается главное меню.
- □ Все SQL-запросы параметризованы.
- □ После покупки вызывается
connection.commit(). - □ Покупка фиксируется в таблице
purchases. - □ Поиски сохраняются в MongoDB и участвуют в топе запросов.
- □ Каждый файл отвечает за одну логическую часть.
💡 Совет: если VS Code не видит собственные модули, убедитесь, что папка
bookstore_project открыта как корень рабочей области, а не как подпапка.