diff --git a/LibOfTimetableOfClasses/CEnclosures.cs b/LibOfTimetableOfClasses/CEnclosures.cs index a093e898c..71d902bb8 100644 --- a/LibOfTimetableOfClasses/CEnclosures.cs +++ b/LibOfTimetableOfClasses/CEnclosures.cs @@ -8,11 +8,19 @@ namespace LibOfTimetableOfClasses { + /// + /// Таблица со строками, хранящими данные о разных корпусах Университета. + /// public class СEnclosures : DataTable, IController { + /// + /// Конструктор таблицы + /// Формируются поля таблицы типа DataTable и их свойства. + /// Уникальность строки в таблице определяется уникальностью полей Name и University + /// public СEnclosures() : base("Корпус") { - if (Controllers.СEnclosures != null) throw new Exception("Контроллер уже существует"); + if (RefData.СEnclosures != null) throw new Exception("Контроллер уже существует"); DataColumn[] keys = new DataColumn[2]; DataColumn column = new DataColumn(); @@ -30,11 +38,13 @@ public СEnclosures() : base("Корпус") column = new DataColumn(); column.DataType = typeof(string); column.ColumnName = "Address"; + column.Unique = true; this.Columns.Add(column); column = new DataColumn(); column.DataType = typeof(string); column.ColumnName = "Phone"; + column.Unique = true; this.Columns.Add(column); column = new DataColumn(); @@ -45,9 +55,15 @@ public СEnclosures() : base("Корпус") this.PrimaryKey = keys; } - + /// + /// Метод удаления строки соответствующей переданной модели из таблицы CEnclosures. + /// В таблице CGroup ищется строка с полем "Name" и "University" соответсвующим этому же полю модели, + /// переданной в качестве параметра. + /// В случае успеха поиска удаляется найденная строка. + /// + /// Модель, хранящая выбранную строку в таблице + /// Результат удаления переданной строки из CGroup public bool Delete(Model model) - { MEnclosures mEnclosures = (MEnclosures)model; for (int i = 0; i < this.Rows.Count; i++) @@ -71,6 +87,12 @@ private bool isValidKey(MEnclosures mEnclosures) return true; } + /// + /// Метод вставки переданной модели MEnclosures в таблицу CEnclosures + /// в случае уникальности свойства Name и University модели для таблицы CGroup + /// + /// Модель хранящая добавляемую запись таблицы + /// Результат вставки public bool Insert(Model model) { MEnclosures mEnclosures = (MEnclosures)model; @@ -100,6 +122,12 @@ public bool Insert(Model model) } + /// + /// Обновление свойств строки в таблице CEnclosures из переданной модели MEnclosures + /// Поиск изменяемой строки CEnclosures осуществляется по полю "Name" и "University" + /// + /// Модель хранящая обновляемую запись таблицы + /// Результат обновления public bool Update(Model model) { MEnclosures mEnclosures = (MEnclosures)model; diff --git a/LibOfTimetableOfClasses/CGroup.cs b/LibOfTimetableOfClasses/CGroup.cs index 548b67fac..cc670d0e7 100644 --- a/LibOfTimetableOfClasses/CGroup.cs +++ b/LibOfTimetableOfClasses/CGroup.cs @@ -7,13 +7,21 @@ using System.Threading.Tasks; namespace LibOfTimetableOfClasses -{ +{ + /// + /// Таблица со строками, хранящими данные о разных учебных группах в Университете + /// public class CGroup : DataTable, IController { + /// + /// Конструктор таблицы + /// Формируются поля таблицы типа DataTable и их свойства. + /// Уникальность строки в таблице определяется уникальностью поля Group. + /// public CGroup() : base("Группа") { - if (Controllers.CGroup != null) throw new Exception("Контроллер уже существует"); + if (RefData.CGroup != null) throw new Exception("Контроллер уже существует"); DataColumn column = new DataColumn(); column.DataType = typeof(string); @@ -57,7 +65,14 @@ public CGroup() : base("Группа") this.Columns.Add(column); } - + /// + /// Метод удаления строки соответствующей переданной модели из таблицы CGroup. + /// В таблице CGroup ищется строка с полем "Group" соответсвующим этому же полю модели, + /// переданной в качестве параметра. + /// В случае успеха поиска удаляется найденная строка. + /// + /// Модель, выбранной строки в таблице + /// Результат удаления переданной строки из CGroup public bool Delete(Model model) { @@ -75,6 +90,12 @@ public bool Delete(Model model) return false; } + /// + /// Проверка начилия переданной модели в таблице CGroup + /// Наличие определяется наличием строки CGroup с полем "Group" соответсвующим свойству "Group" модели mGroup. + /// + /// Проверяеммая модель группы + /// Результат проверки наличия(true - не найдено, false - найдено) private bool isValidKey(MGroup mGroup) { foreach (DataRow Row in this.Rows) @@ -85,6 +106,13 @@ private bool isValidKey(MGroup mGroup) return true; } + + /// + /// Метод вставки переданной модели MGroup в таблицу CGroup + /// в случае уникальности свойства Group модели для таблицы CGroup + /// + /// Вставляемая в CGroup модель + /// Результат вставки public bool Insert(Model model) { MGroup mGroup = (MGroup)model; @@ -117,6 +145,13 @@ public bool Insert(Model model) } + + /// + /// Обновление свойств строки в таблице CGroup из переданной модели MGroup + /// Поиск изменяемой строки CGroup осуществляется по полю "Group" + /// + /// Модель по которой нужно обновить записи в таблице + /// Успешность выполнения операции public bool Update(Model model) { MGroup mGroup = (MGroup)model; diff --git a/LibOfTimetableOfClasses/CTeacher.cs b/LibOfTimetableOfClasses/CTeacher.cs index f8af4e11c..619780aff 100644 --- a/LibOfTimetableOfClasses/CTeacher.cs +++ b/LibOfTimetableOfClasses/CTeacher.cs @@ -8,11 +8,19 @@ namespace LibOfTimetableOfClasses { + /// + /// Таблица со строками, хранящими данные о преподавателях в Университете + /// public class CTeacher : DataTable, IController { + /// + /// Конструктор таблицы + /// Формируются поля таблицы типа DataTable и их свойства. + /// Уникальность строки в таблице определяется уникальностью поля FullName. + /// public CTeacher() : base("Учитель") { - if (Controllers.CTeacher != null) throw new Exception("Контроллер уже существует"); + if (RefData.CTeacher != null) throw new Exception("Контроллер уже существует"); DataColumn column = new DataColumn(); column.DataType = typeof(string); @@ -51,6 +59,12 @@ public CTeacher() : base("Учитель") this.Columns.Add(column); } + /// + /// Проверка начилия переданной модели в таблице CTeacher + /// Наличие определяется наличием строки CGroup с полем "FullName" соответсвующим данным модели mTeacher. + /// + /// Проверяеммая модель группы + /// Результат проверки наличия(true - не найдено, false - найдено) bool isValidKey(MTeacher mTeacher) { foreach(DataRow row in this.Rows) @@ -62,6 +76,12 @@ bool isValidKey(MTeacher mTeacher) return true; } + /// + /// Метод вставки переданной модели MTeacher в таблицу CTeacher + /// в случае уникальности свойства FullName модели для таблицы CTeacher + /// + /// Вставляемая в CTeacher модель + /// Результат вставки public bool Insert(Model model) { MTeacher mTeacher = (MTeacher)model; @@ -90,6 +110,12 @@ public bool Insert(Model model) return false; } + /// + /// Обновление свойств строки в таблице CTeacher из переданной модели MTeacher + /// Поиск изменяемой строки CTeacher осуществляется по полю "FullName" + /// + /// + /// Успешность выполнения операции public bool Update(Model model) { MTeacher mTeacher = (MTeacher)model; @@ -116,8 +142,15 @@ public bool Update(Model model) } return false; } - + /// + /// Метод удаления строки соответствующей переданной модели из таблицы CTeacher. + /// В таблице CTeacher ищется строка с полями "FullName" и "Departament" соответсвующим этому же полю модели, + /// переданной в качестве параметра. + /// В случае успеха поиска удаляется найденная строка. + /// + /// Модель, выбранной строки в таблице + /// Результат удаления переданной строки из CTeacher public bool Delete(Model model) { MTeacher mTeacher = (MTeacher)model; diff --git a/LibOfTimetableOfClasses/CTrainingProfiles.cs b/LibOfTimetableOfClasses/CTrainingProfiles.cs index 59eab0d4b..9a7de3054 100644 --- a/LibOfTimetableOfClasses/CTrainingProfiles.cs +++ b/LibOfTimetableOfClasses/CTrainingProfiles.cs @@ -39,6 +39,8 @@ public bool Delete(Model model) for (int i = 0; i < Rows.Count; i++) { + if (Rows[i].RowState == DataRowState.Deleted) + continue; if ((string)Rows[i]["Fullname"] == mTrainingProfile.FullName && (string)Rows[i]["Shortname"] == mTrainingProfile.ShortName && (string)Rows[i]["Shiphr"] == mTrainingProfile.Shiphr) @@ -79,6 +81,8 @@ public bool Update(Model model) for (int i = 0; i < Rows.Count; i++) { + if (Rows[i].RowState == DataRowState.Deleted) + continue; if ((string)Rows[i]["FullName"] == mTrainingProfile.FullName) { try diff --git a/LibOfTimetableOfClasses/CUniversity.cs b/LibOfTimetableOfClasses/CUniversity.cs index 55b2a549c..3cd0abc74 100644 --- a/LibOfTimetableOfClasses/CUniversity.cs +++ b/LibOfTimetableOfClasses/CUniversity.cs @@ -10,10 +10,13 @@ namespace LibOfTimetableOfClasses { public class CUniversity : DataTable, IController { + /// + /// Контроллер для объекта ВУЗ + /// public CUniversity() : base("ВУЗ") { - if (Controllers.CUniversity != null) throw new Exception("Контроллер уже существует"); + if (RefData.CUniversity != null) throw new Exception("Контроллер уже существует"); DataColumn[] keys = new DataColumn[1]; DataColumn column = new DataColumn(); @@ -30,6 +33,7 @@ public CUniversity() : base("ВУЗ") column = new DataColumn(); column.DataType = typeof(string); column.ColumnName = "FullName"; + column.Unique = true; this.Columns.Add(column); column = new DataColumn(); @@ -50,17 +54,23 @@ public CUniversity() : base("ВУЗ") column = new DataColumn(); column.DataType = typeof(string); column.ColumnName = "Email"; + column.Unique = true; this.Columns.Add(column); column = new DataColumn(); column.DataType = typeof(string); column.ColumnName = "Phone"; + column.Unique = true; this.Columns.Add(column); this.PrimaryKey = keys; } - + /// + /// Метод удаления строки ВУЗа из таблицы + /// + /// Модель с данными + /// Если удаление прошло успешно, то истина, иначе ложь public bool Delete(Model model) { @@ -85,7 +95,11 @@ private bool isValidKey(MUniversity mUniversity) } return true; } - + /// + /// Метод добавления строки ВУЗа в таблицу + /// + /// Модель с данными + /// Если добавление прошло успешно, то истина, иначе ложь public bool Insert(Model model) { MUniversity mUniversity = (MUniversity)model; @@ -117,7 +131,11 @@ public bool Insert(Model model) return false; } - + /// + /// Метод обновления информации строки ВУЗа в таблице + /// + /// Модель с данными + /// Если изменение прошло успешно, то истина, иначе ложь public bool Update(Model model) { MUniversity mUniversity = (MUniversity)model; diff --git a/LibOfTimetableOfClasses/LibOfTimetableOfClasses.csproj b/LibOfTimetableOfClasses/LibOfTimetableOfClasses.csproj index 677ac4627..31fb59ab2 100644 --- a/LibOfTimetableOfClasses/LibOfTimetableOfClasses.csproj +++ b/LibOfTimetableOfClasses/LibOfTimetableOfClasses.csproj @@ -1,5 +1,6 @@  + Debug @@ -11,6 +12,8 @@ LibOfTimetableOfClasses v4.5 512 + + true @@ -30,6 +33,12 @@ 4 + + ..\packages\MSTest.TestFramework.1.4.0\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.dll + + + ..\packages\MSTest.TestFramework.1.4.0\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll + @@ -42,10 +51,13 @@ - + Component - + + Component + + Component @@ -57,15 +69,12 @@ Component - - Component - Component - + Component @@ -95,5 +104,16 @@ + + + + + + Данный проект ссылается на пакеты NuGet, отсутствующие на этом компьютере. Используйте восстановление пакетов NuGet, чтобы скачать их. Дополнительную информацию см. по адресу: http://go.microsoft.com/fwlink/?LinkID=322105. Отсутствует следующий файл: {0}. + + + + + \ No newline at end of file diff --git a/LibOfTimetableOfClasses/MEnclosures.cs b/LibOfTimetableOfClasses/MEnclosures.cs index 2d80ff6f8..69af95941 100644 --- a/LibOfTimetableOfClasses/MEnclosures.cs +++ b/LibOfTimetableOfClasses/MEnclosures.cs @@ -3,12 +3,13 @@ using System.Linq; using System.Text; using System.Threading.Tasks; +using System.Text.RegularExpressions; namespace LibOfTimetableOfClasses { /// - /// Корпус + /// Класс со свойствами определяющими запись о корпусе в справочнике Корпуса /// public class MEnclosures : Model { @@ -17,7 +18,13 @@ public class MEnclosures : Model string _address; string _phone; string _comment; - + /// + /// Наименование корпуса + /// Часть ключа (другая University) + /// В случае записи свойства проводятся проверки переданнаго значения: + /// Проверка нулевой строки, проверка пустой, проверка длины строки, проверка допустимости введенных символов + /// Строка должна быть: не-null,не пустая, не более 50 символов, содержать только А-Я, а-я, 0-9, A-Z, a-z, '-' + /// public string Name { get @@ -39,7 +46,13 @@ public string Name _name = value; } } - + /// + /// Университет к которому принадлежит корпус + /// Часть ключа (Другая Name) + /// В случае записи свойства проводятся проверки переданнаго значения: + /// Проверка нулевой строки, проверка пустой, проверка длины строки, проверка допустимости введенных символов + /// Строка должна быть: не-null,не пустая, не более 10 символов, содержать только А-Я + /// public string University { get @@ -48,21 +61,25 @@ public string University } set { - if (value == "") throw new Exception("Пустая строка университета"); - if (value == null) throw new Exception("Null строка университета"); - - foreach (char s in value) - { - if ((s < 'А' || s > 'Я')) - { - throw new Exception("Присутствует недопустимый символ в строке университета"); - } - } - if (value.Length > 10) throw new Exception("Слишком длинная строка университета"); + if (value == null || value == "") + throw new Exception("Ошибка создания модели. В свойство FullName получен null-объект"); + if (value.Length < 1 || value.Length > 256) + throw new Exception("Ошибка создания модели. В свойство FullName получена строка недопустимой длины"); + if (!Regex.IsMatch(value, @"[А-Яа-я\- ]")) + throw new Exception("Ошибка создания модели. В свойство FullName получена строка содержащая недопустимые символы"); + if (!isLetterСaseNormal(value)) + throw new Exception("Ошибка создания модели. В свойство FullName получена строка неверного формата"); _university = value; } } + + /// + /// Адрес корпуса + /// В случае записи свойства проводятся проверки переданнаго значения: + /// Проверка нулевой строки, проверка пустой, проверка длины строки, проверка допустимости введенных символов + /// Строка должна быть: не-null,не пустая, не более 256 символов, содержать только А-Я, 0-9, '-', ',', ' ', '.' + /// public string Address { get @@ -84,6 +101,12 @@ public string Address _address = value; } } + /// + /// Номер телефона корпуса + /// В случае записи свойства проводятся проверки переданнаго значения: + /// Проверка нулевой строки, проверка пустой, проверка длины строки, проверка допустимости введенных символов + /// Строка должна быть: не-null,не пустая, не более 11 символов, содержать только 0-9 + /// public string Phone { get @@ -105,6 +128,12 @@ public string Phone _phone = value; } } + /// + /// Примечание + /// В случае записи свойства проводятся проверки переданнаго значения: + /// Проверка нулевой строки, проверка пустой, проверка длины строки, проверка допустимости введенных символов + /// Строка должна быть: не-null,не пустая, не более 11 символов, содержать только А-Я, а-я, A-Z, a-z, 0-9,'-', ',', ' ', '.' + /// public string Comment { get @@ -135,8 +164,13 @@ public string Comment /// - /// Создает экземпляр + /// Конструктор класса MEnclosures. /// + /// Название Корпуса + /// Краткое название универститета, к которому относится корпус + /// Адресс корпуса + /// Телефон корпуса + /// Примечание к записи таблицы public MEnclosures(string name,string university,string address,string phone,string comment): base() { Name= name; @@ -146,10 +180,27 @@ public MEnclosures(string name,string university,string address,string phone,str Comment= comment; } - public MEnclosures(string name, string university) : base() + private bool isLetterСaseNormal(string input) { - Name = name; - University = university; + input = Regex.Replace(input, @"\s+", " "); + input = Regex.Replace(input, @"-+", "-"); + input = Regex.Replace(input, @" - ", "-"); + input = Regex.Replace(input, @"- -", " "); + bool isSpacePressed = true; + foreach (var ch in input) + { + if (isSpacePressed) + { + if (Char.IsLower(ch)) + return false; + isSpacePressed = false; + } + else if (Char.IsUpper(ch)) + return false; + if (ch == ' ' || ch == '-') + isSpacePressed = true; + } + return true; } } } diff --git a/LibOfTimetableOfClasses/MGroup.cs b/LibOfTimetableOfClasses/MGroup.cs index 54cc3e050..752d12e4c 100644 --- a/LibOfTimetableOfClasses/MGroup.cs +++ b/LibOfTimetableOfClasses/MGroup.cs @@ -7,7 +7,7 @@ namespace LibOfTimetableOfClasses { /// - /// Группа + /// Класс со свойствами определяющими университетскую группу /// public class MGroup : Model { @@ -20,6 +20,13 @@ public class MGroup : Model ushort _maxNumberOfClass; string _weekends; + /// + /// R/W свойства Group модели MGroup + /// В случае записи свойства проводятся проверки переданнаго значения: + /// Проверка нулевой строки, проверка длины строки, проверка допустимости введенных символов + /// Строка должна быть: не-null, не более 25 символов, содержать только А-Я,а-я, 1-9, - + /// Наименование группы(Семантически) + /// public string Group { get @@ -38,6 +45,11 @@ public string Group } } + /// + /// R/W свойства Semester модели MGroup. + /// Число должно быть в пределах от 1 до 10 + /// Семестр текущей группы(Семантически) + /// public ushort Semester { get @@ -51,6 +63,11 @@ public ushort Semester } } + + /// + /// R/W свойства Specialty модели MGroup. + /// Специальность текущей группы(Семантически) + /// public string Specialty { get @@ -63,6 +80,11 @@ public string Specialty } } + /// + /// R/W свойства Shift модели MGroup. + /// Число должно быть в пределах от 1 до 2 + /// Смена текущей группы(Семантически) + /// public ushort Shift { get @@ -76,6 +98,11 @@ public ushort Shift } } + /// + /// R/W свойства Students модели MGroup. + /// Число должно быть в пределах от 1 до 50 + /// Количество студентов в текущей группе(Семантически) + /// public ushort Students { get @@ -90,6 +117,11 @@ public ushort Students } + /// + /// R/W свойства MinNumberOfClass модели MGroup. + /// Число должно быть в пределах от 0 до 6 + /// Минимальное количество пар в день(Семантически) + /// public ushort MinNumberOfClass { get @@ -103,6 +135,12 @@ public ushort MinNumberOfClass } } + + /// + /// R/W свойства MaxNumberOfClass модели MGroup. + /// Число должно быть в пределах от 1 до 6 + /// Максимальное количество пар в день(Семантически) + /// public ushort MaxNumberOfClass { get @@ -116,6 +154,12 @@ public ushort MaxNumberOfClass } } + + /// + /// R/W свойства Weekends модели MGroup. + /// Требования: символы A-Я, а-я, " ", ","; заглавные буквы для слов отделяемых по ", " + /// Выходные(Семантически) + /// public string Weekends { get @@ -143,10 +187,16 @@ public string Weekends /// - /// Создает экземпляр + /// Конструктор класса MGroup. /// - /// шифр - /// численность + /// Название группы + /// Текущий семестр + /// Специальность для заданной группы + /// Смена + /// Количество студентов + /// Минимальное количество пар + /// Максимальное количество пар + /// Дни определенные как выходные public MGroup(string group, ushort semester, string specialty, ushort shift, ushort students, ushort minNumberOfClass, ushort maxNumberOfClass, string weekends) : base() { if (maxNumberOfClass < minNumberOfClass) throw new Exception("Пар/день max должен быть больше пар/день min"); @@ -159,11 +209,5 @@ public MGroup(string group, ushort semester, string specialty, ushort shift, ush MaxNumberOfClass = maxNumberOfClass; Weekends = weekends; } - - public MGroup(string group) : base() - { - Group = group; - } - } } diff --git a/LibOfTimetableOfClasses/MTeacher.cs b/LibOfTimetableOfClasses/MTeacher.cs index acd7b675b..5fe55a5c3 100644 --- a/LibOfTimetableOfClasses/MTeacher.cs +++ b/LibOfTimetableOfClasses/MTeacher.cs @@ -8,7 +8,7 @@ namespace LibOfTimetableOfClasses { /// - /// Преподаватель + /// Класс со свойствами определяющими преподавателя /// public class MTeacher : Model { @@ -22,6 +22,12 @@ public class MTeacher : Model string _windows; string _weekends; + /// + /// R/W свойства FirstName модели MTeacher + /// В случае записи свойства проводятся проверки переданнаго значения: + /// Строка должна быть: не-null, не более 25 символов, содержать только А-Я,а-я, не пустой, начинаться с заглавной + /// Имя преподавателя(Семантически) + /// public string FirstName { get @@ -44,6 +50,12 @@ public string FirstName } } + /// + /// R/W свойства SecondName модели MTeacher + /// В случае записи свойства проводятся проверки переданнаго значения: + /// Строка должна быть: не-null, не более 50 символов, содержать только А-Я,а-я, не пустой, начинаться с заглавной + /// Фамилия преподавателя(Семантически) + /// public string SecondName { get @@ -65,6 +77,11 @@ public string SecondName } } + /// + /// R/W свойства Patronymic модели MTeacher + /// Строка должна быть: не более 30 символов, содержать только А-Я,а-я, начинаться с заглавной + /// Отчество преподавателя(Семантически) + /// public string Patronymic { get @@ -92,6 +109,11 @@ public string Patronymic } } + /// + /// R/W свойства Departament модели MTeacher + /// Строка должна быть: не-null, не более 10 символов, содержать только А-Я, не пустой + /// Кафедра преподавателя(Семантически) + /// public string Departament { get @@ -112,6 +134,11 @@ public string Departament } } + /// + /// R/W свойства AcademicDegree модели MTeacher + /// Строка должна быть: не-null, не более 25символов, содержать только А-Я,а-я,-, ,,,0-9,., начинаться с заглавной + /// Ученая степень преподавателя(Семантически) + /// public string AcademicDegree { get @@ -134,6 +161,11 @@ public string AcademicDegree } } + /// + /// R/W свойства AcademicTitle модели MTeacher + /// Строка должна быть: не более 25 символов, содержать только А-Я,а-я,-, ,,,0-9,., начинаться с заглавной + /// Учёное звание преподавателя(Семантически) + /// public string AcademicTitle { get @@ -159,6 +191,11 @@ public string AcademicTitle } } + /// + /// R/W свойства MetodicalDays модели MTeacher + /// Строка должна быть: не-null, не более 70 символов, содержать только А-Я,а-я, ,,, начинаться с заглавной, не пустой, после запятой пробел, названия дней начинаться с заглавной буквы + /// Методические дни преподавателя(Семантически) + /// public string MetodicalDays { get @@ -179,6 +216,7 @@ public string MetodicalDays } } + private void CapitalizationCheck(string value) { if (value[0] < 'А' || value[0] > 'Я') throw new Exception("Первая буква слова должна быть заглавная"); @@ -198,11 +236,16 @@ private void CapitalizationCheck(string value) } + /// + /// R/W свойства Windows модели MTeacher + /// Строка должна быть: не более 70 символов, содержать только А-Я,а-я, ,,, начинаться с заглавной, после запятой пробел, названия дней начинаться с заглавной буквы + /// Окна преподавателя(Семантически) + /// public string Windows { get { - if (_windows != null) return _windows; + if (_windows != null) return _windows; else return ""; } set @@ -219,11 +262,16 @@ public string Windows if ((l < 'А' || l > 'я') && l != ' ' && l != ',') throw new Exception("Недопустимые символы !"); CapitalizationCheck(value); - _windows = null; + _windows = value; } } + /// + /// R/W свойства Weekends модели MTeacher + /// Строка должна быть: не-null, не более 70 символов, содержать только А-Я,а-я, ,,, начинаться с заглавной, не пустой, после запятой пробел, названия дней начинаться с заглавной буквы + /// Выходные преподавателя(Семантически) + /// public string Weekends { get @@ -244,7 +292,18 @@ public string Weekends } } - + /// + /// Конструктор класса MTeacher с отчеством. + /// + /// Имя преподавателя + /// Фамилия преподавателя + /// Отчество преподавателя + /// Ученая степень преподавателя + /// Ученое звание преподавателя + /// Департамент преподавателя + /// Методические дни преподавателя + /// Окна преподавателя + /// Выходные преподавателя public MTeacher(string firstName, string secondName, string patronymic, string academicDegree, string academicTitle, string departament, string metodicalDays, string windows, string weekends) : base() { this.FirstName = firstName; @@ -258,25 +317,5 @@ public MTeacher(string firstName, string secondName, string patronymic, string a Weekends = weekends; } - public MTeacher(string firstName, string secondName, string academicDegree, string academicTitle, string departament, string metodicalDays, string windows, string weekends) : base() - { - this.FirstName = firstName; - this.SecondName = secondName; - this.Patronymic = null; - AcademicDegree = academicDegree; - AcademicTitle = academicTitle; - Departament = departament; - MetodicalDays = metodicalDays; - Windows = windows; - Weekends = weekends; - } - - public MTeacher(string firstName, string secondName, string patronymic, string departament) : base() - { - this.FirstName = firstName; - this.SecondName = secondName; - this.Patronymic = patronymic; - Departament = departament; - } } } diff --git a/LibOfTimetableOfClasses/MTrainingProfiles.cs b/LibOfTimetableOfClasses/MTrainingProfiles.cs index f6e58b068..6ff6fde30 100644 --- a/LibOfTimetableOfClasses/MTrainingProfiles.cs +++ b/LibOfTimetableOfClasses/MTrainingProfiles.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; +using System.Text.RegularExpressions; using System.Threading.Tasks; namespace LibOfTimetableOfClasses @@ -31,6 +32,9 @@ public string FullName } set { + if (value == null || value == "") throw new Exception("Строка не может быть пустой"); + if (!Regex.IsMatch(value, @"[А-Яа-я\ ]")) + throw new Exception("Ошибка создания модели. В свойство Полное имя получена строка содержащая недопустимые символы"); fullname = value; } } @@ -45,6 +49,9 @@ public string ShortName } set { + if (value == null || value == "") throw new Exception("Строка не может быть пустой"); + if (!Regex.IsMatch(value, @"[А-Я]")) + throw new Exception("Ошибка создания модели. В свойство Короткое имя получена строка содержащая недопустимые символы"); shortname = value; } } diff --git a/LibOfTimetableOfClasses/MUniversity.cs b/LibOfTimetableOfClasses/MUniversity.cs index dd607a4f9..5c59423fc 100644 --- a/LibOfTimetableOfClasses/MUniversity.cs +++ b/LibOfTimetableOfClasses/MUniversity.cs @@ -4,6 +4,7 @@ using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; +using System.Windows.Forms; namespace LibOfTimetableOfClasses { @@ -14,17 +15,59 @@ namespace LibOfTimetableOfClasses /// public class MUniversity : Model { + /// + /// ИНН + /// string _inn; + + /// + /// Краткое название ВУЗа + /// string _shortName; + + /// + /// Полное название ВУЗа + /// string _fullName; + + /// + /// Текущий адресс ВУЗа + /// string _actualAddress; + + /// + /// Юридический адресс ВУЗа + /// string _legalAddress; + + /// + /// Имя реактора ВУЗа + /// string _nameRector; + + /// + /// Фамилия ректора ВУЗа + /// string _surnameRector; + + /// + /// Отчество ректора ВУЗа + /// string _middleNameRector; + + /// + /// Электронная почта ВУЗа + /// string _email; + + /// + /// Номер телефона ВУЗа + /// string _phone; + /// + /// Возвращает или задаёт ИНН ВУЗа + /// public string INN { get @@ -42,7 +85,9 @@ public string INN _inn = value; } } - + /// + /// Возвращает или задаёт краткое название ВУЗа + /// public string ShortName { get @@ -60,7 +105,9 @@ public string ShortName _shortName = value; } } - + /// + /// Возвращает или задаёт полное наименование ВУЗа + /// public string FullName { get @@ -80,6 +127,9 @@ public string FullName _fullName = value; } } + /// + /// Возвращает или задаёт текущий адрес + /// public string ActualAddress { get @@ -97,6 +147,9 @@ public string ActualAddress _actualAddress = value; } } + /// + /// Возвращает или задаёт юридический адрес + /// public string LegalAddress { get @@ -114,7 +167,9 @@ public string LegalAddress _legalAddress = value; } } - + /// + /// Возвращает или задаёт имя ректора + /// public string NameRector { get @@ -134,7 +189,9 @@ public string NameRector _nameRector = value; } } - + /// + /// Возвращает или задаёт фамилию ректора + /// public string SurnameRector { get @@ -154,7 +211,9 @@ public string SurnameRector _surnameRector = value; } } - + /// + /// Возвращает или задаёт отчество ректора + /// public string MiddleNameRector { get @@ -180,7 +239,9 @@ public string MiddleNameRector _middleNameRector = value; } } - + /// + /// Возвращает или задаёт адрес электронной почты + /// public string Email { get @@ -198,6 +259,9 @@ public string Email _email = value; } } + /// + /// Возвращает или задаёт номер телефона + /// public string Phone { get @@ -217,7 +281,7 @@ public string Phone } /// - /// Создает экземпляр + /// Создаёт экземлпяр класса ВУЗ со всеми полями /// public MUniversity(string inn, string shortName, string fullName, string actualAddress, string legalAddress, string nameRector, string surnameRector, string middleNameRector, string email, string phone) : base() { @@ -231,6 +295,7 @@ public MUniversity(string inn, string shortName, string fullName, string actualA MiddleNameRector = middleNameRector; Email = email; Phone = phone; + } private bool isLetterСaseNormal(string input) diff --git a/LibOfTimetableOfClasses/Controllers.cs b/LibOfTimetableOfClasses/RefData.cs similarity index 83% rename from LibOfTimetableOfClasses/Controllers.cs rename to LibOfTimetableOfClasses/RefData.cs index 7c0d218c0..fef215e97 100644 --- a/LibOfTimetableOfClasses/Controllers.cs +++ b/LibOfTimetableOfClasses/RefData.cs @@ -4,14 +4,13 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -using System.Data; namespace LibOfTimetableOfClasses { /// /// В этом классе храняться все экземпляры контроллеров. /// - public class Controllers + public class RefData { public static DataSet DataSet = new DataSet(); public static CTeacher CTeacher = new CTeacher(); @@ -25,29 +24,26 @@ public class Controllers public static CUniversity CUniversity = new CUniversity(); public static CInstitute CInstitute = new CInstitute(); public static CAcademicDegree CAcademicDegree = new CAcademicDegree(); - private static Controllers controllers = new Controllers(); - public Controllers() + + public RefData() { DataSet.Tables.Add(CTrainingProfile); - DataSet.Tables.Add(CDirectionOfPreparation); - DataSet.Relations.Add("Direction_TrainingProfile", - CDirectionOfPreparation.Columns["CodeOfDP"], - CTrainingProfile.Columns["Shiphr"]); + DataSet.Tables.Add(CDirectionOfPreparation); DataSet.Tables.Add(CAuditor); - DataSet.Tables.Add(СEnclosures); - DataSet.Relations.Add("Enclosures-Auditor", СEnclosures.Columns["Name"], CAuditor.Columns["Building"]); + DataSet.Tables.Add(СEnclosures); DataSet.Tables.Add(CUniversity); DataSet.Tables.Add(CInstitute); - DataSet.Tables.Add(CTeacher); + DataSet.Tables.Add(CTeacher); DataSet.Tables.Add(CAcademicDegree); DataSet.Tables.Add(CTitle); - DataSet.Tables.Add(CGroup); + DataSet.Tables.Add(CGroup); + DataSet.Relations.Add("Direction_TrainingProfile", CDirectionOfPreparation.Columns["CodeOfDP"], CTrainingProfile.Columns["Shiphr"]); + DataSet.Relations.Add("Enclosures-Auditor", СEnclosures.Columns["Name"], CAuditor.Columns["Building"]); DataSet.Relations.Add("AcademicDegree-Teacher", CAcademicDegree.Columns["Reduction"], CTeacher.Columns["academicDegree"]); DataSet.Relations.Add("CTitle-Teacher", CTitle.Columns["Reduction"], CTeacher.Columns["academicTitle"]); DataSet.Relations.Add("Teacher-Institute", CTeacher.Columns["FullName"], CInstitute.Columns["Director"]); DataSet.Relations.Add("University-Institute", CUniversity.Columns["FullName"], CInstitute.Columns["University"]); - DataSet.Relations.Add("Group-Training profile",CTrainingProfile.Columns["Shortname"], CGroup.Columns["Specialty"]); DataSet.Relations.Add("University-Enclosures", CUniversity.Columns["ShortName"], СEnclosures.Columns["University"]); } diff --git a/LibOfTimetableOfClasses/packages.config b/LibOfTimetableOfClasses/packages.config new file mode 100644 index 000000000..06aa648e7 --- /dev/null +++ b/LibOfTimetableOfClasses/packages.config @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/TimetableOfClasses/AcademicDegree.Designer.cs b/TimetableOfClasses/AcademicDegree.Designer.cs index 9175ad516..e70c76def 100644 --- a/TimetableOfClasses/AcademicDegree.Designer.cs +++ b/TimetableOfClasses/AcademicDegree.Designer.cs @@ -29,11 +29,11 @@ protected override void Dispose(bool disposing) private void InitializeComponent() { this.DG_AcademicDegree = new System.Windows.Forms.DataGridView(); + this.FullName = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Reduction = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.AddButton = new System.Windows.Forms.Button(); this.DeleteButton = new System.Windows.Forms.Button(); this.ChangeButton = new System.Windows.Forms.Button(); - this.FullName = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.Reduction = new System.Windows.Forms.DataGridViewTextBoxColumn(); ((System.ComponentModel.ISupportInitialize)(this.DG_AcademicDegree)).BeginInit(); this.SuspendLayout(); // @@ -45,7 +45,6 @@ private void InitializeComponent() | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.DG_AcademicDegree.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill; - this.DG_AcademicDegree.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; this.DG_AcademicDegree.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; this.DG_AcademicDegree.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { this.FullName, @@ -54,9 +53,25 @@ private void InitializeComponent() this.DG_AcademicDegree.Margin = new System.Windows.Forms.Padding(4); this.DG_AcademicDegree.Name = "DG_AcademicDegree"; this.DG_AcademicDegree.ReadOnly = true; + this.DG_AcademicDegree.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; this.DG_AcademicDegree.Size = new System.Drawing.Size(492, 216); this.DG_AcademicDegree.TabIndex = 0; this.DG_AcademicDegree.RowPrePaint += new System.Windows.Forms.DataGridViewRowPrePaintEventHandler(this.DG_RowPrePaint); + this.DG_AcademicDegree.DoubleClick += new System.EventHandler(this.DG_AcademicDegree_DoubleClick); + // + // FullName + // + this.FullName.DataPropertyName = "FullName"; + this.FullName.HeaderText = "Полная запись ученой степени"; + this.FullName.Name = "FullName"; + this.FullName.ReadOnly = true; + // + // Reduction + // + this.Reduction.DataPropertyName = "Reduction"; + this.Reduction.HeaderText = "Сокращенная запись учёной степени"; + this.Reduction.Name = "Reduction"; + this.Reduction.ReadOnly = true; // // AddButton // @@ -95,20 +110,6 @@ private void InitializeComponent() this.ChangeButton.UseVisualStyleBackColor = true; this.ChangeButton.Click += new System.EventHandler(this.ChangeButton_Click); // - // FullName - // - this.FullName.DataPropertyName = "FullName"; - this.FullName.HeaderText = "Полная запись ученой степени"; - this.FullName.Name = "FullName"; - this.FullName.ReadOnly = true; - // - // Reduction - // - this.Reduction.DataPropertyName = "Reduction"; - this.Reduction.HeaderText = "Сокращенная запись учёной степени"; - this.Reduction.Name = "Reduction"; - this.Reduction.ReadOnly = true; - // // AcademicDegree // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); @@ -123,6 +124,7 @@ private void InitializeComponent() this.Text = "Ученые степени"; ((System.ComponentModel.ISupportInitialize)(this.DG_AcademicDegree)).EndInit(); this.ResumeLayout(false); + } #endregion diff --git a/TimetableOfClasses/AcademicDegree.cs b/TimetableOfClasses/AcademicDegree.cs index 357644945..e62fd8d4a 100644 --- a/TimetableOfClasses/AcademicDegree.cs +++ b/TimetableOfClasses/AcademicDegree.cs @@ -13,11 +13,17 @@ namespace TimetableOfClasses { public partial class AcademicDegree : Form { - public AcademicDegree() + public string ChoseReductionAcademicDegree; + public AcademicDegree(bool forChoice = false) { InitializeComponent(); DG_AcademicDegree.AutoGenerateColumns = false; - DG_AcademicDegree.DataSource = Controllers.CAcademicDegree; + DG_AcademicDegree.DataSource = RefData.CAcademicDegree; + + if (forChoice) + { + this.Name = "Выбор степени"; + } } private void ChangeButton_Click(object sender, EventArgs e) @@ -66,7 +72,7 @@ private void DeleteButton_Click(object sender, EventArgs e) { DataRow Row = ((DataRowView)row.DataBoundItem).Row; mAcademicDegree = new MAcademicDegree((string)Row["FullName"]); - Controllers.CAcademicDegree.Delete(mAcademicDegree); + RefData.CAcademicDegree.Delete(mAcademicDegree); } DG_AcademicDegree.Rows.RemoveAt(DG_AcademicDegree.SelectedCells[0].RowIndex); } @@ -160,6 +166,14 @@ private void DG_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e) this.DG_AcademicDegree.Rows[index].HeaderCell.Value = indexStr; } - + private void DG_AcademicDegree_DoubleClick(object sender, EventArgs e) + { + if (DG_AcademicDegree.SelectedRows.Count == 1 && this.Name == "Выбор степени") + { + DataRow Row = ((DataRowView)DG_AcademicDegree.SelectedRows[0].DataBoundItem).Row; + ChoseReductionAcademicDegree = (string)Row["Reduction"]; + Close(); + } + } } } diff --git a/TimetableOfClasses/AcademicTitle.Designer.cs b/TimetableOfClasses/AcademicTitle.Designer.cs index 53ac7c649..f3ad984bd 100644 --- a/TimetableOfClasses/AcademicTitle.Designer.cs +++ b/TimetableOfClasses/AcademicTitle.Designer.cs @@ -56,6 +56,7 @@ private void InitializeComponent() this.DG_AcademicTitle.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; this.DG_AcademicTitle.Size = new System.Drawing.Size(562, 215); this.DG_AcademicTitle.TabIndex = 0; + this.DG_AcademicTitle.DoubleClick += new System.EventHandler(this.DG_AcademicTitle_DoubleClick); // // FullName // diff --git a/TimetableOfClasses/AcademicTitle.cs b/TimetableOfClasses/AcademicTitle.cs index 37b20ba9a..9160ea7c6 100644 --- a/TimetableOfClasses/AcademicTitle.cs +++ b/TimetableOfClasses/AcademicTitle.cs @@ -13,12 +13,17 @@ namespace TimetableOfClasses { public partial class AcademicTitle : Form { - public AcademicTitle() + public string ChoseReductionAcademicTitle; + public AcademicTitle(bool forChoice = false) { InitializeComponent(); DG_AcademicTitle.AutoGenerateColumns = false; - DG_AcademicTitle.DataSource = Controllers.CTitle; + DG_AcademicTitle.DataSource = RefData.CTitle; + if (forChoice) + { + this.Name = "Выбор звания"; + } } private void DG_AcademicTitle_SelectionChanged(object sender, EventArgs e) @@ -144,6 +149,16 @@ private void DG_AcademicTitle_RowPrePaint(object sender, DataGridViewRowPrePaint if (header == null || !header.Equals(indexStr)) this.DG_AcademicTitle.Rows[index].HeaderCell.Value = indexStr; } + + private void DG_AcademicTitle_DoubleClick(object sender, EventArgs e) + { + if (DG_AcademicTitle.SelectedRows.Count == 1 && this.Name == "Выбор звания") + { + DataRow Row = ((DataRowView)DG_AcademicTitle.SelectedRows[0].DataBoundItem).Row; + ChoseReductionAcademicTitle = (string)Row["Reduction"]; + Close(); + } + } } } diff --git a/TimetableOfClasses/AddAcademicDegree.cs b/TimetableOfClasses/AddAcademicDegree.cs index c5959ce67..15d5b3182 100644 --- a/TimetableOfClasses/AddAcademicDegree.cs +++ b/TimetableOfClasses/AddAcademicDegree.cs @@ -42,7 +42,7 @@ private void Button1_Click(object sender, EventArgs e) // Создать и о try { MAcademicDegree AcademicDegree = new MAcademicDegree(FullName.Text, Reduction.Text); - Controllers.CAcademicDegree.Insert(AcademicDegree); + RefData.CAcademicDegree.Insert(AcademicDegree); FullName.Text = ""; Reduction.Text = ""; } @@ -68,7 +68,7 @@ private void Button2_Click(object sender, EventArgs e) //Создать и за try { MAcademicDegree AcademicDegree = new MAcademicDegree(FullName.Text, Reduction.Text); - Controllers.CAcademicDegree.Update(AcademicDegree); + RefData.CAcademicDegree.Update(AcademicDegree); FullName.Text = ""; Reduction.Text = ""; Close(); @@ -92,7 +92,7 @@ private void Button2_Click(object sender, EventArgs e) //Создать и за try { MAcademicDegree AcademicDegree = new MAcademicDegree(FullName.Text, Reduction.Text); - Controllers.CAcademicDegree.Insert(AcademicDegree); + RefData.CAcademicDegree.Insert(AcademicDegree); FullName.Text = ""; Reduction.Text = ""; Close(); diff --git a/TimetableOfClasses/AddAcademicTitle.cs b/TimetableOfClasses/AddAcademicTitle.cs index deeb8ec37..b32b4abcc 100644 --- a/TimetableOfClasses/AddAcademicTitle.cs +++ b/TimetableOfClasses/AddAcademicTitle.cs @@ -45,7 +45,7 @@ private void btCreateAndClose_Click(object sender, EventArgs e) try { MTitle Title = new MTitle(FullName.Text, Reduction.Text); - Controllers.CTitle.Update(Title); + RefData.CTitle.Update(Title); FullName.Text = ""; Reduction.Text = ""; Close(); @@ -75,7 +75,7 @@ private void btCreateAndClose_Click(object sender, EventArgs e) try { MTitle Title = new MTitle(FullName.Text, Reduction.Text); - Controllers.CTitle.Insert(Title); + RefData.CTitle.Insert(Title); FullName.Text = ""; Reduction.Text = ""; Close(); @@ -106,7 +106,7 @@ private void btCreateAndClean_Click(object sender, EventArgs e) try { MTitle Title = new MTitle(FullName.Text, Reduction.Text); - Controllers.CTitle.Insert(Title); + RefData.CTitle.Insert(Title); FullName.Text = ""; Reduction.Text = ""; } diff --git a/TimetableOfClasses/AddAuditor.cs b/TimetableOfClasses/AddAuditor.cs index 8c2c6203c..937d033a3 100644 --- a/TimetableOfClasses/AddAuditor.cs +++ b/TimetableOfClasses/AddAuditor.cs @@ -13,17 +13,14 @@ namespace TimetableOfClasses { public partial class AddAuditor : Form { - - MAuditor mAuditor; - private СEnclosures СEnclosures = Controllers.СEnclosures; + bool itsupdate = false; public AddAuditor() { InitializeComponent(); itsupdate = false; } - byte a; - bool itsupdate = false; + public AddAuditor(MAuditor mAuditor) { InitializeComponent(); @@ -53,11 +50,13 @@ private void bt_Cr_n_Cl_Click(object sender, EventArgs e)// создать и о MAuditor Auditor = new MAuditor(tbAuditor.Text, tbKaf.Text, (ushort)nuPlaces.Value, tbCorpus.Text); try { - if (!Controllers.CAuditor.Insert(Auditor)) + + if (!RefData.CAuditor.Insert(Auditor)) { MessageBox.Show("Невозможно добавить аудиторию"); return; } + tbAuditor.Text = ""; tbKaf.Text = ""; tbCorpus.Text = ""; @@ -80,13 +79,14 @@ private void bt_Cr_n_Close_Click(object sender, EventArgs e)// создать и try { if (!itsupdate) - { if (!Controllers.CAuditor.Insert(Auditor)) + { + if (!RefData.CAuditor.Insert(Auditor)) { MessageBox.Show("Невозможно добавить аудиторию"); return; } } - else Controllers.CAuditor.Update(Auditor); + else RefData.CAuditor.Update(Auditor); Close(); } catch (Exception ex) diff --git a/TimetableOfClasses/AddDirectionOfPreparation.cs b/TimetableOfClasses/AddDirectionOfPreparation.cs index 5b12855e4..0dcc64017 100644 --- a/TimetableOfClasses/AddDirectionOfPreparation.cs +++ b/TimetableOfClasses/AddDirectionOfPreparation.cs @@ -53,7 +53,7 @@ private void bt_Cr_n_Cl_Click(object sender, EventArgs e)// создать и о MDirectionOfPreparation mDirection = new MDirectionOfPreparation(tbCod.Text, tbName.Text, (ushort)nuPeriod.Value); try { - if (!Controllers.CDirectionOfPreparation.Insert(mDirection)) + if (RefData.CDirectionOfPreparation.Insert(mDirection)) { MessageBox.Show("Невозможно добавить направление подготовки"); return; @@ -80,13 +80,13 @@ private void bt_Cr_n_Close_Click(object sender, EventArgs e)// создать и { if (!itsupdate) { - if (!Controllers.CDirectionOfPreparation.Insert(mDirection)) + if (!RefData.CDirectionOfPreparation.Insert(mDirection)) { MessageBox.Show("Невозможно добавить направление подготовки"); return; } } - else Controllers.CDirectionOfPreparation.Update(mDirection); + else RefData.CDirectionOfPreparation.Update(mDirection); Close(); } catch (Exception ex) diff --git a/TimetableOfClasses/AddDiscipline.cs b/TimetableOfClasses/AddDiscipline.cs index 90476e778..30ec493c0 100644 --- a/TimetableOfClasses/AddDiscipline.cs +++ b/TimetableOfClasses/AddDiscipline.cs @@ -13,13 +13,15 @@ namespace TimetableOfClasses { public partial class AddDiscipline : Form - { + { + bool itsupdate = false; + public AddDiscipline() { InitializeComponent(); bool itsupdate = false; } - bool itsupdate = false; + public AddDiscipline(MDiscipline mDiscipline) { InitializeComponent(); @@ -42,11 +44,13 @@ private void btCreateAndClean_Click(object sender, EventArgs e) MDiscipline mDiscipline = new MDiscipline(tbFullName.Text, tbShortName.Text, tbCycleOfDis.Text); try { - if (!Controllers.CDiscipline.Insert(mDiscipline)) + + if (!RefData.CDiscipline.Insert(mDiscipline)) { MessageBox.Show("Невозможно добавить дисциплину"); return; } + tbFullName.Text = ""; tbShortName.Text = ""; tbCycleOfDis.Text = ""; @@ -69,13 +73,13 @@ private void btCreateAndClose_Click(object sender, EventArgs e) { if (!itsupdate) { - if (!Controllers.CDiscipline.Insert(mDiscipline)) + if (!RefData.CDiscipline.Insert(mDiscipline)) { MessageBox.Show("Невозможно добавить дисциплину"); return; } } - else Controllers.CDiscipline.Update(mDiscipline); + else RefData.CDiscipline.Update(mDiscipline); Close(); } catch (Exception ex) diff --git a/TimetableOfClasses/AddEnclosures.cs b/TimetableOfClasses/AddEnclosures.cs index 02f24e91d..72c46569a 100644 --- a/TimetableOfClasses/AddEnclosures.cs +++ b/TimetableOfClasses/AddEnclosures.cs @@ -23,14 +23,15 @@ public AddEnclosures() public AddEnclosures(MEnclosures mEnclosures) { InitializeComponent(); - Enclosures = mEnclosures; - name.Text = Enclosures.Name; - name.Enabled = false; - university.Text = Enclosures.University; - university.Enabled = false; - address.Text = Enclosures.Address; - phoneNumber.Text = Enclosures.Phone; - note.Text = Enclosures.Comment; + Enclosures = mEnclosures; + name.Text = Enclosures.Name; + name.Enabled = false; + university.Text = Enclosures.University; + university.Enabled = false; + address.Text = Enclosures.Address; + phoneNumber.Text = Enclosures.Phone; + note.Text = Enclosures.Comment; + btAddUniversity.Enabled = false; } private void name_KeyPress(object sender, KeyPressEventArgs e)//Проверка входных значений Названия корпуса @@ -106,7 +107,7 @@ private void save_Click(object sender, EventArgs e)//Сохранить изме { MEnclosures mEnclosures = new MEnclosures(name.Text, university.Text, address.Text, phoneNumber.Text, note.Text); - if (Controllers.СEnclosures.Insert(mEnclosures)) + if (RefData.СEnclosures.Insert(mEnclosures)) { this.Close(); } @@ -121,11 +122,11 @@ private void save_Click(object sender, EventArgs e)//Сохранить изме Enclosures.Phone = phoneNumber.Text; Enclosures.Comment = note.Text; - if (Controllers.СEnclosures.Update(Enclosures)) + if (RefData.СEnclosures.Update(Enclosures)) { this.Close(); } - else MessageBox.Show("Упс, невозможно обновить информацию об этом корпусе!"); + else MessageBox.Show("Не удалось добавить запись: название корпуса, адрес и телефон должны быть уникальными!"); } } @@ -165,7 +166,7 @@ private void btAddUniversity_Click(object sender, EventArgs e) private void AddEnclosures_Shown(object sender, EventArgs e) { - if (Controllers.CUniversity.Rows.Count == 0) + if (RefData.CUniversity.Rows.Count == 0) { var DialogResult = MessageBox.Show("В созависимом справочнике ВУЗы отсутствуют записи. " + "Отрыть форму для редкатирования справочника ВУЗы?", @@ -185,7 +186,7 @@ private void CreateFormForEditAndChoiceUnviversity() private void University_FormClosed(object sender, FormClosedEventArgs e) { - string choseUniversity = (sender as University).ShortName; + string choseUniversity = (sender as University).FullName; if (choseUniversity != null) this.university.Text = choseUniversity; } diff --git a/TimetableOfClasses/AddGroup.cs b/TimetableOfClasses/AddGroup.cs index ed68bdfdb..7b8752907 100644 --- a/TimetableOfClasses/AddGroup.cs +++ b/TimetableOfClasses/AddGroup.cs @@ -21,8 +21,7 @@ public AddGroup() { InitializeComponent(); tbNameGroup.Text = "00-ААаа-0а"; - tbVixodnie.Text = "Воскресенье"; - + tbVixodnie.Text = "Воскресенье"; } private bool isEmpty(string[] strArgs) @@ -92,8 +91,8 @@ private bool Add() if (cbSpec.Text.Length < 1) { errors = "Выберите направление подготовки"; - } - + } + ushort semest, smena, countStudents, minPar, maxPar; if (ushort.TryParse(nudSemest.Value.ToString(), out semest) && semest <= 10 && semest > 0) @@ -102,31 +101,32 @@ private bool Add() if (ushort.TryParse(nudMinPar.Value.ToString(), out minPar)) if (ushort.TryParse(nudMaxPar.Value.ToString(), out maxPar)) if (nudMaxPar.Value >= nudMinPar.Value) - { - MGroup Group = new MGroup(tbNameGroup.Text, semest, cbSpec.Text, smena, countStudents, minPar, maxPar, tbVixodnie.Text); - if (Controllers.CGroup.Insert(Group)) - return true; - else errors = "Невозможно добавить эту группу"; - } - else - { - group.Group = tbNameGroup.Text; - group.Semester = semest; - group.Specialty = cbSpec.SelectedText; - group.Shift = smena; - group.Students = countStudents; - group.MinNumberOfClass = minPar; - group.MaxNumberOfClass = maxPar; - group.Weekends = tbVixodnie.Text; - if (Controllers.CGroup.Update(group)) - return true; - else errors = "Невозможно так изменить эту группу"; - } - else errors = "Введите корректное максимальное количество пар!"; - else errors = "Введите корректное минимальное количество пар!"; - else errors = "Введите корректное количество студентов!"; - else errors = "Введите корректную смену! (1-2)"; - else errors = "Введите корректный семестр! (1-10)"; + if (group == null) + { + MGroup Group = new MGroup(tbNameGroup.Text, semest, cbSpec.Text, smena, countStudents, minPar, maxPar, tbVixodnie.Text); + if (RefData.CGroup.Insert(Group)) + return true; + else errors = "Невозможно добавить эту группу"; + } + else + { + group.Group = tbNameGroup.Text; + group.Semester = semest; + group.Specialty = cbSpec.Text; + group.Shift = smena; + group.Students = countStudents; + group.MinNumberOfClass = minPar; + group.MaxNumberOfClass = maxPar; + group.Weekends = tbVixodnie.Text; + if (RefData.CGroup.Update(group)) + return true; + else errors = "Невозможно так изменить эту группу"; + } + else errors = "Введите корректное максимальное количество пар!"; + else errors = "Введите корректное минимальное количество пар!"; + else errors = "Введите корректное количество студентов!"; + else errors = "Введите корректную смену! (1-2)"; + else errors = "Введите корректный семестр! (1-10)"; if (errors != "") MessageBox.Show(errors, "Попробуйте еще раз"); return false; } @@ -245,7 +245,7 @@ private void SelectNP_Click(object sender, EventArgs e) private void AddGroup_Shown(object sender, EventArgs e) { - if (Controllers.CTrainingProfile.Rows.Count == 0) + if (RefData.CTrainingProfile.Rows.Count == 0) { var resultNotification = MessageBox.Show("В созависимом справочнике Профили подготовки отсутствуют записи. " + "Отрыть форму для редкатирования справочника Профили подготовки?", @@ -266,7 +266,7 @@ private void CreateFormForEditAndChoiceUnviversity() private void SelectNP_FormClosed(object sender, FormClosedEventArgs e) { string shortNameSpeciality = (sender as TrainingProfiles).ChoseShortNameTrainingProfile; - if(shortNameSpeciality!=null) + if (shortNameSpeciality != null) cbSpec.Text = shortNameSpeciality; } } diff --git a/TimetableOfClasses/AddInstitute.cs b/TimetableOfClasses/AddInstitute.cs index 07f80019d..c7da2378d 100644 --- a/TimetableOfClasses/AddInstitute.cs +++ b/TimetableOfClasses/AddInstitute.cs @@ -15,8 +15,8 @@ namespace TimetableOfClasses { public partial class AddInstitute : Form { - private CUniversity University = Controllers.CUniversity; - private CTeacher Teacher = Controllers.CTeacher; + private CUniversity University = RefData.CUniversity; + private CTeacher Teacher = RefData.CTeacher; public AddInstitute() { InitializeComponent(); @@ -66,7 +66,7 @@ private void btCreateAndClose_Click(object sender, EventArgs e) try { MInstitute Institute = new MInstitute(FullName.Text, ShortName.Text, Director.Text, VUS.Text); - Controllers.CInstitute.Update(Institute); + RefData.CInstitute.Update(Institute); FullName.Text = ""; ShortName.Text = ""; Director.Text = ""; @@ -92,7 +92,7 @@ private void btCreateAndClose_Click(object sender, EventArgs e) try { MInstitute Institute = new MInstitute(FullName.Text, ShortName.Text, Director.Text, VUS.Text); - Controllers.CInstitute.Insert(Institute); + RefData.CInstitute.Insert(Institute); FullName.Text = ""; ShortName.Text = ""; Director.Text = ""; @@ -112,15 +112,12 @@ private void btCreateAndClose_Click(object sender, EventArgs e) } - private void btCreateAndClean_Click(object sender, EventArgs e) { - - try { MInstitute Institute = new MInstitute(FullName.Text, ShortName.Text, Director.Text, VUS.Text); - Controllers.CInstitute.Insert(Institute); + RefData.CInstitute.Insert(Institute); FullName.Text = ""; ShortName.Text = ""; Director.Text = ""; diff --git a/TimetableOfClasses/AddProfile.Designer.cs b/TimetableOfClasses/AddProfile.Designer.cs index c75585ba1..8a39eaf4b 100644 --- a/TimetableOfClasses/AddProfile.Designer.cs +++ b/TimetableOfClasses/AddProfile.Designer.cs @@ -64,11 +64,14 @@ private void InitializeComponent() // this.tbShortName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); + this.tbShortName.CharacterCasing = System.Windows.Forms.CharacterCasing.Upper; this.tbShortName.Location = new System.Drawing.Point(13, 85); this.tbShortName.MaxLength = 40; this.tbShortName.Name = "tbShortName"; this.tbShortName.Size = new System.Drawing.Size(241, 20); this.tbShortName.TabIndex = 3; + this.tbShortName.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.tbShortName_KeyPress); + this.tbShortName.Leave += new System.EventHandler(this.tbShortName_Leave); // // bt_Cr_n_Close // @@ -113,6 +116,8 @@ private void InitializeComponent() this.tbFullName.Name = "tbFullName"; this.tbFullName.Size = new System.Drawing.Size(241, 20); this.tbFullName.TabIndex = 16; + this.tbFullName.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.tbFullName_KeyPress); + this.tbFullName.Leave += new System.EventHandler(this.tbFullName_Leave); // // label3 // diff --git a/TimetableOfClasses/AddProfile.cs b/TimetableOfClasses/AddProfile.cs index c8e087a8f..5a9f9c763 100644 --- a/TimetableOfClasses/AddProfile.cs +++ b/TimetableOfClasses/AddProfile.cs @@ -5,6 +5,7 @@ using System.Drawing; using System.Linq; using System.Text; +using System.Text.RegularExpressions; using System.Threading.Tasks; using System.Windows.Forms; using LibOfTimetableOfClasses; @@ -49,14 +50,16 @@ private void bt_Cr_n_Cl_Click(object sender, EventArgs e)// создать и о MessageBox.Show("Заполните все поля корректно"); else { + MTrainingProfile Profile = new MTrainingProfile(tbFullName.Text, tbShortName.Text, tbCodeSpec.Text); try { - if (!Controllers.CTrainingProfile.Insert(Profile)) + if (!RefData.CTrainingProfile.Insert(Profile)) { MessageBox.Show("Невозможно добавить профиль подготовки"); return; } + tbFullName.Text = ""; tbShortName.Text = ""; tbCodeSpec.Text = ""; @@ -84,13 +87,13 @@ private void bt_Cr_n_Close_Click(object sender, EventArgs e)// создать и { if (!itsupdate) { - if (!Controllers.CTrainingProfile.Insert(Profile)) + if (!RefData.CTrainingProfile.Insert(Profile)) { MessageBox.Show("Невозможно добавить профиль подготовки"); return; } } - else Controllers.CTrainingProfile.Update(Profile); + else RefData.CTrainingProfile.Update(Profile); Close(); } catch (Exception ex) @@ -100,6 +103,7 @@ private void bt_Cr_n_Close_Click(object sender, EventArgs e)// создать и } } + private void btCodeSpec_Click(object sender, EventArgs e) { DirectionOfPreparation selectCode = new DirectionOfPreparation(true); @@ -115,5 +119,41 @@ private void SelectCode_FormClosing(object sender, FormClosingEventArgs e) DirectionOfPreparation selectCode = (DirectionOfPreparation)sender; tbCodeSpec.Text = selectCode.selectDirectionOfPreparation; } + + private void tbFullName_Leave(object sender, EventArgs e) + { + var R = sender as TextBox; + R.Text = Regex.Replace(R.Text, @"[^А-Яа-я ]", ""); + if (R.Text.Length != 0) + R.Text = R.Text.First().ToString().ToUpper() + R.Text.Substring(1); + + } + + private void tbShortName_Leave(object sender, EventArgs e) + { + var R = sender as TextBox; + R.Text = R.Text.ToUpper(); + R.Text = Regex.Replace(R.Text, @"[^А-Я]", ""); + } + + private void tbFullName_KeyPress(object sender, KeyPressEventArgs e) + { + Regex regex = new Regex(@"[а-яА-Я ]"); + if (!regex.IsMatch(e.KeyChar.ToString()) && e.KeyChar != (char)Keys.Back) + { + e.Handled = true; + return; + } + } + + private void tbShortName_KeyPress(object sender, KeyPressEventArgs e) + { + Regex regex = new Regex(@"[А-Яа-я]"); + if (!regex.IsMatch(e.KeyChar.ToString()) && e.KeyChar != (char)Keys.Back) + { + e.Handled = true; + return; + } + } } } diff --git a/TimetableOfClasses/AddTeacher.Designer.cs b/TimetableOfClasses/AddTeacher.Designer.cs index f9ee92990..e5b74deb4 100644 --- a/TimetableOfClasses/AddTeacher.Designer.cs +++ b/TimetableOfClasses/AddTeacher.Designer.cs @@ -46,9 +46,11 @@ private void InitializeComponent() this.weekends = new System.Windows.Forms.TextBox(); this.label8 = new System.Windows.Forms.Label(); this.checkPatronymic = new System.Windows.Forms.CheckBox(); - this.academicDegree = new System.Windows.Forms.ComboBox(); this.label9 = new System.Windows.Forms.Label(); - this.academicTitle = new System.Windows.Forms.ComboBox(); + this.SelectAD = new System.Windows.Forms.Button(); + this.academicDegree = new System.Windows.Forms.TextBox(); + this.SelectAT = new System.Windows.Forms.Button(); + this.academicTitle = new System.Windows.Forms.TextBox(); this.SuspendLayout(); // // createAndClose @@ -276,16 +278,6 @@ private void InitializeComponent() this.checkPatronymic.UseVisualStyleBackColor = true; this.checkPatronymic.CheckedChanged += new System.EventHandler(this.checkPatronymic_CheckedChanged); // - // academicDegree - // - this.academicDegree.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.academicDegree.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); - this.academicDegree.FormattingEnabled = true; - this.academicDegree.Location = new System.Drawing.Point(12, 192); - this.academicDegree.Name = "academicDegree"; - this.academicDegree.Size = new System.Drawing.Size(266, 24); - this.academicDegree.TabIndex = 29; - // // label9 // this.label9.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) @@ -298,15 +290,43 @@ private void InitializeComponent() this.label9.TabIndex = 30; this.label9.Text = "Учёное звание"; // + // SelectAD + // + this.SelectAD.Location = new System.Drawing.Point(218, 191); + this.SelectAD.Name = "SelectAD"; + this.SelectAD.Size = new System.Drawing.Size(60, 20); + this.SelectAD.TabIndex = 44; + this.SelectAD.Text = "Выбрать"; + this.SelectAD.UseVisualStyleBackColor = true; + this.SelectAD.Click += new System.EventHandler(this.SelectAD_Click); + // + // academicDegree + // + this.academicDegree.ImeMode = System.Windows.Forms.ImeMode.Off; + this.academicDegree.Location = new System.Drawing.Point(12, 191); + this.academicDegree.Name = "academicDegree"; + this.academicDegree.ReadOnly = true; + this.academicDegree.Size = new System.Drawing.Size(200, 20); + this.academicDegree.TabIndex = 43; + // + // SelectAT + // + this.SelectAT.Location = new System.Drawing.Point(218, 249); + this.SelectAT.Name = "SelectAT"; + this.SelectAT.Size = new System.Drawing.Size(60, 20); + this.SelectAT.TabIndex = 46; + this.SelectAT.Text = "Выбрать"; + this.SelectAT.UseVisualStyleBackColor = true; + this.SelectAT.Click += new System.EventHandler(this.SelectAT_Click); + // // academicTitle // - this.academicTitle.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.academicTitle.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); - this.academicTitle.FormattingEnabled = true; - this.academicTitle.Location = new System.Drawing.Point(12, 250); + this.academicTitle.ImeMode = System.Windows.Forms.ImeMode.Off; + this.academicTitle.Location = new System.Drawing.Point(12, 249); this.academicTitle.Name = "academicTitle"; - this.academicTitle.Size = new System.Drawing.Size(266, 24); - this.academicTitle.TabIndex = 31; + this.academicTitle.ReadOnly = true; + this.academicTitle.Size = new System.Drawing.Size(200, 20); + this.academicTitle.TabIndex = 45; // // AddTeacher // @@ -314,9 +334,11 @@ private void InitializeComponent() this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScroll = true; this.ClientSize = new System.Drawing.Size(290, 568); + this.Controls.Add(this.SelectAT); this.Controls.Add(this.academicTitle); - this.Controls.Add(this.label9); + this.Controls.Add(this.SelectAD); this.Controls.Add(this.academicDegree); + this.Controls.Add(this.label9); this.Controls.Add(this.checkPatronymic); this.Controls.Add(this.weekends); this.Controls.Add(this.label8); @@ -340,6 +362,7 @@ private void InitializeComponent() this.Name = "AddTeacher"; this.Text = "Добавить преподавателя"; this.Load += new System.EventHandler(this.AddTeacher_Load); + this.Shown += new System.EventHandler(this.AddTeacher_Shown); this.ResumeLayout(false); this.PerformLayout(); @@ -365,8 +388,10 @@ private void InitializeComponent() private System.Windows.Forms.TextBox weekends; private System.Windows.Forms.Label label8; private System.Windows.Forms.CheckBox checkPatronymic; - private System.Windows.Forms.ComboBox academicDegree; private System.Windows.Forms.Label label9; - private System.Windows.Forms.ComboBox academicTitle; + private System.Windows.Forms.Button SelectAD; + private System.Windows.Forms.TextBox academicDegree; + private System.Windows.Forms.Button SelectAT; + private System.Windows.Forms.TextBox academicTitle; } } diff --git a/TimetableOfClasses/AddTeacher.cs b/TimetableOfClasses/AddTeacher.cs index 10afe6a34..29462182d 100644 --- a/TimetableOfClasses/AddTeacher.cs +++ b/TimetableOfClasses/AddTeacher.cs @@ -15,8 +15,6 @@ namespace TimetableOfClasses public partial class AddTeacher : Form { private MTeacher Lehrer; - private CAcademicDegree AcademicDegree = Controllers.CAcademicDegree; - private CTitle AcademicTitle = Controllers.CTitle; public AddTeacher() { @@ -24,10 +22,6 @@ public AddTeacher() firstName.Text = "Иван"; secondName.Text = "Иванов"; patronymic.Text = "Иванович"; - academicDegree.DataSource = AcademicDegree; - academicDegree.DisplayMember = "Reduction"; - academicTitle.DataSource = AcademicTitle; - academicTitle.DisplayMember = "Reduction"; department.Text = "ФАСТ"; metodDays.Text = "Пн, Вт"; windows.Text = "Ср, Чт, Пт"; @@ -69,13 +63,6 @@ public AddTeacher(MTeacher mTeacher) #endregion - academicDegree.DataSource = AcademicDegree; - academicDegree.DisplayMember = "Reduction"; - academicDegree.Text = mTeacher.AcademicDegree; - - academicTitle.DataSource = AcademicTitle; - academicTitle.DisplayMember = "Reduction"; - academicTitle.Text = mTeacher.AcademicTitle; department.Text = mTeacher.Departament; @@ -111,7 +98,7 @@ private bool Add() if (Lehrer == null) { MTeacher Prepodavatel = new MTeacher(firstName.Text, secondName.Text, patronymic.Text, academicDegree.Text, academicTitle.Text, department.Text, metodDays.Text, windows.Text, weekends.Text); - return Controllers.CTeacher.Insert(Prepodavatel); + return RefData.CTeacher.Insert(Prepodavatel); } else { @@ -124,7 +111,7 @@ private bool Add() Lehrer.MetodicalDays = metodDays.Text; Lehrer.Windows = windows.Text; Lehrer.Weekends = weekends.Text; - return Controllers.CTeacher.Update(Lehrer); + return RefData.CTeacher.Update(Lehrer); } } catch (Exception) @@ -321,5 +308,66 @@ private void checkPatronymic_CheckedChanged(object sender, EventArgs e) patronymic.Enabled = true; } } + + private void SelectAD_Click(object sender, EventArgs e) + { + CreateFormForEditAndChoiceAD(); + } + + private void SelectAT_Click(object sender, EventArgs e) + { + CreateFormForEditAndChoiceAT(); + } + + private void CreateFormForEditAndChoiceAT() + { + AcademicTitle selectAT = new AcademicTitle(true); + selectAT.Owner = this; + selectAT.FormClosed += SelectAT_FormClosed; + selectAT.Show(); + } + + private void SelectAT_FormClosed(object sender, FormClosedEventArgs e) + { + string reduction = (sender as AcademicTitle).ChoseReductionAcademicTitle; + if (reduction != null) + academicTitle.Text = reduction; + } + + private void CreateFormForEditAndChoiceAD() + { + AcademicDegree selectAD = new AcademicDegree(true); + selectAD.Owner = this; + selectAD.FormClosed += SelectAD_FormClosed; + selectAD.Show(); + } + + private void SelectAD_FormClosed(object sender, FormClosedEventArgs e) + { + string reduction = (sender as AcademicDegree).ChoseReductionAcademicDegree; + if (reduction != null) + academicDegree.Text = reduction; + } + + private void AddTeacher_Shown(object sender, EventArgs e) + { + if (RefData.CAcademicDegree.Rows.Count == 0) + { + var resultNotification = MessageBox.Show("В созависимом справочнике Академические степени отсутствуют записи. " + + "Отрыть форму для редкатирования справочника Академические степени?", + "Отсутствие записей в созависимом справочнике", MessageBoxButtons.YesNo); + if (resultNotification == DialogResult.Yes) + CreateFormForEditAndChoiceAD(); + } + + if (RefData.CTitle.Rows.Count == 0) + { + var resultNotification = MessageBox.Show("В созависимом справочнике Академические звания отсутствуют записи. " + + "Отрыть форму для редкатирования справочника Академические звания?", + "Отсутствие записей в созависимом справочнике", MessageBoxButtons.YesNo); + if (resultNotification == DialogResult.Yes) + CreateFormForEditAndChoiceAT(); + } + } } } \ No newline at end of file diff --git a/TimetableOfClasses/AddUniversity.Designer.cs b/TimetableOfClasses/AddUniversity.Designer.cs index a1b331e4b..e671a0586 100644 --- a/TimetableOfClasses/AddUniversity.Designer.cs +++ b/TimetableOfClasses/AddUniversity.Designer.cs @@ -64,6 +64,7 @@ private void InitializeComponent() // this.tbShortTittle.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); + this.tbShortTittle.CharacterCasing = System.Windows.Forms.CharacterCasing.Upper; this.tbShortTittle.Location = new System.Drawing.Point(15, 29); this.tbShortTittle.MaxLength = 10; this.tbShortTittle.Name = "tbShortTittle"; diff --git a/TimetableOfClasses/AddUniversity.cs b/TimetableOfClasses/AddUniversity.cs index dc304d965..f66256d7b 100644 --- a/TimetableOfClasses/AddUniversity.cs +++ b/TimetableOfClasses/AddUniversity.cs @@ -20,7 +20,6 @@ public partial class AddUniversity : Form public AddUniversity() { InitializeComponent(); - tbShortTittle.CharacterCasing = CharacterCasing.Upper; tbShortTittle.Text = "КГУ"; tbFullTitle.Text = "Костромской Государственный Университет"; tbActualAddress.Text = "156005, Костромская область, г. Кострома, ул. Дзержинского, 17"; @@ -34,6 +33,7 @@ public AddUniversity() public AddUniversity(MUniversity model) { InitializeComponent(); + tbShortTittle.CharacterCasing = CharacterCasing.Upper; tbINN.Enabled = false; this.Text = "Изменение университета"; tbShortTittle.Text = model.ShortName; @@ -47,6 +47,7 @@ public AddUniversity(MUniversity model) tbINN.Text = model.INN; } + private void FullTitle_KeyPress(object sender, KeyPressEventArgs e) { Regex regex = new Regex(@"[а-яА-Я\- ]"); @@ -130,6 +131,7 @@ private void tbFullTitle_Leave(object sender, EventArgs e) if (splitedFullName.Length > 3 || splitedFullName.Length < 2) tbRectorName.Text = ""; } + else ((TextBox)sender).Text = input; } private void tbMail_Leave(object sender, EventArgs e) @@ -204,15 +206,19 @@ private bool isEmpty(string[] strArgs) private void btSave_Click(object sender, EventArgs e) { + try + { if (!isEmpty(new string[] { tbINN.Text, tbShortTittle.Text, tbFullTitle.Text, tbActualAddress.Text, tbLegalAddress.Text, tbRectorName.Text, tbMail.Text, tbPhone.Text })) { if (Add()) this.Close(); else { - MessageBox.Show("Невозможно добавить этот университет"); + MessageBox.Show("Не удалось добавить/обновить запись. Вуз с таким ИНН, телефоном, Полным названием или почтовым адресом уже есть в таблице "); } } else MessageBox.Show("Не все поля заполнены"); + } + catch (Exception err) { MessageBox.Show(err.Message); } } bool Add() @@ -232,7 +238,7 @@ bool Add() splitedFullName[2], tbMail.Text, tbPhone.Text); - return Controllers.CUniversity.Insert(mUniversity); + return RefData.CUniversity.Insert(mUniversity); } else { @@ -246,7 +252,7 @@ bool Add() cur.SurnameRector = splitedFullName[0]; cur.Email = tbMail.Text; cur.Phone = tbPhone.Text; - return Controllers.CUniversity.Update(cur); + return RefData.CUniversity.Update(cur); } } @@ -285,7 +291,8 @@ private void tbPhone_Leave(object sender, EventArgs e) private void Cancel(object sender, EventArgs e) { - this.Close(); + this.Close(); } + } } diff --git a/TimetableOfClasses/Auditor.cs b/TimetableOfClasses/Auditor.cs index 3dc266d7a..801de9dea 100644 --- a/TimetableOfClasses/Auditor.cs +++ b/TimetableOfClasses/Auditor.cs @@ -18,7 +18,7 @@ public Auditor() { InitializeComponent(); DataGridAuditor.AutoGenerateColumns = false; - DataGridAuditor.DataSource = Controllers.CAuditor; + DataGridAuditor.DataSource = RefData.CAuditor; } private void btAddAuditor_Click(object sender, EventArgs e) @@ -47,7 +47,7 @@ private void btDelAuditor_Click(object sender, EventArgs e) { DataRow Row = ((DataRowView)row.DataBoundItem).Row; mAuditor = new MAuditor((string)Row["NameOfAuditor"], (string)Row["Cafedra"], (ushort)Row["Spacious"], (string)Row["Building"]); - Controllers.CAuditor.Delete(mAuditor); + RefData.CAuditor.Delete(mAuditor); } } diff --git a/TimetableOfClasses/DirectionOfPreparation.cs b/TimetableOfClasses/DirectionOfPreparation.cs index 731612c78..ffae23e23 100644 --- a/TimetableOfClasses/DirectionOfPreparation.cs +++ b/TimetableOfClasses/DirectionOfPreparation.cs @@ -18,7 +18,7 @@ public DirectionOfPreparation(bool forChoice = false) { InitializeComponent(); dgDirectionOfPreparation.AutoGenerateColumns = false; - dgDirectionOfPreparation.DataSource = Controllers.CDirectionOfPreparation; + dgDirectionOfPreparation.DataSource = RefData.CDirectionOfPreparation; btDeleteDirection.Enabled = false; btChangeDirection.Enabled = false; if (forChoice) @@ -55,7 +55,7 @@ private void btDeleteDirection_Click(object sender, EventArgs e) { DataRow Row = ((DataRowView)row.DataBoundItem).Row; Direction = new MDirectionOfPreparation((string)Row["CodeOfDP"], (string)Row["NameOfDP"], (ushort)Row["PeriodOfStudy"]); - Controllers.CDirectionOfPreparation.Delete(Direction); + RefData.CDirectionOfPreparation.Delete(Direction); } } } diff --git a/TimetableOfClasses/Discipline.cs b/TimetableOfClasses/Discipline.cs index 557a9ae46..b352cf682 100644 --- a/TimetableOfClasses/Discipline.cs +++ b/TimetableOfClasses/Discipline.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; @@ -17,7 +17,7 @@ public Discipline() { InitializeComponent(); DG_Disc.AutoGenerateColumns = false; - DG_Disc.DataSource = Controllers.CDiscipline; + DG_Disc.DataSource = RefData.CDiscipline; } @@ -55,7 +55,7 @@ private void Delete_Click(object sender, EventArgs e) { DataRow Row = ((DataRowView)row.DataBoundItem).Row; mDiscipline = new MDiscipline((string)Row["Fullname"], (string)Row["Shortname"], (string)Row["CycleofDiscipline"]); - Controllers.CDiscipline.Delete(mDiscipline); + RefData.CDiscipline.Delete(mDiscipline); } } @@ -77,7 +77,8 @@ private void btChange_Click(object sender, EventArgs e) add.Owner = this; add.Show(); } - else { MessageBox.Show("Для изменения выделите только одну строку!"); } + else if (DG_Disc.SelectedRows.Count > 1) { MessageBox.Show("Для изменения выделите только одну строку!"); } + else { MessageBox.Show("Для изменения выделите хотя бы одну строку !"); } } private void DG_Disc_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e) diff --git a/TimetableOfClasses/Enclosures.cs b/TimetableOfClasses/Enclosures.cs index 22339b106..cda25444b 100644 --- a/TimetableOfClasses/Enclosures.cs +++ b/TimetableOfClasses/Enclosures.cs @@ -19,7 +19,7 @@ public Enclosures(bool forChoice = false) { InitializeComponent(); DG.AutoGenerateColumns = false; - DG.DataSource = Controllers.СEnclosures; + DG.DataSource = RefData.СEnclosures; if (forChoice) { Name = "Выбор корпуса"; @@ -100,8 +100,8 @@ private void Deletet(object sender, EventArgs e) foreach (DataGridViewRow row in DG.SelectedRows) { DataRow Row = ((DataRowView)row.DataBoundItem).Row; - mEnclosures = new MEnclosures((string)Row["Name"], (string)Row["University"]); - Controllers.СEnclosures.Delete(mEnclosures); + mEnclosures = new MEnclosures((string)Row["Name"], (string)Row["University"], (string)Row["Adress"], (string)Row["Phone"], (string)Row["Comment"]); + RefData.СEnclosures.Delete(mEnclosures); } } } diff --git a/TimetableOfClasses/Groups.cs b/TimetableOfClasses/Groups.cs index a19e116cb..a83ed9fe3 100644 --- a/TimetableOfClasses/Groups.cs +++ b/TimetableOfClasses/Groups.cs @@ -17,7 +17,7 @@ public Groups() { InitializeComponent(); DG_Group.AutoGenerateColumns = false; - DG_Group.DataSource = Controllers.CGroup; + DG_Group.DataSource = RefData.CGroup; } private void DeleteRow(object sender, EventArgs e) @@ -31,8 +31,8 @@ private void DeleteRow(object sender, EventArgs e) foreach (DataGridViewRow row in DG_Group.SelectedRows) { DataRow Row = ((DataRowView)row.DataBoundItem).Row; - mGroup = new MGroup((string)Row["Group"]); - Controllers.CGroup.Delete(mGroup); + mGroup = new MGroup((string)Row["Group"], (ushort)Row["Semestr"], (string)Row["Specialty"], (ushort)Row["Shift"], (ushort)Row["Students"], (ushort)Row["MinNumberOfClass"], (ushort)Row["MaxNumberOfClass"], (string)Row["Weekends"]); + RefData.CGroup.Delete(mGroup); } } diff --git a/TimetableOfClasses/Institute.cs b/TimetableOfClasses/Institute.cs index 68ce18463..091279dbb 100644 --- a/TimetableOfClasses/Institute.cs +++ b/TimetableOfClasses/Institute.cs @@ -17,7 +17,7 @@ public Institute() { InitializeComponent(); DG_Institute.AutoGenerateColumns = false; - DG_Institute.DataSource = Controllers.CInstitute; + DG_Institute.DataSource = RefData.CInstitute; } private void btnAdd_Click(object sender, EventArgs e) diff --git a/TimetableOfClasses/Program.cs b/TimetableOfClasses/Program.cs index ecb659780..1e5875a80 100644 --- a/TimetableOfClasses/Program.cs +++ b/TimetableOfClasses/Program.cs @@ -1,5 +1,6 @@ using System; using System.Windows.Forms; +using LibOfTimetableOfClasses; namespace TimetableOfClasses { @@ -10,9 +11,11 @@ static class Program /// [STAThread] static void Main() - { - Application.EnableVisualStyles(); - Application.SetCompatibleTextRenderingDefault(false); + { + Application.EnableVisualStyles(); + new RefData(); + + Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Start()); } } diff --git a/TimetableOfClasses/RefData.cs b/TimetableOfClasses/RefData.cs deleted file mode 100644 index 169b9642a..000000000 --- a/TimetableOfClasses/RefData.cs +++ /dev/null @@ -1,17 +0,0 @@ -using LibOfTimetableOfClasses; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace TimetableOfClasses -{ - public static class RefData - { - public static CTeacher CTeacher = new CTeacher(); - public static CAuditor CAuditor = new CAuditor(); - public static CDiscipline CDiscipline = new CDiscipline(); - public static CGroup CGroup = new CGroup(); - } -} diff --git a/TimetableOfClasses/Teachers.cs b/TimetableOfClasses/Teachers.cs index 6e256ad0b..175216916 100644 --- a/TimetableOfClasses/Teachers.cs +++ b/TimetableOfClasses/Teachers.cs @@ -18,7 +18,7 @@ public Teachers() { InitializeComponent(); DG.AutoGenerateColumns = false; - DG.DataSource = Controllers.CTeacher; + DG.DataSource = RefData.CTeacher; } private void AddTeacher(object sender, EventArgs e) @@ -41,9 +41,9 @@ private void RemoveTeacher(object sender, EventArgs e) DataRow Row = ((DataRowView)row.DataBoundItem).Row; String[] fullName = ((string)Row["FullName"]).Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); if(fullName.Length==3) - mTeacher = new MTeacher(fullName[1], fullName[0], fullName[2],(string)Row["Departament"]); - else mTeacher = new MTeacher(fullName[1], fullName[0], "", (string)Row["Departament"]); - Controllers.CTeacher.Delete(mTeacher); + mTeacher = new MTeacher(fullName[1], fullName[0], fullName[2], (string)Row["AcademicDegree"], (string)Row["AcademicTitle"], (string)Row["Departament"], (string)Row["MetodicalDays"], (string)Row["Windows"], (string)Row["Weekends"]); + else mTeacher = new MTeacher(fullName[1], fullName[0],"", (string)Row["AcademicDegree"], (string)Row["AcademicTitle"], (string)Row["Departament"], (string)Row["MetodicalDays"], (string)Row["Windows"], (string)Row["Weekends"]); + RefData.CTeacher.Delete(mTeacher); } } } @@ -61,7 +61,7 @@ private void Update(object sender, EventArgs e) } else { - mTeacher = new MTeacher(fullName[1], fullName[0], (string)Row["AcademicDegree"], (string)Row["AcademicTitle"], (string)Row["Departament"], (string)Row["MetodicalDays"], (string)Row["Windows"], (string)Row["Weekends"]); + mTeacher = new MTeacher(fullName[1], fullName[0],"", (string)Row["AcademicDegree"], (string)Row["AcademicTitle"], (string)Row["Departament"], (string)Row["MetodicalDays"], (string)Row["Windows"], (string)Row["Weekends"]); } AddTeacher add = new AddTeacher(mTeacher); add.Owner = this; diff --git a/TimetableOfClasses/TimetableOfClasses.csproj b/TimetableOfClasses/TimetableOfClasses.csproj index aca1bcff1..814083d16 100644 --- a/TimetableOfClasses/TimetableOfClasses.csproj +++ b/TimetableOfClasses/TimetableOfClasses.csproj @@ -1,5 +1,6 @@  + Debug @@ -11,6 +12,8 @@ TimetableOfClasses v4.5 512 + + AnyCPU @@ -32,6 +35,12 @@ 4 + + ..\packages\MSTest.TestFramework.1.4.0\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.dll + + + ..\packages\MSTest.TestFramework.1.4.0\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll + @@ -176,7 +185,6 @@ Ministry.cs - Form @@ -246,8 +254,8 @@ AddInstitute.cs - AddProfile.cs - + AddProfile.cs + AddTeacher.cs @@ -308,6 +316,7 @@ TypesOfOccupations.cs + SettingsSingleFileGenerator Settings.Designer.cs @@ -331,6 +340,14 @@ + + + Данный проект ссылается на пакеты NuGet, отсутствующие на этом компьютере. Используйте восстановление пакетов NuGet, чтобы скачать их. Дополнительную информацию см. по адресу: http://go.microsoft.com/fwlink/?LinkID=322105. Отсутствует следующий файл: {0}. + + + + +