МДК 04.01 «Обеспечение проектной деятельности» отчет. Министерство образования и науки Республики Татарстан. Отчет мдк 04. 01 Обеспечение проектной деятельности
![]()
|
Министерство образования и науки Республики Татарстан ГАПОУ «» ОТЧЕТ МДК 04.01 «Обеспечение проектной деятельности» студента 537 группы специальности 09.02.05 Прикладная информатика Оценка _____(________) Руководитель: __________________() «____»________20 г. Студент Бугульма,2017 СодержаниеВведение 3 1 Процесс создания программы 4 2 Реализация программы 5 Заключение 9 Список использованных источников 10 Приложение А 11 ВведениеСовременная экономика немыслима без информации. Тысячи предприятий, миллионы налогоплательщиков, триллионы рублей, биржевые котировки, реестры акционеров — все эти информационные потоки необходимо оценить, обработать, сделать необходимые выводы, принять правильное решение. Для того, чтобы специалист-экономист мог принимать обоснованные решения, наряду с традиционными знаниями, такими как основы менеджмента, основы внешнеэкономической деятельности, банковское дело, административное управление, налогообложение, статистика он должен владеть и информационными системами. Актуальность темы: У каждой швеи есть своя клиентская база, с их наименованиями и ценами. Но в XXI веке, в эру информационных технологий, везти клиентскую базу по старинке, записывая всё в тетрадь не удобно, ведь в тетрадке можно запутаться с заказами. Объект: швейное дело, направленное на облегчение поиска и приёма заказов. Цель проекта: создать автоматизированную информационную систему для швеи. Задачи проекта: Ознакомится с фирмой швеи, её заказами и клиентами. Разработать структуру базы данных. Реализовать регистрацию клиентов. Просмотр клиентом видов услуг. Быстрый поиск. Фильтрация. Реализовать приложение в Visual Studio на языке программирования C# 1 Процесс создания программыДля пользователя самое главное в конечном продукте, лёгкость и понятность интерфейса, и в этой программе уделялось не малое значение интерфейсу. И в ходе проектной работы интерфейс программы вполне подходит для среднестатистического пользователя. Для того, чтобы нам приступить к разработке программы, нужно запустить приложение Visual Studio 2017. Следующим пунктом, нам необходимо создать новый проект приложения Windows Forms C#. Для этого, нажимаем, файл – создать новый проект, в установочных шаблонах выбираем C# и выбираем Windows Forms. ![]() Рисунок 1 – «Главное окно для создания проекта» Для того что бы форма приобрела корректный вид, на неё нужно добавить кнопки и прочие функциональные вещи. Всё это делается, переходом на вкладку панель элементов: ![]() Рисунок 2 – «Панель элементов» После этих действий можно начать добавлять различные функциональные элементы в форму. 2 Реализация программыДля начала создаём окно для ввода логина и пароля. В этом окне размещаем 2 поля «label» для ввода логина и пароля, а также 3 кнопки «button» и переименовываем их в «Вход», «Регистрация», «Закрыть». Для того, чтобы они работали пишем для них код (см. Приложение А). ![]() Рисунок 3 – «Главное окно входа в программу» Когда пользователь нажимает на кнопку «Регистрация» (см. рисунок 3), открывается окно для регистрации. Здесь пользователь вводит свои персональные данные и они автоматически сохраняются в базу данных этой программы. Если не все данные заполнены, вылезает окно с предупреждением «Заполните все поля». Когда все поля заполнены, нажимаем на кнопку «Зарегистрироваться» (см. Приложение А). ![]() ![]() Рисунок 4. «Регистрация» Нажимая на кнопку «Закрыть» (см. рисунок 3), система спрашивает нас, действительно вы хотите выйти или можно остаться. Если нажать «нет», то пользователь остаётся в этой программе и продолжает работать. Если нажать «да», то программа закрывается (см. Приложение А). ![]() Рисунок 5. «Закрытие программы» Для входа программу созданы два типа пользователей: администратор (швея) и обычный пользователь (клиент). Войдём в программу под правами администратора (см. Приложение А). ![]() ![]() Рисунок 6 – «Вход с правами администратора» Окно программы для администратора имеет две вкладки: «Клиент» и «Заказы». Во вкладке «Клиент» отображаются все зарегистрированные клиенты, и клиенты которые добавлены швеёй. Во вкладке «Заказы» отображаются все заказы клиентов, а также администратор может отмечать тех клиентов, которым заказ уже сделан. Для облегчения поиска нужных клиентов и заказов, во вкладках реализована фильтрация (см. Приложение А). ![]() ![]() Рисунок 7. «Клиент и заказы» Войдём в программу как обычный пользователь (см. Приложение А) ![]() ![]() Рисунок 8 «Вход в программу с правами клиента» Окно клиента, как и окно администратора, имеет две вкладки: «Прайс-лист» и «Заказы». Во вкладке «Прайс-лист», клиент может увидеть вид деятельности, за который берётся швея и их цену. Во вкладке «Заказы», клиент может видеть свой заказ, если он помечен галочкой, то он готов (см. Приложение А). ![]() ![]() Рисунок 9 «Окно для клиента» ЗаключениеВ результате выполнения задания проектной работы был разработан программный продукт АИС «Пошив и ремонт одежды». Для разработки использовались программа создания БД Access и средства визуального объектно-ориентированного программирования Visual Studio 2017. Также в ходе проектной работы были решены следующие задачи: спроектирована структура базы данных и реализована в Access; реализована регистрация пользователя, быстрый поиск и фильтрация; Разработанную автоматизированную информационную систему легко дополнить, при необходимости разработки профессиональной автоматизированной информационной системы. В перспективе база данных будет увеличиваться с приходом новых клиентов с их заказами. Данная АИС существенно облегчит хранения списка клиентов швеи, а клиентам даст возможность просматривать услуги, которые предоставляет швея. Список использованных источниковАгуров П. C#. Разработка компонентов в MS Visual Studio 2010/2013. - СПб.: Питер, 2013. - 480с. Агальцов В.П. Базы данных: учебное пособие для СПО. - М: Мир, 2012.- 376 с.Джон Шарп " Microsoft Visual C#" Питер, 2017, 8-е изд., 848 стр. Павловская Т.А. C#. Программирование на языке высокого уровня. Учебник для вузов. - СПб.: Питер, 2014. - 432с. Дунаев В.В. Базы данных. Язык SQL для студента: 2-е изд. доп. и перераб. - Спб.: БХВ-Петербург, 2013. Иванова Г. С. Технология программирования: учеб. для вузов. - 2-е изд., стер. - М.: Изд-во МГТУ им. Н. Э. Баумана, 2013. Шилдт, Г.. С# 4.0: полное руководство. Пер. с англ. / Герберт Шилдт. - М.: ООО "И.Д. Вильяме", 2011. - 1056 с. Грабер М. Введение в SQL: Пер. с англ. - М.: “ЛОРИ”, 2012.- 341с., ил. Основы автоматизированных информационных систем. Обеспечение автоматизированных информационных систем: учеб. пособ. для вузов / разраб. В.Н.Кузубовым. - М: Совр. Гум. Ун-т, 2011. http://www.cyberforum.ru/ Приложение АКласс EntityManager. public static class EntityManager static пошив_и_ремонт_одеждыDataSet пошивИРемонтОдеждыDataSet = new пошив_и_ремонт_одеждыDataSet(); private static ЗаказыTableAdapter заказыTableAdapter = new ЗаказыTableAdapter(); private static ПользователиTableAdapter пользователиTableAdapter = new ПользователиTableAdapter(); private static Цены_работTableAdapter ценыРаботTableAdapter = new Цены_работTableAdapter(); static EntityManager() // Костыль заменяет оригинальную команду обновления строк во избежание ошибки "Нарушение параллелизма" var заказыUpdateCommand = заказыTableAdapter.Adapter.UpdateCommand; заказыUpdateCommand.CommandText = "UPDATE `Заказы` SET `Номер клиента` = ?, `заказ готов` = ?, `Вид работы` = ?," + " `Тип одежды` = ?, `Цена` = ? WHERE (`Идентификатор` = ?)"; var parameters = заказыUpdateCommand.Parameters; while (parameters.Count > 6) заказыTableAdapter.Adapter.UpdateCommand.Parameters.RemoveAt(6); public static ПользователиDataTable UserDataTable get return пошивИРемонтОдеждыDataSet.Пользователи; public static ЗаказыDataTable OrderDataTable get return пошивИРемонтОдеждыDataSet.Заказы; public static Цены_работDataTable WorkPrices get return пошивИРемонтОдеждыDataSet.Цены_работ; public static void UpdateUsers() пользователиTableAdapter.Adapter.Update(UserDataTable); public static void UpdateOrders() заказыTableAdapter.Adapter.Update(OrderDataTable); OrderDataTable.AcceptChanges(); public static void UpdateWorkPrices() ценыРаботTableAdapter.Adapter.Update(WorkPrices); /// /// Возвращает отфильтрованную таблицу заказов по условию /// /// /// public static ЗаказыDataTable FilterOrders(string condition = null) var whereCondition = string.Empty; if (!string.IsNullOrEmpty(condition)) whereCondition = $"WHERE {condition}"; var filterOrderCommand = new OleDbCommand() Connection = заказыTableAdapter.Connection, CommandText = "SELECT Идентификатор, [Номер клиента], [вид работы], [тип одежды], [заказ готов] " + $"FROM Заказы {whereCondition}", CommandType = global::System.Data.CommandType.Text; FillFilteredTable(заказыTableAdapter.Adapter, filterOrderCommand, OrderDataTable); return OrderDataTable; /// /// Возвращает отфильтрованную таблицу пользователей по условию /// /// /// public static ПользователиDataTable FilterUsers(string condition = null) var whereCondition = string.Empty; if (!string.IsNullOrEmpty(condition)) whereCondition = $"WHERE {condition}"; var filterUserCommand = new OleDbCommand() Connection = пользователиTableAdapter.Connection, CommandText = "SELECT Идентификатор, Фамилия, Имя, Отчество, [номер телефона], логин, пароль, " + $"[E-mail], [Является администратором] FROM Пользователи {whereCondition}", CommandType = global::System.Data.CommandType.Text; FillFilteredTable(пользователиTableAdapter.Adapter, filterUserCommand, UserDataTable); return UserDataTable; /// /// Возвращает отфильтрованную таблицу цен работ по условию /// /// /// public static Цены_работDataTable FilterWorkPrices(string condition = null) var whereCondition = string.Empty; if (!string.IsNullOrEmpty(condition)) whereCondition = $"WHERE {condition}"; var filterUserCommand = new OleDbCommand() Connection = ценыРаботTableAdapter.Connection, CommandText = "SELECT Идентификатор, [Вид работы], [Тип одежды], Цена" + $" FROM [Цены работ] {whereCondition}", CommandType = global::System.Data.CommandType.Text; FillFilteredTable(ценыРаботTableAdapter.Adapter, filterUserCommand, WorkPrices); return WorkPrices; /// /// Создает строку для фильтрации: всевозможные комбинации по сравнению предоставленных полей с текстом поиска /// /// /// /// public static string GetFilterStringByFields(string[] fields, string searchText) var findValues = string.IsNullOrEmpty(searchText) ? new string[] { } : searchText.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); var filterStrings = new List foreach (var findingField in fields) foreach (var findingValue in findValues) filterStrings.Add($"{findingField} LIKE '%{findingValue}%'"); return string.Join(" OR ", filterStrings); /// /// Объединяет условия фильтрации заданным логическим оператором /// /// /// /// /// public static string UnionFilter(string leftPart, string rightPart, string @operator = "AND") if (string.IsNullOrEmpty(leftPart)) return rightPart; if (string.IsNullOrEmpty(rightPart)) return leftPart; return $"({leftPart}) {@operator} ({rightPart})"; /// /// Заполняет таблицу по фильтрующей команде выбора строк /// /// /// /// private static void FillFilteredTable(OleDbDataAdapter adapter, OleDbCommand selectCommand, DataTable table) var oldSelectComand = adapter.SelectCommand; adapter.SelectCommand = selectCommand; table.Clear(); adapter.Fill(table); adapter.SelectCommand = oldSelectComand; Начальное окно регистрации private void buttonRegistration_Click(object sender, EventArgs e) Регистрация открыть = new Регистрация(); открыть.ShowDialog(); private void buttonCancel_Click(object sender, EventArgs e) if (MessageBox.Show("Вы действительно хотите закрыть программу?", "Закрытие программы", MessageBoxButtons.YesNo, MessageBoxIcon.Stop) == DialogResult.Yes) Close(); private void buttonEntry_Click(object sender, EventArgs e) var loginCondition = $"логин = '{textBoxLogin.Text}' AND пароль = '{textBoxPassword.Text}' "; var user = EntityManager.FilterUsers(loginCondition).FirstOrDefault(); if (user != null) MessageBox.Show($"Привет, {user.Имя}!"); if (user.Является_администратором) Вход_в_программу формаАдминистратора = new Вход_в_программу(); формаАдминистратора.Show(); else Вход_в_программу_Клиент формаКлиента = new Вход_в_программу_Клиент(user.Идентификатор); формаКлиента.Show(); else MessageBox.Show("Пользователь не найден"); private void textBoxLogin_KeyDown(object sender, KeyEventArgs e) if (e.KeyCode == Keys.Enter) if (textBoxPassword.Text == "") textBoxPassword.Focus(); else buttonEntry.PerformClick(); Вход в программу «Клиент» private readonly string ordersFilter; private string textBoxOrdersFilter; private string readyOrNotReadyOrdersFilter; public Вход_в_программу_Клиент(Int64 userId) this.ordersFilter = $"([Номер клиента] = {userId})"; InitializeComponent(); private void Вход_в_программу_Клиент_Load(object sender, EventArgs e) this.заказыДляКлиентаBindingSource.Filter = this.textBoxOrdersFilter = ordersFilter; this.заказы_для_клиентаTableAdapter.Fill(this.пошив_и_ремонт_одеждыDataSet.Заказы_для_клиента); this.цены_работ_для_клиентаTableAdapter.Fill(this.пошив_и_ремонт_одеждыDataSet.Цены_работ_для_клиента); private void orderFilterTextBox_TextChanged(object sender, EventArgs e) var findFields = new[] { "[Вид работы]", "[Тип одежды]" }; var filterString = EntityManager.GetFilterStringByFields(findFields, this.orderFilterTextBox.Text).Trim(); this.textBoxOrdersFilter = ordersFilter; if (!string.IsNullOrEmpty(filterString)) this.textBoxOrdersFilter += $" AND ({filterString})"; this.заказыДляКлиентаBindingSource.Filter = EntityManager.UnionFilter( this.textBoxOrdersFilter, this.readyOrNotReadyOrdersFilter); private void priceListFilterTextBox_TextChanged(object sender, EventArgs e) var findFields = new[] { "[Вид работы]", "[Тип одежды]" }; var filterString = EntityManager.GetFilterStringByFields(findFields, this.priceListFilterTextBox.Text).Trim(); this.ценыРаботДляКлиентаBindingSource.Filter = filterString; private void clientOrdersFilterCheckBox_CheckStateChanged(object sender, EventArgs e) switch (this.clientOrdersFilterCheckBox.CheckState) case CheckState.Checked: this.readyOrNotReadyOrdersFilter = "[Заказ готов] = TRUE"; this.clientOrdersFilterCheckBox.Text = "Отображаются готовые заказы"; break; case CheckState.Indeterminate: this.readyOrNotReadyOrdersFilter = string.Empty; this.clientOrdersFilterCheckBox.Text = "Отображаются все заказы"; break; case CheckState.Unchecked: this.readyOrNotReadyOrdersFilter = "[Заказ готов] = FALSE"; this.clientOrdersFilterCheckBox.Text = "Отображаются неготовые заказы"; break; this.заказыДляКлиентаBindingSource.Filter = EntityManager.UnionFilter( this.textBoxOrdersFilter, this.readyOrNotReadyOrdersFilter); private void updateOrdersButton_Click(object sender, EventArgs e) this.заказы_для_клиентаTableAdapter.Fill(this.пошив_и_ремонт_одеждыDataSet.Заказы_для_клиента); Вход в программу «Администратор» const string FilterNonAdministrators = "([Является администратором] = FALSE)"; private string textBoxOrdersFilter; private string readyOrNotReadyOrdersFilter; private void Вход_в_программу_Load(object sender, EventArgs e) // TODO: данная строка кода позволяет загрузить данные в таблицу "пошив_и_ремонт_одеждыDataSet.Тип_одежды". При необходимости она может быть перемещена или удалена. this.тип_одеждыTableAdapter.Fill(this.пошив_и_ремонт_одеждыDataSet.Тип_одежды); // TODO: данная строка кода позволяет загрузить данные в таблицу "пошив_и_ремонт_одеждыDataSet.Вид_работ". При необходимости она может быть перемещена или удалена. this.вид_работTableAdapter.Fill(this.пошив_и_ремонт_одеждыDataSet.Вид_работ); this.заказы_с_клиентамиTableAdapter.Fill(this.пошив_и_ремонт_одеждыDataSet.Заказы_с_клиентами); this.пользователиBindingSource.Filter = FilterNonAdministrators; this.пользователиTableAdapter.Fill(this.пошив_и_ремонт_одеждыDataSet.Пользователи); /// /// Фильтрация пользователей /// /// /// private void clientFilterTextBox_TextChanged(object sender, EventArgs e) var findFields = new[] { "[номер телефона]", "Фамилия", "Имя", "Отчество" }; var filterString = EntityManager.GetFilterStringByFields(findFields, clientFilterTextBox.Text).Trim(); this.пользователиBindingSource.Filter = FilterNonAdministrators; if (!string.IsNullOrEmpty(filterString)) this.пользователиBindingSource.Filter += $" AND ({filterString})"; /// /// Добавление пользователя /// /// /// private void button2_Click(object sender, EventArgs e) (new ДобавлениеКлиента()).ShowDialog(); this.пользователиTableAdapter.Fill(this.пошив_и_ремонт_одеждыDataSet.Пользователи); /// /// Фильтрует заказы по строке поиска, учитывая фильтрацию по готовности /// /// /// private void orderFilterTextBox_TextChanged(object sender, EventArgs e) var findFields = new[] { "ФИО", "[вид работы]", "[тип одежды]" }; this.textBoxOrdersFilter = EntityManager.GetFilterStringByFields(findFields, orderFilterTextBox.Text).Trim(); this.заказыСКлиентамиBindingSource.Filter =EntityManager.UnionFilter( this.textBoxOrdersFilter, this.readyOrNotReadyOrdersFilter); /// /// Добавление заказов /// /// /// private void addOrderButton_Click(object sender, EventArgs e) (new Добавление_заказа()).ShowDialog(); this.заказы_с_клиентамиTableAdapter.Fill(this.пошив_и_ремонт_одеждыDataSet.Заказы_с_клиентами); /// /// Обновляет информацию в бд об отредактированном заказе /// /// /// private void dataGridViewReadyOrders_CellEndEdit(object sender, DataGridViewCellEventArgs e) var changedRow = (Заказы_с_клиентамиRow)((DataRowView)((DataGridView)sender).CurrentRow.DataBoundItem).Row; var orderTable = EntityManager.FilterOrders($"Идентификатор = {changedRow.Номер_заказа}"); orderTable[0].заказ_готов = changedRow.Заказ_готов; orderTable[0].Цена = changedRow.Цена; // TODO Сделать возможность редактирования вида работы и типа одежды // orderTable[0].Вид_работы = changedRow.Вид_работы; // orderTable[0].тип_одежды = changedRow.тип_одежды; EntityManager.UpdateOrders(); /// /// Обновляет информацию в бд об отредактированном клиенте /// /// /// private void dataGridViewClient_CellEndEdit(object sender, DataGridViewCellEventArgs e) var changedRow = (ПользователиRow)((DataRowView)((DataGridView)sender).CurrentRow.DataBoundItem).Row; var userTable = EntityManager.FilterUsers($"Идентификатор = {changedRow.Идентификатор}"); userTable[0].Идентификатор = changedRow.Идентификатор; userTable[0].Фамилия = changedRow.Фамилия; userTable[0].Имя = changedRow.Имя; userTable[0].Отчество = changedRow.Отчество; userTable[0].номер_телефона = changedRow.номер_телефона; userTable[0]._E_mail = changedRow._E_mail; EntityManager.UpdateUsers(); this.заказы_с_клиентамиTableAdapter.Fill(this.пошив_и_ремонт_одеждыDataSet.Заказы_с_клиентами); /// /// Переключает фильтрацию заказов по полю "Заказ готов": true, false, all /// /// /// private void readyOrdersFilterCheckBox_CheckStateChanged(object sender, EventArgs e) switch (this.readyOrdersFilterCheckBox.CheckState) case CheckState.Checked: this.readyOrNotReadyOrdersFilter = "[Заказ готов] = TRUE"; this.readyOrdersFilterCheckBox.Text = "Отображаются готовые заказы"; break; case CheckState.Indeterminate: this.readyOrNotReadyOrdersFilter = string.Empty; this.readyOrdersFilterCheckBox.Text = "Отображаются все заказы"; break; case CheckState.Unchecked: this.readyOrNotReadyOrdersFilter = "[Заказ готов] = FALSE"; this.readyOrdersFilterCheckBox.Text = "Отображаются неготовые заказы"; break; this.заказыСКлиентамиBindingSource.Filter = EntityManager.UnionFilter( this.textBoxOrdersFilter, this.readyOrNotReadyOrdersFilter); Добавление заказа. private void Добавление_заказа_Load(object sender, EventArgs e) this.тип_одеждыTableAdapter.Fill(this.пошив_и_ремонт_одеждыDataSet.Тип_одежды); this.вид_работTableAdapter.Fill(this.пошив_и_ремонт_одеждыDataSet.Вид_работ); this.пользователи_для_заказовTableAdapter.Fill(this.пошив_и_ремонт_одеждыDataSet.Пользователи_для_заказов); orderPriceComboBox_SelectedValueChanged(null, null); /// /// Добавляет заказ в таблицу /// /// /// private void addOrderButton_Click(object sender, EventArgs e) var newOrder = EntityManager.OrderDataTable.NewЗаказыRow(); newOrder.Номер_клиента = (int)this.clientComboBox.SelectedValue; newOrder.Вид_работы = (int)this.workKindComboBox.SelectedValue; newOrder.Тип_одежды = (int)this.dressTypeComboBox.SelectedValue; newOrder.Цена = this.priceNumericUpDown.Value; EntityManager.OrderDataTable.AddЗаказыRow(newOrder); EntityManager.UpdateOrders(); MessageBox.Show("Заказ успешно добавлен"); this.Close(); /// /// Загружает цену из таблицы "Цены работ", если выбранная пара значений "Тип одежды" и "Вид работы" /// найдена в соответствующих полях /// /// /// private void orderPriceComboBox_SelectedValueChanged(object sender, EventArgs e) if(workKindComboBox.SelectedItem == null || dressTypeComboBox.SelectedItem == null) return; var filterCondition = $"[Вид работы] = {this.workKindComboBox.SelectedValue} AND [Тип одежды] = {this.dressTypeComboBox.SelectedValue}"; var foundRowWorkPrices = EntityManager.FilterWorkPrices(filterCondition).FirstOrDefault(); this.priceNumericUpDown.Value = foundRowWorkPrices?.Цена as decimal? ?? 0m; Добавление клиента. private void addClientButton_Click(object sender, EventArgs e) if (!CheckTextBoxes()) MessageBox.Show("Заполните все поля"); return; var newUser = EntityManager.UserDataTable.NewПользователиRow(); newUser.Фамилия = this.textBoxSurname.Text; newUser.Имя = this.textBoxName.Text; newUser.Отчество = this.textBoxPatronymic.Text; newUser.номер_телефона = this.textBoxTelefon.Text; newUser._E_mail = this.textBoxEmail.Text; EntityManager.UserDataTable.AddПользователиRow(newUser); EntityManager.UpdateUsers(); MessageBox.Show("Клиент успешно добавлен"); this.Close(); private bool CheckTextBoxes() if (textBoxSurname.Text == "" || textBoxName.Text == "" || textBoxPatronymic.Text == "" || textBoxTelefon.Text == "" || textBoxEmail.Text == "") return false; return true; private void textBoxSurname_KeyPress(object sender, KeyPressEventArgs e) if (!Char.IsDigit(e.KeyChar)) return; else e.Handled = true; private void textBoxTelefon_KeyPress(object sender, KeyPressEventArgs e) char c = e.KeyChar; if (char.IsLetter(c)) e.Handled = true; Регистрация. private bool CheckTextBoxes() if (textBoxSurname.Text == "" || textBoxName.Text == "" || textBoxPatronymic.Text == "" || textBoxLogin.Text == "" || textBoxPassword.Text == "" || textBoxTelefon.Text == "" || textBoxEmail.Text == "") return false; return true; private void buttonSave_Click(object sender, EventArgs e) if (!CheckTextBoxes()) MessageBox.Show("Заполните все поля"); return; var newUser = EntityManager.UserDataTable.NewПользователиRow(); newUser.Фамилия = this.textBoxSurname.Text; newUser.Имя = this.textBoxName.Text; newUser.Отчество = this.textBoxPatronymic.Text; newUser.логин = this.textBoxLogin.Text; newUser.пароль = this.textBoxPassword.Text; newUser.номер_телефона = this.textBoxTelefon.Text; newUser._E_mail = this.textBoxEmail.Text; EntityManager.UserDataTable.AddПользователиRow(newUser); EntityManager.UpdateUsers(); MessageBox.Show("Регистрация успешна"); Close(); private void textBoxSurname_KeyPress(object sender, KeyPressEventArgs e) if (!Char.IsDigit(e.KeyChar)) return; else e.Handled = true; private void textBoxTelefon_KeyPress(object sender, KeyPressEventArgs e) char c = e.KeyChar; if (char.IsLetter(c)) e.Handled = true; |