Учет учебно-методической и научной деятельности сотрудников кафедры информационных технологий в бизнесе НИУ ВШЭ-Пермь

Организация системы учета научной и учебно-методической деятельности в НИУ ВШЭ-Пермь. Анализ конфигурируемых информационно-справочных систем. Выбор и разработка алгоритмов для реализации системы учета учебно-методической и научной деятельности ВУЗа.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 30.11.2016
Размер файла 1,5 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Структурно-независимая база данных представлена набором взаимосвязанных реляционных таблиц, позволяющие хранить метаданные предметной области и пользовательские данные. Подсхема метаданных состоит из иерархического справочника, справочника экземпляров и справочника структур.

иерархический справочник в схеме СНБД представлена в виде таблицы «Structure_EA» и содержит информацию о сущностях и их атрибутах;

справочник структур представлен с помощью таблицы «Structure_link», которая содержит информацию об отношениях между сущностями, ключевых атрибутах и типах связей;

справочник экземпляров содержит набор экземпляров существующих сущностей.

В подсхеме данных представлена информациях о пользовательских данных, она представлена в виде таблиц с пользовательскими типами данных и связи экземпляров. В данной схеме (рисунок 2.8) выделены три пользовательских типа: числовой, строковый и тип дата-время.

Рисунок 2.7. Структурно-независимая база данных

Проектирование пользовательского интерфейса

Процесс создания пользовательского интерфейса начинается с анализа прецедентов системы (см. пункт 2.4), затем определяются кооперативные взаимодействия для реализации прецедентов, описывают то, какой будет видеть систему пользователь.

Основываясь на требованиях к пользовательскому интерфейсу (приложение B) из технического задания были спроектированы экранные формы.

При запуске приложения открывается форма авторизации пользователя (рисунок 2.9), с помощью которой происходит идентификация пользователя и наделения его правами доступа.

Рисунок 2.8. Схема реляционной базы данных

Рисунок 2.9. Экранная форма «Авторизация»

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

Рисунок 2.10. Экранная форма «Личный кабинет» для пользователя «Преподаватель»

В техническом задании одним из требований к пользовательскому интерфейсу является то, что любая экранная форма должна быть разделена на три группы: навигационное меню, рабочая область, информация о текущем пользователе (статусная строка). На рисунке 2.11 видно, что слева располагается навигационное меню для пользователя «Преподаватель», в верхнем правом углу находится информация о текущем пользователе, а именно его имя, остальная часть экрана - рабочая область. Две части меню и информация о пользователе является статичной и в любой рабочей форме не изменяется (редактируется только шрифт на кнопках меню, жирным шрифтом выделяется название текущего окна), изменению поддается лишь рабочая часть форм.

При работе с приложением пользователь может просмотреть существующие в базе данных информацию о научной (рисунок 2.11) и учебно-методической деятельности (рисунок 2.12), а также изменить ее или дополнить новыми данными.

В окнах (рисунок 2.11-2.12) пользователю необходимо выбрать необходимые критерии для вывода данных и нажать кнопку «Поиск», после чего система в виде таблицы выведет запрашиваемые пользователем данные.

Рисунок 2.11. Экранная форма «Научная деятельность»

Рисунок 2.12. Экранная форма «Учебно-методическая деятельность»

Также пользователь «Преподаватель» имеет возможность сформировать персональный отчет по учебно-методической и научной деятельности. Для этого необходимо выбрать из меню пункт «Создать новую форму отчета», после чего открывается окно «Форма отчета», которое представлено на рисунке 2.13, в котором пользователь выбирается всю необходимую информацию за определенный период времени, которую нужно отразить в отчете и нажать на кнопку «Сгенерировать отчет».

Рисунок 2.13. Экранная форма «Новая форма отчета»

Экранные формы для пользователя «Специалист по учебно-методической работе» выглядят иначе, так, например, дизайн формы «Личный кабинет» представлен на рисунке 2.14.

На форме «Создать отчет» (рисунок 2.15) пользователь выбирает период формирования отчета и список преподавателей, информацию по которым необходимо внести в отчет.

Рисунок 2.14. Экранная форма «Личный кабинет»

Рисунок 2.15. Экранная форма «Создание отчета»

Также специалист по учебно-методической работе наделяется правами администратора, а именно в праве отредактировать структуру отчета (добавить, удалить или детализировать деятельности сотрудников, необходимые для составления отчетов) и добавления сотрудников в систему (рисунок 2.16).

Рисунок 2.16. Экранная форма «Добавить сотрудника»

На экранной форме «Изменить структуру отчета» (рисунок 2.17) будет изображена информация о текущей структуре документа в форме дерева, где в любой уровень пользователь может внести необходимое значение, тем самым изменив структуру документа. Эта функция была бы неосуществима если бы использовалась традиционная реляционная БД.

Рисунок 2.17. Экранная форма «Изменить структуру отчета»

Программная реализация системы учет учебно-методической и научной деятельности

Глава посвящена разработке основных алгоритмов, функций и принципов создания прототипа системы учета учебно-методической и научной деятельности сотрудников по Техническому заданию (приложение В). Особое внимание уделено разработке функций для работы с структурно-независимой базой данных (функции GRUDдля метаданных и данных СНБД). Прототип системы разрабатывается с помощью платформы VisualStudioс применением технологии WindowsForm. Приводятся результаты тестирования полученного решения и выводы по текущему исследованию и дальнейшим перспективам.

Разграничение прав доступа к системе учета учебно-методической и научной деятельности

Для того чтобы предоставить пользователю работу с актуальными данными, а именно с данными конкретного пользователя, необходимо разграничить права доступа к системе. Таким образом в приложении проектируется дополнительная (вспомогательная) база данных, в которых дублируются идентификаторы пользователей, которые имеются в спроектированной СНБД, добавлены типы пользователей (преподаватель или специалист по учебно-методической работе), присвоены уникальные логины и пароли. С помощью этих данных приложение определяет какой тип пользователя работает с приложением и какую информацию отображать на формах. После чего, открываются соответствующие типу пользователя окна и доступны соответствующие функции.

Если же введенные логин и пароль не были найдены в базе данных, то выводится сообщение об ошибке и работа с приложением прекращается до тех пор, пока не будут введены корректная комбинация данных.

Разработка функций CRUD метаданных для СНБД

ФункцииCRUD (Create, Read, Update, Delete) - функциипо созданию, чтению, обновлению и удалению данных. Для работы с СНБД стандартных функций, применимых к реляционной БД недостаточно, так как информация разделена по типам данных, метаданным и связям между ними.

Как и в реляционных данных, СНБД содержит сущности и атрибуты характеризующие предметную область, однако, в реляционной базе данных сущностями являются сами таблицы (их названия), а атрибутами - поля таблицы. В СНБД формат метаданных представлен иным способом, но с помощью реляционных таблиц. В таблицах «Entity» и«Attribute»идентифицируются названия сущностей и атрибутов, а в таблице «Structure_EA» представлено их отношение и тип данных, хранимых в атрибуте.

В окне «Изменить структуру отчета» доступном для пользователя «Специалист по учебно-методической деятельности» (рисунок 2.17) данные представляются с помощью иерархического дерева и подразделяются на два типа: данные по учебно-методической работе и данные по научной деятельности. Тем самым просматривается текущая структура отчета (Приложение С). Для того чтобы представить структуру отчета таким образом был использован элемент treeView, на котором корневой узел - это сущность, а дочерние узлы - это атрибуты, соответствующие данной сущности. Для того чтобы данные выводились таким образом была разработана функция обхода двух таблиц («Entity» и «Structure_EA»):

//Выбираем все существующие в бд сущности, соответствующие конкретному виду деятельности

SqlCommand cmd = newSqlCommand("Select Id_Entity From Entity Where typeEnt = 2", conn);

using (SqlDataReader MyReader = cmd.ExecuteReader())

{

while (MyReader.Read())

{

//имя родительской сущности

string parent = MyReader["Id_Entity"].ToString().Trim();

tree = newTreeNode(parent);

treeView1.Nodes.Add(parent);

i++;

conn2.Open();

//запрос на выбор всех записей, принадлежащих выбранной сущности

SqlCommand cmd2 = newSqlCommand("Select id_attribute, type From Structure_EA Where id_entity = @entity", conn2);

cmd2.Parameters.AddWithValue("@entity", parent);

using (SqlDataReader MyReader2 = cmd2.ExecuteReader())

{

while (MyReader2.Read())

{

//Вывод атрибута и соответствующего типа

string child = MyReader2["id_attribute"].ToString().Trim() + " (" + MyReader2["type"].ToString().Trim() + ")";

treeView1.Nodes[i].Nodes.Add(parent, child);

}

}

conn2.Close();

}

}

conn.Close();

Для того чтобы добавить новую сущность необходимо на форме «Изменить структуру отчета» кликнуть на кнопку «Добавить новую сущность» внизу окна и откроется окно для добавления новой сущности в базу данных (рисунок 3.1), в которой необходимо ввести название новой сущности и выбрать к какому типу деятельности она относится.

Рисунок 3.1. Добавление новой сущности в БД

Для добавления новой сущности разработана функция InsertEntity:

publicvoidInsertEntity(stringentity)

{

//Оператор sql

var cmd = newSqlCommand("INSERT INTO [Entity] ([Id_Entity]) VALUES (@entity)", conn);

cmd.Parameters.AddWithValue("@entity", entity);

cmd.ExecuteNonQuery();

}

Для добавления атрибута и связи его к определенной сущности, необходимо на форме «Изменить структуру отчета» в элементе treeViewдважды кликнуть на родительский элемент (сущность) к которой будет привязан добавленный атрибут, после чего откроется окно «Добавить атрибут» (рисунок 3.2), в которм необходимо ввести название атрибута и выбрать тип данных.

Рисунок 3.2. Добавление атрибута

Для добавления атрибута и привязка его к выбранной сущности разработана функции InsertAttrи InsertStructere_EA:

publicvoid InsertAttr (string attr)

{

//Оператор sql

var cmd = newSqlCommand("INSERT INTO [Attribute] ([Id_attribute]) VALUES (@Id_attribute)", conn);

cmd.Parameters.AddWithValue("@Id_attribute", attr);

cmd.ExecuteNonQuery();

}

publicvoid InsertStructure_EA (string id_entity, string id_attribute, string type)

{

var cmd1 = newSqlCommand("Select Count(*) From Structure_EA", conn);

string getValue = cmd1.ExecuteScalar().ToString();

int i = Convert.ToInt32(getValue)+1;

var cmd = newSqlCommand("INSERT INTO [Structure_EA] ([Id_EA], [id_entity], [id_attribute], [type]) VALUES (@Id_EA, @id_entity, @id_attribute, @type)", conn);

cmd.Parameters.AddWithValue("@Id_EA", i);

cmd.Parameters.AddWithValue("@id_entity", id_entity);

cmd.Parameters.AddWithValue("@id_attribute", id_attribute);

cmd.Parameters.AddWithValue("@type", type);

cmd.ExecuteNonQuery();

}

Разработка функций CRUD пользовательских данных для СНБД

Пользовательские данные хранятся в структурно-независимой базе данных в подсхеме данных, где каждый экземпляр класса разбивается на значения определенного типа, и по этим типам записывается в соответствующие таблицы. Для полного понимания ниже описан пример записи экземпляра класса «Участие в конференции». Данный класс содержит пять атрибутов:

Идентификатор конференции - числовой тип, не задается пользователем, а генерируется автоматически и связывается с идентификатором участника конференции (преподавателя).

Название конференции - строковый тип;

Место проведения - строковый тип;

Дата проведения - тип дата;

Тема доклада (тезисы) - тип строковый.

Пользователю системы необходимо добавить новые данные о конференции: «ТРИС-2015, г. Геленджик, 20.09.2015, тезис «Защита документов и товаров с использованием электронной цифровой подписи». Таким образом, на форме «Добавить данные» (Рисунок 3.3) пользователь заполняет поля с соответствующими атрибутами (2-5) и выбрать имя участников (авторов/соавторов) данной темы и конференции, после чего система формирует в таблицах «Instance_entity» и«Relation» записи о новой сущности и ее связи с другими сущностями, а именно с Автором, по полю идентификатор. Затем, распределяет значения по соответствующим таблицам, соответствующим им типам, так, например, значения полей «название», «место», «тема доклада» запишутся в таблицу «String», «сроки» в таблицу «date».

Рисунок 3.3. Форма «Добавить данные»

После проделанной операции, данные в таблицах базы данных располагаются следующим образом, как показано на Рисунок 3.4, данный экземпляр класса получил идентификатор 18, а авторы доклада получили ссылки на данный экземпляр.

Рисунок 3.4. Расположение данных в СНБД

Основной задачей при разработке функций манипуляции пользователем над данными состояла в том, чтобы пользователь не задумывался над тем, как хранятся эти данные, а видел и работал с ними, также, как и с традиционной СУБД. Поэтому, для того чтобы просмотреть и изменить данные, экземпляры класса собираются в строку (по идентификатору) и выводятся на форму (рисунок 3.5), таким образом, каким бы это было представлено при работе с реляционной БД.

Рисунок 3.5. Представление пользовательских данных

Разработка программного заполнения формы элементами управления

Для экономии памяти (исключения дублирования кода) и увеличения производительности программы, была создана единая форма «добавить данные» (рисунок 3.3). Для создания элементов label (для подписи полей) и textbox (для ввода значений) была разработана функция:

privatevoid AddNewInstance_Load(object sender, EventArgs e)

{

nameColumns = Education.nameColumn; //значенияполей

controlArray = newControl[nameColumns.Length];

entity = Education.entity; //для какой сущности происходит заполнение

for (int i = 0; i < nameColumns.Length; i++) //создание подписей для полей

{

controlArray[i] = newLabel() { Name = "label" + name Columns[i].ToString(), Location = newPoint(20, (i + 1) * 30), Text = name Columns[i].ToString(), Visible = true };

this.Controls.Add(controlArray[i]);

}

for (int i = 0; i < nameColumns.Length; i++) //создание полей

{controlArray[i] = newTextBox() { Name = nameColumns[i].ToString(), Location = newPoint(150, (i + 1) * 30), Text = "", Size = newSize(300, 20) };

this.Controls.Add(controlArray[i]);

}

}

После заполнения формы, происходит считывание данных, определение их типов и запись по соответствующим таблицам подсхемы данных в СНБД:

//определяем тип атрибута и записываем в соответствующие таблицы

for (int j = 0; j < nameColumns.Length; j++)

{ SqlCommand cmd2 = newSqlCommand("Select typeAttr From Attribute where id_attribute = @attribute", conn2);

cmd2.Parameters.AddWithValue("@attribute",nameColumns[j]);

string type = cmd2.ExecuteScalar().ToString();

switch (type)

{ case"строковый": AddInstanceString(i, nameColumns[j], controlArray[j].Text.ToString()); break;

case"числовой": AddInstanceInteger(i, nameColumns[j], Convert.ToInt32(controlArray[j].Text)); break;

case"дата": AddInstanceDate(i, nameColumns[j], controlArray[j].Text.ToString()); break;

default: break;

}

}

Разработка функций генерации отчета по учебно-методической и научной деятельности

Как для пользователя Преподаватель, так и для Специалиста по учебно-методической работе в системе предусмотрены функции генерации отчета по учебно-методической и научной деятельности, отличаются они тем, что для преподавателя отчет генерируется индивидуально, а для специалиста по учебно-методической и научной работе отчет составляется по кафедре/департаменту в целом. Однако, предусмотрены настройки отчета, так для пользователя Преподаватель существуют функции выбора того или иного компонента работ (рисунок 3.6), а для пользователя Специалист по учебно-методической работе существуют функции выбора преподавателей, данные о которых включаются в отчет (рисунок 3.7).

Рисунок 3.6. Форма настроек отчета для Преподавателя

В полях «Другие виды работы» пользователь пишет дополнительную информацию, которую необходимо включить в отчет. При нажатии на кнопку «Сгенерировать отчет» заполняется строится шаблон документа по выбранной структуре и заполняется актуальными данными, т.е. те данные, которые соответствуют выбранному пользователем периоду времени.

Рисунок 3.7. Форма настроек для Специалиста по учебно-методической работе

Выводы по главе

В третьей главе представлена проектная реализация исследовательского прототипа, который работает с изученной технологией СНБД, позволяющая создать конфигурируемую (адаптируемую) систему. Данный прототип соответствует требованиям, предъявляемым к системе (приложение В). Использование в системе СНБД позволяет решить ряд проблем, которые существуют в НИУ ВШЭ-Пермь при учете учебно-методической и научной деятельности. Главным достоинством проделанной работы является то, что пользователь Специалист по учебно-методической работе может изменять структуру данных, а именно отчета, во время работы с приложением, и видеть результаты сразу после внесения поправок, без дополнительной генерации кода. Нет необходимости в дополнительном обучении пользователей, так как система работает в привычных пользователю терминах.

Заключение

учет научный справочный учебный

Полученные в ходе выпускной квалификационной работы результаты позволяют устранить проблемы, возникающие при учете учебно-методической и научной деятельности сотрудников кафедры информационных технологий в бизнесе НИУ ВШЭ-Пермь, например, такие как не структурированность данных при сборе общего отчета по кафедре, высокая трудоемкость работы при составлении отчета, а также не статичность его структуры. На основе проведенных обзоров, анализов, исследований, разработок выполнены поставленные задачи, получены результаты и сформулированы выводы:

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

Проведенный анализ конфигурируемых (адаптируемых) систем позволил выявить наиболее эффективную технологию для данного проекта, а именно СНБД, которая обеспечивает гибкость базы данных ИС и не повлечет за собой высоких требований к разработчику и пользователям системы. Используемая технология отвечает требованиям, которым должна удовлетворять любая реляционная база данных, а также база данных, которая хранит данные с изменяемой структурой.

При проектировании системы были выявлены и изложены требования (ТЗ) к системе, смоделирована система с помощью языка Unified Modeling Language (UML), произведен анализ и выбор используемых технологий и выполнено проектирование пользовательского интерфейса.

При программной реализации системы было выяснено, что СНБД обладает достаточной производительностью при работе с объемами данных, необходимых для учета учебно-методической и научной деятельности кафедры на несколько лет. А также с помощью методов манипуляции данными были разработаны SQL-запросы на выборку, вставку, удаление или обновление записей, как на уровне метаданных, так и на уровне данных.

Разработанная СНБД является основой для прототипа системы учета учебно-методической и научной деятельности, что делает его гибким и масштабируемым. Данная система позволяет без дополнительных специальных знаний пользователя вносить изменения в структуру данных, без дополнительных трудозатрат, усложнения структуры данных и снижением надежности или функционирования системы.

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

В дальнейшем, прототип системы будет дорабатываться в соответствии с требованиями, будет внедрен на кафедру информационных технологий в бизнесе НИУ ВШЭ-Пермь, расширен до применения сотрудниками факультета или кампуса.

Список сокращений и условных обозначений

ППС

профессорско-преподавательский состав

БД

база данных

СНБД

структурно-независима база данных

ТЗ

техническое задание

НИУ ВШЭ

национальный исследовательский университет «Высшая школа экономики»

АСАВ

система «Абитуриент-Студент-Выпускник-Аспирант»

СУБД

система управления базами данных

КоИСС

конфигурируемые информационно-справочные системы

ПО

программное обеспечение

НФ

нормальная форма БД

УМК

учебно-методической комплекс

Библиографический список

Акимов А. А., Бурукина И. П. Формирование требований к информационно-аналитическим системам мониторинга деятельности кафедры // Современные научные исследования и инновации. Ноябрь, 2012. URL: http://web.snauka.ru/issues/2012/11/18511 (дата обращения 25.01.2016).

Акимов А. А. Критерии сравнения информационных систем мониторинга деятельности кафедры // Университетское образование: сборник статей XVI Международной научно-методической конференции. Пенза, 2012.

Беликов А.А. Достоинства и недостатки системы «Галактика» // Независимый ERP-портал. URL: http:// https://iias.petrsu.ru/portal/page/portal/portal_iais/about_iais (дата обращения: 03.12.15).

Высшее образование в XXI веке: подходы и практические меры / СГУ. - М., 1999. - 36 с.

Гойвертс Я., Левитан С. Регулярные выражения. Сборник рецептов. СПб.:Символ-Плюс, 2010. 230 с.

ГОСТ 7.5-98 Журналы, сборники, информационные издания. Издательское оформление публикуемых материалов. М., 1998. 9 с.

ГОСТ Р 7.0.5-2008. Библиографическая ссылка. Общие требования и правила составления. М., 2008. 19 с.

Заславская Е.А. Педагогическое проектирование учебно-методической деятельности технического вуза. Барнаул: Омский государственный педагогический университет, 2014. 98 с.

Кучеров С. А. Разработка и исследование моделей и метода проектирования структурно-независимых баз данных для конфигурируемых информационных систем. Автореферат дис. канд. техн. наук.:05.25.05. / С. А. Кучеров - Таганрог., 2013. 19 с.

Лядова Л.Н. Технология создания динамически адаптируемых информационных систем // Труды междунар. науч.-техн. конф. «Интеллектуальные системы» (AIS'07). Т. 2 -- М.: Физматлит, 2007. 30 с.

Маланин В.В. Единая телеинформационная система Пермского государственного университета. URL: http://www.erp-online.ru/phparticles/show_news_one.php?n_id=264 (дата обращения: 03.12.15).

О системе ИАИАС вуза. // Технологии эффективного управления вузом. URL: http:// https://iias.petrsu.ru/portal/page/portal/portal_iais/about_iais (дата обращения: 03.12.15).

Писляков В. В. Основные методы оценки научного знания по показателям цитирования // Социологический журнал. 2007. № 1. С. 128-140.

Регламент оценки публикационной активности научных работников Национального исследовательского университета «Высшая школа экономики». - Москва: от 28.02.14. - 4 с.

Система управления учебным процессом (АСАВ). // Дирекция информационных технологий Национальный исследовательский университет «Высшая школа экономики». URL: http://it.hse.ru/asav (дата обращения: 25.01.2016).

Справочник по публикациям. // Национальный исследовательский университет «Высшая школа экономики»: сайт. Пермь, 2013. URL: http://portal.hse.ru/newp/ (дата обращения 05.12.15).

Информационная система университета. О системе. // Портал НГТУ. URL: http// http://ciu.nstu.ru/isu/isu_about (дата обращения 24.01.2016).

Ястребов О.К. Оценка качества образования как инструмент оценки деятельности вузов. М.: ЭКОРИС-НЭИ, 2009. 20 с.

Шаблон отчета по учебно-методической и научной деятельности

Учебно-методическая работа.

1. Подготовка учебно-методических материалов

Вид работы

Ответственное лицо

Срок исполнения

2. Подготовка учебно-методических пособий, учебников

Название

Автор

Срок исполнения

Гриф

Объем (п.л.)

3. Разработка программ учебных дисциплин

Код и название направления подготовки

Дисциплина

Автор программы

Срок исполнения

4. Разработка учебно-методических комплексов

Код и название направления подготовки

Дисциплина

Название УМК

Автор УМК

Объем п.л.

Срок исполнения

Примечание. В отчете работы кафедры указывается фактическое количество физических печатных листов.

Научная работа преподавателей кафедры/департамента

1. Публикации

Наименование работы

Автор

Время сдачи работы

Объем работы

(в п.л.)

Наличие рекомендации ВАК

Монографии

Статьи в зарубежных изданиях

Статьи, опубликованные в центральных изданиях

Статьи, опубликованные в вузовских изданиях

2. Участие в конференциях

ФИО преподавателя

Название конференции

Место проведение конференции

Сроки проведение

Тема доклада (тезисы)

Выступление с докладом

Опубликование тезисов

3. Работа по грантам

ФИО преподавателя

Название гранта

Объем финансирования

Источник финансирования

4. Повышение квалификации

ФИО преподавателя

Вид повышения квалификации

Название

Место проведения

Сроки проведения

Название и номер документа

Примечание. Последний пункт указывается только в отчете.

V. Другие виды работ.

Техническое задание

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ

УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

"НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ

"ВЫСШАЯ ШКОЛА ЭКОНОМИКИ"

Пермский филиал

Факультет экономики, менеджмента и бизнес-информатики

СИСТЕМА УЧЕТА УЧЕБНО-МЕТОДИЧЕСКОЙ И НАУЧНОЙ ДЕЯТЕЛЬНОСТИ СОТРУДНИКОВ КАФЕДРЫ

Техническое задание

Пермь, 2016

Настоящее техническое задание (ТЗ) определяет назначение системы, общие и индивидуальные требования к информационной системе учета научной и учебно-методической деятельности сотрудников кафедры Информационных технологий в бизнесе НИУ ВШЭ-Пермь, предназначенной для автоматизации процесса учета учебно-методической и научной работы, создания единой гибкой системы документооборота по данным видам деятельностей.

1. Общие сведения

1.1. Наименование системы

Система учета учебно-методической деятельности для сотрудников кафедры.

1.2. Наименования Разработчика и Заказчика работ

Разработчик:

Золотарева Ксения Ивановна, студентка 4 курса НИУ ВШЭ-Пермь, направления «Программная инженерия».

Контактные данные: Losman-kseniya@mail.ru, 8-982-48-66-870

Заказчик:

Кафедра «Информационных технологий в бизнесе» НИУ ВШЭ-Пермь.

Адрес: г. Пермь, ул. Б. Гагарина 37 А.

1.3. Основание для проведения работ

Система разрабатывается на базе выпускной квалификационной работы и преддипломной практики, при их защите будут представлены результаты прототипа системы. Результатом работы будет являться выпускная квалификационная работа (ВКР).

1.4. Порядок оформления и предъявления Заказчику результатов работ

Работы по созданию Системы производятся и принимаются поэтапно.

По окончании разработки системы необходимо подготовить пакет документов, который включает в себя: руководство пользователя, отчет о проведенном тестировании и установочный пакет системы, проект выпускной квалификационной работы бакалавра.

Система разрабатывается на базе выпускной квалификационной работы и преддипломной практики, при их защите будут представлены результаты прототипа системы. Результатом работы будет являться выпускная квалификационная работа (ВКР).

2. Назначение и цели создания системы

2.1. Назначение системы:

Системы учета учебно-методической и научной деятельности сотрудников предназначено для:

Автоматизации процесса составления и сбора данных для отчета по учебно-методической и научной работе.

Сбора данных по учебно-методической работе.

Изменения структуры отчета.

2.2. Цели создания системы

Основными целями разрабатываемой системы являются:

Создание единой гибкой системы документооборота по учебно-методической и научной работе кафедры (департамента).

Создание механизма по формированию отчета для учебно-методической и научной.

Обеспечение возможности изменение структуры данных без дополнительных трудозатрат.

3. Требования к системе

3.1. Требования к системе в целом

3.1.1. Требования к структуре и функционированию системы

* Система включает в себя два вида пользователей: Преподаватель и специалист по учебно-методической работе. Для Преподавателя характерны такие подсистемы как: Личный кабинет, Информация о персональной учебно-методической и научной деятельности (функции CRUD) и составление отчета за определенный период. Для Специалиста по учебно-методической работе характерны подсистемы: личный кабинет, информация об учебно-методической и научной работе кафедры, генерация отчета по кафедре в целом за определенный период (создание структуры отчета, генерация отчета), изменение структуры отчета и добавление новых пользователей в систему.

* Требования к способам и средствам связи для информационного обмена между компонентами системы: на сервере НИУ ВШЭ - Пермь располагается база данных системы, на персональных компьютерах, имеющих доступ к серверу, устанавливается система и подключается к этой базе данных.

* Перспективы развития системы: переход системы в web-приложение, тогда доступ к системе будет возможет с любого устройства при наличии интернета. Расширение системы для Пермского кампуса.

3.1.2. Требования к численности и квалификации персонала

Пользователями системы являются сотрудники кафедры «Информационных технологий в бизнесе» порядка 30, уверенные пользователями персонального компьютера (ПК).

Перед запуском системы в эксплуатацию пользователям рекомендуется ознакомиться с документом «Руководство пользователя».

3.1.3. Показатели назначения:

Назначение системы должно сохраняться на протяжении всего срока эксплуатации системы, сроки эксплуатации определяются устойчивостью системы и характеристикой аппаратных средств.

3.1.4. Требования к надежности

Показатели надежности будут определяться на этапе предпроектного обследования.

Система должна иметь функцию авторизации пользователя (разграничение прав доступа), у каждого пользователя должен быть собственный логин и пароль, по которому осуществляется вход в систему.

При аварийном завершении работы системы, данные, введенные пользователем при работе с системой, должны быть восстановлены с внешнего накопителя.

3.1.5. Требования к эргономике и технической эстетике

Требования к внешнему оформлению:

Должен быть реализован графический многооконный режим в едином корпоративном стиле.

любая экранная форма должна быть разделена на три группы: навигационное меню, рабочая область, информация о текущем пользователе (статусная строка).

Требования к диалогу с пользователем:

Информационные сообщения или сообщения об ошибках должны выводиться либо на отдельной форме (message box), либо непосредственно около поля, где произошла ошибка, подробно описав причину появления сообщения;

При продолжительной работе системы (более 5 сек.) система должна оповестить пользователя о том, что система не зависла, а продолжает работать и необходимо подождать определенное время.

3.1.6. Требования к эксплуатации, техническому обслуживанию, ремонту и хранению компонентов системы

Система должна обеспечить режим эксплуатации 24 часа в сутки, с учетом времени для обслуживания системы.

Для стабильного функционирования системы необходимо напряжение питания сети 220В, исправные аппаратные средства.

3.1.7. Требования по сохранности информации

Средствами обеспечения сохранности информации являются:

Носители информации.

Резервное копирование БД.

Резервная копия ПО.

Ситуации для обеспечения сохранности информации:

Поломка рабочей станции, сервера.

Отключение питания.

Поломка аппаратуры или его составляющих.

Резервное копирование данных должно осуществляться по мере необходимости, а именно в периоды интенсивной работы с системой (периоды сдачи и формирования отчетов).

3.2. Функциональные требования

Система должна обеспечивать:

* Работу для двух типов пользователей: Преподаватель и Специалист по учебно-методической работе.

* Доступ к личному кабинету пользователя, где осуществляются функции CRUD (create, read, update, delete) над данными.

* Доступ к персональной информации об учебно-методической и научной работе Преподавателя и доступ ко всей информации по кафедре для Специалиста по учебно-методической работе.

* Осуществление функций CRUD над данными по учебно-методической и научной работе.

* Изменение структуры данных системы без вмешательства программиста или администратора, ее может изменить Специалист по учебно-методической работе, путем применения процесса конфигурирования функциональности системы.

* Генерация отчетов по актуальной информации из базы данных приложения по определенной дате.

3.3. Требования к входным/выходным данным:

* Входные данные могут содержать персональную информацию о пользователе (ФИО, должность, контактные данные и т.п.), вводятся вручную непосредственно самим пользователем на формах приложения.

* Входные данные об учебно-методической и научной работе сотрудника заполняются вручную на формах приложения или считываются с портала НИУ ВШЭ с персональной страницы пользователя.

* Выходными данными является файл с отчетом в формате doc/docx или xls/xlsx.

3.4. Требования к видам обеспечения

3.4.1. Общие сведения

Серверное и клиентское обеспечение должно согласовываться и утверждаться заказчиком.

3.4.2. Требование к лингвистическому обеспечению

Языки программирования:

Разработка данной системы должна вестись на языках высокого уровня.

Языки взаимодействия с пользователем:

Базовым (и единственным) языком общения между пользователем и системой является русский язык. Данный язык используется при составлении документации к системе, в пользовательском графическом интерфейсе.

3.4.3. Требования к программному обеспечению:

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

Пакет файлов для установки системы и базы данных.

Пакет документов для сопровождения и работы с системой.

4. Состав и содержание работ по созданию (развитию) системы

Осуществление и порядок работ должен подразделяться на этапы, спецификация работ по созданию прототипа системы представлена в таблице В.1.

5. Порядок контроля и приемки системы

Приемку работ должна осуществлять приемочная комиссия:

Преподаватели кафедры «Информационных технологий в бизнесе».

Иные представители.

Таблица B.1. Спецификация работ по созданию прототипа системы

Стадия работ

Выполняемые работы

Итоги выполнения

Формирование требований

Исследование предметной области

Исследование объектов автоматизации

Отчет об исследовании

Обоснование на разработку системы

Проектирование

Разработка технического задания

Проектирование системы

Разработка графического интерфейса

Техническое задание, диаграммы UML

Пользовательский интерфейс, утвержденный заказчиком.

Разработка

Разработка прототипа системы

Прототип системы

Приемка работ

Представление результатов работы

Проект выпускной квалификационной работы, оценка за проект

При проведении испытаний приемочной комиссии предоставляется проект выпускной квалификационной работы, установочные файлы, установленная программа, руководство пользователя, отчет о тестировании и перечень доработки системы.

После проведения контроля и приемки системы пункты ТЗ могут изменяться.

6. Требования к документированию

Документы должны быть представлены в печатном и электроном виде. Код программ в печатном виде и на flefh-носителе.

Документы должны быть оформлены на русском языке по стандартам НИУ ВШЭ.

Перечень подлежащих разработке документов:

Проект выпускной квалификационной работы.

Руководство пользователя.

Отчет по тестированию системы.

7. Порядок внесения изменений

Настоящее Техническое Задание может дополняться и редактироваться в процессе создания системы по взаимному соглашению Заказчика и Разработчика.

Код программы

Форма «Авторизация»:

conn.Open();

SqlCommand cmd = newSqlCommand("Select Teacher.Id_teacher From Teacher Where password = @password and login = @login", conn);

cmd.Parameters.AddWithValue("@password", password.Text);

cmd.Parameters.AddWithValue("@login", login.Text);

bool flag = false;

using (SqlDataReader MyReader = cmd.ExecuteReader())

{

while (MyReader.Read())

{

id_person = Convert.ToInt32(MyReader[0].ToString().Trim());

flag = true;

}

}

if (flag == true)

{

conn.Close();

PersonalAccountTeacher form = newPersonalAccountTeacher();

form.ShowDialog();

}

else

{

SqlCommand cmd2 = newSqlCommand("Select [Training_directorate].Id_training From Training_directorate Where password = @password and login = @login", conn);

cmd2.Parameters.AddWithValue("@password", password.Text);

cmd2.Parameters.AddWithValue("@login", login.Text);

flag = false;

using (SqlDataReader MyReader = cmd2.ExecuteReader())

{

while (MyReader.Read())

{

id_person = Convert.ToInt32(MyReader[0].ToString().Trim());

flag = true;

}

}

if (flag == true)

{

conn.Close();

PersonalAccountTD form = newPersonalAccountTD();

form.ShowDialog();

}

else

{

conn.Close();

MessageBox.Show("Неверныйлогинилипароль", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);

}

Форма «Личный кабинет»

conn.Open();

SqlCommand cmd = newSqlCommand("Select * From Person Where Id_person = @id_person", conn);

cmd.Parameters.AddWithValue("@id_person", id_training);

using (SqlDataReader MyReader = cmd.ExecuteReader())

{

while (MyReader.Read())

{

name_user = MyReader["f_name"].ToString().Trim() + " " + MyReader["i_name"].ToString().Trim() + " " + MyReader["o_name"].ToString().Trim();

labelName.Text = MyReader["f_name"].ToString().Trim() + " "+MyReader["i_name"].ToString().Trim() + " " + MyReader["o_name"].ToString().Trim();

labelPost.Text = labelPost.Text+ " " + MyReader["post"].ToString().Trim();

labelPhone.Text = labelPhone.Text + " " + MyReader["phone"].ToString().Trim();

labelEmail.Text = labelEmail.Text + " " + MyReader["email"].ToString().Trim();

labelAdress.Text = labelAdress.Text + " " + MyReader["adress"].ToString().Trim();

}

}

conn.Close();

Форма «Научная деятельность»

privatevoid ScienceActivity_Load(object sender, EventArgs e)

{

conn.Open();

SqlCommand cmd = newSqlCommand("Select * From Person Where Id_person = @id_person", conn);

cmd.Parameters.AddWithValue("@id_person", id_teacher);

using (SqlDataReader MyReader = cmd.ExecuteReader())

{

while (MyReader.Read())

{

labelName.Text = MyReader["f_name"].ToString().Trim() + " " + MyReader["i_name"].ToString().Trim() + " " + MyReader["o_name"].ToString().Trim();

}

}

conn.Close();

conn2.Open();

//Выбираем все существующие в бд сущности, соответствующие конкретному виду деятельности

SqlCommand cmd1 = newSqlCommand("Select Id_Entity From Entity Where typeEnt = 1", conn2);

using (SqlDataReader MyReader = cmd1.ExecuteReader())

{

while (MyReader.Read())

{

//имясущности

string parent = MyReader["Id_Entity"].ToString().Trim();

comboBoxType.Items.Add(parent);

}

}

conn2.Close();

}

privatevoid buttSearch_Click(object sender, EventArgs e)

{

dataPublication.Rows.Clear();

entity = comboBoxType.Text;

int i = 0;

conn2.Open();

SqlCommand cmd = newSqlCommand("Select Count(*) From Structure_EA Where id_entity = @entity", conn2);

cmd.Parameters.AddWithValue("@entity", entity);

using (SqlDataReader MyRead = cmd.ExecuteReader())

{

while (MyRead.Read())

{

string s = MyRead[0].ToString().Trim();

dataPublication.ColumnCount = Convert.ToInt32(s);

dataPublication.ColumnHeadersVisible = true;

}

}

conn2.Close();

conn2.Open();

//запрос на выбор всех записей, принадлежащих выбранной сущности

SqlCommand cmd2 = newSqlCommand("Select id_attribute, type From Structure_EA Where id_entity = @entity", conn2);

cmd2.Parameters.AddWithValue("@entity", entity);

using (SqlDataReader MyReader = cmd2.ExecuteReader())

{

while (MyReader.Read())

{

//Заполнениешапкитаблицы

string attr = MyReader["id_attribute"].ToString().Trim();

dataPublication.Columns[i].Name = attr;

i++;

}

}

conn2.Close();

//Вывод данных в таблицу

conn2.Open();

SqlCommand cmd3 = newSqlCommand("Select Id_instance From Instance_Entity Where id_entity = @entity", conn2);

cmd3.Parameters.AddWithValue("@entity", entity);

string type;

string[] row = newstring[dataPublication.ColumnCount]; //собираемстрокуэкземпляра

int iRow = 0; //счетчик для масситва row

using (SqlDataReader MyRead = cmd3.ExecuteReader())

{

First:

while (MyRead.Read())

{

iRow = 0;

int instance = Convert.ToInt32(MyRead["Id_instance"].ToString().Trim());

for (int j = 0; j < dataPublication.ColumnCount; j++)

{

string attr = dataPublication.Columns[j].Name;

string connection3 = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\комп1\Dropbox\HSE(4курс)\ВКР\Record System\Record System\SNBD.mdf;Integrated Security=True";

SqlConnection conn3 = newSqlConnection(connection3);

conn3.Open();

SqlCommand cmd4 = newSqlCommand("Select typeAttr From Attribute Where Id_attribute = @nameColumn", conn3);

cmd4.Parameters.AddWithValue("@nameColumn", attr);

using (SqlDataReader MyReader = cmd4.ExecuteReader())

{

MyReader.Read();

type = MyReader["typeAttr"].ToString().Trim();

}

conn3.Close();

if (type == "строковый")

{

conn3.Open();

SqlCommand cmd5 = newSqlCommand("Select value from String Where id_instance = @instance and id_attribute = @attribute", conn3);

cmd5.Parameters.AddWithValue("@instance", instance);

cmd5.Parameters.AddWithValue("@attribute", attr);

using (SqlDataReader MyReader = cmd5.ExecuteReader())

{

MyReader.Read();

row[iRow] = MyReader["value"].ToString().Trim();

iRow++;

}

}

if (type == "числовой")

{

conn3.Open();

SqlCommand cmd5 = newSqlCommand("Select value from Integer Where id_instance = @instance and id_attribute = @attribute", conn3);

cmd5.Parameters.AddWithValue("@instance", instance);

cmd5.Parameters.AddWithValue("@attribute", attr);

using (SqlDataReader MyReader = cmd5.ExecuteReader())

{

MyReader.Read();

if (attr != "Автор")

{

row[iRow] = MyReader["value"].ToString().Trim();

iRow++;

}

else

{

if (attr == "Автор"&&Convert.ToInt32(MyReader["value"].ToString().Trim()) == id_teacher)

{

row[iRow] = labelName.Text;

iRow++;

}

else

goto First;

}

}

}

if (type == "дата")

{

conn3.Open();

SqlCommand cmd5 = newSqlCommand("Select value from Date Where id_instance = @instance and id_attribute = @attribute", conn3);

cmd5.Parameters.AddWithValue("@instance", instance);

cmd5.Parameters.AddWithValue("@attribute", attr);

using (SqlDataReader MyReader = cmd5.ExecuteReader())

{

MyReader.Read();

row[iRow] = MyReader["value"].ToString().Trim();

iRow++;

}

}

}

dataPublication.Rows.Add(row);

}

conn2.Close();

}

}

privatevoid butAdd_Click(object sender, EventArgs e)

{

//создаем массив, в котором содержатся названия столбцов в таблице

nameColumn = newstring[dataPublication.ColumnCount];

for (int i = 0; i < dataPublication.ColumnCount; i++)

nameColumn[i] = dataPublication.Columns[i].Name;

this.Hide();

AddScienceActivity form = newAddScienceActivity();

form.ShowDialog();

}

Форма «Учебно-методическаядеятельность»

privatevoid Education_Load(object sender, EventArgs e)

{

conn.Open();

SqlCommand cmd = newSqlCommand("Select * From Person Where Id_person = @id_person", conn);

cmd.Parameters.AddWithValue("@id_person", id_teacher);

using (SqlDataReader MyReader = cmd.ExecuteReader())

{

while (MyReader.Read())

{

labelFio.Text = MyReader["f_name"].ToString().Trim() + " " + MyReader["i_name"].ToString().Trim() + " " + MyReader["o_name"].ToString().Trim();

}

}

conn2.Open();

//Выбираем все существующие в бд сущности, соответствующие конкретному виду деятельности

SqlCommand cmd1 = newSqlCommand("Select Id_Entity From Entity Where typeEnt = 2", conn2);

using (SqlDataReader MyReader = cmd1.ExecuteReader())

{

while (MyReader.Read())

{

//имясущности

string parent = MyReader["Id_Entity"].ToString().Trim();

comboBox1.Items.Add(parent);

}

}

conn.Close();

conn2.Close();

}

privatevoid comboBox1_SelectedIndexChanged(object sender, EventArgs e)

{

}

privatevoid buttSearch_Click(object sender, EventArgs e)

{

Tabledata.Rows.Clear();

entity = comboBox1.Text;

int i = 0;

conn2.Open();

SqlCommand cmd = newSqlCommand("Select Count(*) From Structure_EA Where id_entity = @entity", conn2);

cmd.Parameters.AddWithValue("@entity", entity);

using (SqlDataReader MyRead = cmd.ExecuteReader())

{

while (MyRead.Read())

{

string s = MyRead[0].ToString().Trim();

Tabledata.ColumnCount = Convert.ToInt32(s);

Tabledata.ColumnHeadersVisible = true;

}

}

conn2.Close();

conn2.Open();

//запрос на выбор всех записей, принадлежащих выбранной сущности

SqlCommand cmd2 = newSqlCommand("Select id_attribute, type From Structure_EA Where id_entity = @entity", conn2);

cmd2.Parameters.AddWithValue("@entity", entity);

using (SqlDataReader MyReader = cmd2.ExecuteReader())

{

while (MyReader.Read())

{

//Заполнениешапкитаблицы

string attr = MyReader["id_attribute"].ToString().Trim();

Tabledata.Columns[i].Name = attr;

i++;

}

}

conn2.Close();

//Вывод данных в таблицу

conn2.Open();

SqlCommand cmd3 = newSqlCommand("Select Id_instance From Instance_Entity Where id_entity = @entity", conn2);

cmd3.Parameters.AddWithValue("@entity", entity);

string type;

string [] row = newstring [Tabledata.ColumnCount]; //собираемстрокуэкземпляра

int iRow = 0; //счетчик для масситва row

using (SqlDataReader MyRead = cmd3.ExecuteReader())

{

First:

while (MyRead.Read())

{

iRow = 0;

int instance = Convert.ToInt32(MyRead["Id_instance"].ToString().Trim());

for (int j = 0; j < Tabledata.ColumnCount; j++)

{

string attr = Tabledata.Columns[j].Name;

string connection3 = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\комп1\Dropbox\HSE(4курс)\ВКР\Record System\Record System\SNBD.mdf;Integrated Security=True";

SqlConnection conn3 = newSqlConnection(connection3);

conn3.Open();

SqlCommand cmd4 = newSqlCommand("Select typeAttr From Attribute Where Id_attribute = @nameColumn", conn3);

cmd4.Parameters.AddWithValue("@nameColumn", attr);

using (SqlDataReader MyReader = cmd4.ExecuteReader())

{

MyReader.Read();

type = MyReader["typeAttr"].ToString().Trim();

}

conn3.Close();

if (type == "строковый")

{

conn3.Open();

SqlCommand cmd5 = newSqlCommand("Select value from String Where id_instance = @instance and id_attribute = @attribute", conn3);

cmd5.Parameters.AddWithValue("@instance", instance);

cmd5.Parameters.AddWithValue("@attribute", attr);

using (SqlDataReader MyReader = cmd5.ExecuteReader())

{

MyReader.Read();

row[iRow] = MyReader["value"].ToString().Trim();

iRow++;

}

}

if (type == "числовой")

{

conn3.Open();

SqlCommand cmd5 = newSqlCommand("Select value from Integer Where id_instance = @instance and id_attribute = @attribute", conn3);

cmd5.Parameters.AddWithValue("@instance", instance);

cmd5.Parameters.AddWithValue("@attribute", attr);

using (SqlDataReader MyReader = cmd5.ExecuteReader())

{

MyReader.Read();

if (attr == "Автор"&&Convert.ToInt32(MyReader["value"].ToString().Trim()) == id_teacher)

{

row[iRow] = labelFio.Text;

iRow++;

}

else

goto First;

}

}

if (type == "дата")

{

conn3.Open();

SqlCommand cmd5 = newSqlCommand("Select value from Date Where id_instance = @instance and id_attribute = @attribute", conn3);

cmd5.Parameters.AddWithValue("@instance", instance);

cmd5.Parameters.AddWithValue("@attribute", attr);

using (SqlDataReader MyReader = cmd5.ExecuteReader())

{

MyReader.Read();

row[iRow] = MyReader["value"].ToString().Trim();

iRow++;

}

}

}

Tabledata.Rows.Add(row);

}

conn2.Close();

}

Форма «Добавитьновуюзапись»

privatevoid AddNewInstance_Load(object sender, EventArgs e)

{

nameColumns = Education.nameColumn; //значенияполей

controlArray = newControl[nameColumns.Length];

entity = Education.entity; //для какой сущности происходит заполнение

for (int i = 0; i < nameColumns.Length; i++) //созданиеподписейдляполей

{

controlArray[i] = newLabel() { Name = "label" + nameColumns[i].ToString(), Location = newPoint(20, (i + 1) * 30), Text = nameColumns[i].ToString(), Visible = true };

this.Controls.Add(controlArray[i]);

}

for (int i = 0; i < nameColumns.Length; i++) //созданиеполей

{

if (nameColumns[i] == "Автор")

{

conn.Open();

ComboBox cbAutor = newComboBox();

cbAutor.Location = newPoint(150, (i + 1) * 30);

cbAutor.Size = newSize(300, 20);

controlArray[i] = cbAutor;

this.Controls.Add(controlArray[i]);

SqlCommand cmd = newSqlCommand("Select f_name, i_name, o_name From Person", conn);

using (SqlDataReader MyReader = cmd.ExecuteReader())

{

while (MyReader.Read())

{

//именавсехавторов

string autor = MyReader["f_name"].ToString().Trim() + " " + MyReader["i_name"].ToString().Trim() + " " + MyReader["o_name"].ToString().Trim();

cbAutor.Items.Add(autor);

}

}

conn.Close();

}

else

{

controlArray[i] = newTextBox() { Name = nameColumns[i].ToString(), Location = newPoint(150, (i + 1) * 30), Text = "", Size = newSize(300, 20) };

this.Controls.Add(controlArray[i]);

}

}

}

privatevoid butAdd_Click(object sender, EventArgs e)

{

conn2.Close();

//добавление id нового экземпляра класса

conn2.Open();

var cmd1 = newSqlCommand("Select Count(*) From Instance_Entity", conn2);

string getValue = cmd1.ExecuteScalar().ToString();

int i = Convert.ToInt32(getValue) + 1;

SqlCommand cmd = newSqlCommand("Insert Into [Instance_Entity] (Id_instance, id_entity) VALUES (@Id_instance, @entity)", conn2);

cmd.Parameters.AddWithValue("@entity", entity);

cmd.Parameters.AddWithValue("@Id_instance", i);

cmd.ExecuteNonQuery();

//определяем тип атрибута и записываем в соответствующие таблицы

for (int j = 0; j < nameColumns.Length; j++)

{

SqlCommand cmd2 = newSqlCommand("Select typeAttr From Attribute where id_attribute = @attribute", conn2);

cmd2.Parameters.AddWithValue("@attribute",nameColumns[j]);

if (nameColumns[j] == "Автор")

{

string[] nameAutor = controlArray[j].Text.Split(' ');

conn.Open();

SqlCommand cmd3 = newSqlCommand("Select Id_person From Person Where f_name = @f and i_name = @i and o_name = @o",conn);

cmd3.Parameters.AddWithValue("@f", nameAutor[0]);

cmd3.Parameters.AddWithValue("@i", nameAutor[1]);

cmd3.Parameters.AddWithValue("@o", nameAutor[2]);

int idAutor = Convert.ToInt32(cmd3.ExecuteScalar().ToString());//id автора

AddInstanceInteger(i, nameColumns[j], idAutor);

}

else

{

string type = cmd2.ExecuteScalar().ToString();

switch (type)

{

case"строковый": AddInstanceString(i, nameColumns[j], controlArray[j].Text.ToString()); break;

case"числовой": AddInstanceInteger(i, nameColumns[j], Convert.ToInt32(controlArray[j].Text)); break;

case"дата": AddInstanceDate(i, nameColumns[j], controlArray[j].Text.ToString()); break;

default: break;

}

}

}

conn2.Close();

this.Hide();

Education form = newEducation();

form.ShowDialog();

}

///<summary>

///ДобавлениезначенияэкземпляравтаблицуString

///</summary>

///<param name="instance">id экзепмляра</param>

///<param name="attribute">атрибут</param>

///<param name="value">значение</param>

publicvoid AddInstanceString (int instance, string attribute, string value)

{

var cmd1 = newSqlCommand("Select Count(*) From String", conn2);

string getValue = cmd1.ExecuteScalar().ToString();

int i = Convert.ToInt32(getValue); //количество строк в таблице, для определения ключа

SqlCommand cmd = newSqlCommand("Insert Into String (Id_value, id_instance, id_attribute, value) Values (@Id_value, @id_instance, @id_attribute, @value)", conn2);

cmd.Parameters.AddWithValue("@Id_value", i);

cmd.Parameters.AddWithValue("@id_instance", instance);

cmd.Parameters.AddWithValue("@id_attribute", attribute);

cmd.Parameters.AddWithValue("@value", value);


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.