Создание системы выставления оценок на Yii
Онлайн-система выставления оценок позволяет преподавателям эффективно управлять успеваемостью студентов, а студентам — видеть свои результаты в реальном времени. Используя Yii Framework, можно создать платформу с надежной архитектурой, безопасной обработкой данных и динамическим интерфейсом с AJAX.
Почему Yii подходит для системы оценок
Yii обеспечивает:
- Разделение логики, представления и данных через MVC;
- Легкую работу с базой данных и связями между моделями;
- Встроенную защиту от SQL-инъекций, XSS и CSRF;
- Возможность интеграции AJAX для динамической подгрузки оценок;
- Гибкость для масштабирования платформы под большое количество студентов.
Основные модели
Для системы оценок создаем следующие модели:
- Student — данные студента;
- Teacher — данные преподавателя;
- Subject — предметы;
- Grade — оценки студентов.
<?php
namespace app\models;
use yii\db\ActiveRecord;
class Student extends ActiveRecord {
public static function tableName() { return 'student'; }
public function rules() { return [['name', 'required']]; }
}
?>
<?php
namespace app\models;
use yii\db\ActiveRecord;
class Teacher extends ActiveRecord {
public static function tableName() { return 'teacher'; }
public function rules() { return [['name', 'required']]; }
}
?>
<?php
namespace app\models;
use yii\db\ActiveRecord;
class Subject extends ActiveRecord {
public static function tableName() { return 'subject'; }
public function rules() { return [['name', 'required']]; }
}
?>
<?php
namespace app\models;
use yii\db\ActiveRecord;
class Grade extends ActiveRecord {
public static function tableName() { return 'grade'; }
public function rules() {
return [
[['student_id', 'subject_id', 'teacher_id', 'score'], 'required'],
['score', 'integer', 'min'=>0, 'max'=>100],
];
}
public function getStudent() { return $this->hasOne(Student::class, ['id' => 'student_id']); }
public function getSubject() { return $this->hasOne(Subject::class, ['id' => 'subject_id']); }
public function getTeacher() { return $this->hasOne(Teacher::class, ['id' => 'teacher_id']); }
}
?>
Контроллер с AJAX-подгрузкой оценок
<?php
namespace app\controllers;
use Yii;
use yii\web\Controller;
use app\models\Grade;
use yii\web\Response;
class GradeController extends Controller {
public function actionIndex() {
return $this->render('index');
}
public function actionFetchGrades() {
Yii::$app->response->format = Response::FORMAT_JSON;
$grades = Grade::find()->with(['student','subject','teacher'])->all();
$data = [];
foreach($grades as $g) {
$data[] = [
'student' => $g->student->name,
'subject' => $g->subject->name,
'teacher' => $g->teacher->name,
'score' => $g->score,
];
}
return $data;
}
}
?>
Демо-таблица с оценками
Ниже показана динамическая таблица оценок. В реальной системе данные подтягиваются через AJAX из базы данных.
| Студент | Предмет | Преподаватель | Оценка |
|---|---|---|---|
| Иванов И.И. | Математика | Петров П.П. | 85 |
| Сидоров С.С. | Физика | Кузнецов К.К. | 90 |
| Козлова А.А. | Информатика | Иванова И.И. | 78 |
В реальной системе можно использовать JavaScript + AJAX для подгрузки и обновления оценок без перезагрузки страницы.
Мои услуги по веб-разработке
Я создаю профессиональные веб-приложения на Yii, WordPress и других PHP-фреймворках. Возможна разработка платформ для онлайн-обучения, систем оценивания, CRM и сайтов под ключ.
Связаться со мной:
- Telegram: @pavel_wp_bitrix
- Email: pavel.ps2014@yandex.ru
Посетите мой сайт: программист-сайт.рф для подробностей и примеров проектов.
Комментарии (0)
Оставить комментарий