диплом (1229326), страница 4

Файл №1229326 диплом (Программный комплекс учета техники для отдела информатизации и связи Арбитражного суда Хабаровского края) 4 страницадиплом (1229326) страница 42020-10-06СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 4)

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

Рисунок 26 – Форма редактирования информации об устройстве

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

Справочник сотрудников изображен на рисунке 27.

Рисунок 27 – Справочник сотрудников

4.3 Реализация функционала программного комплекса

Для хранения настроек базы данных используется объект Properties.Settings, встроенный в Microsoft Visual Studio [12-19].

Было создано 4 объекта:

  • Server – хранит адрес базы данных;

  • UserName – хранит логин пользователя;

  • Password – хранит пароль пользователя;

  • BaseName – хранит имя базы данных.

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

Листинг 1. Сохранение введенных в форме подключения данных в файл конфигурации

private void SaveToDBReg_Click(object sender, EventArgs e)

{

Properties.Settings.Default.Server = ServerToDBReg.Text;

Properties.Settings.Default.UserName = UserNameToDBReg.Text;

Properties.Settings.Default.Password = PasswordToDBReg.Text;

Properties.Settings.Default.BaseName = DBName.Text;

Properties.Settings.Default.Save();

}

}

Подключение к базе данных с использованием языка C#, осуществляется с помощью строки подключения: server=адрес сервера; uid=логин;pwd=пароль; database=имя базы;" [11].

Данная строка используется в базовом классе DBConnection, в функции инициализации. Класс включает в себя:

  1. функцию InitializeDB – необходима для объявления параметров подключения к базе данных и его инициализации.

  2. функцию OnConnection – осуществляет подключение к базе, а также обрабатывает исключение, которые могут произойти в результате сбоев. Данная функция возвращает значение true, если произошло подключение, и значение false, в случае сбоя.

  3. функцию CloseConnection – осуществляет отключение от базы. Возвращает значение true.

Листинг 2. Функция инициализации

protected void InitializeDB()

{

var defaultSettings = Properties.Settings.Default;

connect = string.Format("server={0};uid={1};pwd={2};database={3};", defaultSettings.Server, defaultSettings.UserName, defaultSettings.Password, defaultSettings.BaseName);

MySqlConnection conn = new MySqlConnection(connect);

}



Листинг 3. Функция подключения к базе данных

protected bool OnConnection()

{

try

{

conn.Open();

return true;

}

catch (MySqlException ex)

{

switch (ex.Number)

{

case 0:

int num1 = (int)MessageBox.Show("Отсутствует подключение к серверу.");

break;

case 1045:

int num2 = (int)MessageBox.Show("Неверный логин или пароль");

break;

}

return false;

}

}

Ниже представлены листинги кода отдельный операций, которые выполняются при работе с главной формой.

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

  1. перед началом работы дерево записей, содержащий список категории, очищается;

  2. производится проверка на возможность подключиться к базе данных, в случае если проверка удачна, происходит подключение к базе;

  3. выполняет SQL- запрос, на получение данных из таблицы category;

  4. создается новый экземпляра класса DataSet обеспечивающие хранение данных, полученных из базы MySQL, и выполняет функцию кэша;

  5. заполняется только что созданный экземпляр класса DataSet данными из таблицы category;

  6. производится перечисление всех строк таблицы category в кэше DataSet;

  7. создается новый экземпляр узла объекта treeView;

  8. заполняются пустые поля id, name, isLock данными, которые были получены из перечисленных объектов;

  9. добавляется новый объект категории из полученных данных в узел;

  10. закрывается подключение к базе данных.

Листинг 4. Получение категорий из базы данных и отображения в главной форме

void GetCat()

{

// Очищение списка категорий на главной форме

treeView1.Nodes.Clear();

if (OnConnection())

{

string qeury = "select *from category";

MySqlDataAdapter mda = new MySqlDataAdapter(qeury, conn);

/* Создание нового экземпляра для хранения данных полученные из базы данных в кэше */

DataSet ds = new DataSet();

// Заполнение кэша данными из таблицы category

mda.Fill(ds, "category");

// Перечисление данных в созданном кэше

foreach (DataRow dr in ds.Tables["category"].Rows)

{

// Создание нового экземпляр узла объекта treeView

TreeNode tn = new TreeNode();

/* Заполнение полей из полученных данных, для последующего добавления в узел */

string id = dr["catID"].ToString();

string name = dr["cat_name"].ToString();

bool isLock = Convert.ToBoolean(dr["cantDelete"].ToString());

tn.Text = name;

tn.Tag = id;

treeView1.Nodes.Add(tn);

// Добавление нового значения в узел, объекта treeView

catInfo[id] = isLock;

}

CloseConnection();

}

}



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

  1. создание нового пустого объекта, типа string;

  2. добавление только что созданного объекта в узел;

  3. установление метки, разрешающей редактировать текст в выбранном узле;

  4. проверка активации режима редактирования;

  5. после окончания редактирования выполнение проверки того, что текст в данном узле не пустой. В случае, если в узле отсутствует текст, то узел удаляется;

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

Листинг 5. Создания новой категории

void CreateCat()

{

// Создание пустого поля типа string

string empty = "";

// Добавление его в узел

treeView1.Nodes.Add(empty);

// Выбор данного узла

treeView1.SelectedNode = treeView1.Nodes[treeView1.Nodes.Count - 1];

NodeRename();

}

void NodeRename()

{

var selectNode = treeView1.SelectedNode;

/* Устанавливается метка, разрешающая редактировать текст и выполняется проверка активации редактирования */

treeView1.LabelEdit = true;

if (!selectNode.IsEditing)

selectNode.BeginEdit();

}



private void treeView1_AfterLabelEdit(object sender, NodeLabelEditEventArgs e)

{

if (e.Label == null && !string.IsNullOrEmpty(treeView1.SelectedNode.Text)) { isNew = false; return; }

if (string.IsNullOrEmpty(e.Label))

{

e.CancelEdit = true;

isNew = false;

treeView1.Nodes.Remove(treeView1.SelectedNode);

}

else

{

e.Node.EndEdit(true);

e.Node.Text = e.Label;

treeView1.LabelEdit = false;

NodeNameUpdate();

}

}

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

Листинг 6. Обновление данных о категориях

void NodeNameUpdate()

{

if (OnConnection())

{

// Создание SQL-запрос на обновление категории по заданному имение или id

string qeury = string.Empty;

if (isNew)

qeury = "INSERT INTO category (cat_name) VALUES(@catName)";

else

qeury = "UPDATE category SET cat_name=@catName WHERE catID=@id";

MySqlDataAdapter mda = new MySqlDataAdapter(qeury, conn);

// Подстановка значений в SQL-запрос из полей

mda.SelectCommand.Parameters.AddWithValue("@catName", treeView1.SelectedNode.Text);

mda.SelectCommand.Parameters.AddWithValue("@id", treeView1.SelectedNode.Tag);

// Выполнение SQL-запроса и закрытие подключения к базе данных

mda.SelectCommand.ExecuteNonQuery();

CloseConnection();

}

isNew = false;

// Создание таймера для обновления списка категорий в приложение

timer = new Timer();

timer.Interval = 500;

timer.Tick += delegate (Object o, EventArgs e)

{ GetCat(); timer.Stop(); };

timer.Start();

}

Заполнение данных об устройстве, происходит после выбора категории.

Листинг 7. Обновление данных об устройстве в выбранной категории

public void UpdateTable()

{

if (OnConnection())

{

/* Создание SQL-запроса на обновление информации об оборудование от заданной категории */

string qeury = string.Format("select id, brand, model, work_nubmer, member,member_directory_id, cur_status from equipment join member_directory,status where category_id = {0} and member_directory_id = memberID and status_id = statusID", treeView1.SelectedNode.Tag);

Dictionary<string, string> dataSet = new Dictionary<string, string>();

MySqlDataAdapter mda = new MySqlDataAdapter(qeury, conn);

MySqlCommandBuilder cmd = new MySqlCommandBuilder(mda);

/* Создание нового экземпляра для хранения данных полученные из базы данных в кэше */

DataSet ds = new DataSet();

/* Заполнение кэша данными из SQL-запроса и установка наименований полей в таблице */

mda.Fill(ds);

dataGridView1.DataSource = ds.Tables[0];

dataGridView1.Columns[0].Visible = false;

dataGridView1.Columns[5].Visible = false;

dataGridView1.Columns[1].HeaderText = "Бренд";

dataGridView1.Columns[2].HeaderText = "Модель";

dataGridView1.Columns[3].HeaderText = "Инвентарный номер";

dataGridView1.Columns[4].HeaderText = "Сотрудник";

dataGridView1.Columns[6].HeaderText = "Статус";

dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;

CloseConnection();

}

}

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

  1. GetName – получает список брэндов оборудования из базы данных от выбранной категории и добавляет их в коллекцию строк, для отображения списка при заполнения текстового поля пользователем. Листинг приведен в приложение Б (1);

  2. GetModel – получает список моделей оборудования с заданного бренда пользователем в текстовом поле и добавляет их в коллекцию строк, для отображения списка при заполнения текстового поля пользователем. Листинг приведен в приложение Б (2);

  3. GetMemberFullInfo – получает информацию о сотрудниках и выполняет аналогичные действия приведенных функций выше. Листинг приведен в приложение Б (3);

  4. GetSN – получает список серийных номеров оборудования и выполняет аналогичные действия приведенных функций выше.

  5. GetWN – получает список инвентарных номеров оборудования и выполняет аналогичные действия приведенных функций выше.

  6. AddEquipment – выполняет SQL-запрос на добавление новой информации в базу данных. Листинг приведен в приложение Б (4).

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

  1. GetFullInfo – выполняет SQL-запрос на получение полной информации выбранного оборудования и заполняет поля данными. Листинг приведен в приложение В (1);

  2. Обработчики событий OnClick – отправляют SQL-запрос на обновление информации о текущем статусе и инвентарном номере. Листинг приведен в приложение B (2).

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

  1. GetMember - выполняет SQL-запрос на получение списка сотрудников и заполняет им таблицу. Листинг приведен в приложение Г (1);

  2. GetEquipment - выполняет SQL-запрос на получение списка закрепленной техники за выбранным сотрудником и заполняет им таблицу оборудования. Листинг приведен в приложение Г (2).

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

Характеристики

Список файлов ВКР

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6372
Авторов
на СтудИзбе
309
Средний доход
с одного платного файла
Обучение Подробнее