Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
7_zapiska_WEB.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.29 Mб
Скачать

2.5 Работа с базой данных

База данных - совокупность связанных данных, сохраняемая в двумерных таблицах информационной системы. Программное обеспечение информационной системы, обеспечивающей создание, ведение и совместное использование баз данных, называется системой управления базами данных (СУБД). База данных представляет собой удачно организованный набор поименованных таблиц. Каждая таблица - массив (возможно, очень большой) из однородных элементов, которые называются записями. Запись может содержать в себе одно или несколько именованных полей. Число и имена полей задаются при создании таблицы. Каждое поле имеет определенный тип.

Для работы с базой данных необходимо скачать дополнительное приложение – Robomongo. Robomongo — кроссплатформенный графический пользовательский интерфейс для MongoDB, документо-ориентированной системы управления базами данных с открытым исходным кодом (изображен на рисунке 2.2). Для работы с компьютерной системой я выбрала одну из самых популярных СУБД - NoSQL, потому что она проста и универсальна для большинства приложений, а также позволяет расширить возможности программиста, не ограничиваясь созданием таблиц.

Рисунок 2.2 - Графический интерфейс для MongoDB

Данная графическая среда позволяет с лёгкостью манипулировать данными во время отсутствия страницы администратора или прототипирования базы. Для корректной работы понадобилось 4 коллекции – аналог таблиц в SQL, которые имеют древовидную структуру:

  • Curses – здесь хранится первичный ключ, который описывает один курс. Содержит поля с названием и описанием курса, ссылка на логотип и массив уроков, которые принадлежат этому курсу;

  • Lessons – коллекция, описывающая один урок. Содержит первичный ключ и поля с названием и описанием урока, ссылку на курс, где он находится, массив вопросов с правильными ответами, а также список пользователей, которые прошли этот урок. Тут же есть настройки, указывающие на то, экзаменационный ли этот урок или нет, показывают максимальную оценку, количество вопросов за один сеанс и количество попыток прохождения (только во время экзамена);

  • Roles – тут хранится список ролей, которые могут быть в системе. Например, администратор и обычный пользователь;

  • Users – коллекция, описывающего каждого пользователя в отдельности. Содержит идентификатор, дату регистрации, почту, имя и роль.

2.6 Панель администратора

Администратор управляет контентом сайта. В его обязанности входит приглашение новых пользователей, управление курсами, уроками и их содержимым. Тонкая настройка всего контента обеспечит стабильное функционирование всего приложения и позволит новым пользователям быстро сориентироваться в навигации и пользовании сайтом. Администратор может просматривать всю статистику пользователей и устанавливать экзаменационные курсы. Чтобы зайти в панель администратора необходимо ввести секретный логин и пароль. Они создаются автоматически при самом первом запуске сервера (обязательное условие – пустая база данных). По умолчанию, логин – «a@a.a», пароль – «admin». После того, как будут введены эти данные, происходит вход в личный кабинет, изображённый на рисунке 2.3. По желанию можно изменить логин и пароль в БД.

Рисунок 2.3 – Кабинет администратора

В этой панели находятся все существующие на данный момент курсы и уроки. В разделе «Введение» находится список всех пользователей, которые прошли данный урок, их оценки и количество допустимых попыток. Оценку за пройденный урок устанавливается также администратором. По умолчанию, максимальная оценка – 10 баллов. Здесь может храниться материал не только касающийся web-программирования, но и любого другого предмета. Создание администратора с логином и паролем по умолчанию на листинге 2.1

Листинг 2.1 – Создание администратора и ролей

const availRoles = _.map(Roles.getAllRoles().fetch(), 'name');

// Create roles

_.forOwn(Role, (role) => {

if (!_.includes(availRoles, role)) {

console.log('Adding role: ', role);

Roles.createRole(role);

}

});

if(Users.find().count() == 0) {

var users=[ {email: "a@a.a", username: "admin", name: "admin", roles: [Role.Admin]}];

_.each(users, function(user){

const userId = Accounts.createUser({

email: user.email,

password: "admin",

profile: {name: user.name},

roles: user.roles });

Roles.addUsersToRoles(userId, Role.Admin);

})

Сперва, выполняется условие, которое проверяет наличие в базе ролей. Если таковых нет, то они создаются. Функция «Users.find().count()» возвращает количество всех пользователей, зарегистрированных в системе. Функция «Roles.addUsersToRoles (userId, Role.Admin)», которая добавляет пользователю роль. В нашем случае это Админ. Добавление новых пользователей изображено на рисунке 2.4.

Рисунок 2.4 – Создание нового пользователя

Все три поля являются обязательными для заполнения. Заполняет их администратор. На практике это могут быть студенты из определённых групп. Администратор выдаст всем имя и пароль, под которыми они смогут в любое время заходить в приложение и проходить тематические тесты, по результатам которых преподаватель и выставит оценки. Отметим, что для расчёта оценок используется специальная формула, прописанная в коде программы: «const rating = maxPrice / countQuestion * bestRes». Здесь:

  • maxPrice – это максимальная оценка, которую можно получить за урок.

  • countQuestion – количество вопросов;

  • bestRes – лучшая оценка из всех пройденных тестов. То есть, если пользователь проходил один тест три раза, то выберется лучшая из этих трёх.

Добавление, редактирование и удаление курсов происходит через панель, изображённую на рисунке 2.5.

Рисунок 2.5 – Панель редактирования курсов

Преподаватель может предоставить администратору конкретный материал, необходимый для изучения, а тот в свою очередь занесёт это на сайт. Именно на этой панели происходит всё, что касается корректирования курсов. Каждый курс имеет своё описание и может быть выделен тем или иным цветом (по желанию админа). Удалив курс, он удаляется из всей БД полностью и навсегда.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]