public Discipline GetDiscipline(string disciplineName) { var result = new Discipline(); if (disciplineName != null) { var element = _xWorker.GetElements("Строка", disciplineName); if (element.Count > 1) { throw new Exception("2 дисциплины с одинаковыми именами в одном плане. Я не буду так работать!"); } result.Name = disciplineName; result.Code = element[0].Attribute("НовИдДисциплины").Value; result.CreditUnitsCount = _xWorker.GetAttributeInt32Value("КредитовНаДисциплину", element[0]); result.TotalHours = _xWorker.GetAttributeInt32Value("ГОС", element[0]); result.IndependentWork = _xWorker.GetAttributeInt32Value("СР", element[0]); result.CreditUnit = _xWorker.GetAttributeInt32Value("ЧасовВЗЕТ", element[0]); var nodes = element[0].Nodes(); foreach (XElement el in nodes) { if (el.Name == "Сем") { var sem = GetSemester(el); sem.TotalHours = sem.CreditUnitsCount * result.CreditUnit; result.Semesters.Add(sem); } } } return result; }
public void Validate(Discipline discipline) { Thread.Sleep(100); #region table1 var items = new int[AuditoriumHours.Rows.Count]; //проверка часов аудиторных занятий var totalCols = 0; for (var i = 1; i < AuditoriumHours.Columns.Count; i++) { var summCol = 0; for (var j = 1; j < AuditoriumHours.Rows.Count; j++) { try { summCol += int.Parse(AuditoriumHours.Rows[j][i].ToString()); } catch { summCol += 0; } } var auditorySemester = discipline.Semesters[i - 1].Lecture + discipline.Semesters[i - 1].Laboratory; if (summCol != auditorySemester) { throw new Exception(string.Format("Раздел 4. Количество часов аудиторных занятий ({0}) в {1} семестре не совпадает с планом ({2} ч.)", summCol, discipline.Semesters[i - 1].Number, auditorySemester)); } totalCols += summCol + discipline.Semesters[i -1].ValidationHours; } var auditoryTotal = discipline.TotalHours - discipline.IndependentWork; if (totalCols != auditoryTotal) { throw new Exception(string.Format("Раздел 4. Общее количество часов аудиторных занятий ({0}) не совпадает с планом ({1} ч.)", totalCols, auditoryTotal)); } // проверка часов самостоятельной работы totalCols = 0; for (var i = 1; i < IndependentHours.Columns.Count; i++) { var independantSummCol = 0; for (var j = 1; j < IndependentHours.Rows.Count; j++) { independantSummCol += Helper.ConvertObjectToInt(IndependentHours.Rows[j][i]); } var validationSummCol = 0; totalCols += independantSummCol; if (independantSummCol + validationSummCol != discipline.Semesters[i - 1].Independent) { throw new Exception(string.Format("Раздел 4. Количество часов самостоятельной работы ({0}) в {1} семестре не совпадает с планом ({2} ч.)", independantSummCol, discipline.Semesters[i - 1].Number, discipline.IndependentWork)); } } if (totalCols != discipline.IndependentWork) { throw new Exception(string.Format("Раздел 4. Общее количество часов самостоятельной работы ({0}) не совпадает с планом ({1} ч.)", totalCols, discipline.IndependentWork)); } #endregion #region table2 DistributionStudyTimeSumm.Clear(); var summTable = DistributionStudyTimeSumm; for (var i = 0; i < DistributionStudyTime.Rows.Count; i++) { var row = DistributionStudyTime.Rows[i]; var semestr = Helper.ConvertObjectToInt(row[3]); if (semestr == 0) { throw new Exception("Не указан номер семестра. Строка " + (i + 1)); } var chapterIndex = Helper.ConvertObjectToInt(row[1]); if (chapterIndex < 1 || chapterIndex > Chapters.Rows.Count) { throw new Exception("Неверно указан номер раздела. Возможно он пропущен. Строка " + (i + 1)); } } for (var i = 0; i < DistributionStudyTime.Rows.Count; i++) { var auditory = 0; var independent = 0; var semester = 0; DataRow row = DistributionStudyTime.Rows[i]; semester = Helper.ConvertObjectToInt(row["Семестр"]); auditory += Helper.ConvertObjectToInt(row["Лекции (час.)"]) + Helper.ConvertObjectToInt(row["Практические занятия (час.)"]); independent += Helper.ConvertObjectToInt(row["Самостоятельная работа (час.)"]);// + Helper.ConvertObjectToInt(row[8]); summTable.Rows.Add(semester, auditory + independent, auditory); } for (var i = 0; i < discipline.Semesters.Count; i++) { var summSemester = 0; foreach (DataRow row in summTable.Rows) { var semesterNumber = Helper.ConvertObjectToInt(row[0]); if (discipline.Semesters[i].Number == semesterNumber) { summSemester += Helper.ConvertObjectToInt(row[1]); } } if (summSemester != discipline.Semesters[i].TotalHours) { var str = String.Format("Количество часов ({0} час.) в {1} семестре не совпадает с планом ({2} час.).", summSemester, discipline.Semesters[i].Number, discipline.Semesters[i].TotalHours); throw new Exception("Раздел 4.1. Тематический план. " + str); } } #region итоговая сумма часов DistributionStudyTimeCheckSumm.Clear(); var allSummTable = DistributionStudyTimeCheckSumm; for (var j = 0; j < discipline.Semesters.Count; j++) { var lectuture = 0; var practical = 0; var independent = 0; var validation = 0; for (var i = 0; i < DistributionStudyTime.Rows.Count; i++) { DataRow rowSumm = DistributionStudyTimeSumm.Rows[i]; DataRow row = DistributionStudyTime.Rows[i]; if (discipline.Semesters[j].Number == Helper.ConvertObjectToInt(row[3])) { lectuture += Helper.ConvertObjectToInt(row["Лекции (час.)"]); practical += Helper.ConvertObjectToInt(row["Практические занятия (час.)"]); independent += Helper.ConvertObjectToInt(row["Самостоятельная работа (час.)"]); } } validation = (from table in Validation.AsEnumerable() select Helper.ConvertObjectToInt(table.Field<string>("Семестр " + discipline.Semesters[j].Number + " (час.)"))).Sum(); var str = String.Format("Всего за {0} семестр", discipline.Semesters[j].Number); var allAuditory = lectuture + practical; var allSumm = allAuditory + independent + validation; allSummTable.Rows.Add(str, allSumm, allAuditory, lectuture, practical, independent, validation); } { var lectuture = 0; var practical = 0; var independent = 0; var validation = 0; var allAuditory = 0; var allSumm = 0; for (var i = 0; i < allSummTable.Rows.Count; i++) { DataRow row = allSummTable.Rows[i]; allSumm += Helper.ConvertObjectToInt(row["All"]); allAuditory += Helper.ConvertObjectToInt(row["Auditory"]); lectuture += Helper.ConvertObjectToInt(row["Lecrute"]); practical += Helper.ConvertObjectToInt(row["Practical"]); independent += Helper.ConvertObjectToInt(row["Independant"]); validation += Helper.ConvertObjectToInt(row["Validation"]); } allSummTable.Rows.Add("Всего", allSumm, allAuditory, lectuture, practical, independent, validation); } #endregion #region заполнение таблицы ChapterSumm ChaptersSumm.Clear(); for (var i = 0; i < Chapters.Rows.Count; i++) { ChaptersSumm.Rows.Add(); ChaptersSumm.Rows[i]["ChapterIndex"] = i + 1; ChaptersSumm.Rows[i]["ChapterName"] = Chapters.Rows[i]["Наименование"]; } var dstTable = DistributionStudyTime; for (var i = 0; i < ChaptersSumm.Rows.Count; i++) { var lecture = 0; var practical = 0; var independant = 0; var validation = 0; for (var j = 0; j < dstTable.Rows.Count; j++) { var chapterIndex = Helper.ConvertObjectToInt(dstTable.Rows[j]["Номер раздела"]); if (chapterIndex == Helper.ConvertObjectToInt(ChaptersSumm.Rows[i]["ChapterIndex"])) { lecture += Helper.ConvertObjectToInt(dstTable.Rows[j]["Лекции (час.)"]); practical += Helper.ConvertObjectToInt(dstTable.Rows[j]["Практические занятия (час.)"]); independant += Helper.ConvertObjectToInt(dstTable.Rows[j]["Самостоятельная работа (час.)"]); } } ChaptersSumm.Rows[i]["Lecrute"] = lecture; ChaptersSumm.Rows[i]["Practical"] = practical; ChaptersSumm.Rows[i]["Independant"] = independant; ChaptersSumm.Rows[i]["Auditory"] = lecture + practical; ChaptersSumm.Rows[i]["All"] = lecture + practical + independant + validation; } //for (var i = 0; i < discipline.Semesters.Count; i++) //{ // var z = ChaptersSumm.Rows.Count; // ChaptersSumm.Rows.Add(); // ChaptersSumm.Rows[z]["ChapterIndex"] = z; // if (discipline.Semesters[i].Validation == "Экзамен") // { // ChaptersSumm.Rows[z]["ChapterName"] = "Подготовка к экзамену"; // } // else // { // ChaptersSumm.Rows[z]["ChapterName"] = "Подготовка к зачету"; // } // ChaptersSumm.Rows[z]["ChapterName"] // ChaptersSumm.Columns.Add("ChapterIndex"); // ChaptersSumm.Columns.Add("ChapterName"); // ChaptersSumm.Columns.Add("All"); // ChaptersSumm.Columns.Add("Auditory"); // ChaptersSumm.Columns.Add("Lecrute"); // ChaptersSumm.Columns.Add("Practical"); // ChaptersSumm.Columns.Add("Independant"); // ChaptersSumm.Columns.Add("Validation"); //} //надо запихнуть в столбец в ворде из таблицы validation #endregion #endregion }
public AdditionalData() { Сompetence = new Dictionary<string, string>(); Discipline = new Discipline(); }
public void Update(Discipline discipline) { if (discipline == null) { return; } Info = string.Format("Общая трудоемкость дисциплины составляет {0} з.e., {1} час.", discipline.CreditUnitsCount, discipline.TotalHours); #region аудиторные занятия AuditoriumHours.Clear(); AuditoriumHours.Columns.Clear(); AuditoriumHours.Columns.Add("Вид учебной работы"); for (var i = 0; i < discipline.Semesters.Count; i++) { AuditoriumHours.Columns.Add("Семестр " + discipline.Semesters[i].Number + " (час.)"); } //всего var parameters = new string[AuditoriumHours.Columns.Count]; parameters[0] = "Аудиторные занятия (всего)"; for (var i = 0; i < discipline.Semesters.Count; i++) { parameters[i + 1] = (discipline.Semesters[i].Lecture + discipline.Semesters[i].Laboratory).ToString(); } AuditoriumHours.Rows.Add(parameters); //лекции parameters = new string[AuditoriumHours.Columns.Count]; parameters[0] = "Лекции"; for (var i = 0; i < discipline.Semesters.Count; i++) { parameters[i + 1] = (discipline.Semesters[i].Lecture - discipline.Semesters[i].InteractiveLecture).ToString(); } AuditoriumHours.Rows.Add(parameters); //интерактичные лекции parameters = new string[AuditoriumHours.Columns.Count]; parameters[0] = "Интерактивные и активные формы работы на лекциях"; for (var i = 0; i < discipline.Semesters.Count; i++) { parameters[i + 1] = discipline.Semesters[i].InteractiveLecture.ToString(); } AuditoriumHours.Rows.Add(parameters); //практические parameters = new string[AuditoriumHours.Columns.Count]; parameters[0] = "Практические занятия"; for (var i = 0; i < discipline.Semesters.Count; i++) { parameters[i + 1] = (discipline.Semesters[i].Laboratory - discipline.Semesters[i].InteractiveLaboratory).ToString(); } AuditoriumHours.Rows.Add(parameters); //интерактивные практические parameters = new string[AuditoriumHours.Columns.Count]; parameters[0] = "Интерактивные и активные формы работы на практических занятиях"; for (var i = 0; i < discipline.Semesters.Count; i++) { parameters[i + 1] = discipline.Semesters[i].InteractiveLaboratory.ToString(); } AuditoriumHours.Rows.Add(parameters); #endregion #region самостоятельная работа //балансировка таблицы IndependentHours.Clear(); IndependentHours.Columns.Clear(); IndependentHours.Columns.Add("Вид учебной работы"); for (var i = 0; i < discipline.Semesters.Count; i++) { IndependentHours.Columns.Add("Семестр " + discipline.Semesters[i].Number + " (час.)"); } //всего parameters = new string[IndependentHours.Columns.Count]; parameters[0] = "Самостоятельная работа (всего)"; for (var i = 0; i < discipline.Semesters.Count; i++) { parameters[i + 1] = (discipline.Semesters[i].Independent).ToString(); } IndependentHours.Rows.Add(parameters); //курсовая parameters = new string[IndependentHours.Columns.Count]; parameters[0] = "Курсовой проект"; var isNeed = false; for (var i = 0; i < discipline.Semesters.Count; i++) { if (discipline.Semesters[i].CourseWork != 0) { isNeed = true; parameters[i + 1] = discipline.Semesters[i].CourseWork.ToString(); } } if (isNeed) { IndependentHours.Rows.Add(parameters); } #endregion #region аттестация Validation.Clear(); Validation.Columns.Clear(); Validation.Columns.Add("Вид учебной работы"); for (var i = 0; i < discipline.Semesters.Count; i++) { Validation.Columns.Add("Семестр " + discipline.Semesters[i].Number + " (час.)"); } parameters = new string[Validation.Columns.Count]; parameters[0] = "Вид промежуточной аттестации"; for (var i = 0; i < discipline.Semesters.Count; i++) { parameters[i + 1] = discipline.Semesters[i].Validation; } Validation.Rows.Add(parameters); //часы на подготовку к экзамену parameters = new string[IndependentHours.Columns.Count]; parameters[0] = "Подготовка к экзамену"; isNeed = false; for (var i = 0; i < discipline.Semesters.Count; i++) { if (discipline.Semesters[i].ValidationHours != 0) { isNeed = true; parameters[i + 1] = discipline.Semesters[i].ValidationHours.ToString(); } } if (isNeed) { Validation.Rows.Add(parameters); } #endregion }