Курсовая работа (проект) по дисциплине Проектирование и архитектура программных систем
Скачать 400.68 Kb.
|
Минобрнауки России «ЮгоЗападный государственный университет» Кафедра Программной инженерии КУРСОВАЯ РАБОТА (ПРОЕКТ) по дисциплине «Проектирование и архитектура программных систем» (наименование дисциплины) на тему «Информационная система почтовых отправлений» Направление подготовки (специальность) 09.03.04 (код, наименование) Программная инженерия Автор работы (проекта) А.С.Липа (инициалы, фамилия) (подпись, дата) Группа ПО-81з Руководитель работы (проекта) А.А. Чаплыгин (инициалы, фамилия) (подпись, дата) Работа (проект) защищена ________________________ (дата) Оценка_____________________ Члены комиссии ________________________ ________________________ (подпись, дата) (инициалы, фамилия) ________________________ _________________________ (подпись, дата) (инициалы, фамилия) ________________________ _________________________ (подпись, дата) (инициалы, фамилия) Курск, 2021г. Минобрнауки России «ЮгоЗападный государственный университет» Кафедра Программной инженерии ЗАДАНИЕ НА КУРСОВУЮ РАБОТУ (ПРОЕКТ) Студент А.С. Карачевцев шифр17-06-0216 группа ПО-81з (фамилия, инициалы) 1. Тема Информационная система почтовых отправлений 2. Срок представления работы (проекта) к защите «_____» _________20 ___ г. 3. Исходные данные (для проектирования, для научного исследования): Операционная система Windows10 , среда разработки MicrosoftVisualStudio 4. Содержание пояснительной записки курсовой работы (проекта): 4.1. Введение 4.2. Техническое задание: основание для разработки, назначениеразработки, исследование предметной области, перечень требований пользователя к программному изделию, архитектура системы. 4.3. Технический проект: реализация прецедентов при помощи диаграммы прецедентов; тестовые наборы, построенные согласно диаграмме вариантов использования системы. 4.4. Рабочий проект: объекты интерфейса пользователя. 4.5. Заключение Руководитель работы (проекта) _______________________ А.А. Чаплыгин (подпись, дата) (инициалы, фамилия) Задание принял к исполнению _______________________ А.С. Карачевцев (подпись, дата) (инициалы, фамилия) РЕФЕРАТ Данный текстовый документ имеет объем 45 страниц включает в себя 6 рисунка, 6 таблиц, 2 приложения, 10 библиографических источников. Перечень ключевых слов: программа, система, почтовые отправления. Целью работы является программная реализация на языке C# информационной системы почтовых отправлений. Программный продукт предназначен для действия информационной системы почтовых отправлений При создании программного продукта с локальной архитектурой применялись технология объектно-ориентированного программирования, современные средства разработки GUI-приложений. ABSTRACT This text document has a volume of 45 pages, includes 6 figures, 6 tables, 2 appendices, 10 bibliographic sources. List of keywords: program, system, postal items. The aim of the work is a software implementation in the C # language of the postage information system. The software product is intended for the operation of the postage information system When creating a software product with a local architecture, object-oriented programming technology and modern tools for developing GUI applications were used. СОДЕРЖАНИЕ ВВЕДЕНИЕ 10 1 Техническое задание 11 1.1 Основание для разработки 11 1.2 Назначение разработки 11 1.3 Требования к программе или программной системе 11 1.3.1 Функциональные требования 11 1.3.2 Диаграммы вариантов использования 12 1.3.3 Описание вариантов использования 12 1.3.3.1 ВИ «Загрузка программы» 12 1.3.3.2 ВИ «Заказы» 12 1.3.3.3 ВИ «Клиенты» 13 1.3.3.4 ВИ «Адреса» 13 1.4 Требования к оформлению документации 13 2 Технический проект 14 2.1 Словарь предметной области 14 2.2Моделирование вариантовиспользования 15 2.3 Требования к данным прецедентов программно-информационной системы 16 2.4 Моделирование последовательности действий 17 2.5 Проектирование архитектуры программной системы 18 2.6Диаграмма классов по стандарту UML 19 3Рабочий проект 20 3.1 Спецификация компонентов и классов программы 20 3.1.1Спецификация класса Main 20 3.2 Тестирование программной системы 21 3.2.1 Модульное тестирование классов программы 21 3.2.2 Системное тестирование программной системы 21 ЗАКЛЮЧЕНИЕ 24 СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 25 ПРИЛОЖЕНИЕА 27 ВВЕДЕНИЕ Объектом исследования курсового проекта является информационная система почтовых отправлений. Предметом исследования является проектирование информационной системы почтовых отправлений. Целью курсовой работы является создание на языке C# программы для управления информационной системы почтовых отправлений Для достижения поставленной цели необходимо решить следующие задачи: 1. Разработка архитектуры приложения. 2. Разработка интерфейса приложения. 3. Тестирование приложения 1 Техническое задание1.1 Основание для разработкиОснованием для разработки является задание на курсовую работу по дисциплине «Проектирование и архитектура программных систем». 1.2 Назначение разработкиРазработка предназначена для получения навыков проектирования архитектуры приложения с целью программной реализации на языке C# информационной системы почтовых отправлений 1.3 Требования к программе или программной системе1.3.1 Функциональные требованияИнтерфейс текстового редактора должен включать следующие функции: - открытие файла - адреса - клиенты - заказы 1.3.2 Диаграммы вариантов использованияРисунок 1.1 - Диаграмма ВИ 1.3.3 Описание вариантов использования1.3.3.1 ВИ «Загрузка программы»Пользователь запускает exe файл программы 1.3.3.2 ВИ «Заказы»Пользователь выбирает функцию «заказы», система открывает данные по почтовому отправлению. 1.3.3.3 ВИ «Клиенты»Пользователь выбирает функцию «Клиенты», система предлагает информацию о клиенте. 1.3.3.4 ВИ «Адреса»Пользователь выбирает функцию «Адреса», система предлагает информацию об адресе отправления. 1.4 Требования к оформлению документацииРазработка программной документации и программного изделия должна производиться согласно ГОСТ 19.701-90 и ГОСТ 34.601–90. Единая система программной документации. Основная часть курсовой работы состоит из 3 разделов: 1. Техническое задание 2. Технический проект 3. Рабочий проект 2 Технический проект2.1 Словарь предметной областиНа основании анализа предметной области пункта 1 технического задания был составлен словарь предметной области. В словаре представлены термины на русском и английском языках. В таблице 2.1 представлен словарь данных для части разрабатываемого путеводителя, отвечающий за взаимодействие пользователя и программы. Таблица 2.1 – Словарь данных для части разрабатываемой программы, отвечающей за компоненты программы информационной системы почтовых отправлений
Моделирование вариантовиспользования В программе используется 1 действующее лицо - пользователь. На рисунке 2.1 представлена диаграмма прецедентов для текстового редактора. Рисунок 2.1 - Диаграмма прецедентов пользователя На основании требований к программной системе из пункта 1.3 в программе будут реализованы следующие прецеденты: Прецеденты: 1. Запуск программы 2. Заказы 3. Клиенты 4. Адреса 2.3 Требования к данным прецедентов программно-информационной системы Данные прецедента «Запуск программы» Входными данными прецедента «Запуск программы» является exe файл. Выходными данными прецедента «Запуск программы» является запущенное приложение. Данные прецедента «Заказы» Входными данными прецедента «Заказы» является запись в БД. Ограничения: недопустимо использовать одинаковые данные. Выходными данными прецедента «Заказы» является выход информации про заказ. Данные прецедента «Клиенты» Входными данными прецедента «Клиенты» является запись в БД. Ограничения: недопустимо использовать одинаковые данные. Выходными данными прецедента «Клиенты» является выход информации про клиента. Данные прецедента «Адреса» Входными данными прецедента «Адреса» является запись в БД. Ограничения: недопустимо использовать одинаковые данные. Выходными данными прецедента «Адреса» является выход информации про адрес письма. 2.4 Моделирование последовательности действийПрецедент «Заказы» Заинтересованные лица и их требования: пользователь открывает вкладку заказы Предусловие: нет. Постусловие: нет. Основной успешный сценарий: Пользователь выбирает функцию «Заказы» из меню программы, вводит необходимые данные и сохраняет информацию. Прецедент «Клиенты» Заинтересованные лица и их требования: пользователь открывает вкладку клиенты Предусловие: нет. Постусловие: нет. Основной успешный сценарий: Пользователь выбирает функцию «Клиенты» из меню программы, вводит необходимые данные и сохраняет информацию. Прецедент «Адреса» Заинтересованные лица и их требования: пользователь просматривает нужный адрес. Предусловие: нет. Постусловие: нет. Основной успешный сценарий: Пользователь кликает на вкладку, затем изучает и если надо редактирует информацию. 2.5 Проектирование архитектуры программной системыАрхитектура программной системы состоит из 5-х модулей: Program.cs – модуль который запускает главный модуль программы, графический интерфейс пользователя. MainForm.cs-основной модуль программы, который содержит в себе основные методы. Mails.cs- модуль программы, который содержит в себе данные о адресатах Clients.cs- модуль программы, который содержит в себе данные о клиентах Orders.cs- модуль программы, который содержит в себе данные о заказе На рисунке 2.2 изображена диаграмма модулей программы Program.cs MainForm.cs Clients.cs Mails.cs Orders.cs Рисунок 2.2 - Диаграмма модулей программы Диаграмма классов по стандарту UMLРисунок 2.3 - Диаграмма классов Рабочий проект3.1 Спецификация компонентов и классов программы3.1.1Спецификация класса MainДанный класс содержит в себе основные методы для работы с текстовыми файлами. Таблица 3.1 - Конструктор класса Main
Объявление и описание членов класса находится в файле: Main.cs. Таблица 3.2 -Методы класса Main
3.2 Тестирование программной системы3.2.1 Модульное тестирование классов программыНиже представлено тестирование данных классов. Таблица 3.5 – Модульное тестирование класса Main
3.2.2 Системное тестирование программной системы Рисунок 3.1- Главное окно программы Рисунок 3.2- Добавить адрес Рисунок 3.3- Вкладка адрес Рисунок 3.4- Вкладка добавить заказ Рисунок 3.5- Вкладка Заказ Рисунок 3.6- Вкладка клиент Рисунок 3.7- Вкладка добавить клиента Так как классы системы тесно связаны между собой, то тестирование необходимо проводить для всей системы в целом. При необходимости можно использовать отладочный вывод, который поддерживается средой разработки. ЗАКЛЮЧЕНИЕРазработанный программный продукт обеспечивает выполнение всех требований, предъявленных к нему в техническом задании. Разработанное приложение, позволяет пользователю спроектировать информационную систему почтовых отправлений Все требования, объявленные в техническом задании, были полностью реализованы в данном программном продукте. Все задачи, поставленные в начале разработки проекта, были решены. Таким образом, цель работы достигнута. СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ1. Ганенко А. П. и др. оформление текстовых и графических материалов при подготовке дипломных проектов и письменных экзаменационных работ (требования ЕСКД): Учеб. Пособие для нач. проф. Образования [Текст] / А. П. Ганенко, Ю. В. Миловская, М. И. Лапсарь. – 2-е изд., стереотип. – М.: ИРПО; Изд. Центр «Академия», 2018 – 352 с. 2. Гагарина Л.Г. Разработка и эксплуатация автоматизированных информационных систем. Учебное пособие. Гриф МО РФ. [Текст]/ Л.Г Гагарина , Д.В. Киселев, Е.Л Федотова, М.: Издательство «Форум», 2019 – 384 с. 3. ГОСТ 19.301-79 Группа Т55. МЕЖГОСУДАРСТВЕННЫЙ СТАНДАРТ. Единая система программной документации. ПРОГРАММА И МЕТОДИКА ИСПЫТАНИЙ. Требования к содержанию и оформлению. [Текст] 4. ГОСТ 2.105-95 УДК 744:002:006.354 Группа Т52. МЕЖГОСУДАРСТВЕННЫЙ СТАНДАРТ. Единая система конструкторской документации. ОБЩИЕ ТРЕБОВАНИЯ К ТЕКСТОВЫМ ДОКУМЕНТАМ. [Текст] 5. Ник Рендольф. MicrosoftVisualStudio 2012 для профессионалов– [Текст] / Ник Рендольф, Дэвид Гарднер, Майкл Минутилло, Крис Андерсон - М.: Издательство «Диалектика», 2019 – 1184 с. 6. Угринович Н.Д. Информатика и ИКТ.[Текст]/ Н.Д. Угринович Базовый курс: 4-е издание. - М.:.БИНОМ. Лаборатория знаний, 2006. - 205 с.: ил. 7. CYBERFORUM.RU - Форум программистов и сисадминов Киберфорум [Электронный ресурс]/ Режим доступа – https://cyberforum.ru (дата обращения: 27.02.2021) 8. METANIT.COM – Сайт о программировании [Электронный ресурс] / Режим доступа – https://metanit.com (дата обращения: 26.02.2021) 9. MSDN – сеть разработчиков Microsoft [Электронный ресурс] / Режим доступа - https://msdn.microsoft.com (дата обращения: 27.02.2021) 10. PROGRAMMERSFORUM.RU – Форум программистов [Электронный ресурс]/ Режим доступа – https://programmersforum.ru (дата обращения: 27.02.2021) ПРИЛОЖЕНИЕАusing System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.Entity; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace PostOffice { public partial class AddClientForm : Form { public AddClientForm() { InitializeComponent(); } } } namespace PostOffice { partial class AddClientForm { /// /// Required designer variable. /// private System.ComponentModel.IContainer components = null; /// /// Clean up any resources being used. /// /// true if managed resources should be disposed; otherwise, false. protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Windows Form Designer generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { this.Ok = new System.Windows.Forms.Button(); this.EmailLabel = new System.Windows.Forms.Label(); this.Adress = new System.Windows.Forms.TextBox(); this.PhoneNumberLabel = new System.Windows.Forms.Label(); this.Passport = new System.Windows.Forms.TextBox(); this.SurnameLabel = new System.Windows.Forms.Label(); this.Surname = new System.Windows.Forms.TextBox(); this.SecondNameLabel = new System.Windows.Forms.Label(); this.SecondName = new System.Windows.Forms.TextBox(); this.NameLabel = new System.Windows.Forms.Label(); this.Name = new System.Windows.Forms.TextBox(); this.Cancel = new System.Windows.Forms.Button(); this.SuspendLayout(); // // Ok // this.Ok.DialogResult = System.Windows.Forms.DialogResult.OK; this.Ok.Location = new System.Drawing.Point(12, 209); this.Ok.Name = "Ok"; this.Ok.Size = new System.Drawing.Size(119, 23); this.Ok.TabIndex = 21; this.Ok.Text = "Ok"; this.Ok.UseVisualStyleBackColor = true; // // EmailLabel // this.EmailLabel.AutoSize = true; this.EmailLabel.Location = new System.Drawing.Point(12, 167); this.EmailLabel.Name = "EmailLabel"; this.EmailLabel.Size = new System.Drawing.Size(39, 13); this.EmailLabel.TabIndex = 20; this.EmailLabel.Text = "Adress"; // // Adress // this.Adress.Location = new System.Drawing.Point(12, 183); this.Adress.Name = "Adress"; this.Adress.Size = new System.Drawing.Size(237, 20); this.Adress.TabIndex = 19; // // PhoneNumberLabel // this.PhoneNumberLabel.AutoSize = true; this.PhoneNumberLabel.Location = new System.Drawing.Point(12, 126); this.PhoneNumberLabel.Name = "PhoneNumberLabel"; this.PhoneNumberLabel.Size = new System.Drawing.Size(48, 13); this.PhoneNumberLabel.TabIndex = 18; this.PhoneNumberLabel.Text = "Passport"; // // Passport // this.Passport.Location = new System.Drawing.Point(12, 142); this.Passport.Name = "Passport"; this.Passport.Size = new System.Drawing.Size(237, 20); this.Passport.TabIndex = 17; // // SurnameLabel // this.SurnameLabel.AutoSize = true; this.SurnameLabel.Location = new System.Drawing.Point(12, 87); this.SurnameLabel.Name = "SurnameLabel"; this.SurnameLabel.Size = new System.Drawing.Size(49, 13); this.SurnameLabel.TabIndex = 16; this.SurnameLabel.Text = "Surname"; // // Surname // this.Surname.Location = new System.Drawing.Point(12, 103); this.Surname.Name = "Surname"; this.Surname.Size = new System.Drawing.Size(237, 20); this.Surname.TabIndex = 15; // // SecondNameLabel // this.SecondNameLabel.AutoSize = true; this.SecondNameLabel.Location = new System.Drawing.Point(12, 47); this.SecondNameLabel.Name = "SecondNameLabel"; this.SecondNameLabel.Size = new System.Drawing.Size(75, 13); this.SecondNameLabel.TabIndex = 14; this.SecondNameLabel.Text = "Second Name"; // // SecondName // this.SecondName.Location = new System.Drawing.Point(12, 63); this.SecondName.Name = "SecondName"; this.SecondName.Size = new System.Drawing.Size(237, 20); this.SecondName.TabIndex = 13; // // NameLabel // this.NameLabel.AutoSize = true; this.NameLabel.Location = new System.Drawing.Point(12, 8); this.NameLabel.Name = "NameLabel"; this.NameLabel.Size = new System.Drawing.Size(35, 13); this.NameLabel.TabIndex = 12; this.NameLabel.Text = "Name"; // // Name // this.Name.Location = new System.Drawing.Point(12, 24); this.Name.Name = "Name"; this.Name.Size = new System.Drawing.Size(237, 20); this.Name.TabIndex = 11; // // Cancel // this.Cancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; this.Cancel.Location = new System.Drawing.Point(137, 209); this.Cancel.Name = "Cancel"; this.Cancel.Size = new System.Drawing.Size(112, 23); this.Cancel.TabIndex = 22; this.Cancel.Text = "Cancel"; this.Cancel.UseVisualStyleBackColor = true; // // AddClientForm // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(266, 244); this.Controls.Add(this.Cancel); this.Controls.Add(this.Ok); this.Controls.Add(this.EmailLabel); this.Controls.Add(this.Adress); this.Controls.Add(this.PhoneNumberLabel); this.Controls.Add(this.Passport); this.Controls.Add(this.SurnameLabel); this.Controls.Add(this.Surname); this.Controls.Add(this.SecondNameLabel); this.Controls.Add(this.SecondName); this.Controls.Add(this.NameLabel); this.Controls.Add(this.Name); this.Text = "AddClientForm"; this.ResumeLayout(false); this.PerformLayout(); } #endregion private System.Windows.Forms.Button Ok; private System.Windows.Forms.Label EmailLabel; private System.Windows.Forms.Label PhoneNumberLabel; private System.Windows.Forms.Label SurnameLabel; private System.Windows.Forms.Label SecondNameLabel; private System.Windows.Forms.Label NameLabel; protected internal System.Windows.Forms.TextBox Adress; protected internal System.Windows.Forms.TextBox Passport; protected internal System.Windows.Forms.TextBox Surname; protected internal System.Windows.Forms.TextBox SecondName; protected internal System.Windows.Forms.TextBox Name; private System.Windows.Forms.Button Cancel; } } using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace PostOffice { public partial class AddMailForm : Form { public AddMailForm() { InitializeComponent(); } } } namespace PostOffice { partial class AddMailForm { /// /// Required designer variable. /// private System.ComponentModel.IContainer components = null; /// /// Clean up any resources being used. /// /// true if managed resources should be disposed; otherwise, false. protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Windows Form Designer generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { this.Ok = new System.Windows.Forms.Button(); this.AdressLabel = new System.Windows.Forms.Label(); this.Adress = new System.Windows.Forms.TextBox(); this.NameLabel2 = new System.Windows.Forms.Label(); this.Name = new System.Windows.Forms.TextBox(); this.Cancel = new System.Windows.Forms.Button(); this.SuspendLayout(); // // Ok // this.Ok.DialogResult = System.Windows.Forms.DialogResult.OK; this.Ok.Location = new System.Drawing.Point(12, 90); this.Ok.Name = "Ok"; this.Ok.Size = new System.Drawing.Size(100, 23); this.Ok.TabIndex = 32; this.Ok.Text = "Ok"; this.Ok.UseVisualStyleBackColor = true; // // AdressLabel // this.AdressLabel.AutoSize = true; this.AdressLabel.Location = new System.Drawing.Point(12, 48); this.AdressLabel.Name = "AdressLabel"; this.AdressLabel.Size = new System.Drawing.Size(39, 13); this.AdressLabel.TabIndex = 30; this.AdressLabel.Text = "Adress"; // // Adress // this.Adress.Location = new System.Drawing.Point(12, 64); this.Adress.Name = "Adress"; this.Adress.Size = new System.Drawing.Size(206, 20); this.Adress.TabIndex = 29; // // NameLabel2 // this.NameLabel2.AutoSize = true; this.NameLabel2.Location = new System.Drawing.Point(12, 9); this.NameLabel2.Name = "NameLabel2"; this.NameLabel2.Size = new System.Drawing.Size(35, 13); this.NameLabel2.TabIndex = 28; this.NameLabel2.Text = "Name"; // // Name // this.Name.Location = new System.Drawing.Point(12, 25); this.Name.Name = "Name"; this.Name.Size = new System.Drawing.Size(206, 20); this.Name.TabIndex = 27; // // Cancel // this.Cancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; this.Cancel.Location = new System.Drawing.Point(118, 90); this.Cancel.Name = "Cancel"; this.Cancel.Size = new System.Drawing.Size(100, 23); this.Cancel.TabIndex = 34; this.Cancel.Text = "Cancel"; this.Cancel.UseVisualStyleBackColor = true; // // AddMailForm // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(230, 123); this.Controls.Add(this.Cancel); this.Controls.Add(this.Ok); this.Controls.Add(this.AdressLabel); this.Controls.Add(this.Adress); this.Controls.Add(this.NameLabel2); this.Controls.Add(this.Name); this.Text = "AddMailForm"; this.ResumeLayout(false); this.PerformLayout(); } #endregion private System.Windows.Forms.Button Ok; private System.Windows.Forms.Label AdressLabel; private System.Windows.Forms.Label NameLabel2; private System.Windows.Forms.Button Cancel; protected internal System.Windows.Forms.TextBox Adress; protected internal System.Windows.Forms.TextBox Name; } } namespace PostOffice { partial class AddOrderForm { /// /// Required designer variable. /// private System.ComponentModel.IContainer components = null; /// /// Clean up any resources being used. /// /// true if managed resources should be disposed; otherwise, false. protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Windows Form Designer generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { this.OrderDate = new System.Windows.Forms.DateTimePicker(); this.OrderPrice = new System.Windows.Forms.NumericUpDown(); this.OrderMail = new System.Windows.Forms.ComboBox(); this.OrderClient = new System.Windows.Forms.ComboBox(); this.Ok = new System.Windows.Forms.Button(); this.OrderPriceLabel = new System.Windows.Forms.Label(); this.OrderDateLabel = new System.Windows.Forms.Label(); this.OrderMailLabel = new System.Windows.Forms.Label(); this.OrderClientLabel = new System.Windows.Forms.Label(); this.Cancel = new System.Windows.Forms.Button(); ((System.ComponentModel.ISupportInitialize)(this.OrderPrice)).BeginInit(); this.SuspendLayout(); // // OrderDate // this.OrderDate.Location = new System.Drawing.Point(12, 108); this.OrderDate.Name = "OrderDate"; this.OrderDate.Size = new System.Drawing.Size(200, 20); this.OrderDate.TabIndex = 50; // // OrderPrice // this.OrderPrice.Location = new System.Drawing.Point(12, 146); this.OrderPrice.Maximum = new decimal(new int[] { 10000, 0, 0, 0}); this.OrderPrice.Name = "OrderPrice"; this.OrderPrice.Size = new System.Drawing.Size(200, 20); this.OrderPrice.TabIndex = 49; // // OrderMail // this.OrderMail.FormattingEnabled = true; this.OrderMail.Location = new System.Drawing.Point(12, 66); this.OrderMail.Name = "OrderMail"; this.OrderMail.Size = new System.Drawing.Size(200, 21); this.OrderMail.TabIndex = 48; // // OrderClient // this.OrderClient.FormattingEnabled = true; this.OrderClient.Location = new System.Drawing.Point(12, 27); this.OrderClient.Name = "OrderClient"; this.OrderClient.Size = new System.Drawing.Size(200, 21); this.OrderClient.TabIndex = 47; // // Ok // this.Ok.DialogResult = System.Windows.Forms.DialogResult.OK; this.Ok.Location = new System.Drawing.Point(12, 172); this.Ok.Name = "Ok"; this.Ok.Size = new System.Drawing.Size(97, 23); this.Ok.TabIndex = 46; this.Ok.Text = "Ok"; this.Ok.UseVisualStyleBackColor = true; // // OrderPriceLabel // this.OrderPriceLabel.AutoSize = true; this.OrderPriceLabel.Location = new System.Drawing.Point(11, 131); this.OrderPriceLabel.Name = "OrderPriceLabel"; this.OrderPriceLabel.Size = new System.Drawing.Size(31, 13); this.OrderPriceLabel.TabIndex = 45; this.OrderPriceLabel.Text = "Price"; // // OrderDateLabel // this.OrderDateLabel.AutoSize = true; this.OrderDateLabel.Location = new System.Drawing.Point(11, 90); this.OrderDateLabel.Name = "OrderDateLabel"; this.OrderDateLabel.Size = new System.Drawing.Size(30, 13); this.OrderDateLabel.TabIndex = 44; this.OrderDateLabel.Text = "Date"; // // OrderMailLabel // this.OrderMailLabel.AutoSize = true; this.OrderMailLabel.Location = new System.Drawing.Point(9, 51); this.OrderMailLabel.Name = "OrderMailLabel"; this.OrderMailLabel.Size = new System.Drawing.Size(26, 13); this.OrderMailLabel.TabIndex = 43; this.OrderMailLabel.Text = "Mail"; // // OrderClientLabel // this.OrderClientLabel.AutoSize = true; this.OrderClientLabel.Location = new System.Drawing.Point(9, 11); this.OrderClientLabel.Name = "OrderClientLabel"; this.OrderClientLabel.Size = new System.Drawing.Size(33, 13); this.OrderClientLabel.TabIndex = 42; this.OrderClientLabel.Text = "Client"; // // Cancel // this.Cancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; this.Cancel.Location = new System.Drawing.Point(115, 172); this.Cancel.Name = "Cancel"; this.Cancel.Size = new System.Drawing.Size(97, 23); this.Cancel.TabIndex = 51; this.Cancel.Text = "Cancel"; this.Cancel.UseVisualStyleBackColor = true; // // AddOrderForm // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(223, 209); this.Controls.Add(this.Cancel); this.Controls.Add(this.OrderDate); this.Controls.Add(this.OrderPrice); this.Controls.Add(this.OrderMail); this.Controls.Add(this.OrderClient); this.Controls.Add(this.Ok); this.Controls.Add(this.OrderPriceLabel); this.Controls.Add(this.OrderDateLabel); this.Controls.Add(this.OrderMailLabel); this.Controls.Add(this.OrderClientLabel); this.Name = "AddOrderForm"; this.Text = "AddOrderForm"; ((System.ComponentModel.ISupportInitialize)(this.OrderPrice)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); } #endregion protected internal System.Windows.Forms.ComboBox OrderMail; protected internal System.Windows.Forms.ComboBox OrderClient; private System.Windows.Forms.Button Ok; private System.Windows.Forms.Label OrderPriceLabel; private System.Windows.Forms.Label OrderDateLabel; private System.Windows.Forms.Label OrderMailLabel; private System.Windows.Forms.Label OrderClientLabel; private System.Windows.Forms.Button Cancel; protected internal System.Windows.Forms.DateTimePicker OrderDate; protected internal System.Windows.Forms.NumericUpDown OrderPrice; } } using System; using System.Data.Entity; using System.Windows.Forms; namespace PostOffice { public partial class ClientsForm : Form { public ClientsForm() { InitializeComponent(); using (var context = new MyDbContext()) { context.Clients.Load(); dataGridView1.DataSource = context.Clients.Local.ToBindingList(); }; } private void DeleteClient_Click(object sender, EventArgs e) { if (dataGridView1.SelectedRows.Count > 0) { int index = dataGridView1.SelectedRows[0].Index; int id = 0; bool converted = Int32.TryParse(dataGridView1[0, index].Value.ToString(), out id); if (converted == false) return; using (var context = new MyDbContext()) { Client client = context.Clients.Find(id); context.Clients.Remove(client); context.SaveChanges(); } MessageBox.Show("Object deleted"); RefreshClients(); } } private void AddClient_Click(object sender, EventArgs e) { AddClientForm acForm = new AddClientForm(); DialogResult result = acForm.ShowDialog(this); if (result == DialogResult.Cancel) return; var client = new Client { Name = acForm.Name.Text, SecondName = acForm.SecondName.Text, Surname = acForm.Surname.Text, Adress = acForm.Adress.Text, Passport = acForm.Passport.Text }; using (var context = new MyDbContext()) { context.Clients.Add(client); context.SaveChanges(); } MessageBox.Show("Object created"); RefreshClients(); } private void Refresh_Click(object sender, EventArgs e) { RefreshClients(); } private void RefreshClients() { using (var context = new MyDbContext()) { context.Clients.Load(); dataGridView1.DataSource = context.Clients.Local.ToBindingList(); } } private void EditClient_Click(object sender, EventArgs e) { if (dataGridView1.SelectedRows.Count > 0) { int index = dataGridView1.SelectedRows[0].Index; int id = 0; bool converted = Int32.TryParse(dataGridView1[0, index].Value.ToString(), out id); if (converted == false) return; using (var context = new MyDbContext()) { Client client = context.Clients.Find(id); AddClientForm acForm = new AddClientForm(); acForm.Name.Text = client.Name; acForm.SecondName.Text = client.SecondName; acForm.Surname.Text = client.Surname; acForm.Adress.Text = client.Adress; acForm.Passport.Text = client.Passport; DialogResult result = acForm.ShowDialog(this); if (result == DialogResult.Cancel) return; client.Name = acForm.Name.Text; client.SecondName = acForm.SecondName.Text; client.Surname = acForm.Surname.Text; client.Adress = acForm.Adress.Text; client.Passport = client.Passport; context.Entry(client).State = EntityState.Modified; context.SaveChanges(); } MessageBox.Show("Object updated"); RefreshClients(); } } } } |