Дипломная работа: Информационная система мониторинга формирования знаний и компетенций студентов

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

}

public JsonResult GetCompetencyDescription(int id)

{

var comp = db.Competencies.Find(id);

return Json(new {comp.Description});

}

public JsonResult GetFgosDescription(int id)

{

var fgos = db.Fgoses.Find(id);

return Json(new { fgos.Description });

}

protected override void Dispose(bool disposing)

{

db.Dispose();

base.Dispose(disposing);

}

}

}

Б3. Модуль формирования отчетов

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.Mvc;

using Fist.StudentKnowledge.Models;

namespace Fist.StudentKnowledge.Controllers

{

[Authorize(Roles = "Secretary, Heads")]

public class ReportController : BaseController

{

public ActionResult Index()

{

return View();

}

public ActionResult Progress(int facultyId = 0, int groupId = 0, int studentId = 0)

{

ViewBag.FacultyId = new SelectList(DbContext.Faculties, "Id", "Title", facultyId);

ViewBag.GroupId = new SelectList(DbContext.Groups.Where(g => g.FacultyId == facultyId), "Id", "Title", groupId);

ViewBag.StudentId = new SelectList(DbContext.Students.Where(s => s.GroupId == groupId), "Id", "Fio", studentId);

ViewBag.ReportType = ReportType.None;

if (facultyId != 0 && groupId == 0 && studentId == 0)

{

//Отчет по факультету

var semesters = DbContext.Semesters.OrderBy(s => s.StartDate).ToList();

var groups = DbContext.Groups.Where(g => g.FacultyId == facultyId).ToList();

ViewBag.ReportType = ReportType.Faculty;

ViewBag.Semesters = semesters;

ViewBag.Groups = groups;

var reportItems = new List<ReportItem>();

foreach (Group group in groups)

{

foreach (Semester semester in semesters)

{

var assessments = DbContext.Assessments.Where(a => a.SemesterId == semester.Id && a.Student.GroupId == group.Id).ToList();

var mark = 0d;

if (assessments.Count > 0)

{

mark = (double)assessments.ToList().Sum(a => a.Mark) / assessments.Count;

}

reportItems.Add(new ReportItem

{

GroupId = group.Id,

SemesterId = semester.Id,

Mark = Math.Round(mark, 2),

NoMark = !DbContext.SemesterSubjects.Any(s => s.GroupId == group.Id && s.SemesterId == semester.Id)

});

}

}

ViewBag.ReportItems = reportItems;

}

else if (facultyId != 0 && groupId != 0 && studentId == 0)

{

//Отчет по группе

ViewBag.ReportType = ReportType.Group;

var semesters = DbContext.Semesters.Where(s => s.GroupSubjects.Any(g => g.GroupId == groupId)).OrderBy(s => s.StartDate).ToList();

var students = DbContext.Students.Where(s => s.GroupId == groupId).ToList();

ViewBag.Semesters = semesters;

ViewBag.Students = students;

var reportItems = new List<ReportItem>();

foreach (Student student in students)

{

foreach (Semester semester in semesters)

{

var assessments = DbContext.Assessments.Where(a => a.SemesterId == semester.Id && a.StudentId == student.Id).ToList();

var mark = 0d;

if (assessments.Count > 0)

{

mark = (double)assessments.ToList().Sum(a => a.Mark) / assessments.Count;

}

reportItems.Add(new ReportItem

{

StudentId = student.Id,

SemesterId = semester.Id,

Mark = Math.Round(mark, 2)

});

}

}

ViewBag.GroupName = DbContext.Groups.Find(groupId).Title;

ViewBag.ReportItems = reportItems;

}

else if (facultyId != 0 && groupId != 0 && studentId != 0)

{

//Отчет по студенту

ViewBag.ReportType = ReportType.Student;

var semesters = DbContext.Semesters.Where(s => s.GroupSubjects.Any(g => g.GroupId == groupId)).OrderBy(s => s.StartDate).ToList();

var subjects = DbContext.Subjects.Where(s => s.GroupSubjects.Any(g => g.GroupId == groupId)).ToList();

ViewBag.Semesters = semesters;

ViewBag.Subjects = subjects;

var reportItems = new List<ReportItem>();

foreach (Subject subject in subjects)

{

foreach (Semester semester in semesters)

{

var assessment = DbContext.Assessments.FirstOrDefault(a => a.SemesterId == semester.Id && a.SubjectId == subject.Id && a.StudentId == studentId);

var mark = 0;

if (assessment != null)

{

mark = assessment.Mark;

}

var subjectsInSemesters = DbContext.SemesterSubjects.Where(s => s.GroupId == groupId && s.SubjectId == subject.Id).OrderByDescending(s => s.Semester.StartDate).ToList();

reportItems.Add(new ReportItem

{

SubjectId = subject.Id,

SemesterId = semester.Id,

Mark = mark,

IsLast = subjectsInSemesters.Count > 0 && subjectsInSemesters.First().SemesterId == semester.Id,

NoMark = !DbContext.SemesterSubjects.Any(s => s.GroupId == groupId && s.SubjectId == subject.Id && s.SemesterId == semester.Id)

});

}

}

var student = DbContext.Students.FirstOrDefault(s => s.Id == studentId);

if (student != null)

ViewBag.StudentFio = student.Fio;

ViewBag.ReportItems = reportItems;

}

return View();

}

public ActionResult Knowledge(int facultyId = 0, int groupId = 0, int studentId = 0)

{

ViewBag.FacultyId = new SelectList(DbContext.Faculties, "Id", "Title", facultyId);

ViewBag.GroupId = new SelectList(DbContext.Groups.Where(g => g.FacultyId == facultyId), "Id", "Title", groupId);

ViewBag.StudentId = new SelectList(DbContext.Students.Where(s => s.GroupId == groupId), "Id", "Fio", studentId);

ViewBag.ReportType = ReportType.None;

if (facultyId != 0 && groupId == 0 && studentId == 0)

{

//Отчет по факультету

var fgoses = DbContext.Fgoses.ToList();

var groups = DbContext.Groups.Where(g => g.FacultyId == facultyId).ToList();

ViewBag.ReportType = ReportType.Faculty;

ViewBag.Fgoses = fgoses;

ViewBag.Groups = groups;

var reportItems = new List<ReportItem>();

foreach (Group group in groups)

{

foreach (Fgos fgos in fgoses)

{

var assessments = DbContext.FgosAssessments.Where(a => a.Student.GroupId == group.Id && a.FgosId == fgos.Id).ToList();

var mark = 0d;

if (assessments.Count > 0)

{

mark = assessments.ToList().Sum(a => a.Mark) / group.Students.Count;

}

reportItems.Add(new ReportItem

{

GroupId = group.Id,

SemesterId = fgos.Id,

Mark = Math.Round(mark, 2)

});

}

}

ViewBag.ReportItems = reportItems;

}

else if (facultyId != 0 && groupId != 0 && studentId == 0)

{

//Отчет по группе

ViewBag.ReportType = ReportType.Group;

var fgoses = DbContext.Fgoses.ToList();

var students = DbContext.Students.Where(s => s.GroupId == groupId).ToList();

ViewBag.Fgoses = fgoses;

ViewBag.Students = students;

var reportItems = new List<ReportItem>();

foreach (Student student in students)

{

foreach (Fgos fgos in fgoses)

{

var assessments = DbContext.FgosAssessments.Where(a => a.FgosId == fgos.Id && a.StudentId == student.Id).ToList();

var mark = 0d;

if (assessments.Count > 0)

{

mark = assessments.ToList().Sum(a => a.Mark);

}

reportItems.Add(new ReportItem

{

StudentId = student.Id,

SemesterId = fgos.Id,

Mark = Math.Round(mark, 2)

});

}

}

ViewBag.GroupName = DbContext.Groups.Find(groupId).Title;

ViewBag.ReportItems = reportItems;

}

else if (facultyId != 0 && groupId != 0 && studentId != 0)

{

//Отчет по студенту

ViewBag.ReportType = ReportType.Student;

var fgoses = DbContext.Fgoses.ToList();

var subjects = DbContext.Subjects.Where(s => s.GroupSubjects.Any(g => g.GroupId == groupId)).ToList();

ViewBag.Fgoses = fgoses;

ViewBag.Subjects = subjects;

var reportItems = new List<ReportItem>();

foreach (Subject subject in subjects)

{

foreach (Fgos fgos in fgoses)

{

var assessment = DbContext.FgosAssessments.FirstOrDefault(a => a.FgosId == fgos.Id && a.SubjectId == subject.Id && a.StudentId == studentId);

var mark = 0d;

if (assessment != null)

{

mark = assessment.Mark;

}

reportItems.Add(new ReportItem

{

SubjectId = subject.Id,

SemesterId = fgos.Id,

Mark = Math.Round(mark, 2),

NoMark = assessment == null

});

}

}

var student = DbContext.Students.FirstOrDefault(s => s.Id == studentId);

if (student != null)

ViewBag.StudentFio = student.Fio;

ViewBag.ReportItems = reportItems;

}

return View();

}

public ActionResult Competency(int facultyId = 0, int groupId = 0, int studentId = 0)

{

ViewBag.FacultyId = new SelectList(DbContext.Faculties, "Id", "Title", facultyId);

ViewBag.GroupId = new SelectList(DbContext.Groups.Where(g => g.FacultyId == facultyId), "Id", "Title", groupId);

ViewBag.StudentId = new SelectList(DbContext.Students.Where(s => s.GroupId == groupId), "Id", "Fio", studentId);

ViewBag.ReportType = ReportType.None;

if (facultyId != 0 && groupId == 0 && studentId == 0)

{

//Отчет по факультету

var competensies = DbContext.Competencies.ToList();

var groups = DbContext.Groups.Where(g => g.FacultyId == facultyId).ToList();

ViewBag.ReportType = ReportType.Faculty;

ViewBag.Competencies = competensies;

ViewBag.Groups = groups;

var reportItems = new List<ReportItem>();

foreach (Group group in groups)

{

foreach (Competence competence in competensies)

{

var assessments = DbContext.CompetenceAssessments.Where(a => a.Student.GroupId == group.Id && a.CompetenceId == competence.Id).ToList();

var mark = 0d;

if (assessments.Count > 0)

{

mark = assessments.ToList().Sum(a => a.Mark)/group.Students.Count;

}

reportItems.Add(new ReportItem

{

GroupId = group.Id,

SemesterId = competence.Id,

Mark = Math.Round(mark, 2)

});

}

}

ViewBag.ReportItems = reportItems;

}

else if (facultyId != 0 && groupId != 0 && studentId == 0)

{

//Отчет по группе

ViewBag.ReportType = ReportType.Group;

var competencies = DbContext.Competencies.ToList();

var students = DbContext.Students.Where(s => s.GroupId == groupId).ToList();

ViewBag.Competencies = competencies;

ViewBag.Students = students;

var reportItems = new List<ReportItem>();

foreach (Student student in students)

{

foreach (Competence competence in competencies)

{

var assessments = DbContext.CompetenceAssessments.Where(a => a.CompetenceId == competence.Id && a.StudentId == student.Id).ToList();

var mark = 0d;

if (assessments.Count > 0)

{

mark = assessments.ToList().Sum(a => a.Mark);

}

reportItems.Add(new ReportItem

{

StudentId = student.Id,

SemesterId = competence.Id,

Mark = Math.Round(mark, 2)

});

}

}

ViewBag.GroupName = DbContext.Groups.Find(groupId).Title;

ViewBag.ReportItems = reportItems;

}

else if (facultyId != 0 && groupId != 0 && studentId != 0)

{

//Отчет по студенту

ViewBag.ReportType = ReportType.Student;

var competencies = DbContext.Competencies.ToList();

var subjects = DbContext.Subjects.Where(s => s.GroupSubjects.Any(g => g.GroupId == groupId)).ToList();

ViewBag.Competencies = competencies;

ViewBag.Subjects = subjects;

var reportItems = new List<ReportItem>();

foreach (Subject subject in subjects)

{

foreach (Competence competence in competencies)

{

var assessment = DbContext.CompetenceAssessments.FirstOrDefault(a => a.CompetenceId == competence.Id && a.SubjectId == subject.Id && a.StudentId == studentId);

var mark = 0d;

if (assessment != null)

{

mark = assessment.Mark;

}

reportItems.Add(new ReportItem

{

SubjectId = subject.Id,

SemesterId = competence.Id,

Mark = Math.Round(mark, 2),

NoMark = assessment == null

});

}

}

var student = DbContext.Students.FirstOrDefault(s => s.Id == studentId);

if (student != null)

ViewBag.StudentFio = student.Fio;

ViewBag.ReportItems = reportItems;

}

return View();

ПРИЛОЖЕНИЕ В

Полный набор диаграмм проекта

В.1 Полный набор диаграмм проекта

Рисунок В.2 - Диаграмма вариантов использования

Рисунок В.2 - Диаграмма сущностных классов

Рисунок В.3 - Диаграмма классов управления

Рисунок В.4 - Диаграмма граничных классов

Рисунок В.5 - Диаграмма состояний. Работа с приложением

Рисунок В.6 - Диаграмма последовательности

Рис. В.7. Диаграмма компонентов

Рисунок В.8 - Диаграмма развертывания

ПРИЛОЖЕНИЕ Г

Ответ на специальный вопрос по БЖД

Г1. Защитное заземление

Защитное заземление - это преднамеренное электрическое соединение с землей или ее эквивалентом металлических нетоковедущих частей, которые могут оказаться под напряжением (рисунок 3.10).

Защитное заземление эффективно в сетях напряжением до 1000 В с изолированной нейтралью (полюсом). Принцип действия защитного заземления заключается в том, что человек, касающийся корпуса оборудования, находящегося под напряжением за счет короткого замыкания фазы  на корпус, оказывается включенным параллельно заземлителю с сопротивлением защитного заземления , имеющим значительно меньшее сопротивление, чем тело человека . В результате большая часть тока замыкания на землю пойдет через заземлитель (рисунок Г.1 )

Рисунок Г.1 - Ход тока

При отсутствии заземлителя весь ток  пойдет через тело человека, что может привести к его поражению. Для уменьшения напряжения на заземлителе, сопротивление защитного заземления  нормируется. В электроустановках напряжением до 1000 В оно должно быть не более 4 Ом. Значение  зависит также от мощности источника питания, удельного сопротивления грунта и эксплуатируемого оборудования. Для заземления используют искусственные и естественные заземлители. Естественные заземлители - это находящиеся в соприкосновении с землей электропроводящие металлические конструкции и коммуникации зданий и сооружений, за исключением взрыво- и пожаро-опасных (нефтепроводы и др.) Использование протяженных и разветвленных заземлителей позволяет снизить  и выравнять потенциалы. Искусственные заземлители представляют собой совокупность собственно заземлителей и заземляющих проводников, называемыми заземляющим устройством.

Г2. Область применения защитного заземления

- электроустановки напряжением до 1 кВ в трехфазных трехпроводных сетях переменного тока с изолированной нейтралью (IT);

- электроустановки напряжением до 1 кВ в однофазных двухпроводных сетях переменного тока изолированных от земли;

- электроустановки напряжением до 1 кВ в двухпроводных сетях постоянного тока с изолированной средней точкой обмоток источника тока (система IT);

- электроустановки в сетях напряжением выше 1 кВ переменного и постоянного тока с любым режимом нейтрали или средней точки обмоток источников тока.

Г3. Принцип действия защитного заземления

Защитное действие заземления основано на двух принципах:

Уменьшение до безопасного значения разности потенциалов между заземляемым проводящим предметом и другими проводящими предметами, имеющими естественное заземление.

Отвод тока утечки при контакте заземляемого проводящего предмета с фазным проводом. В правильно спроектированной системе появление тока утечки приводит к немедленному срабатыванию защитных устройств (устройств защитного отключения -- УЗО).

В системах с глухозаземлённой нейтралью -- инициирование срабатывания предохранителя при попадании фазного потенциала на заземлённую поверхность.

Таким образом, заземление наиболее эффективно только в комплексе с использованием устройств защитного отключения. В этом случае при большинстве нарушений изоляции потенциал на заземлённых предметах не превысит опасных величин. Более того, неисправный участок сети будет отключён в течение очень короткого времени (десятые…сотые доли секунды -- время срабатывания УЗО).