Skip to content

Latest commit

 

History

History
85 lines (67 loc) · 6.12 KB

File metadata and controls

85 lines (67 loc) · 6.12 KB

ФМИст

Създайте уеб приложение, което представлява личен журнал на един студент във ФМИ.

Функционалности

Система за потребители с логин/регистрация и поне 3 ранга - администратор, модератор и студент.

Администратори

Администраторите имат възможност да управляват всички данни в приложението:

  • Могат да променят всички данни, въведени от останалите потребители
  • Управляват потребители, включително да правят други потребители администратори

Модератори

Основната им функция е да въвеждат данни:

  • Специалности
  • Катедри
  • Дисциплини (задължителни и избираеми)
    • Група на избираемите дисциплини (напр. ЯКН, ПМ)
  • Учебни планове и разписания
  • Кредити
  • Изпити (редовна/поправителна сесия)

Бележки:

  • Източник на данните може да бъде сайтът на ФМИ. Там има обща информация за ФМИ - учебни планове, дисциплини (задължителни и избираеми), кредити, разписания, изпити и др.
  • Ще ви гледаме с възхищение, ако за въвеждането на някои от данните направите парсер/crawler и автоматизирате процеса.

Студенти

  • За всеки изпит може да си въвежда получената оценка
  • Среден успех по години или общо (на базата на въведените оценки)
  • Дават оценка и мнение за дадена дисциплина, която са записали
  • Получава следната информация наготово:
    • Разписание за семестъра
      • За всички дисциплини, за които е записан (изборни и задължителни)
      • Информация за дисциплина, ден, час, зала (може и преподавател)
    • Учебната си програма
    • График с изпити (ако са въведени от модераторите)
    • Записани дисциплини
      • Задължителни по учебен план
      • Избираеми (записани от него)
    • Кредити
      • Текущ брой
      • Необходим брой по учебен план
    • Списък от всички избираеми дисциплини и съответно може да ги записва
      • Достъп до мненията за всяка дисциплина
      • Филтриране по оценка, катедра, група на ИД

Записки

  • Всеки студент може да качва записки към дадена дисциплина под формата на файл
    • Могат да бъдат публични или лични
  • Публичните записки могат да бъдат виждани от останалите студенти

Бележки

  • Чувствайте се свободни да разширите функционалността с ваши идеи.
  • Напишете сами системата за регистрация/вход. Без gem-ове като devise или warden. Разбира се, може да използвате библиотеки за сесии и cookie-та (например тези, които са пакетирани в Sinatra). Паролите не трябва да се съхраняват в чист вид. Трябва да са поне хеширани - прочетете за добрите практики по темата.
  • Валидирайте максимално много неща и показвайте смислени съобщения за грешки.
  • Използвайте релационна база от данни. Например SQLite3. За целта ще ви трябва sqlite3 gem-а, или пък може да ползвате направо някакъв ORM, например ActiveRecord - вижте ръководството ни за уеб проекти
  • Постарайте се да покриете максимална част от кода си с автоматизирани тестове и да направите добро разделение между "логика" и "интерфейс". Това индиректно означава, че не трябва да има много код директно в Sinatra DSL-а. Не се притеснявайте да правите допълнителни класове. Задачите на един подобен клас може да е дори изпълнение на някакво действие (например, записване на избираема дисциплина).

Места, от които да черпите вдъхновение:

  • СУСИ - Лична информация за всеки студент от ФМИ (взети/невзети изпити, оценки, присъствие в протоколи и др.)
  • Сайтът на ФМИ - Обща информация за ФМИ (учебни планове, дисциплини (задължителни и избираеми), кредити, разписания, изпити и др.)