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}.
+
+
+
+
+