Карагандинский технический университет Палатиди Н.Г Разработка ИС «Реконструкция и ремонт зданий» для ТОО «Аскентжол»» ДИПЛОМНАЯ РАБОТА специальность 5B070300 - «Информационные системы» Караганда 2021 Карагандинский технический университет «Допущен к защите» зав. кафедрой ИВС ____________ А.А. Калинин “____” ____________ 2021 г. ДИПЛОМНЫЙ ПРОЕКТ На тему «Разработка ИС «Реконструкция и ремонт зданий» для ТОО «Аскентжол»» по специальности 5B070300 - «Информационные системы» Выполнил Научный руководитель ____________Палатиди Н.Г ____________В.Н. Головачева доктор PhD, доцент Караганда 2021 Карагандинский технический университет (наименование вуза) Факультет ФИТ Специальность Кафедра ИВС 5B070300 - «Информационные системы»а (шифр) название Утверждаю Зав. кафедрой ___________20_____г. ЗАДАНИЕ по дипломному проекту (работе) студента Палатиди Николай Георгиевича (фамилия, имя, отчество) 1. Тема проекта (работы) «Разработка ИС «Реконструкция и ремонт зданий» для ТОО «Аскентжол»» утверждена приказом по университету от «22» февраля 2021г. №122са 2. Срок сдачи студентов законченного проекта (работы) «04» июня 2021 г. 3. Исходные данные к проекту (работе): данные, полученные в ходе анализа предметной области 4. Содержание расчетно-пояснительной записки (перечень подлежащих разработке вопросов) Введение 1 Анализ предметной области и постановки задачи на дипломное проектирование 1. 1 Общая характеристика информационной системы «Юридические услуги» 1. 1 Обзор существующих аналогов систем автоматизации юридических услуг 1. 2 Цели и задачи разрабатываемой информационной системы 2 Выбор средств для программно-технической реализации информационной системы 2. 1 Выбор технологий реализации 2. 2. Аппаратные и программные средства разработки 2. 3 Требования к аппаратному и программному обеспечению 3 Проектирование информационной системы 3. 1 Построение информационной архитектуры 3. 2 Проектирование базы данных 4 Реализация веб-приложения 4. 1 Создание пользовательского интерфейса 4. 2 Программная реализация веб-приложения 4. 3 Тестирование веб-приложения Заключение Список использованной литературы 5. Перечень графического материала (с точным указанием обязательных чертежей) 1 Информационная архитектура ИС « Реконструкция и ремонт зданий » 2 Диаграмма базы данных ИС « Реконструкция и ремонт зданий » 3 ER-диаграмма базы данных 4 Пользовательский интерфейс клиентской части веб-приложения 5 Пользовательский интерфейс административной части веб-приложения 5. Консультанты по проекту (работе, с указанием относящихся к ним разделов проекта) Раздел Консультанты Подпись, дата Задание выдал Задание принял 1 Анализ предметной области и Головачева постановки задачи на дипломное В.Н. проектирование 10.03.2021 17.03.2021 2 Выбор средств программноГоловачева технической реализации В.Н. информационной системы 19.03.2021 30.03.2021 3 Проектирование Головачева В.Н. 01.04.2021 03.05.2021 4 Реализация веб-приложения Головачева В.Н. 06.05.2021 13.05.2021 Нормоконтроль Головачева В.Н. 10.03.2021 26.05.2021 информационной системы Дата выдачи задания 22.02.2021 Руководитель _____________________________________ (подпись) Задание принял к исполнению ________________ _________________ (подпись студента) КАЛЕНДАРНЫЙ ПЛАН № Наименование этапов дипломного проекта (работы) 1 Анализ предметной области 2 Выбор и обоснование используемых технологий Разработка автоматизированной информационной системы для ТОО «АскентЖол» Оформление пояснительной записки дипломной работы Выполнение графической части дипломной работы 3 4 5 Срок выполнения Примечание этапов проекта (работы) Выполнено 22.02.2021 г. 06.03.2021 г. Выполнено 07.03.2021 г. 28.03.2021 г. 29.03.2021 г. 10.04.2021 г. Выполнено 11.04.2021 г. Выполнено 13.04.2021 г. Выполнено Студент дипломник Палатиди Н.Г Руководитель проекта Головачева В.Н Түйіндеме Дипломдық жұмыс кіріспеден, үшінше тараудан, қорытындыдан, әдебиеттер тізімінен және қосымшалардан тұрады. Таңдалып алынған тақырыпты зерттеудің маңыздылығы қазіргі уақытта жеткізушілермен және мердігерлермен есеп айырысуға көп көңіл бөлініп отырғандығында. Бұл үрдіс адам қызметінің барлық салаларына әсер етеді. Қазіргі заманғы технологияларды дамытудың шешуші факторларының бірі ақпарат болып табылады. Ол адамзат дамуының бағыты, әдістері мен мүмкіндіктерінің векторын анықтайды. Осыған сүйене отырып, компьютерлендіру, цифрландыру, менеджмент пен өндірістегі ақпараттандыру индустриясының дамуын түсіну, сондай-ақ оның адамның зияткерлік қызметіне әсер ету дәрежесін анықтау өте маңызды. Ақпарат дегеніміз-қазіргі контекстке байланысты өзгеретін көптеген мағыналары бар дерексіз ұғым. Қазіргі уақытта ақпарат терминінің нақты анықтамасы жоқ. Бұл ұғым сипатталады негізге ала отырып, точи көру әр түрлі облыстардың білу, өзінің жиынтығымен арнайы белгілері. Ақпараттың анықтамаларының бірі-уақыт пен кеңістікте таралған, сонымен қатар материалдық ортада жазылған мәліметтер жиынтығы. Адамның айналасындағы заттар, құбылыстар, басқа адамдар мен оқиғалар туралы ақпарат, сонымен қатар, қоршаған әлемнің өміріне бақылау және тікелей қатысу негізінде адам санасында мәліметтерді бейнелеу және өңдеу нәтижесі болып табылады. Қазіргі әлемде ғылыми-техникалық прогрестің дамуына байланысты ақпарат энергетикалық, экономикалық, шикізат және басқа ресурстар сияқты адам үшін маңызды және қажетті ресурсқа айналды. Ақпарат әлемдік экономикада жеке нарықты құрайтын сату объектісіне айналды. Сондай-ақ, ақпарат адамға әсер ету құралына айналды. Ақпарат арқылы қоғамды басқару оның мінез-құлқына, көңіл-күйіне және іс-әрекетке бейімділігіне әсер етеді. Ақпараттың көмегімен Маркетологтар мен жарнама берушілер адамдардың санасын оңай басқарады, оларды ақпараттық шатасуға тартады және подсознанияға әсер ету арқылы қажетті әрекеттерге итермелейді. Керісінше әсер-ақпараттың болмауы немесе жетіспеуі бүкіл әлемнен біртіндеп артта қалуға әкеледі және адамзат қызметінің кейбір салалары мен бағыттарының дамуын едәуір баяулатады. Қазіргі уақытта ақпараттың негізгі көзі-интернет. Оның болуы немесе болмауы өндірістің динамикалық дамуын немесе Тоқырауын, жеке адамның да, жалпы қоғамның да әртүрлі қызмет салаларында басқаруды анықтайды. Ақпарат пен ақпараттық ағындарды ыңғайлы басқару үшін тұжырымдама енгізілді-ақпараттық жүйе. Қазіргі әлемде Ақпараттық жүйелер компаниялар мен ұйымдар архитектурасының ажырамас бөлігі болды. Сонымен қатар, ақпараттық жүйелер тиімділікті арттыру және автоматтандыру құралы болып табылады. Бәсекелестіктің қазіргі жағдайында және ұйымның үнемі өзгеріп отыратын сыртқы ортасында мен адами және қаржылық ресурстарды нарық пен бәсекелестік жағдайлары талап ететін талаптарға сәйкестік деңгейін автоматтандыруға және қолдауға ықпал ететін жүйелерді дамытуға инвестициялаймын. Ақпараттық жүйелер ақпараттық процестер сияқты терминмен шектеседі. Ақпараттық процестер-бұл ақпаратты алу, құру, жинау, өңдеу, жинақтау, сақтау, іздеу, тарату, пайдалану процестері. Бүгінгі таңда көптеген компаниялар үшін ақпараттық жүйелер қызметкерлерді басқару, олардың жұмыс уақытын есепке алу, жаңа қызметкерлерді жалдауды жүйелеу және есепке алу үшін маңызды. Содержание Введение 1 Анализ предметной области и постановка задачи 2 Выбор и обоснование аппаратного обеспечения 2.1 Архитектура разрабатываемого приложения 2.2 Разработка на языке С#(Sharp) 3 Работа с WinForm 3.1 Net platform 3.2 Аппаратное обеспечение. 3.3 Проектирование и разработка информационной системы для ТОО «АскентЖол» Заключение Список использованной литературы Приложение А WinForm Приложение Б Program.cs Приложение В MainWindown 4 5 10 16 18 24 26 40 58 59 60 63 66 Введение Один из важнейших ресурсов современности для жизни человека, наряду с такими как вода, воздух, тепло является информация. Энергетические, природные, материальные и другие ресурсы жизненно необходимы для жизни и развития человечества. Но в двадцать первом веке в этот список можно отнести информационные ресурсы, которые оказывают значительное влияние на деятельности человека. Цифровые информационные потоки огромны и растут ежесекундно. Такая тенденция затрагивает почти все сферы деятельности человека. Одним из решающих факторов развития современных технологий является информация. Она определяет вектор направления, способы и возможности развития человечества. Исходя из этого, очень важно понимание развития индустрии компьютеризации, цифровизации, информатизации в управлении и производстве, а 2 также определения степени ее влияния на интеллектуальную деятельность человека. Информация – это абстрактное понятие со множеством значений, которые варьируются в зависимости от текущего контекста. В настоящее время точного определения термина информация нет. Данное понятие описывается исходя из точи зрения различных областей знания, своим набором специфических признаков. Одно из определений информации – совокупность данных, распространенных во времени и пространстве и, а также зафиксированных на материальном носителе. Результатом отражения и обработки данных в человеческом сознании, исходя из наблюдения и непосредственного участия в жизни окружающего мира, сведения человека об окружающих его предметах, явлениях, других людей и событиях, также является информация. В современном мире, в связи с развитием научно-технического прогресса, информация стала ресурсом, таким же важным и необходимым человеку, как энергетические, экономические, сырьевые и другие ресурсы. Информация превратилась в предмет купли-продажи, который образует отдельный рынок в мировой экономике. Также информация стала инструментом влияния на человека. Посредством информации происходит управление обществом, оказывая влияние на его поведение, настроение и тенденции к поступкам. С помощью информации маркетологи и рекламодатели легко манипулируют сознанием людей, вовлекая последних в информационный беспорядок и посредством влияния на подсознание подталкивают к необходимым действиям. Обратный эффект – отсутствие или недостаток информации, приводит к постепенному отставанию от всего мира и значительно замедляет развитие некоторых сфер и направлений деятельности человечества. Главный источник информации на данный момент является интернет. Его наличие или отсутствие обуславливает динамичное развитие или стагнацию производства, управления в различных отраслях деятельности как отдельно взятого человека, так и общества в целом. Для удобного управления информацией и информационными потоками было введено понятие – информационная система. В современном мире информационные системы стали, неотъемлемой частью архитектуры компаний и организаций. Помимо этого, информационные системы являются средством повышения эффективности и автоматизации. В текущих условиях конкуренции и постоянно изменяющейся внешней среды организации инвестирую человеческие и финансовые ресурсы в развитие систем, способствующих автоматизации и поддержании уровня соответствия требований, диктуемых условиями рынка и конкуренции. Информационные системы граничат с таким термином как – информационные процессы. 3 Информационные процессы – это процессы получения, создания, сбора, обработки, накопления, хранения, поиска, распространения, использования информации. На сегодняшний день для многих компаний актуальны информационные системы управлением штатом сотрудников, учета их времени работы, систематизация и учет найма новых сотрудников. 1 Анализ предметной области и постановка задачи Основная деятельность компании ТОО «Аскентжол» ТОО «Аскентжол» - Высокое качество услуг по ремонту и строительству, новый взгляд на организацию и выполнение услуг. Компания является конкурентным поставщиком в области предоставления строительных и строительно-монтажных работ на ряду с крупными поставщиками на рынке Республики Казахстан. Компания предоставляет такие услуги, как: - Ремонт квартир ( Капитальный ремонт, Евро ремонт, Элитный ремонт, Косметический ремонт) - Ремонт домов ( Капитальный ремонт, Евро ремонт, Элитный ремонт, Косметический ремонт) - Строительство бань, гаражей, пристроек. - Облицовочные работы. 4 С каждым годом клиентская база компании расширяется, а обращения клиентов, единожды воспользовавшихся услугами, становятся неоднократными. Четко отлаженная схема работы с клиентами по оказанию услуг всего комплекса строительных услуг позволяет принимать практически любые заказы в самые кротчайшие сроки и гарантировать своим клиентам работу высокого качества. Ценовая политика компании достаточно прозрачна и гибка, что и сделало нас одними из лидеров на рынке поставок всего комплекса строительных услуг, услуг по внутренней отделке, и прочего. Закрепленные на контрактной основе договора, на услуги по строительству, ремонту и отделке, позволяют компании гарантировать своим клиентам скорость, целостность и безопасность оказываемых услуг. Постановка задачи В данный момент в компании “Аскентжол” существуют нерешенные проблемы, связанные с учетом проектов и данных о заказчиках. В качестве задачи рассматривается разработка информационной системы, направленной на управление данными о учетах объектов и заказчиков. 2 Выбор и обоснование аппаратного обеспечения 2.1 Архитектура разрабатываемого приложения Архитектура параметров приложения используется в обоих (ASP.NET) и (Windows Forms), и он содержит ряд базовых классов, которые совместно используются в обеих средах. Самое главное – (SettingsBase), которая обеспечивает доступ к настройкам через коллекцию и обеспечивает низкоуровневые методы загрузки и сохранения настроек. Каждая среда реализует свой собственный класс, производный от (SettingsBase), чтобы обеспечить дополнительные функции настройки для этой среды. В приложении на базе (Windows Forms) все параметры приложения должны быть определены для класса, производного от класса (ApplicationSettingsBase), который добавляет следующие функции в базовый класс: Загрузка и хранение на более высоком уровне 5 Поддержка пользовательских настроек Сброс настроек пользователя к предопределенным значениям по умолчанию Обновление параметров из более ранней версии приложения Проверка параметров перед их изменением или сохранением Параметры могут быть описаны с помощью набора атрибутов, определенных в системе. Пространство имен конфигурации; они описаны в атрибутах параметров приложения. При определении параметра необходимо использовать его либо с помощью (Application Scoped Setting Attribute), либо (User Scoped Setting Attribute), который описывает, применяется ли этот параметр ко всему приложению или только к текущему пользователю. 2.2 Установка классов Класс (ApplicationSettingsBase) сам по себе не сохраняет и не загружает настройки; это задание относится к поставщику настроек, классу, производному от (SettingsProvider). Если производный класс (ApplicationSettingsBase) не указывает поставщика параметров через атрибут (SettingsProvider), то используется поставщик по умолчанию (LocalFileSettingsProvider). Система конфигурации, первоначально выпущенная вместе с ( NET Framework), поддерживает предоставление статических данных конфигурации приложения либо через файл (machine.config) на локальном компьютере, либо в файле (app.exe.config), который вы развертываете вместе с приложением. Класс (LocalFileSettingsProvider) расширяет эту встроенную поддержку следующими способами: Параметры области применения могут храниться в файлах (machine.config) или (app.exe.config). Файл (Machine.config) всегда доступен только для чтения, в то время как файл (app.exe.config) по соображениям безопасности доступен только для чтения для большинства приложений. Пользовательские настройки могут храниться в файлах (app.exe.config), и в этом случае они рассматриваются как статические значения по умолчанию. Параметры, не относящиеся к области пользователя по умолчанию, сохраняются в новом файле (user.config), где (user) - это имя пользователя, выполняющего приложение в данный момент. Вы можете указать значение по умолчанию для параметра в области пользователя с помощью атрибута (DefaultSettingValueAttribute). Поскольку параметры области действия пользователя часто меняются во время выполнения приложения, файл (user.config) всегда доступен для чтения и записи. Все три файла конфигурации хранят настройки в формате XML. XMLэлементом верхнего уровня для параметров области приложения является 6 <AppSettings>, в то время как <UserSettings> используется для параметров области пользователя. Файл app.exe.config, содержащий как параметры области приложения, так и значения по умолчанию для параметров области пользователя 2.3 Типы архитектуры веб-приложений Архитектура веб-приложения в основном презентует связи и взаимодействия между подобными компонентами, будто пользовательские интерфейсы, экраны возделывания транзакций, базы данных и другие. ключевая установка - убедиться, что все элементы конкретно функционируют вместе. закономерность достаточно проста: если юзер вводит URL-адрес в браузере и нажимает «ввод», интернетбраузер осуществляет требование к серверу. Сервер отвечает, а затем демонстрирует вызываемую веб-страницу. Все эти составляющие делают архитектуру веб-приложения. Как работает целая структура для веб-приложений? Все приложения заключаются из двух долей – фронтовая часть кода и серверной. Интерфейс приложения - это визуальная элемент который. юзеры могут наблюдать интерфейс и взаимодействовать с ним. Клиентский программа откликается на воздействия пользователей. Серверная не отображается для обычных пользователей, но с помощью нее выполняется программная часть, которые выполняет запросы ,заданными ими . Он обрабатывает запросы и отображают на серверные-запросы. Поэтому, если пользователь вбивает информацию в базу данных, он сталкивается с наружным интерфейсом, но как только пользователь жмете «ввод» и добавляет некую информацию – программная часть приложения срабатывает. При правильной работе внешняя и внутренняя составляют архитектуру программного обеспеченья веб-приложения. Вид и составляющие архитектуры веб-приложений дабы вернее осознать архитектуру веб-приложения, вам надлежит окунуться в его составляющие и уровни[1]. Веб-приложения делят свои ключевые функции на уровни. Это позволяет замещать либо обновлять отдельный слой независимо. Базовые составляющие архитектуры веб-приложений Веб-архитектура располагает составляющие пользовательского интерфейса и структурные компоненты. заключительные вдобавок делятся на клиентские и серверные. составляющие пользовательского интерфейса составляющие пользовательского интерфейса означают все элементы интерфейса, такие как журналы активности, информативные панели, уведомления, опции. Приложение оказывается долею внешнего интерфейса веб-приложения. Структурные компоненты состоят из клиентской и серверной сторон: Клиентский компонент сконструирован с HTML, CSS или JavaScript. Веб-браузеры запускают код и реорганизуют его в интерфейс, отчего нет потребности в настройке операционной системы [2]. Если разобрать программную часть приложения ,то она построена на языках программирования ,в основном такие как : C++ ,Java ,C# ,Net ,Node.JS. Код 7 складывается из двух основных частей – данные на которых ,она построена и кодовая часть приложения. Кодовая часть приложения - это центр управления вебприложением. База данных хранит в себе информацию (например, ваших учетных данных). В основном существует четыре уровня : Уровень приложения (РL) Уровень обслуживания данных (DSL) Уровень бизнес-логики (BLL) Уровень доступа к данным (DAL) Уровень представления РL показывает внешний интерфейс приложения и облегчает связь между пользователем и приложением . Уровень представления располагает компоненты пользовательского интерфейса, которые визуализируют и показывают сведения для пользователей. Также имеются составляющие пользовательского процесса, что задают связь с пользователем. PL дает всю необходимую информацию клиентской стороне. генеральная установка уровня представления - унаследовать входные данные, обработать запросы пользователей, отослать их в службу данных и показать результаты. [2] Все остается так, как было изначально определено. Если переменная объявлена как строка, она всегда будет строкой и не будет преобразовываться в логическое значение. Это увеличивает вероятность того, что функции будут работать так, как предполагалось изначально. Благодаря добавлению строгих типов и других элементов, которые делают код более выразительным (так называемый синтаксический сахар), вы можете увидеть замысел разработчиков, изначально написавших код. Это особенно важно для распределенных команд, работающих над одним проектом. Код, который говорит сам за себя, может компенсировать отсутствие прямого общения между членами команды. Информация о типах делает редакторы и интегрированные среды разработки (IDE) намного более полезными. Они могут предлагать такие функции, как навигация по коду и автозаполнение, предоставляя точные предложения. Вы также получаете обратную связь во время набора текста: редактор помечает ошибки, в том числе связанные с типом, как только они возникают. Все это помогает вам писать поддерживаемый код и приводит к значительному повышению производительности. Рефакторинг или обновление приложения без изменения его поведения необходимы, чтобы кодовая база оставалась надежной и поддерживаемой. делает этот важный процесс менее болезненным. Когда IDE много знают о вашем коде, вы получаете инструменты навигации, такие как «найти все ссылки» или «перейти к определению». Кроме того, многие ошибки выявляются автоматически. Например, если вы переименуете функцию и позже забудете где-нибудь изменить имя, TS предупредит вас о проблеме. Это упрощает и ускоряет рефакторинг, что особенно полезно, когда вы имеете дело с большими частями кодовой базы. 8 2.4 Шаблоны проектирования архитектуры приложения Существует множество шаблонов (паттернов) проектирования архитектуры веб-приложения. Для выбора более подходящего необходим анализ самых популярных подходов проектирования. 1. Многослойные картины Этот шаблон можно использовать для структурирования программ, которые можно разделить на группы подзадач, каждая из которых находится на определенном уровне абстракции. Каждый уровень предоставляет услуги для следующего более высокого уровня[3]. Наиболее часто встречающиеся 4 уровня общей информационной системы заключаются в следующем. Уровень презентации (также известный как слой пользовательского интерфейса) Уровень приложения (также известный как уровень обслуживания) Уровень бизнес-логики (также известный как уровень домена) Уровень доступа к данным (также известный как уровень сохраняемости) Использование Общие Desktop-Приложений. Веб-приложения для электронной коммерции. 2. Шаблон клиент-сервер Этот шаблон состоит из двух страниц: одного сервера и нескольких клиентов. Серверный компонент предоставляет службы нескольким клиентским компонентам. Клиенты запрашивают услуги с сервера, и сервер предлагает этим клиентам соответствующие услуги. Кроме того, сервер по-прежнему отслеживает запросы клиентов. Использование Онлайн-приложения, такие как электронная почта, обмен документами и банковское дело. 3. Шаблон Master-Slave" Эта модель состоит из двух сторон: хозяина и рабов. Основной компонент распределяет работу по идентичным подкомпонентам и вычисляет конечный результат из результатов, возвращаемых подкомпонентами. Использование Когда вы реплицируете базу данных, основная база данных считается авторитетным источником, а дочерние базы данных синхронизируются с базой данных. Периферийные устройства, подключенные к шине в компьютерной системе (приводы Master и Slave). 4.Master-Slave-Шаблон" 9 Этот шаблон можно использовать для структурирования систем, которые генерируют и обрабатывают поток данных. Каждый этап обработки заключен в компонент фильтра. Обрабатываемые данные передаются по каналам. Эти каналы могут использоваться для буферизации или для целей синхронизации. Использование Компилятор. Последовательные фильтры выполняют лексический анализ, разбор, семантический анализ и генерацию кода. Рабочие процессы в биоинформатике. 5. Шаблон брокера Этот шаблон используется для структурирования распределенных систем с несвязанными компонентами. Эти компоненты могут взаимодействовать друг с другом с помощью удаленных служебных вызовов. Брокерский компонент отвечает за координацию взаимодействия между компонентами. Серверы публикуют свои функции (услуги и свойства) брокеру. Клиенты запрашивают услугу у брокера, а затем брокер перенаправляет клиента с его регистрации на соответствующую услугу. Использование Программное обеспечение брокера обмена сообщениями, такое как Apache ActiveMQ, Apache Kafka, RabbitMQ и JBoss Messaging.[5] В этом шаблоне отдельные компоненты называются одноранговыми. Одноранговые узлы могут выступать как в качестве клиента, запрашивающего службы у других одноранговых узлов, так и в качестве сервера, предоставляющего услуги другим одноранговым узлам. Одноранговый узел может выступать в качестве клиента, сервера или и того, и другого и динамически изменять свою роль с течением времени[4]. Использование Сети обмена файлами, такие как Gnutella и G2) Мультимедийные протоколы, такие как P2PTV и PDTP. Продукты, основанные на криптовалютах, таких как биткойн. 7.Peer-to-Peer-модель Этот шаблон в основном обрабатывает события и имеет 4 основных компонента: источник событий, прослушиватель событий, канал и шину событий. Источники публикуют сообщения на определенные каналы на шине событий. Слушатели подписываются на определенные каналы. Слушатели получают уведомления о сообщениях, опубликованных на канале, на который они ранее подписались. Использование Разработка Android Службы уведомлений 10 8.Шаблон шины событий Этот шаблон, также известный как шаблон MVC, делит интерактивное приложение на 3 части: модель-Содержит основные функции и представление данных-Отображает информацию для пользователя (может быть определено несколько представлений) контроллер-Обрабатывает входные данные пользователем Это делается для того, чтобы отделить внутреннее представление информации от возможностей представления и принятия информации пользователем. Он отделяет компоненты и позволяет эффективно повторно использовать код. Использование Архитектура для приложений World Wide Web на основных языках программирования. Веб-фреймворки, такие как Django и Rails. 9.Шаблон модели вид контроллер" Этот шаблон полезен для задач, для которых не известны стратегии детерминированного решения. Шаблон доски состоит из 3 основных компонентов. blackboard-Структурированная глобальная память, содержащая объекты из источника знаний космических решений-специализированные модули с собственными Компонент управления видами-выбирает, настраивает и запускает модули. Все компоненты имеют доступ к плате. Компоненты могут создавать новые объекты данных, добавленные на доску. Компоненты ищут определенные типы данных на доске и могут найти их, сопоставив их с существующим источником знаний. Использование Распознавание речи Идентификация и отслеживание транспортных средств Идентификация структуры белка Интерпретация сигналов гидролокатора. 10. Шаблон интерпретатора Этот шаблон используется для разработки компонента, который интерпретирует программы, написанные на специальном языке. Он в основном определяет, как оцениваются программные строки, известные как предложения или выражения, написанные на определенном языке. Основная идея состоит в том, чтобы иметь класс для каждого символа языка. Использование 11 Языки запросов к базе данных, такие как SQL. Языки, используемые для описания протоколов связи. 2.2 Программное обеспечение 2.2.1 Язык C# (C-Sharp) C# -это современный, объектно-ориентированный и безопасный язык программирования. C# позволяет разработчикам создавать множество типов безопасных и надежных приложений, которые работают в чистой экосистеме. C# имеет свои корни в семействе языков C и будет сразу знаком программистам C, C++, Java и JavaScript. Этот тур содержит обзор основных компонентов языка в C# 8 и более ранних версиях. Если вы хотите изучить язык с помощью интерактивных примеров, попробуйте ознакомиться с учебными пособиями по C#. C# и JAVA-это два разных объектно-ориентированных языка, и оба они также имеют некоторые сходства и различия. Csharp и JAVA происходят из своего собственного уникального класса "объектных" предков. Все классы в C# исходят из системы. Класс объектов и в JAVA все классы являются подкатегориями java.Лэнг. Класс объектов. C # стремится быть современным, сиять новыми функциями, опережать время, использовать загадочный синтаксис для вещей. C# это скорее "коммерческий" язык с большим количеством мощных библиотек, продаваемых на рынке. В то время как Java пытается быть консервативной, медленно перенимая новые вещи, стабильная, ясная, простая, легко понятная новичку. Java больше похож на язык "с открытым исходным кодом" с тоннами и тоннами доступных библиотек с открытым исходным кодом. Среды выполнения C#, и JAVA имеют свои собственные среды выполнения . Исходные коды C # компилируются на языке Microsoft Intermediate Language (MSIL) и во время выполнения выполняются с помощью сред выполнения - Common Language Runtime (CLR). Например, исходные коды JAVA компилируются в байтовый код Java, и во время выполнения он выполняется с помощью среды выполнения виртуальной машины Java (JVM). И CSharp, и JAVA поддерживают собственную коллекцию с помощью компиляторов just in time. Безопасные для печати языки Java и C# были разработаны, чтобы быть безопасными для прессы . Незаконный кастинг будет пойман во время дубляжа, если будет доказано, что кастинг является незаконным или исключение будет выдано во время выполнения, если объект не может быть передан новому типу. Поэтому безопасность типов более важна, поскольку она не только заставляет разработчика писать более правильный код, но и помогает системе стать более защищенной от хакеров кода. 12 В языках более низкого уровня управление памятью может быть утомительной работой, потому что вы должны помнить о правильном удалении новых объектов, чтобы освободить ресурсы. Это не относится к C# и Java , где встроенная сборка мусора помогает предотвратить утечку памяти, удаляя объекты, которые больше не используются приложением. Хотя утечки памяти все еще могут происходить, основы управления памятью уже позаботились о вас. Дженерики улучшают управление формулами с помощью компилятора, в значительной степени удаляя приведения из исходного кода. В Java генераторы реализуются с использованием удалений. Общие параметры типа "удаляются", а приведения добавляются при записи в байт-код. C # еще больше расширяет возможности универсальных языков, интегрируя их в инфраструктуру общего языка (CLI) и позволяя информации о типах быть доступной во время выполнения, что дает небольшой прирост производительности. Указатель C # позволяет использовать маркеры, которые некоторые разработчики языков считают небезопасными, но некоторые языковые функции пытаются гарантировать, что эта функциональность не будет случайно использована. Индикаторы также значительно усложняют такие технологии, как удаленный вызов метода Java (RMI), когда программные объекты, находящиеся на компьютере, могут быть зарегистрированы в программе, запущенной на совершенно отдельном компьютере. Некоторые предположили, что отсутствие индикаторов памяти в Java было намеком на появление грид-вычислений, где одно приложение может быть распределено между несколькими физическими аппаратными средствами. Методы в c-sharp по умолчанию не являются виртуальными. Однако в Java методы по умолчанию являются виртуальными. Виртуальные методы гарантируют, что будет вызван самый устаревший метод объекта, определенного средой выполнения . Вы всегда должны иметь это в виду при вызове или написании любого виртуального метода! Если метод объявлен как невиртуальный, вызываемый метод будет определен компилятором. Это существенное различие в философии среди разработчиков Java-платформ. 2.2.1 Язык .NET architecture Тип данных определяют множество значений, которые может принимать объект (экземпляр этого типа), множество операций, которые допустимо выполнять над ним, а так же способ хранения объектов в оперативной памяти. Технология .NET Framework определяет две группы типов данных: значимые типы (value-types) и ссылочные типы (reference-types). Определено, что экземпляры значащих типов должны располагаться в стеке, тогда как ссылочных — в другой области оперативной памяти, называемой управляемой кучей (managed heap). В .NET Framework все, даже самые простые, типы данных представлены некоторым классом или структурой в общей иерархической структуре классов. Необходимо помнить, что тип, находящийся на вершине иерархической структуры, 13 определяет поведение производных от него классов. Иерархическая структура в общем виде .Для описания значимых типов данных используются структуры. Тогда как для описания ссылочных — классы. Таким образом, любому базовому типу данных соответствует объявление некоторой структуры, например, типу int соответствует структура System.Int32. Одним из основных вопросов, возникающих при реализации приложений, является обеспечение диалога с пользователем. Такой диалог направлен на предоставление пользователю информации о выполнении программы, с одной стороны, и на предоставление пользователю возможности управлять выполнением приложения, с другой. При создании консольного приложения весь «пользовательский диалог» реализуется в текстовом режиме (пользователь получает от приложения информацию в текстовом виде и либо осуществляет выбор действия, либо вводит, необходимые для работы приложения, данные). Такое взаимодействие с пользователем заключается в реализации консольного ввода-вывода информации. В системе базовых типов .NET Framework предусмотрен класс Console, который содержит набор статических методов и свойств, необходимых для осуществления консольного ввода-вывода, и получения служебной информации о консоли. Только что было упомянуто новое для Вас понятие — «свойство». Свойства класса это методы двунаправленного доступа к полям класса, которые обеспечивают инкапсуляцию внутри типа внутренней логики доступа к данным 2.2.1 Тип C#(C-Sharp) То, что программные продукты, на сегодняшний день, интегрированы во все сферы деятельности человека, является общепризнанным фактом. Технологии автоматизации производственных процессов внедряются не только на промышленных объектах, но, например, и в фермерском хозяйстве. В связи со столь бурным ростом спроса на программное обеспечение самых различных сфер жизни, получает своё развития и сама технология создания этого программного обеспечения. Которая состоит, с одной стороны, в совершенствовании языков программирования, позволяющих реализовывать всё более сложные и масштабные проекты, а с другой стороны — в развитии технологий, которые либо на этих языках основаны, либо позволяют реализовать возможность создания и использования сложных высокоуровневых языков программирования. Мы рассмотрим развитие языков программирования на примере семейства языков «С». Первым языком этого семейства был язык программирования «С», разработанный Дэнисом Ритчи в 1970-х годах. Как и все популярные языки программирования,язык «С» произошёл из кризиса программного обеспечения, реализовав новаторский подход своего времени — «структурное программирование». Как правило, потребность в разработке новых языков заключается в необходимости новых средств масштабирования программных решений и самого программного кода. То есть в создании таких 14 механизмов, которые позволяли бы с лёгкостью расширять существующие возможности программы и привносить в программу новые функциональные модули. Поскольку, зачастую, основная работа над проектом происходит не на этапе проектирования и разработки, а во время «развития» и «сопровождения» (модернизации и расширения программного решения уже после его появления на рынке). До языка «С» программирование в основном было императивным, что вызывало сложности при увеличении «размера» («масштабы») программных проектов. По-правде сказать, язык «С», хоть и решал некоторые проблемы связанные с масштабированием кода (привносил такие элементы как макроопределения, структуры и т.д.), но всё ещё имел серьёзный недостаток — невозможность справляться с большими проектами. Следующим этапом развития семейства языков «С» стал язык «С++», разработанный Бьярном Страуструпом в 1979-ом году, который реализовывал парадигму объектно-ориентированного подхода в программировании. Язык «С» имел большой успех, в связи с тем, что в нём сочетались гибкость, мощность и удобство. Поэтому новый язык «С++» стал «развитием» языка «С». Можно сказать, что «С++» — это объектно-ориентированный «С»,а причиной его возникновения стала «мода» на объектно-ориентированное программирование. Тесное родство «С++» и «С» обеспечило популярность новому языку программирования, поскольку «С»-программисту не нужно было изучать новый язык программирования, достаточно было освоить «новые» объектно-ориентированные возможности и без того удачного языка. Но время предъявило новые требования в области разработки программного обеспечения. Они заключались в том, что у конечного потребителя возникала необходимость в межплатформенной переносимости программного обеспечения, упрощения передачи проектов по сетям коммуникации, а так же в уменьшении времени, которое затрачивается на разработку программного обеспечения. Названная проблема, к сожалению, не решается созданием нового языка программирования. Она находиться в области технологии, поэтому для её решения необходима была новая технология, которая смогла бы работать одинаково эффективно на всех платформах (Windows, Unix, Linux, Mac OS), обеспечивала бы отсутствие конфликтов с операционной системой при переносе приложения с одной операционной системы на другую. Естественно, для создания новой технологии необходим был новый язык программирования, который, с одной стороны, был бы языком реализации данной технологии, а с другой — обеспечивал бы гибкость и скорость разработки проектов на этой новой технологии. В 1991 году компания Sun Microsystems предложила решение этой проблемы на базе своего нового языка «Oak» (англ. Дуб), который впоследствии стал называться «Java». Авторство этого языка приписывают Джеймсу Гослингу. На базе языка Java была создана среда исполнении «Java Runtime». Межплатформенная переносимость обеспечивалась за счёт существования интегрированной 15 среды исполнения Java. Которая могла исполнять приложения, созданные на языке «Java» на любых платформах, на которых она установлена. Ограничение заключалосьлишь в одном — существовании такой среды исполнения для всех существующих операционных систем. Компания Sun разработала варианты такой среды исполнения практически для всех существующих операционных систем. На сегодняшний момент в области межплатформенной переносимости с Javaприложениями не может конкурировать ни одна технология. Однако, язык Java решал далеко не все проблемы (например проблему межъязыкового взаимодействия). Приложения созданные на Java исполняются достаточно медленно, что не позволяет использовать их на малопроизводительных платформах. И сам язык Java не содержит всех современных языковых средств и механизмов, которые предлагает C#. Но это скорее из-за того, что между их появлением 9 лет разницы, а в мире информационных технологий этот период равносилен нескольким поколениям. Необходимо отметить, что язык С# является частью платформы, называемой платформой .NET. Справедливости ради необходимо отметить, что C# не единственный язык, используемый в рамках платформы .NET, которая представляет собой, с одной стороны, технологию, а с другой — концепцию развития средств разработки программного обеспечения, позиционируемую компанией Microsoft. Эта технология обычно отождествляется с Microsoft .NET Framework, представляющим собой совокупность программных модулей (все модули будут подробно описаны в соответствующих разделах этого урока), в рамках и посредством которых в операционной системе Windows выполняются . Причины возникновения платформы Microsoft .NET Среди основных причин возникновения технологии .NET можно выделить следующие: необходимость межплатформенной переносимости: Глобализация с одной стороны и развитие технологий коммуникации — с другой, обусловили необходимость создания таких приложений, которые могли бы выполняться независимо от архитектуры операционной системы и вычислительной техники, на которой программное решение будет запускаться. необходимость в упрощении процесса развёртывания программного решения и уменьшения вероятности конфликта версий, которые с течением времени появляются всё быстрее и быстрее. необходимость создания среды исполнения программных решений, которая бы могла предоставить режим безопасного исполнения потенциально опасных программных продуктов, решала проблемы производительности операционной системы, посредством контроля за распределением ресурсов. 16 Необходимость создания технологии разработки программных решений, которая реализовывала бы все коммуникационные возможности В соответствии с современными промышленными стандартами и гарантировала интегрирование созданного на базе неё кода с кодом, созданным с использованием других технологий (межъязыковая интеграция). Причины, или, скорее, проблемы, приводящие к возникновению технологий, не всегда полностью решаются новой технологией. Платформа .NET эффективно решает вопрос межъязыкового взаимодействия, поскольку поддерживает механизмы, позволяющие импортировать программные модули из сборок, «написанных» на других языках, а так же приводить данные «неизвестных» типов к соответствующим типам общей системы типов .NET Framework. А также содержит другие программные средства, направленные на реализацию межъязыкового взаимодействия, которые будут описаны в соответствующих уроках. Так же платформа Microsoft .NET решает проблему развёртывания приложения, реализуя архитектурную независимость приложений: Microsoft .NET приложения компилируются не в исполняемый код, а в промежуточный код (Common Intermediate Language — CIL или просто IL), а только при запуске, посредством JIT компиляции (Just In Time Compilation), компилируются в исполняемый код, с учётом особенностей архитектуры той ЭВМ,на которой происходит компиляция. Также .NET-приложения имеют сравнительно малый объём. Это происходит потому, что все необходи мые для функционирования приложения средства Базовой Системы Типов (библиотека базовых классов — Base Class Library) содержаться на каждом клиентском компьютере, (наличие установленного на клиентском компьютере .NET Framework является обязательным условием). Необходимые приложению модули Базовой Системы Типов не включаются в его состав (исходный код), а подключаются вовремя запуска, что уменьшает объём .NET-приложения. Архитектура веб-приложений описывает взаимодействие между приложениями, базами данных и системами промежуточного программного обеспечения в Интернете. Это гарантирует одновременную работу нескольких приложений. Давайте разберемся с этим на простом примере открытия веб-страницы. Как только пользователь нажимает кнопку перехода после ввода URL-адреса в адресной строке веб-браузера, он запрашивает этот конкретный веб-адрес. Сервер отправляет файлы в браузер в ответ на сделанный запрос. Затем браузер запускает эти файлы, чтобы показать запрошенную страницу. Наконец, пользователь может взаимодействовать с веб-сайтом. Самое важное, что здесь следует отметить, - это код, анализируемый веб-браузером. Аналогичным образом работает веб-приложение. 17 Этот код может иметь или не иметь конкретных инструкций, которые сообщают браузеру, как реагировать на различные типы пользовательского ввода. Следовательно, архитектура веб-приложения должна включать в себя все подкомпоненты, а также обмены внешними приложениями для всего программного приложения в вышеупомянутом случае, которым является веб-сайт. Архитектура веб-приложений незаменима в современном мире, потому что большая часть глобального сетевого трафика, а также большинство приложений и устройств используют веб-связь. Для написания клиентского кода используется комбинация CSS, HTML и JavaScript. Этот код анализируется веб-браузером. В отличие от кода на стороне сервера, код на стороне клиента может быть виден, а также изменен пользователем. Он реагирует на ввод пользователя. Код на стороне клиента обменивается данными только через HTTP-запросы и не может напрямую читать файлы с сервера. Компоненты веб-приложения UI / UX - сюда входят журналы активности, информационные панели, уведомления, настройки, статистика и т. Д. Эти компоненты не имеют ничего общего с работой архитектуры веб-приложения. Вместо этого они являются частью плана макета интерфейса веб-приложения. Структурные компоненты. Двумя основными структурными компонентами веб-приложения являются клиентская и серверная стороны. Клиентский компонент - клиентский компонент разработан на CSS, HTML и JS. Поскольку он существует в веб-браузере пользователя, нет необходимости в настройках операционной системы или устройства. Благодаря добавлению строгих типов и других элементов, которые делают код более выразительным (так называемый синтаксический сахар), вы можете увидеть замысел разработчиков, изначально написавших код. Это особенно важно для распределенных команд, работающих над одним проектом. Код, который говорит сам за себя, может компенсировать отсутствие прямого общения между членами команды. Информация о типах делает редакторы и интегрированные среды разработки (IDE) намного более полезными. Они могут предлагать такие функции, как навигация по коду и автозаполнение, предоставляя точные предложения. Вы также получаете обратную связь во время набора текста: редактор помечает ошибки, в том числе связанные с типом, как только они возникают. Все это помогает вам писать поддерживаемый код и приводит к значительному повышению производительности. Рефакторинг или обновление приложения без изменения его поведения необходимы, чтобы кодовая база оставалась надежной и поддерживаемой. TypeScript делает этот важный процесс менее болезненным. Когда IDE много знают о вашем коде, вы получаете инструменты навигации, такие как «найти все ссылки» или «перейти к определению». Все вышесказанное упрощает передачу приложения по системам коммуникации и его дальнейшее развёртывание, даже если рабочие станции 18 распределены на больших расстояниях друг от друга. Разработчикам следует понимать, что CLR является одной из реализаций спецификации общеязыковой инфраструктуры (Common Language Infrastructure, сокращенно CLI). В настоящий момент ведутся работы как минимум над еще двумя реализациями, этого стандарта — проекты Mono и Portable.NET. Microsoft распространяет в исходных текстах еще одну свою реализацию CLI, работающую в Windows, и под управлением FreeBSD. Эта реализация называется Shared Source CLI (иногда используется ее кодовое название — Rotor). CLI — это международная спецификация, которая позиционирует идеологию языков программирования с интегрированной средой исполнения. Основной идеей является то, что приложение, имеющее составные модули, созданные на различных высокоуровневых языках программирования, переводятся не в исполняемый машинный код, а в некоторый промежуточный код. CLI описана в стандарте ECMA-335 и основными составляющими её являются: Общая система типов (Common Type System, CTS) — обеспечивает кроссязыковое взаимодействие в рамках среды . Общая система типов CTS (common type system) Ядро стандартной системы типов весьма обширно, так как она разрабатывалась из расчета поддержки максимального числа языков, и обеспечения максимальной эффективности работы кода на платформе .NET. Все типы, входящие в стандартную систему типов, можно разделить на две группы: типы-значения и типыссылки. Главное различие между ними следующее: использование типовзначений всегда связано с копированием их значений, а работа со ссылочными типами всегда осуществляется через их адреса.Типы-значения существуют встроенные (к ним относятся в основном численные типы данных) и пользовательские.Ссылочные типы описывают, так называемые, объектные ссылки (object references), которые представляют собой адреса объектов.Все базовые типы данных языка. Общая языковая спецификация CLS (common language specification) Библиотека классов FCL (BCL) 2.2.3 Работа с WinForm Мы можем настроить свойства расположения, размера и текста элементов управления кнопками в соответствии с нашими требованиями. Для повышения визуальной привлекательности также изменено свойство FlatStyle. Мы используем событие Click для подключения каждой кнопки к соответствующему методу с аналогичным именем. Это делается для того, чтобы каждый раз, когда мы нажимаем на кнопку, выполнялся нужный код. Код, который будет активирован, будет обработан впоследствии. 19 Панель управления сама по себе ничего не стоит, так как она ничего не делает. Его роль становится последовательной только тогда, когда он агрегирует или собирает другие элементы управления. Помещая элементы управления в панель управления, мы можем работать со всеми из них одновременно. Таким образом, с помощью одной строки кода мы можем отключить панель, тем самым эффективно отключив все элементы управления, содержащиеся в ней. Таким образом, с помощью панельного элемента управления большое количество элементов управления можно рассматривать как один элемент управления, и все их свойства могут быть изменены в унисон. Свойства расположения и размера элемента управления Panel с именем panelVCRControl имеют определенные координаты. Свойство Text инициализируется, но не отображается на экране. Элемент управления панели, как и любой другой элемент управления, имеет свойство Controls, имеющее тип данных элемента управления.Контрольная коллекция. С помощью метода AddRange, для которого требуется массив, все элементы управления добавляются в коллекцию ControlCollection одним действием. Это аналогично функции Добавления, которая добавляет только один элемент управления в коллекцию элементов управления. Таким образом, внутренне AddRange повторно вызывает функцию Add и на каждой итерации предоставляет ей один элемент массива, пока она не передаст все элементы всего массива в качестве параметров. Подводя итог, мы добавляем четыре текстовых поля и один элемент управления меткой на панель, чтобы мы могли рассматривать их как единое целое. Однако в этой программе мы не используем это свойство. Остальные элементы управления, включая панель управления, наконец, добавляются в основную форму с помощью вышеупомянутой функции AddRange. Объект custList имеет пользовательский тип данных CustomerList, который является производным от CollectionBase. Этот класс содержит статическую функцию GetCustomers. Эта функция создает объект c1, который является экземпляром CustomerList. При использовании New и, наконец, значение в этом объекте возвращается в custList в конструкторе (zzz). У нас есть еще один клиент класса, который является производным от класса компонентов (это необязательно). Он представляет одного Клиента. Класс CustomerList символизирует список или совокупность клиентов. Класс Customer имеет статическую функцию ReadCustomer1, которая создает экземпляр класса Customer и передает идентификатор клиента конструктору. Конструктор инициализирует идентификатор поля этим значением. Объект Customer представлен тремя переменными, а именно: id, FirstName и DateOfBirth. Таким образом, объект идентифицируется по его полям или переменным, а не по методам, которые он использует. Программисты в Microsoft решили инициализировать поле id через конструктор и другие поля отдельно. 20 Вместо этого они могли бы инициализировать все три поля через конструктор или не инициализировать вообще ни одного. Наиболее примечательным здесь является то, что к полю FirstName можно получить прямой доступ, в то время как поле DateOfBirth доступно только через свойство DateOfBirth, используя его метод доступа set. Разумно и разумно запретить доступ к полю напрямую и разрешить доступ только через свойство. Однако доступ к полю идентификатора осуществляется через конструктор, а не через идентификатор свойства. Мы скоро углубимся в это. Объект а представляет первого клиента. Этот объект хранится в классе CustomerList, так как он является производным от класса CollectionBase. Он имеет возможность хранить несколько объектов. Класс CollectionBase имеет свойство List типа данных lList, которое представляет коллекцию. Объект IList с именем b имеет метод Add, который добавляет любой объект в коллекцию и возвращает позицию, в которую был добавлен объект. Таким образом, мы добавили объект Клиента в список. Чтобы добавить второго клиента, мы создаем объект Клиента в том же классе и инициализируем членов напрямую. Этот клиент также добавляется в список клиентов путем вызова функции Add1, которая использует свойство List для добавления клиента. Третий клиент добавляется в Список, используя более компактную форму. Каждый из нас обладает особым стилем написания кода. Таким образом, бесполезно обсуждать вопрос о том, почему статическая функция была использована нами для создания объекта, вместо того, чтобы создавать его напрямую. Класс CustomerList, производный от коллекций, может хранить любой произвольный объект. Функция Add1 не является существенной, но она облегчает добавление объектов в коллекцию. Таким образом, класс CustomerList представляет собой простую коллекцию объектов. Вместо этого можно было бы использовать любую другую сущность, которая может представлять коллекцию. Возвращаясь к нашему конструктору (zzz), объект Custlist теперь предоставляет доступ к трем объектам клиента через объект коллекции. Каждый элемент управления имеет свойство только для чтения, называемое DataBindings, которое имеет тип данных ControlBindingsCollection. ControlBindingsCollection, в свою очередь, является производным от класса BindingsCollection. Этот класс используется для привязки элемента управления к источнику данных, поскольку он представляет собой коллекцию всех привязок данных для элемента управления. Функция Add принимает три параметра и возвращает объект привязки. • Первый параметр-это строка, представляющая имя свойства элемента управления, к которому мы хотим привязаться. В нашей программе мы использовали свойство с именем Text. 21 • Второй параметр имеет тип object, который представляет данные, т. е. объект сбора или источник данных. В данном случае это custlist. • Третий параметр-это имя поля или свойства, к которому нам нужно привязаться. Здесь имя поля-id. Таким образом, мы привязываем поле с именем id в списке источников данных custList к свойству Text первого текстового поля. Используя описанный выше механизм, мы можем привязать любой столбец в источнике данных к любому допустимому свойству элемента управления, такому как backcolor или forecolor. В следующем наборе мы привязываем свойство Text второго элемента управления textbox, textBoxFirstName, к столбцу FirstName1 в списке custlist источника данных. Третий столбец добавляется с помощью класса Binding, который понимает только Binding. Этот класс представляет собой простую связь между свойством элемента управления и свойством любого объекта. Конструктору класса привязки задаются те же три параметра, что и у функции Add, и они также имеют одинаковое значение. Теперь мы объясним второй параметр, то есть источник данных. Вторым параметром может быть любой класс, производный от интерфейсов, IBindingList или ITypedList. Они включают классы DataSet, DataTable, DataView или DataViewManager. Эти классы реализуют интерфейс IList. По сути, существует большое количество классов (более 20), которые реализуются из этого интерфейса. В нашем примере мы использовали CollectionBase. Единственная гарантия, которую следует иметь в виду, заключается в том, что сначала должен быть создан объект IList, и только тогда он может быть использован в любой из функций привязки. Объект в списке должен иметь тот же тип данных, иначе возникнет исключение. Последний тип, разрешенный в качестве источника данных, - это строго типизированный IList, такой как массив. Одной из похвальных особенностей класса привязки является то, что он позволяет пользователю определять шаблоны отображения данных. Он также действует в качестве проверяющего органа всякий раз, когда пользователь вносит какие-либо изменения в данные. Менеджер привязки вызывает событие форматирования, когда ему нужно отобразить некоторые данные в элементе управления, и вызывает событие синтаксического анализа, когда ему нужно извлечь данные. Таким образом, мы можем создавать свои собственные пользовательские форматы. Событие Format прикрепляется к функции textBoxDOB_FormatDate с помощью делегата ConvertEventHandler. Эта функция предоставляет пользовательский формат, в котором должна отображаться дата. Мы используем те же принципы для вызова метода textBoxDOB_ParseDate, который анализирует дату и проверяет наличие ошибок. В скором времени мы попытаемся понять эти функции. 22 Функция Добавления, используемая ранее, была перегружена, чтобы принять одно из следующих действий: • две строки и параметр объекта. • две строки и объект привязки. Таким образом, единственное различие между двумя привязками данных заключается в том, что, используя объект привязки, мы можем настроить отображение данных. Класс Form имеет свойство BindingContext, которое возвращает объект BindingContext. Индексатор возвращает объект BindingManagerBase, который представляет все связанные с данными элементы управления, привязанные к одному и тому же источнику данных, и синхронизирует их. Именно этот объект BindingManagerBase облегчает перемещение от одной записи к другой. На данный момент мы инициализируем его событие PositionChanged в функцию customers_PositionChanged, которая будет вызываться при каждом изменении свойства Position. В этой функции мы создаем объект DataSet, а затем передаем в конструктор строку с именем myDataSet. Эта строка используется для предоставления имени корневому элементу документа в представлении XML. Поскольку в настоящее время мало полезности в присвоении имени данным в этой программе, ее можно удалить и отказаться от нее. Набор данных-это набор таблиц в памяти, которые могут быть связаны друг с другом. Мы можем написать тома о концепции набора данных. Microsoft сняла все ограничения при интеграции большого количества функций в набор данных. Следующая задача - связать две таблицы данных с нашим объектом DataSet. Всякий раз, когда нам требуется более одного подобного типа, нам нужно назначить имя этому объекту. Итак, мы создаем две таблицы tCust и tOrders с Клиентами и заказами. Мы создаем два объекта DataColumn с именами cCustID и cCustName и добавляем их в коллекцию столбцов нашего клиента DataTable, используя элемент Add. Эти два столбца представляют уникальный идентификатор и имя клиента. Затем мы добавляем следующие три столбца в нашу таблицу под названием Заказы: • CustID: идентификатор клиента, который купил заказ. • Дата заказа: дата размещения заказа. • Сумма заказа: сумма размещенного заказа. Как только это будет сделано, мы добавим две пустые таблицы в набор данных, используя функцию Add из коллекции Tables в классе DataSet. Теперь нам нужно связать две таблицы, то есть Клиентов и Заказы. Поле CustID в таблице Customers уникально для каждой записи клиента и, таким образом, называется первичным ключом. В таблице Заказы поле cID не является уникальным, так как клиент может разместить несколько заказов. Таким образом, 23 для каждого отдельного клиента в таблице Клиентов у нас может быть несколько записей в таблице Заказов. Этот тип отношений называется отношением "родитель-потомок" или отношением "первичный ключ-внешний ключ". Поле в таблице называется внешним ключом, только если оно является первичным ключом в другой таблице и если оба поля принадлежат одному домену. Класс DataRelation распознает отношения родитель-потомок. Конструктор класса DataRelation требует трех параметров: 1) Имя DataRelation, которое может быть пустым. 2) Объект DataColumn, представляющий родительский столбец. В нашем случае это поле cCustID в таблице Клиентов. 3) Дочерний столбец, т. е. поле cID в таблице Заказов. Теперь мы используем свойство с именем Relations в классе DataSet типа DataRelationCollection, чтобы добавить отношение к набору данных. Отныне класс набора данных будет связывать каждый идентификатор клиента из таблицы Клиентов с несколькими идентификаторами клиентов в таблице Заказов. Теперь таблицы должны быть заполнены некоторыми данными. Итак, мы начнем с создания объекта DataRow, с помощью которого мы будем заполнять таблицы. Поскольку мы хотим добавить трех клиентов с идентификаторами Cust 1, Cust 2 и Cust 3, мы сначала вызываем функцию newRow, которая создает объект DataRow, а затем используем индексатор с именем столбца для хранения данных. С помощью элемента Добавить коллекции строк затем добавляется строка. В качестве альтернативы мы могли бы инициализировать столбец custName в цикле for. Этот подход был обойден стороной или избегался, поскольку образцы Microsoft использовали другую методологию. Объект коллекции строк, обозначаемый строками свойств, имеет индексатор, облегчающий доступ к каждой строке. Например, tCust.Rows[0] обращается к первой строке. Индексатор объектов DataRow можно использовать для изменения поля custName. Для каждого из трех клиентов мы теперь хотим добавить пять записей в таблицу заказов. Кустид и год даты заказа остаются прежними. Номер месяца имеет суффикс 1, 2 или 3, в зависимости от клиента. И день увеличивается на 2, с учетом каждого заказа. Сумма в заказе-это число месяца, умноженное на 10, плюс значение j во внутреннем цикле for, умноженное на 0,1. Это выражение генерирует уникальное значение для каждого заказа. С помощью цикла for процесс заполнения таблиц может стать значительно проще, по сравнению с написанием значений по отдельности. Таким образом, у нас есть 3 записи в таблице Клиентов и 15 записей в таблице заказов, т. е. по 5 на каждого клиента. Наконец, элементы управления привязываются к столбцам в таблице данных с помощью функции BindControls. В первом текстовом поле мы показываем поле custName из таблицы Customer, которое присутствует в источнике данных ds. В настоящее время это набор данных, а не объект DataTable или Collection. 24 Последним параметром конструктора объекта привязки является tablename.имя поля. Это не просто имя поля. Это связано с тем, что набор данных состоит из набора таблиц, и одно и то же имя поля может присутствовать в нескольких таблицах. Таким образом, нам нужно четко определить таблицу, из которой был получен столбец. Второе текстовое поле привязано к идентификатору клиента из таблицы клиентов. Элемент управления DateTimePicker ведет себя аналогично другим элементам управления, когда дело доходит до привязки данных. Вместо свойства Text мы привязываем элемент управления к свойству Value. Более важным моментом является то, что при отображении orderdate вместо указания order.orderdate мы используем customers.CustToOrders.OrderDate, который является именем родительской таблицы.имя поля. Мотив, стоящий за этим, будет объяснен в ближайшее время. Дата отображается с помощью более сложного элемента управления, чем простое текстовое поле. Как и раньше, мы хотим вызвать код для четвертого текстового поля, в котором отображаются данные, которые можно редактировать. Итак, во - первых, мы должны создать объект привязки b и связать две функции с форматом и событиями синтаксического анализа. Делегаты добавляются до вызова функции Add, чтобы облегчить добавление привязок, поскольку при изменении текущего объекта в источнике данных форматирование не происходит. Объект BindingContext принимает более одного индексатора. Таким образом, источник данных, т. е. набор данных или навигационный путь, используется в качестве индексатора для ссылки на конкретную базу данных BindingManagerBase. Вышеупомянутый объект является обязательным для обновления указателя записи и отображения всех данных в источнике данных. Этот параметр может содержать либо просто имя таблицы, либо имя таблицы, за которым следует имя отношения, например customers.custtoOrders. Первый объект BindingMangerBase, bmCustomers, облегчает перемещение по трем записям клиентов, поскольку мы предоставили имя таблицы Customer. Второй, bmOrders, будет перемещаться по этим записям, используя отношение, поскольку мы указали имя отношения. Таким образом, несмотря на то, что у нас есть 15 записей в таблице Заказов, мы видим только 5 из них. Таким образом, всякий раз, когда мы нажимаем на первые две кнопки, мы используем свойство позиции объекта bmCustomers для перемещения от одной записи к другой, вверх или вниз, без проверки на наличие ошибок. Следующие две кнопки также используют свойство Position объекта bmOrders в зависимости от активного идентификатора клиента, тем самым уменьшая количество записей. Метод DecimalToCurrencyString вызывается каждый раз, когда мы хотим отобразить новое значение в последнем текстовом поле. Значение, возвращаемое членом DesiredType параметра ConvertEventArgs, проверяется строкой. Если они не соответствуют друг другу, программа завершает работу. Это единственная выполненная проверка ошибок. Таким образом, мы сначала выясняем, разрешено 25 ли нам преобразовывать десятичный тип в исходном значении в строку или нет. Если преобразование разрешено, мы вызываем функцию toString с символом форматирования "c", чтобы выполнить фактическое преобразование в валюту. Метод CurrencyStringToDecimal вызывается всякий раз, когда мы изменяем значение в текстовом поле. Как и ранее, мы выполняем ту же проверку ошибок при преобразовании в строку, а затем используем событие Parse для преобразования его в исходный десятичный тип. Если мы изменим отображение на 20.001, мы можем увидеть его как 20.00. Но первоначальное значение по-прежнему остается на уровне 20,001. Функция WriteLine может использоваться для отображения неформатированного значения. Наконец, элемент управления textbox text4 отображает текущий идентификатор клиента. Если мы переместим две верхние кнопки, значение, содержащееся в этом текстовом поле, изменится. Однако, когда мы изменяем свойство Позиции в отношении, идентификатор клиента остается постоянным, в то время как два других поля изменяются. Этот пример иллюстрирует, как источник данных может быть чрезвычайно сложным с помощью класса BindingManagerBase, для которого есть своя работа. 2.2.4 Net platform Когда они говорят c#, они часто имеют в виду платформенные технологии .NET (Windows Forms, WPF, ASP.NET, Ксамарин). И Разнообразие технологий. Общий язык среда CLR среды выполнения и библиотека базовых классов являются основой для целого набора технологий, которые разработчики могут использовать при создании определенных приложений. Например, для работы с базами данных в этом технологическом стеке используется следующая технология: ADO.NET и ядро Entity Framework. Для создания графических приложений с богатым, насыщенным интерфейсомтехнологии WPF и UWP, для создания более простых графических приложений Windows Forms. Для разработки мобильных приложений - Xamarin. Веб-сайтов и Создание веб - сайтов приложения-ASP.NET и т.д. К этому стоит добавить активно развивающийся и набирающий популярность Blazor-фреймворк, работающий поверх .NET и позволяющий создавать вебприложения как на стороне сервера, так и на стороне клиента. А в будущем он будет поддерживать создание мобильных приложений и, возможно, настольных приложений. Производительность. Подключение к Тест веб-приложений в Net 5-это создание веб-приложений с другими технологиями в номерах категории. Приложения на .NET 5, в принципе, характеризуются высокой производительностью. Также стоит отметить такую особенность языка C# и платформы .NET, как автоматическая сборка мусора. Это означает, что в большинстве случаев, в отличие 26 от C, нам не нужно беспокоиться об освобождении памяти. Вышеупомянутый общий язык CLR вызовет сам сборщик мусора и очистит память. .NET Framework и .NET Core / .NET 5 Стоит отметить, что .NET уже давно развивается в основном как платформа Windows под названием .NET Framework. В 2019 году была выпущена последняя версия этой платформы - .NET Framework 4.8. Он больше не разрабатывается С 2014 года Microsoft занялась альтернативной разработкой платформы-.NET в основном, он интересовался различными платформами и должны были вобрать в себя все черты устаревшего.NET Framework и добавить новый функционал. Затем Microsoft выпустила несколько версий этой платформы sequentially:.NET Ядро 1, .NET Core 2, .NET Core 3 .Логическое развитие. NET Core 3.0 стала обсуждаемой платформой в этом руководстве . Нет 5 .Поэтому следует различать .NET Framework, который разработан в первую очередь и кросс-платформенный для Windows. Чистый 5 . В этом руководстве мы поговорим о C# в сочетании с .NET 5, так как это современная платформа. Это также стоит упомянуть от моно-платформу, для Linux и macOS platform.NET Рамки был основан и переработан в 2004 году в качестве открытого источника. Mono для создания приложений кросс-платформенный в C #, это невозможно. Моно все еще используется. Например, Xamarin, технология создания мобильных приложений для Android и iOS язык C#, использует Mono. Однако в будущем, когда будет выпущена новая версия - .NET 6, в следующем году планируется, что .NET 6 будет интегрировать платформу Mono. Управляемый и неуправляемый код Часто c # - это управляемый код вызова. Это означает, что это приложение основано на платформе .NET и, следовательно, управляется общим языком CLR, который загружает приложение и при необходимости очищает память. Но есть также приложения, например, созданные на языке Си, которые компилируются не на общий базовый язык, такой как C# или F#, а в обычный машинный код. В этом случае .NET не управляет приложением. В то же время платформа .NET предоставляет функции для взаимодействия с неуправляемым кодом. Коллекция JIT Код C # компилируется в приложения или сборки с расширениями exe или dll в CIL. Затем, когда такое приложение запускается для выполнения, оно JITкомпилируется (точно в срок) в машинный код, который затем выполняется. В то же время, поскольку наше приложение может быть большим и содержать кучу инструкций, единственная часть приложения, доступ к которой осуществляется напрямую, будет скомпилирована в текущее время. Если мы обратимся к другой части кода, он будет скомпилирован из БАЗОВОГО в машинный код. В то же время уже скомпилированная часть приложения сохраняется до тех пор, пока программа не завершится. В результате это повышает производительность. 27 2.3 Аппаратное обеспечение. Для разработки дипломного проекта используется аппаратное обеспечение со следующими характеристиками: Процессор: AMD ; Модель процессора: AVD 5600x; Тактовая частота, ГГц: 3,2; Объем памяти SSD/HDD, Гб: 256/1000; Диагональ экрана, дюйм: 15,6 (39,6 см); Разрешение дисплея, пикселей: 1920х1080 (Full HD); Операционная система: Windows 10; Объем оперативной памяти, Гб: 8. Выводы В этой части было выбрано аппаратное и программное обеспечение. Также была выбрана архитектура веб-приложения. Программное обеспечение и архитектура разрабатываемой информационной системы выбирались на основе следующих критериев: удобство; эффективность; предоставляемые возможности скорость разработки совместимость с ОС Windows, Macintosh и дистрибутивами Linux наличиедополнительных библиотек, расширяющих возможности выбранного ПО. 3. Проектирование и разработка информационной системы для ТОО «АскентЖол» 3.1 Разработка инфологической модели базы данных Идентификация сущности семантическая основа информационного дизайна. Суть здесь - такой объект (абстрактный или конкретный), информация о котором будет накапливаться в системе. В инфологической модели предметной области в понятных терминах, не зависящих от конкретной реализации базы данных, описываются структура и динамические свойства предметной области. Но термины взяты в типичном масштабе. То есть описание выражается не через отдельные объекты предметной области и их взаимосвязь, а через: описание типов объектов, ограничения целостности, связанные с описанным типом, процессы, ведущие к эволюции предметной области, заключаются в ее переводе в другое состояние. Модель инфографики может быть создана несколькими методами и подходами: 28 Функциональный подход отталкивается от поставленных задач. Он называется функциональным, потому что он используется, если функции и задачи лиц, которые используют свои информационные потребности с помощью разработанной базы данных, будут удовлетворять их информационные потребности. Субъектный подход к ракурсу главы устанавливает информацию об информации, которая будет содержаться в базе данных, несмотря на то, что структура запроса не может быть определена. При этом исследования предметной области ориентированы на ее максимально адекватное отображение в базе данных в контексте всего спектра предполагаемых информационных запросов. Комплексный подход по методу «Сущность-Коммуникация» сочетает в себе преимущества двух предыдущих. Метод сводится к разделению всей предметной области на локальные части, которые моделируются отдельно, а затем повторно объединяются в сплошную область. Поскольку на данном этапе использование метода «Сущность-Коммуникация» является комбинированным методом проектирования, он становится все чаще приоритетным. Локальные представления в методическом разделении должны по возможности включать информацию, которой было бы достаточно для решения отдельной задачи или для предоставления какой-то группы потенциальных пользователей. Каждая из этих областей содержит около 6-7 сущностей и соответствует любому отдельному внешнему приложению. Зависимость предприятий выражается в их разделении на сильные (базовые, материнские) и слабые (дочерние). Сильная сущность (например, читатель в библиотеке) может существовать в самой базе данных, а слабая сущность (например, подписка этого читателя) «привязана» к сильной и отдельно. Для каждой отдельной сущности выбираются атрибуты (набор свойств), которые в зависимости от критерия могут быть: идентифицирующий (с уникальным значением для сущностей этого типа, что делает их потенциальными ключами) или описательный; однозначные или многозначные (с соответствующим количеством значений для экземпляра сущности); базовые (не зависящие от остальных атрибутов) или производные (вычисляемые, исходя из значений других атрибутов); простые (неделимые однокомпонентные) или составные (составленные из нескольких компонентов). После этого выполняется спецификация атрибута, спецификация ссылок в локальном представлении (с разделением на необязательные и обязательные) и объединение локальных представлений. При количестве локальных участков до 429 5, их можно объединять за один прием. В случае увеличения числа бинарная ассоциация регионов происходит в несколько этапов. В ходе этого и других промежуточных этапов итеративный характер проектирования отражается здесь в том, что для устранения противоречий необходимо вернуться к этапу моделирования локальных представлений для уточнения и изменения (например, для изменения одинаковые имена семантически разных объектов или согласование атрибутов целостности для одинаковых атрибутов в разных приложениях). Рисунок 1 – Инфологическая модель базы данных На рисунке 1 представлена инфологическая модель базы данных всех сущностей, присутствующих в информационной системе. 3.2 Разработка даталогической модели базы данных Для реализации информационной системы «Сервисный центр» был выбран язык программирования С# (СиШарп) и БД (база данных) MYSQl C# — объектно-ориентированный язык программирования, созданный в 1998–2001 годах компанией Microsoft как язык разработки приложений для платформы Microsoft .NET Framework. Он совмещает в себе силу и гибкость C++ с простотой Visual Basic. C#, конечно же, уступает по популярности таким языкам, как C, Java, C++ и PHP, но, несмотря на это, он используется довольно часто. .NET представляет собой новую платформу, новый API для программирования в Windows, а С# есть новый язык, созданный с нуля, для работы с этой платформой, а также для извлечения всех выгод из прогресса сред 30 разработки и нашего понимания принципов объектноориентированного программирования в течение последних 20 лет. Необходимо отметить, что обратная совместимость не потеряна. Существующие программы будут выполняться, а платформа .NET была спроектирована таким образом, чтобы она могла работать с имеющимся программным обеспечением. Связь между компонентами в Windows сейчас почти целиком осуществляется при помощи СОМ. С учетом этого, .NET обладает способностью создавать оболочки (wrappers) вокруг существующих компонентов СОМ, так что компоненты .NET могут свободно общаться с ними. Особенности языка C#: Полный и хорошо определенный набор основных типов. Встроенная поддержка автоматической генерации XML-документации. Автоматическое освобождение динамически распределенной памяти. ADO.NET — нечто большее, чем надстройка над каким-нибудь существующим API-интерфейсом. Сходство с ADO минимально; классы и методы доступа к данным довольно существенно отличаются. ADO (ActiveX Data Objects) — это библиотека компонентов СОМ, получившая в последние несколько лет множество воплощений. ADO состоит, прежде всего, из объектов Connection, Command, Recordset и Field. С помощью ADO открывается соединение с базой данных, после чего некоторые данные извлекаются и помещаются в набор записей, состоящих из полей; эти данные затем претерпевают манипуляции и обновления на сервере, после чего соединение закрывается. Кроме того, ADO предлагает так называемый отключенный набор записей (disconnected record set), который используется, когда соединение с базой нежелательно удерживать открытым в течение длительного времени. 13 Существует несколько проблем, которые ADO не решает удовлетворительным образом. Наиболее заметная из них — громоздкость (в плане физического размера) отключенного набора записей. Потребность в этом средстве возрастает по мере развития веб-ориентированных вычислений, поэтому в данном случае понадобился свежий подход. Переход от ADO к ADO.NET не должен быть слишком трудным, поскольку между этими технологиями все же имеется некоторое сходство. Более того, при использовании SQL Server, существует исчерпывающий набор управляемых классов, которые настроены на обеспечение максимальной производительности базы данных. Одного этого достаточно для перехода на ADO.NET. База данных – это всего лишь набор взаимосвязанных данных. Например, телефонный справочник – это база данных имен, телефонных номеров и адресов 31 всех людей, проживающих в определенной местности. Будучи, несомненно, широко и часто используемой базой данных, телефонный справочник не лишен следующих недостатков: Поиск конкретного телефонного номера занимает много времени, особенно если в телефонном справочнике очень много записей. • Телефонный справочник проиндексирован только по именам/фамилиям, поэтому для поиска абонента по определенному адресу такая база данных практически не используется, хотя теоретически это и возможно. • С момента публикации телефонного справочника адекватность представленной в нем информации постепенно снижается, поскольку люди уезжают и приезжают из этой местности, меняют свои телефонные номера или переезжают по другому адресу в той же местности. Недостатками, присущими телефонным справочникам, обладает любая другая некомпьютеризированная система хранения данных, например регистратура поликлиники, хранящая медицинские карты пациентов. Из-за громоздкости бумажных баз данных одними из первых компьютерных приложений были разработаны системы баз данных (database systems) – средства компьютеризированного хранения и извлечения данных. Поскольку система БД хранит информацию в электронном виде, а не на бумаге, она может быстрее извлекать данные, индексировать их разными способами и поставлять своим пользователям самую свежую информацию. Вопервых, в системах БД информация хранилась на магнитных лентах. Количество лент во много раз превышало количество устройств считывания, поэтому техническим специалистам приходилось постоянно менять ленты, чтобы предоставить ту или иную запрашиваемую информацию. Поскольку объем памяти у компьютеров той эпохи был невелик, при многократных запросах одних и тех же данных обычно требовалось многократное считывание этих данных с магнитной ленты. Хотя эти системы БД и были существенным усовершенствованием по сравнению с бумажными БД, им было еще далеко до возможностей современных технологий. Современные системы БД могут работать с терабайтами данных, 14 распределенными по многим дискам с быстрым доступом, и держать в быстродействующей памяти десятки гигабайт этих данных. Система управления базами данных (СУБД) — совокупность программных и лингвистических средств общего или специального назначения, обеспечивающих управление созданием и использованием баз данных. Одной из наиболее популярных СУБД является Microsoft SQL Server. Эта программа достаточно удобна и содержит в себе большое количество функций. Основной используемый язык — Transact-SQL , создан совместно с Microsoft и Sybase. 32 Transact-SQL является реализацией стандарта ANSI/ISO по структурированному языку запросов (SQL) с расширениями. Используется для работы с базами данных размером от персональных до крупных баз данных масштаба предприятия; конкурирует с другими СУБД в этом сегменте рынка. Для создания графического интерфейса была использована технология WPF (Windows Presentation Foundation), которая является частью экосистемы платформы .NET. Одной из важных особенностей является использование языка декларативной разметки интерфейса XAML, основанного на XML: вы можете создавать насыщенный графический интерфейс, используя или декларативное объявление интерфейса, или код на управляемых языках C# и VB.NET, либо совмещать и то, и другое. Ниже приведён список преимуществ, которые стали ключевым фактором того, почему была выбрана данная технология: Использование традиционных языков .NET-платформы - C# и VB.NET для создания логики приложения Возможность декларативного определения графического интерфейса с помощью специального языка разметки XAML, основанном на xml и представляющем альтернативу программному созданию графики и элементов управления, а также возможность комбинировать XAML и C#/VB.NET Независимость от разрешения экрана: поскольку в WPF все элементы измеряются в независимых от устройства единицах, приложения на WPF легко масштабируются под разные экраны с разным разрешением. Новые возможности, которых сложно было достичь в WinForms, например, создание трехмерных моделей, привязка данных, использование таких элементов, как стили, шаблоны, темы и др. Хорошее взаимодействие с WinForms, благодаря чему, например, в приложениях WPF можно использовать традиционные элементы управления из WinForms. Богатые возможности по созданию различных приложений: это и мультимедиа, и двухмерная и трехмерная графика, и богатый набор встроенных элементов управления, а также возможность самим создавать новые элементы, создание анимаций, привязка данных, стили, шаблоны, темы и многое другое Даталогическая структура БД должна соответствовать логической модели предметной области и учитывать подключение модели данных из поддерживаемой СУБД. Поэтому этап начинается с выбора модели данных, где важно учитывать ее простоту и наглядность. Предпочтительно, когда естественная структура данных совпадает с моделью, которая ее представляет. Например, если данные представлены в виде иерархической структуры, то модель лучше выбрать иерархическую. Однако на практике такой выбор чаще определяется системой управления базами данных, а не 33 моделью данных. Следовательно, концептуальная модель фактически транслируется в такой модели данных, которая совместима с выбранной системой управления базой данных. Здесь характер дизайна, который позволяет (или необходимость) вернуться к концептуальной модели, чтобы изменить ее в том случае, если отраженные там отношения между объектами (или атрибутами объектов) не смогут реализовать выбранную СУБД. По завершении этапа необходимо сформировать схемы баз данных обоих уровней архитектуры (концептуального и внешнего), созданных на языке определения, поддерживаемом выбранной СУБД. Диаграммы баз данных формируются с использованием одного из двух разнонаправленных подходов: либо использование восходящего подхода, когда работа идет от нижних уровней определения атрибутов, сгруппированных в отношения, представляющие объекты на основе существующих отношений между атрибутами; либо использование обратного, нисходящего подхода, используемого для значительного (до сотен и тысяч) увеличения количества атрибутов. Второй подход подразумевает определение ряда высокоуровневых сущностей и их взаимосвязей с последующей детализацией до желаемого уровня, который отражает, например, модель, созданную на основе метода «СущностьКоммуникация». Но на практике обычно сочетаются оба подхода. В таблицах 1-14 приведены датологические модели сущностей, используемых в информационной системе. Таблица 1. Даталогическая модель сущности «Здания». Имя поля Тип данных Ключевое поле id int да name type year location condition varchar(50) varchar(50) int varchar(50) varchar(50) нет нет нет нет нет 34 Customer_contact Team нет нет id varchar(50) Таблица 2. Даталогическая модель сущности «Клиент». Имя поля Тип данных Ключевое поле Contract int да name varchar(50) нет Working_hours varchar(50) нет Type_of_payment varchar(50) нет Payment_amount int нет Таблица 3. Даталогическая модель сущности «Материал». Имя поля Тип данных Ключевое поле id int да Building_type varchar(50) нет Type_of_materials varchar(50) нет Materials_amount varchar(50) нет Customer_contract id нет Таблица 4. Даталогическая модель сущности «Офис». Имя поля Тип данных Ключевое поле id int да Buildings_name varchar(50) нет payment varchar(50) нет name varchar(50) нет 35 Customer_contract id нет 3.3 Разработка веб-приложения 3.3.1 Подготовка к разработке приложения Разработка приложения осуществляется с помощью редактора кода Visual Studio 2019. Visual Studio 2019 (известный как VS Studio) - это бесплатный редактор с открытым исходным кодом от компании Microsoft. VS Studio доступен для Windows, Linux и macOS. Хотя редактор относительно легкий, он включает в себя несколько мощных функций, которые сделали VS Studio одним из самых популярных инструментов среды разработки в последнее время. VS Studio поддерживает широкий спектр языков программирования от Phytom, C ++ и Java до CSS, HTML. Более того, VS Studioпозволяет добавлять и даже создавать новые расширения, включая средства анализа кода, отладчики, а также поддержку облачной и веб-разработки. На рисунке 2 показан пример интерфейса редактора кода Visual Studio Code, с открытой по умолчанию страницей «Welcome». 36 Рисунок 2 - Интерфейс Visual Studio 2019 Для написания серверной и клиентской части использовались технологии C#, на основе WinForms Windows Forms - это платформа пользовательского интерфейса для создания классических приложений Windows. Он предлагает один из наиболее эффективных способов создания классических приложений с помощью Visual Designer в Visual Studio. Такие функции, как перетаскивание визуальных команд, упрощают создание классических приложений. Windows Forms позволяет разрабатывать графически сложные приложения, которые легко развертывать, обновлять и работать в автономном режиме и в интернете. Приложения Windows Forms могут получить доступ к локальному оборудованию и файловой системе компьютера, на котором выполняется приложение. Рисунок 3 - Структура «WinForm» данных в приложении 3.3.1 Разработка back-end Windows Forms - это платформа пользовательского интерфейса для создания классических приложений Windows. Он предлагает один из наиболее эффективных 37 способов создания классических приложений с помощью Visual Designer в Visual Studio. Такие функции, как перетаскивание визуальных команд, упрощают создание классических приложений. Windows Forms позволяет разрабатывать графически сложные приложения, которые легко развертывать, обновлять и работать в автономном режиме и в интернете. Приложения Windows Forms могут получить доступ к локальному оборудованию и файловой системе компьютера, на котором выполняется приложение. Рисунок 4 - Подключение БД Рисунок 5 - Работа с таблицей “Buildings” 38 Рисунок 6 - Работа с таблицей “Buildings” Рисунок 7 - Работа с таблицей “Buildings” 39 Рисунок 8 - Работа с таблицей “Customer” Рисунок 9 - Работа с таблицей “Customer” 40 Рисунок 10 - Работа с таблицей “Customer” Рисунок 11 - Работа с таблицей “Materials” 41 Рисунок 12 - Работа с таблицей “ Oficce” В качестве СУБД был выбран MySQL. 42 Рисунок 13 - MYSQL документация 3.3.2 Разработка приложения. Разработка приложения части реализована с помощью библиотек Net.Framework, MySQL. Microsoft .Net Framework - это платформа, которая предоставляет инструменты и технологии, необходимые для создания сетевых приложений, а также Распределенных веб-служб и веб-приложений. Платформа .Net Framework обеспечивает необходимое время компиляции и время выполнения для создания и запуска любого языка, соответствующего спецификации общего языка (CLS).Основными двумя компонентами .Net Framework являются среда выполнения общего языка (CLR) и библиотека классов .Net Framework (FCL). Среда выполнения Common Language Runtime (CLR) - это среда выполнения платформы .Net Framework, которая выполняет и управляет всем запущенным кодом, как виртуальная машина. Библиотека классов .Net Framework (FCL)-это огромная коллекция независимых от языка и безопасных повторно используемых классов. Библиотеки классов .Net Framework (FCL) организованы в логическую группировку в соответствии с их функциональностью, а удобство использования называется пространствами имен. Архитектура .Net Framework Как использовать архитектуру .Net Framework Архитектура .Net Framework-это модель программирования для платформы .NET. Он обеспечивает управляемую среду выполнения, упрощенную разработку и развертывание, а также интеграцию с широким спектром языков программирования. Библиотека классов .NET Framework (FCL)-это всеобъемлющая объектно-ориентированная коллекция многоразовых типов, которые можно использовать для разработки приложений. Среда выполнения общего языка (CLR) является основным механизмом выполнения для выполнения приложений в .NET Framework. CLR полностью защищена от внешней среды и высоко оптимизирована внутри, используя преимущества служб, предоставляемых CLR, таких как безопасность, производительность, средства развертывания и управление памятью,включая сборку мусора. 43 Рисунок 14 - Net-FrameWork 3.3.3 Описание модулей приложения. На главной странице приложения присутствует меню навигации, два Активных окна для внесения информации. Горячие клавиши,так-же кнопки для добавления или удаления информации. Рисунок 16 - Главное меню 44 Рисунок 17 - Окно клиентов На странице создания клиента реализована форма создания кандидата В активном окне находиться четыре столбца ,где отображены : 1. Номер контратка 2. Наименование 3. Отработано часов 4. Тип оплаты 5. Стоймость. Рисунок 18 - Форма создания объекта Также в форме создания объекта есть разделы по добавлению дополнительной информации, такой как год постройки, состояния, номер контракта, контакты и команды. 45 Рисунок 19 - Разделы для добавления дополнительной информации 46 Рисунок 20 - Раздел по добавлению информации о клиенте Рисунок 21 - Раздел по добавлению информации 47 Рисунок 22 - Раздел по информации о материалах Рисунок 23 - Раздел по информации о офисе 48 Рисунок 24 - Окно с работой БД При работе с базами данных SQL-Сервера в проектах Windows Forms используются обычные поставщики данных, такие как System.Data. Переход SqlClient для доступа к таблицам требуется объект подключения с хорошо сформированным переходом строки подключения, который может храниться в строковой переменной или в файле конфигурации . В зависимости от разработчика строки подключения могут быть записаны непосредственно в коде, создать строку подключения с помощью перехода SqlConnectionStringBuilder (пример приведен в сопроводительном исходном коде) или создать временный проект, использовать мастер данных для создания доступа к классам через адаптер таблиц или сначала использовать код Entity Framework 6 с существующей базой данных. Эта настройка хорошо работает для приложений личного использования при распространении приложения среди друзей, коллег или клиентов или при переходе из среды разработки в производственную среду (и во многих случаях в среду тестирования) быстро приводит к бесполезности использования строковых переменных и файлов конфигурации, когда изменение имени сервера требует обновления с имени сервера разработчика на другое имя сервера в дикой природе лучше иметь метод изменения строки подключения без вмешательства пользователя. 49 Рисунок 25 - Страница материала Разделы по добавлению материала, реализованы с помощью диалоговых окон. Для добавления дополнительных сущностей в базу данных была добавлена страница панели администратора, на которой можно добавлять такие объекты. Рисунок 26 - Раздел по добавлению информации о клиенте 50 Рисунок 27 - Диалоговое окно о информации о офисах 3.3.2 Система контроля версий Для контроля версий приложения был использован Git. Git - наиболее часто используемая система контроля версий. Git отслеживает изменения, которые вы вносите в файлы, поэтому у вас есть запись о том, что было сделано, и вы можете вернуться к определенным версиям, если вам когданибудь понадобится. Git также упрощает совместную работу, позволяя объединить изменения, внесенные несколькими людьми, в один источник. Для back-end и front-end были созданы отдельные репозитории в github. Особенности Git: История записей Бесплатный и открытый исходный код Поддерживает нелинейное развитие Создает резервные копии Масштабируемый Поддерживает сотрудничество Разветвление проще Распределенная разработка Проекты обычно имеют несколько разработчиков, работающих параллельно. Поэтому необходима система контроля версий, такая как Git, чтобы гарантировать отсутствие конфликтов кода между разработчиками. Кроме того, требования в 51 таких проектах часто меняются. Таким образом, система контроля версий позволяет разработчикам возвращаться к более старой версии кода. Наконец, иногда несколько проектов, которые выполняются параллельно, включают одну и ту же кодовую базу Идея паттернов проектирования первоначально возникла в архитектуре. Архитектор Кристофер Александр написал две революционные книги, содержащие описание шаблонов в строительной архитектуре и городском планировании: «A Pattern Language: Towns, Buildings, Contributions» (1977 г.), «The Timeless Way of Building» (1979 г.).В этих книгах были представлены общие идеи, которые могли использоваться даже в областях, не имеющих отношения к архитектуре, в том числе и в программировании. В 1987 году Кент Бэк (Kent Beck) и Вард Каннигем (Ward Cunningham) на основе идеи Кристофера Александра разработали шаблоны разработки программного обеспечения для графических оболочек на языке Smalltalk. В 1988 году Эрих Гамма (Erich Gamma) начал писать докторскую диссертацию при цюрихском университете об общей переносимости методики паттернов проектирования на разработку программного обеспечения. В 1989-1991 годах Джеймс Коплин (James Coplien) трудился над разработкой идиом для программирования на C++ и опубликовал в 1991 году книгу Advanced C++ Idioms. В этом же году Эрих Гамма заканчивает свою докторскую диссертацию и переезжает в США, где в сотрудничестве с Ричардом Хелмом (Richard Helm), Ральфом Джонсоном (Ralph Johnson) и Джоном Влиссидсом (John Vlissides) публикует книгу Design Patterns — Elements of Reusable Object-Oriented Software (русскоязычный перевод книги — [GoF95]). В этой книге описаны 23 паттерна проектирования. Также команда авторов этой книги известна под названием «Банда четырёх» (Gang of Four,часто сокращается — GoF). Эта книга и стала причиной роста популярности паттернов проектирования. Таким образом, широкое использование паттернов в программировании началось из описания базовых 23-х шаблонов проектирования «Банды четырех». Следующим шагом стало описание Мартином Фаулером Enterprise Patterns, где были раскрыты типичныерешения при разработке корпоративных приложений, например, работа с базами данных, транзакциями и т.п. Джошуа Криевски показал, как можно постоянным рефакторингом, руководствуясь базовыми принципами ООП, обеспечить эволюцию кода, перемещая его от одного паттерна к другому в зависимости от требований. После начала акцентирования внимания на модульном тестировании (Unit Testing) появилось понятие тестируемости программного кода. Все паттерны при этом были переосмыслены с позиций тестируемости. При этом, например, оказалось, что паттерн Singleton — это антипаттерн, а Abstract Factory) вообще заменили IoC (Inversion of Control) контейнеры. После выхода книги xUnit Test Patterns в 2008 году появилось несколько десятков паттернов тестирования. 1.2. Причины возникновения паттернов 52 В конце 80-х годов XX века в сфере разработки программного обеспечения, в частности, объектно-ориентированном проектировании, накопилось много различных Рефакторинг — изменения внутреннего устройства программного кода без модификации его внешней функциональности сходных по своей сути решений. Это требовало систематизации, обобщения на всевозможные ситуации, а также доступного описания, способствующего пониманию ихлюдьми, которые до этого их не использовали. Такое упорядочение знаний в объектноориентированном проектировании позволило бы повторно использовать готовые и уже проверенные решения.Решение проблемы систематизации накопленного опыта в объектно-ориентированном проектировании, а также представление его широкому кругу разработчиков и взяли на себя паттерны проектирования. Рисунок 28 - Хранение данных в виде изменений в базовой версии каждого файла Git не думает и не хранит свои данные таким образом. Вместо этого Git рассматривает свои данные скорее как серию снимков миниатюрной файловой системы. С помощью Git каждый раз, когда вы фиксируете или сохраняете состояние своего проекта, Git в основном делает снимок того, как выглядят все ваши файлы в данный момент, и сохраняет ссылку на этот снимок. Чтобы быть эффективным, если файлы не изменились, Git не сохраняет файл снова, а просто ссылку на предыдущий идентичный файл, который он уже сохранил. Git думает о своих данных больше как о потоке моментальных снимков. 53 Рисунок 29 - Хранение данных в виде моментальных снимков проекта с течением времени Git имеет три основных состояния, в которых могут находиться файлы: измененные, поэтапные и зафиксированные: Измененный означает, что вы изменили файл, но еще не зафиксировали его в своей базе данных. Staged означает, что вы отметили измененный файл в его текущей версии, чтобы перейти к следующему снимку фиксации. Фиксация означает, что данные надежно хранятся в вашей локальной базе данных. Это приводит нас к трем основным разделам проекта Git: рабочее дерево, промежуточная область и каталог Git. В общем случае каждый паттерн состоит из таких составляющих: 1. Имя является уникальным идентификатором паттерна. Ссылка на него дает возможность описать задачу проектирования и подход к её решению. Имена паттернов проектирования, описанных в [GoF95], являются общепринятыми, поэтому, например, могут использоваться в проектной документации как ссылки на типичные архитектурные решения. 2. Задача описывает ситуацию, в которой можно применять паттерн. При формулировке задачи паттерна важно описать, в каком контексте она возникает. 3. Решения задачи проектирования в виде паттерна определяет общие функции каждого элемента дизайнаи отношения между ними. При этом следует подчеркнуть, что рассматривается не конкретная, а общая ситуация, так как паттерн проектирования — это шаблон, который может применяться 54 многократно для решения типичной задачи в различных контекстах. 4. Результаты представляют следствия применения паттерна. В них описываются преимущества и недостатки выбранного решения, его последствия, различного рода компромиссы, вариации паттерна. Также в результатах следует упомянуть об особенностях использования паттерна в контексте конкретного языка программирования. Рисунок 29 - Рабочее дерево, промежуточная область и каталог Git Рабочее дерево-это одна проверка одной версии проекта. Эти файлы извлекаются из сжатой базы данных в каталоге Git и помещаются на диск для использования или изменения. Промежуточная область-это файл, обычно содержащийся в каталоге Git, в котором хранится информация о том, что будет включено в следующую фиксацию. Его техническое название на языке Git “индекс”, но фраза “промежуточная область” работает так же хорошо. Каталог Git-это место, где Git хранит метаданные и базу данных объектов для вашего проекта. Это самая важная часть Git, и это то, что копируется при клонировании репозитория с другого компьютера. Основной рабочий процесс Git выглядит примерно так: Вы изменяете файлы в своем рабочем дереве. Вы выборочно размещаете только те изменения, которые хотите включить в следующую фиксацию, которая добавляет только эти изменения в промежуточную область. 55 Вы делаете фиксацию, которая принимает файлы в том виде, в каком они находятся в промежуточной области, и сохраняет этот моментальный снимок навсегда в вашем каталоге Git. Оборудование, программное обеспечение, подключения к компьютерной системе и информация, пользователи информационной системы и корпус системы-все это является частью ИС. Персональные компьютеры, смартфоны, базы данных и сети-это лишь некоторые примеры информационных систем. Предприятия и корпорации используют информационные системы для взаимодействия со своими поставщиками и клиентской базой, выполнения своих операций, управления своей организацией и проведения своих маркетинговых кампаний. Они могут использоваться для самых разных целей, от управления цепочками поставок до взаимодействия с цифровыми рынками. Люди также полагаются на ИСС для взаимодействия со сверстниками и друзьями через социальные сети, выполняя повседневные действия, такие как банковское дело и покупки, или просто ища знания и информацию. Технология Технологию можно рассматривать как применение научных знаний в практических целях. Начиная с изобретения колеса и заканчивая использованием электричества для искусственного освещения, технология является частью нашей жизни во многих отношениях, и мы склонны воспринимать ее как должное. Как обсуждалось ранее, первые три компонента информационных систем – аппаратное обеспечение, программное обеспечение и данные – все подпадают под категорию технологий. Каждый из них получит свою собственную главу и гораздо более подробное обсуждение, но мы уделим здесь немного времени, чтобы представить их, чтобы мы могли получить полное представление о том, что такое информационная система. Оборудование Аппаратное обеспечение информационных систем – это часть информационной системы, к которой вы можете прикоснуться, физические компоненты технологии. Компьютеры, клавиатуры, дисководы, флэш-накопители-все это примеры оборудования информационных систем. Мы потратим некоторое время на изучение этих компонентов и того, как они все работают вместе, в главе 2. Программное обеспечение 56 Программное обеспечение - это набор инструкций, которые сообщают аппаратному обеспечению, что делать. Программное обеспечение не осязаемо – к нему нельзя прикоснуться. Когда программисты создают программы, на самом деле они просто печатают списки инструкций, которые говорят аппаратному обеспечению, что делать. Существует несколько категорий программного обеспечения, причем двумя основными категориями являются программное обеспечение операционной системы, которое делает оборудование пригодным для использования, и прикладное программное обеспечение. Выводы В этой главе описана разработка на базе WinForm в программе Microsoft Visual Studio. Показаны способы работы с данными , которые находятся в локальный базе данных , проработаны методы по добавлению,редактированию и удаления данных в локальной базе. Данное приложение позволяет добавлять информацию об объектах и заказчиков более эффективно. На основе данных, представленных в базе данных можно сделать анализ и вывести инфографику по объектам, заказчикам и материалам. Также можно на основании анализа сделать вывод и понять причины возникающих проблем в компании с учетом «объектов», а также принять решение по устранению данных проблем и их причин. 57 Заключение Информационная система – система управления информацией, позволяющая получать, записывать, удалять и изменять информацию. В данном дипломном проекте была реализована информационная система для управления и ведением учета о объектах и заказчиков. Ведение учета - это стремление и стимул для работников офиса каждый день выполнять свою работу прогрессивно, плодотворно для увеличения “КПД” работы фирмы. Мониторинг включает измерение и оценку производительности штабу, также называемую управлением производительностью. Взаимодействие включает повседневный обмен информацией между менеджером и подчиненными, а также между коллегами для передачи информации об ожидаемых объектах, заказчиков, обратной связи и т. д. В результате написания дипломной работы и проектирования информационной системы были изучены: специфика работы предприятия повторение основ работы с базами данных повторение языка C# и ADO.NET - средства C# и ADO.NET для работы с базами данных - разработана информационная система для предприятия С учетом вышеизложенного, полагаю, что цель данной дипломной работы была достигнута. Разработанная система успешно прошла все этапы тестирования и является полностью работоспособным продуктом, готовым к внедрению. 58 Список использованной литературы 1. Мюллер Д. П. C# для чайников – США, 2014 - 450с. 2. Б. Фарелл. Веб-компоненты в действии - ДМК Пресс, 2020 г. – 462с. 3. М. Хавербеке, Выразительный C#. Современное веб-программирование Питер, 2020 г. – 480с. 4. Б. Черный, Профессиональный C# 7 и .NET Core - Питер, 2016 г. – 352с. 5. Фаулер М., PHP4 руководство для начинающих, - М.: Издательский дом "Вильямс", 2015.-384 с. 6. Иванов А.В. Рефакторинг кода на MYSQL. Улучшение проекта существующего кода - Диалектика, 2020 г. – 464с. 7. Использование ПО с открыты м и сходны м кодо м для создания Web- сайта для совместной работы [Электронный ре сур с]. - Режим доступа: http://joomla.ru/download/joomla/view.download/201/1951.html. Дата обращения: 21.05.2015. 8. Тиленс Томас М.. React в действии - Питер, 2018 г.. - 368c. 9. Троелсен Эндрю, Джепикс Филипп, Язык программирования C# 6.0 и платформа .NET 4.6 - Вильямс Диалектика / Вильямс, 2016 г. – 1440c. 10. Албахари Д., Албахари Б., C# 8.0. Карманный справочник - Диалектика, 2020 г. – 240с. 59 Приложение А Листинг back-end building forms. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Buildings.model { public class Building { public int id { get; set; } public string name { get; set; } public string type { get; set; } public int year { get; set; } public string location { get; set; } public string condition { get; set; } public int contractId { get; set; } public string team { get; set; } public Building(int id, string name, string type, int year, string location, string condition, int contractId, string team) { this.id = id; this.name = name; this.type = type; this.year = year; this.location = location; this.condition = condition; this.contractId = contractId; this.team = team; } public Building(string name, string type, int year, string location, string condition, int contractId, string team) { this.name = name; 60 this.type = type; this.year = year; this.location = location; this.condition = condition; this.contractId = contractId; this.team = team; } } } 61 Приложение Б Листинг buildingDao.cs using Buildings.model; using MySql.Data.MySqlClient; using System; using System.Collections.Generic; using System.Data.Common; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Buildings.dao { class BuildingDAO { public static List<Building> getAllBuildings() { List<Building> result = new List<Building>(); MySqlConnection connection = MySQLDAO.createConnect(); string query = "select * from building"; MySqlCommand command = new MySqlCommand(query, connection); using (DbDataReader reader = command.ExecuteReader()) { while (reader.Read()) { result.Add(new Building(reader.GetInt32(0), reader.GetString(1), reader.GetString(2), reader.GetInt32(3), reader.GetString(4), reader.GetString(5), reader.GetInt32(6), reader.GetString(7))); } } connection.Close(); return result; } public static Building getBuildingByContactIdAndName(int contractId, string name) 62 { MySqlConnection connection = MySQLDAO.createConnect(); string query = "select * from building where building.customer_contract_id = @customer_contract_id and building.name = @name"; MySqlCommand command = new MySqlCommand(query, connection); command.Parameters.AddWithValue("@customer_contract_id", contractId); command.Parameters.AddWithValue("@name", name); using (DbDataReader reader = command.ExecuteReader()) { while (reader.Read()) { return new Building(reader.GetInt32(0), reader.GetString(1), reader.GetString(2), reader.GetInt32(3), reader.GetString(4), reader.GetString(5), reader.GetInt32(6), reader.GetString(7)); } } connection.Close(); return null; } public static bool deleteBuilding(Building building) { MySqlConnection connection = MySQLDAO.createConnect(); MySqlTransaction transaction = connection.BeginTransaction(); string query = "delete from building where building.id = @id"; MySqlCommand command = new MySqlCommand(query, connection, transaction); command.Parameters.AddWithValue("@id", building.id); try { command.ExecuteNonQuery(); transaction.Commit(); 63 connection.Close(); return true; } catch { return false; } } public static bool saveBuilding(Building building) { MySqlConnection connection = MySQLDAO.createConnect(); MySqlTransaction transaction = connection.BeginTransaction(); string query = "insert into buildings.building (building.name, building.type, building.year, customer_contract_id, location, building.condition, team) values" + " (@name, @type, @year, @customer_contract_id, @location, @condition, @team)"; MySqlCommand command = new MySqlCommand(query, connection, transaction); command.Parameters.AddWithValue("@name", building.name); command.Parameters.AddWithValue("@type", building.type); command.Parameters.AddWithValue("@year", building.year); command.Parameters.AddWithValue("@customer_contract_id", building.contractId); command.Parameters.AddWithValue("@location", building.location); command.Parameters.AddWithValue("@condition", building.condition); command.Parameters.AddWithValue("@team", building.team); try { command.ExecuteNonQuery(); transaction.Commit(); connection.Close(); return true; } catch { return false; } 64 } public static bool updatBuilding(Building building) { MySqlConnection connection = MySQLDAO.createConnect(); MySqlTransaction transaction = connection.BeginTransaction(); string query = "update building set building.name = @name, building.type = @type, building.year = @year, customer_contract_id = @customer_contract_id, location = @location," + " building.condition = @condition, team = @team where building.id = @id"; MySqlCommand command = new MySqlCommand(query, connection, transaction); command.Parameters.AddWithValue("@id", building.id); command.Parameters.AddWithValue("@name", building.name); command.Parameters.AddWithValue("@type", building.type); command.Parameters.AddWithValue("@year", building.year); command.Parameters.AddWithValue("@customer_contract_id", building.contractId); command.Parameters.AddWithValue("@location", building.location); command.Parameters.AddWithValue("@condition", building.condition); command.Parameters.AddWithValue("@team", building.team); try { command.ExecuteNonQuery(); transaction.Commit(); connection.Close(); return true; } catch { return false; } } } } 65 Приложение В Листинг Mysql.cs using MySql.Data.MySqlClient; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Buildings.dao { /// <summary> /// Класс для общих вещей с MySQL /// </summary> public static class MySQLDAO { // Строка соединения с БД private static string connString = "database=buildings;characterset=utf8;port=" + 3306 + ";" + "Server=localhost" + ";user id= admin;password=admin"; /// <summary> /// Создание соединения с БД /// </summary> /// <returns>Установленное соединение</returns> public static MySqlConnection createConnect() { MySqlConnection connection = new MySqlConnection(connString); try { connection.Open(); } catch { throw new Exception("Не удалось установить соединение с базой"); } return connection; } } 66 } 67