Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

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

Содержание:

ВВЕДЕНИЕ

Актуальность темы курсовой работы заключается в том, что современное общество каждый день накапливает и передает информацию с помощью разнообразных «гаджетов», облачных технологий. Объемы информации действительно колоссальны, а, чтобы успешно управлять потоками этой информации необходимо разрабатывать современные инструменты, которые позволят производить все необходимые операции с наименьшими физическими затратами в короткие промежутки времени. Программное обеспечение должно обладать минимальными требованиями к подготовке конечных пользователей – низкий порог вхождения. Это в свою очередь позволяет значительно повысить производительность труда.

Для этого разрабатываются новые и развиваются существующие средства разработки – языки программирования. Языки программирования позволяют создавать программы системного или прикладного уровня с различными видами интерфейсов.

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

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

Целью курсовой работы является изучение языков программирования высокого уровня и разработка приложения для оснастки СУБД MS SQL Server графическим интерфейсом.

Для достижения поставленной цели в курсовой работе необходимо решить следующие задачи:

1) дать определения основным понятиям – язык программирования, алгоритм, транслятор, компилятор, интерпретатор, система программирования, а также базам данных, системе управления базами данных;

2) изучить классификацию языков программирования по типу решаемых задач, способу получения результата, степени детализации алгоритма получения результата, степени ориентации на специфические возможности ЭВМ;

3) изучить типы данных;

4) изучить историю развития среды программирования MS Visual Studio;

5) рассмотреть основные этапы проектирования графического интерфейса;

6) разработать приложение для оснастки СУБД MS SQL Server графическим интерфейсом.

При написании курсовой работы использовались научные труды следующих авторов: Былкин В.Д [1], Ананченко И. В. [2], Андрианова А.А [3], Баканов А.С. [4], Бураков П.В [5] и другие.

1. Введение в языки программирования высокого уровня

1.1. Основные понятия и определения

Одним из основных понятий в программировании является понятие алгоритм.

Термин «алгоритм» (algorithm) происходит от имени математика Мохаммеда аль Хорезми (около 825 г). Именно он сформулировал правила выполнения четырех арифметических операций. В литературе даются различные определения термину алгоритм.

Алгоритм - система формальных правил (команд), однозначно определяющих процесс решения задачи.

Алгоритм - конечная последовательность общепонятных предложений, формальное, не требующее проявления человеческой изобретательности, исполнение которых позволяет за конечное время получить решение некоторой задачи из некоторого класса задач. [1]

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

Алгоритм, записанный на формальном языке называется программой. Часто понятия алгоритма и программы можно называть синонимами, и единственное различие между ними заключается в том, что алгоритм является основной идеей построения, а вот программа реализует алгоритм на конкретном формальном языке. Таким образом, использование алгоритма позволяет решать задачу формально, механически исполняя команды алгоритма в указанной последовательности. [9]

Изначально программирование строилось на записи программ в виде машинных команд. Это было весьма трудоемко и был разработан язык Ассемблера, позволивший облегчить эту работу. Ассемблер позволяет записывать машинные команды в символическом виде. Язык Ассемблера зависит от системы команд конкретного компьютера, и весьма удобен, чтобы решать небольшие задачи программирования, требующих максимальной скорости выполнения. Но крупные проекты, на языке Ассемблера, разрабатывать трудно. Главная причина этому – привязка программы, написанной на Ассемблере, к конкретной архитектуре, а перенос на другие рабочие станции невозможен, в результате чего программы переписывали заново даже если модернизировали этот же компьютер. [6]

Как только появились компьютеры, появилась необходимость разработки программ различного предназначения, для чего и были разработаны языки программирования высокого уровня, т.е. те языки, которые, в отличие от Ассемблера, не зависят от конкретной архитектуры. Чтобы выполнить программу, написанную на языке программирования высокого уровня, ее необходимо перевести на язык машинных команд. Для выполнения этой функции разработаны специальные программы, называемые трансляторами или компиляторами. После процесса трансляции программа можется выполняться на конкретном компьютере. Еще одним способом перевода является интерпретатор – программа, выполняющая команды на промежуточном языке, максимально приближенном к машинному языку. Другими словами, интерпретатор производит пооператорную обработку команд с дальнейшим выполнением, а компилятор преобразует в машинные коды, записывает в память и только после этого выполняет. [13]

В отличие от интерпретаторов, компиляторы достаточно быстры, однако есть и недостаток – они громоздки.

Основные задачи транслятора:

- анализ транслируемой программы и проверка ее на наличие синтаксических ошибок;

- создание программы на машинном языке;

- распределение памяти (назначение адресов) между переменными, массивами, константами и иными объектами.

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

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

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

Константа – величина, которая никогда не меняется.

Оператор – это символьное обозначение действия для выполнения математических или логических команд.

Функция – это логически самостоятельная именованная часть программы, в которую может передаваться любое количество значений переменных аргументов, а возвращаемое функцией значение – только одно.[15]

Выражение – это комбинация переменных, операторов, констант и функций.

Машинный язык – внутренний язык ЭВМ, который представляет собой систему команд, используемую в данной ЭВМ вместе с принятыми в ней способами кодирования и адресации. Данный язык понятен машине, но не для человек, поэтому для решения задач программирования используют алгоритмические языки. Они не зависят от конкретной ЭВМ. Для перевода программы с алгоритмического языка в машинный используются специальные программы – трансляторы.

Можно сказать, что все описанное выше это элементы системы программирования. Другими словами, система программирования – это совокупность инструментов, позволяющих разрабатывать программы на одном из языков программирования. Сюда входят трансляторы, текстовый редактор кода, отладчик для устранения ошибок и много других служб. На современном этапе развития, абсолютно все программные комплексы, будь то системное программное обеспечение или прикладное, разрабатываются с помощью систем программирования. [16]

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

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

Реляционная база данных представляет собой множество взаимосвязанных таблиц, каждая из которых содержит информацию об объектах определенного вида. Каждая строка таблицы содержит данные об одном объекте (например, автомобиле, компьютере, клиенте), а столбцы таблицы содержат различные характеристики этих объектов – атрибуты (например, номер двигателя, марка процессора, телефоны фирм или клиентов). Строки таблицы называются записями. Все записи таблицы имеют одинаковую структуру – они состоят из полей (элементов данных), в которых хранятся атрибуты объекта (рис. 1). Каждое поле записи содержит одну характеристику объекта и представляет собой заданный тип данных (например, текстовая строка, число, дата). Для идентификации записей используется первичный ключ. Первичным ключом называется набор полей таблицы, комбинация значений которых однозначно определяет каждую запись в таблице. [11]

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

Банк данных (БнД) − совокупность баз данных и системы управления базами данных.

Модель данных − формализованное описание, отражающее состав и типы данных, а также взаимосвязь между ними. [10]

1.2. Классификация языков программирования

Языки программирования можно классифицировать:

1. По степени ориентации на специфические возможности ЭВМ:

- машинно-зависимые (выполняются на ЭВМ определенного типа, используются в системном программировании, сюда относят машинные языки, ассемблеры, автокоды); 

- машинно-независимые (после трансляции на машинный язык, программа становится машинно-зависимой, а также переносимой на ЭВМ другого типа).

2. По степени детализации алгоритма получения результата:

- языки низкого уровня (позволяют записывать инструкции для компьютера на аппаратном уровне в виде символического кодирования – автокод, ассемблер);

- языки высокого уровня (задачи описываются в наглядной форме через систему обозначений, понятную человеку, благодаря чему программу легко понять и отладить – Фортран, Паскаль, Бейсик, Си);

- языки сверхвысокого уровня (программист создает абстрактную программу, а из нее выводится конкретная программа – Алгол-86).

3. По степени ориентации на решение определенного класса задач:

- проблемно-ориентированные (для решения какого-то конкретного типа задачи);

- универсальные (для решения широкого спектра задач).

4. По возможности дополнения новыми типами данных и операциями:

- расширяемые (возможно подключение новых библиотек);

- нерасширяемые.

5. По возможности управления реальными объектами и процессами:

- языки систем реального времени (такая система должна реагировать на сигналы в пределах определенного периода);

- языки систем условного времени.

6. По способу получения результата:

- процедурные (программист создает процедуру получения результата по предварительно известным исходным данным);

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

7. По типу решаемых задач:

- языки системного программирования (позволяют разработать программы, которые управляют аппаратными компонентами системы);

- языки прикладного программирования (позволяют разработать программы, которые помогают пользователю решать задачи в разных сферах деятельности).

1.3. Типы данных

Вид информации, представленный каждым словом данных в памяти ЭВМ, может быть различен. Например, некоторые слова могут содержать целые числа, в то время как другие могут содержать символы. Программирование на машинном уровне требует точного знания того, как эти данные представлены в виде последовательности битов и какие машинные команды должны применяться для реализации требуемых операций. Это трудоемкий и чреватый ошибками процесс, обойтись без которого можно путем применения языка высокого уровня, дающего программисту абстрактную модель, в которой данные и операции над ними можно специфицировать в проблемно-ориентированных, а не в машинно-ориентированных терминах. [1]

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

Простыми словами, тип данных – это допустимое множество значений.

Встроенные – типы данных, которые заранее определены в конкретном языке программирования. Помимо значений этих типов обычно описываются и операции над ними. Сюда можно отнести целые числа (int), числа с плавающей точкой (float), логический тип (bool) и другие.

Уточняемые – типы данных, позволяющие ограничить значения базового типа в пределах диапазона. Суть состоит в том, что для любого значения любого встроенного (и перечисляемого) типа существует его внешнее литеральное представление. Более того, по литеральному представлению константы можно однозначно определить тип, к которому она относится. Если к тому же на множестве значений типа задано отношение порядка (определены операции сравнения), то иногда возникает потребность сказать, что в данном приложении нас интересует подмножество значений такого типа, ограниченное некоторым специфицированным диапазоном. Сюда относят тип поддиапазона целых чисел в языках линии Паскаль. [17]

Перечисляемые – типы данных, представляющие собой конечное число значений, которые задаются перечислением. Обычно для любого перечисляемого типа предопределяются операции получения значения по его номеру и получения номера по значению. Кроме того, для перечисляемого типа предопределяются операции сравнения и получения следующего и предыдущего значения. По причине однозначного сопоставления значению перечисляемого типа натурального числа, возможно неявное преобразование этих значений к значению любого числового типа данных. Сюда можно отнести, например, тип Color = (red, blue, green).

Конструируемые (составные) – типы данных, которые состоят из значений одного или нескольких других типов. Сюда можно отнести массивы и списки. В сильно типизированных языках для любого значения типа массива известно число элементов базового типа. Поэтому в принципе всегда возможен контроль значения индекса, хотя на практике такой контроль обычно отменяется при использовании программы в производственном режиме. Типы массивов позволяют работать с регулярными структурами данных, каждый элемент которых относится к одному и тому же базовому типу. Существует другая разновидность составных конструируемых типов данных, которые позволяют определять и использовать нерегулярные структуры данных, элементы которых могут относиться к разным встроенным или явно определенным типам данных. Собирательно типы этой разновидности называются типами записи. [17]

1.4. Развитие среды программирования MS Visual Studio

Среда разработки MS Visual Studio начинает свое развитие с 1995 года, когда была выпущена первая версия продукта под таким названием. До этого в начале 1990-х гг. компанией Microsoft были выпущены отдельные продукты для программирования на языках высокого уровня – это MS Visual C++, MS Visual Basic, MS Visual FoxPro, MS Visual SourceSafe. И уже с 1995 г. все эти продукты были объединены под одним названием – Visual Studio. Эта среда программирования была выпущена в версии 4.0, видимо, потому, что в отдельном виде описанные выше компоненты среды уже выпускались до этого в течение нескольких лет.

Среда программирования Visual Studio довольно быстро стала популярной. Компания Sun Microsystems, которая в то время работала над собственной технологией – Java, использовала именно среду Visual Studio и реализованный в ней язык Visual C++ как основу для реализации своих Java-библиотек Abstract Windows Toolkit (AWT) под платформу Windows. [22]

Важную роль в широком распространении среды Visual Studio внесла подписка на MSDN (Microsoft Developers' Network), благодаря которой стало возможным получать новейшие программные разработки Microsoft.

В 1997 году была выпущена новая версия Visual Studio 5.0 под кодовым названием Boston. Именно в этой версии появились такие инструменты как:

  • Visual Studio InterDev – инструмент разработки интерактивных Web-сайтов на основе технологии ASP (Active Server Pages);
  • Visual Java++ - среда программирования на Java "от Microsoft".

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

В 1998 году вышла версия Visual Studio 6.0. (под кодовым названием Aspen). В нее вошли следующие новые компоненты для поддержки визуального моделирования и анализа производительности программ:

- система проектирования распределенных приложений (Application Performance Explorer);

- инструмент для создания моделей из классов и настройки взаимосвязей между ними (MS Visual Modeler);

- инструмент авто-подключения удаленного доступа (Remote Auto Connection Manager);

- система визуального представления структуры создаваемой программы (Visual Studio Analyzer). [22]

В 2002 году была выпущена новая версия Visual Studio 7.0 (кодовое название - Rainier), или просто Visual Studio.NET. Главным нововведением этой версии является реализация многоязыковой платформы .NET Framework, обеспечивающей надежное и безопасное программирование с полным контролем типов и безопасности на базе управляемого кода (managed code), общей инфраструктуры языков (Common Language Infrastructure - CLI), единого промежуточного языка (Common Intermediate Language - CIL), общей системы типов (Common Type System - CTS). В этой версии был разработан и реализован новый мощный и современный язык программирования – C#.

В 2003 году была выпущена версия Visual Studio.NET под кодовым названием Everett. Данная версия не внесла каких-либо существенных изменений, а главной целью выпуска новой версии было обеспечение обновления до версии .NET Framework 1.1. Хотя можно выделить реализацию версии .NET для мобильных устройств – .NET Compact Framework. А это значит – поддержка разработки приложений для мобильных устройств средствами Visual Studio.

Следующая версия интегрированной среды Visual Studio 2005 (под кодовым названием Whidbey) вышла в 2005 году. Основными нововведениями версии являются параметризованные типы данных и развитие технологии ASP, предназначенной для реализации активных Web-страниц, в сочетании с надежностью и безопасностью кода, присущими платформе .NET.

В 2008 году была выпущена следующая версия Visual Studio - Visual Studio.NET 2008 (Orcas). Целевой операционной системой была ОС Windows Vista. Эта версия содержит развитые средства поддержки Web-программирования.

Особенности версии Visual Studio 2008:

- новый визуальный дизайнер приложений, использующих Windows Presentation Foundation (WPF) – API для поддержки GUI;

- поддержка отладки многопоточных приложений.

В апреле 2010 г. была выпущена версия Visual Studio 2010 (кодовое название Dev10) особенностями которой стали:

- появление нового функционального языка F#, сочетающего в себе возможности чисто функционального программирования со средствами объектно-ориентированного программирования, параллельного программирования и средствами интеграции со всеми остальными возможностями .NET Framework и Visual Studio; [22]

- поддержка облачных технологий средствами Microsoft Azure, а именно возможность разработки и запуска приложений на распределенных серверах. Для этого был разработан специальный инструмент – Microsoft Azure SDK.

В августе 2012 года вышла версия Visual Studio 2012 под кодовым названием Metro Theme, особенностями которого стали:

- улучшение пользовательского интерфейса;

- разработка инструмента просмотра проектов (Solution explorer);

- улучшена поддержка цветов для выделения фрагментов кода.

Как отмечает Microsoft, общий размер исходного кода для Visual Studio 2012 достиг 50 миллионов строк. [22]

Сделаем некоторые выводы:

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

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

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

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

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

2. Создание графических приложений в языках программирования высокого уровня

2.1. Принципы разработки пользовательского интерфейса

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

- управление компьютером пользователем: инициация, прерывание, отмена компьютерных процессов и т.д.

- ввод данных пользователем с последующим откликом системы.

- отображение данных, включаю те, что ввел пользователь.

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

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

Пользовательский интерфейс состоит из следующих частей:

- визуальное представление.

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

- техники взаимодействия пользователя с информационной системой. [23]

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

  1. Простота – все действия должны выполнятся достаточно просто, буквально в пару нажатий. Интерфейс должен обеспечивать легкость его изучения и использования. Кроме того, он должен предоставлять быстрый доступ IIO всему перечню функциональных возможностей, предусмотренных данным приложением. Один из возможных путей обеспечения простоты - представление на экране информации, минимально необходимой для выполнения пользователем очередного шага задания.
  2. Дружественность – так как пользователи способны допускать ошибки, интерфейс должен предупреждать о вводе неправильных данных, а также давать возможность отменить ошибочные действия, совершенные пользователем.
  3. Обратная связь – каждое действие пользователя должно сопровождаться визуальным или же звуковым подтверждением того, что программное обеспечение восприняло введенную команду; при этом вид реакции, по возможности, должен учитывать природу выполненного действия. Обратная связь эффективна в том случае, если она реализуется своевременно, то есть как можно ближе к точке последнего взаимодействия пользователя с системой. Когда компьютер обрабатывает поступившее задание, полезно предоставить пользователю информацию относительно состояния процесса, а также возможность прервать этот процесс в случае необходимости. [8]
  4. Гибкость – возможность изменять структуру интерфейса в зависимости от уровня подготовки пользователя. Если «новичку» порой достаточно стандартных возможностей программы, то «администратору» необходима более тонкая настройка ввода данных и администрирования. Гибкий (адаптивный) интерфейс - это еще одна форма проявления изучаемости программы, которая обеспечивает постепенное продвижение пользователя по классическому маршруту от простого к сложному. Другим аспектом гибкости интерфейса является возможность настройки пользователем элементов управления и дизайна рабочей среды приложения.
  5. Естественность интерфейса. Этот принцип предполагает, что интерфейс не вынуждает пользователя существенно изменять привычные для него способы решения задачи. Это, в частности, означает, что сообщения и результаты, выдаваемые приложением, не должны требовать дополнительных пояснений. Скажем, если в ходе работы бухгалтерской программы на экране появляется сообщение «Проводка завершена успешно», это будет значительно понятнее пользователю, чем сообщение «Обновление полей в базе данных выполнено».
  6. Согласованность означает возможность переносить имеющиеся у пользователя знания и навыки в работе с программой на новые задания, быстрее и легче осваивать новые функции и компоненты программы. Другими словами, согласованность делает интерфейс узнаваемым и предсказуемым.
  7. Терпимость интерфейса. Обычно пользователи изучают особенности работы с новым программным продуктом методом проб и ошибок. Не застрахованы от ошибок и достаточно опытные пользователи. Ошибки могут быть как физического типа (случайный выбор неправильной команды или данных), так и логического (принятие неправильного решения на выбор команды или данных). Интерфейс, обладающий свойством терпимости, должен предотвращать ситуации, которые могут привести к появлению ошибок. Он также должен уметь адаптироваться к потенциальным ошибкам пользователя и облегчать ему процесс устранения последствий таких ошибок.[8]

2.2. Этапы проектирования пользовательского интерфейса

Рассмотрим четыре этапа проектирования пользовательского интерфейса:

  1. Начало работы над проектом.

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

  1. Постановка задачи.

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

  1. Высокоуровневое проектирование.

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

  1. Низкоуровневое проектирование.

Данный этап заключается в детальной проработке задач и проверке качества разработанных решений. Определяется структура, то есть, как будет работать разрабатываемый продукт. Определяется форма, которую примет эта функциональность. При проектировании экранов производится полное описание интерфейса, разрабатываются макеты с описанием каждого элемента. Здесь проводится юзабилити-тестирование, на основании данных которого интерфейс либо дорабатывается, либо считается разработанным.[23]

2.3. Язык программирования высокого уровня C#

В настоящее время язык C# является одним из самых распространенных средств разработки с помощью объектно-ориентированного подхода. Он был разработан в начале 2000-х годов компанией Microsoft, а именно группой разработчиков под руководством Андерса Хейлсберга. Платформой для данного языка служит .NET Framework.

Язык C# можно считать гибридом от нескольких языков, потому что он обладает:

- наличием таких типов данных, как структуры и перечисления, позаимствованные из языка C++;

- использованием свойств классов, как и в Visual Basic;

- возможностью использовать перегрузку операторов.

Особенности языка С#:

- обладает встроенными типами данных;

- обеспечивает доступ к WinAPI и базовым классам платформы .NET;

- позволяет создавать динамические web-страницы ASP.NET;

- возможность использовать прямой доступ к памяти и указатели;

- обеспечивает получение исполняемых файлов или библиотек путем изменения ключей компиляции;

- поддерживает автоматическую генерацию XML-документации.

Так как язык C# является объектно-ориентированным, он отвечает трем основным принципам или парадигмам [3]:

- инкапсуляция – позволяет обеспечить ограничение доступа к переменным и методам класса с помощью спецификаторов доступа public, private, protected;

- наследование – позволяет создавать новые классы на основе уже существующих, то есть новые классы, помимо свойств родительского класса, могут иметь и свои;

- полиморфизм – позволяет использовать один интерфейс (несколько похожих методов) для решения похожих задач (примером может служить перегрузка методов).

Пространство имен – совокупность различных типов или группировка уникальных идентификаторов. Большая часть таких типов для управления объектами графического интерфейса находится в пространстве имен System.Windows.Forms (здесь описываются диалоговые окна, меню и иные компоненты). Помимо этого, есть и другие пространства имен [30]:

- System.Collection позволяет работать с коллекциями, массивами, словарями и другими контейнерами;

- System.Data позволяет работать с базами данных;

- System.Drawing позволяет рисовать в окне;

- System.IO позволяет работать с файлами, обеспечивает ввод и вывод данных;

- System.XML позволяет читать и записывать файлы формата XML.

Как уже говорилось выше, язык программирования C# является объектно-ориентированным, а значит основной единицей или элементом программ на этом языке является класс. Класс – элемент, который представляет собой совокупность переменных, свойств, методов, событий, описывающих его реализацию. Описание класса начинается со служебного слова class.

Класс может содержать методы. Методы представляют собой операции, которые выполняет объект класса. Для определения метода используется следующий синтаксис:

тип_возвращаемого_значения имя метода (список_параметров)

{тело метода}

тип_возвращаемого_значения – это тип данных результата, получаемого после выполнения метода;

список_параметров – это входные данные, которые будут использоваться при выполнении метода.

К методам могут применяться модификаторы доступа [20]:

- public – открытый для других методов вне класса;

- private – закрыт для методов других классов;

- protected – дает доступ только методам связанным отношением родитель-потомок.

По умолчанию для методов применяется модификатор доступа private.

Существуют специальные методы:

- конструктор, который служит для создания и инициализации объекта класса. Для описания используется следующий синтаксис:

[модификаторы] имя_класса (список_параметров)

{тело конструктора}

Стоит заметить, что в конструкторе не указывается тип возвращаемого значения.

- деструктор, который вызывается при уничтожении объекта. Он не имеет возвращаемого значения и параметров:

~имя_класса ()

{тело деструктора}

Делегат – специальный тип данных, который используется для вызова функции путем обращения к ячейке памяти и описывается следующим способом [27]:

delegate тип_функции имя_делегата (список_параметров);

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

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

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

Оператор может состоять из одной строки кода, которая заканчивается точкой с запятой, или из ряда однострочных операторов в блоке. Блок оператора заключен в скобки {} и может содержать вложенные блоки. [30]

Операторы выбора:

- if (оператор выбора с условием)

if (условие)

{

Операторы, выполняющиеся при удовлетворении условия;

}else

{

Операторы, не отвечающие условию;

- case (оператор выбора со списком «кандидатов»)

switch (оператор)

{

case 1: оператор1; break;

case 2: оператор2; break;

default: оператор по умолчанию; break;

}

Циклы:

- for (позволяет выполнять ряд операторов, пока условие истинно)

for (переменная с начальным значением; условие; действие шага цикла)

{

операторы;

}

- do (выполняет операторы пока условие истинно, причем проверка проходит после хотя бы одного цикла)

do

{

операторы;

} while (условие)

- while (выполняет операторы пока условие истинно, причем проверка проходит перед проходом цикла, в отличие от цикла do)

While (условие)

{

операторы;

}

- foreach (позволяет работать с коллекциями)

foreach (переменная in коллекция)

{

операторы;

}

2.4. Использование языка C# при разработке графического интерфейса

Как говорилось выше, основным пространством имен для разработки приложений с графическим интерфейсом является System.Windows.Forms. Здесь содержится большое количество типов, позволяющих визуально проектировать интерфейс пользователя.

Стоит выделить основные компоненты, в том числе те, которые будут использованы далее в практической части курсовой работы: Form, Button, Label, TextBox, ComboBox, GroupBox, DataTimePicker, DataGridView. [28]

Компонент Form (форма) описывает форму приложения, является неким контейнером для всех остальных компонентов.

Компонент Button (кнопка) в основном используется для генерации события щелчка, по которому вызывается функция - обработчик. В обработчике события можно писать код, который будет выполнен при нажатии на кнопку. [30]

Компонент Label (метка) используется для отображения не редактируемой надписи.

Компонент TextBox (текстовое поле) используется для ввода текста в одну строку или несколько строк при включенном режиме MultiLine.

Компонент ComboBox (раскрывающийся список) используется для выбора заранее добавленных элементов.

Компонент GroupBox (поле группировки) выполняет роль контейнера и используется для организации группы из компонентов, позволяет перемещать все сгруппированные компоненты.

Компонент DateTimePicker (выбор даты) визуально представляет собой календарь и позволяет пользователю выбрать нужную дату.

Компонент DataGridView (таблица базы данных) служит для отображаения данных в виде таблицы, состоящей из строк и столбцов. Связывается с таблицей базы данных, отображает выборку данных и позволяется проводить простые операции. [19]

3. Оснащение СУБД MS SQL SERVER 2012 графическим интерфейсом

3.1. Проектирование графического интерфейса пользователя в среде Visual Studio

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

Процесс создания Windows-приложения состоит из двух этапов:

  1. Визуальное проектирование – создание внешнего вида приложения путем манипулирования необходимыми объектами.
  2. Написание программного кода, определяющего поведение приложения в ответе на действие пользователя.

Среда разработки Visual Studio позволяет разработать графический интерфейс без написания кода, просто расставляя нужные нам объекты на форме. Среда автоматически сгенерирует программный код всех этих действий. Нам останется лишь написать логику работы приложения.

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

Приложение будет состоять из 4 форм:

  1. Главная форма называется «База данных «Недвижимость» и будет состоять из 4 кнопок (Button) и 2 таблиц (DataGridView):

- кнопка «Добавить квартиросъемщика» (поле Name зададим равным btnAddTenant). По нажатию на кнопку должно произойти событие, вызывающее форму «Карточка квартиросъемщика» в режиме добавления записи в базу данных.

- кнопка «Изменить квартиросъемщика» (поле Name зададим равным btnChangeTenant). По нажатию на кнопку должно произойти событие, вызывающее форму «Карточка квартиросъемщика» в режиме изменения выбранной записи.

- кнопка «Удалить квартиросъемщика» (поле Name зададим равным btnDeleteTenant). По нажатию на кнопку должно произойти событие, удаляющее выбранную запись из базы данных.

- кнопка «Справочник» (поле Name зададим равным btnSpravochnik). По нажатию на кнопку должно произойти событие, вызывающее форму «Справочник».

- компоненты DataGridView будут показывать данные двух таблиц из базы данных – Квартиросъемщики и Объекты недвижимости. Эти таблицы должны быть связанными, то есть при выборе объекта недвижимости в одной таблице, во вторую будет выводиться информация о квартиросъемщике данного объекта недвижимости.

Главная форма представлена на рисунке 1.

Рисунок 1 – Главная форма приложения

  1. Форма «Карточка квартиросъемщика» будет состоять из компонентов GroupBox, Label, TextBox, MaskedTextBox, DateTimePicker, ComboBox и Button.

- все поля формы подписаны с помощью компонента Label.

- поля «Фамилия» (tbFam), «Имя» (tbName), «Отчество» (tbOtch), «Кем выдан» (tbVydan), «Адрес регистрации» (tbAdress) представляют собой обычные компоненты TextBox.

- поле «Гражданство» (cbGrazh) представлен компонентом ComboBox и содержит записи о странах.

- поле «Серия и номер паспорта» (mtPassport) представлен компонентом MaskedTextBox с маской ввода «0000-000000», что позволяет вводить только цифры, разделенные знаком «тире».

- поле «Дата выдачи» (dateVydachi) представлен компонентом DateTimePicker и позволяет выбрать дату.

- поле «Выбор квартиры» представлен компонентом ComboBox и содержит записи о квартирах, которые заносятся отдельно в форме «Справочник».

- все поля сгруппированы в контейнере GroupBox под названием «Персональные данные».

- кнопка «Добавить в базу» (btnAddPerson) добавляет информацию из всех полей в базу, формируя запись о квартиросъемщике.

Форма «Карточка квартиросъемщика» представлена на рисунке 2.

  1. ывавыа

Рисунок 2 – Форма «Карточка квартиросъемщика»

3. Форма «Справочник» содержит компонент DataGridView, отображающего все записи об объектах недвижимости, и кнопку «Добавить квартиру» (btnAddKvartira), нажатие на которую вызывает форму «Карточка недвижимости».

Форма «Справочник» представлена на рисунке 3.

Рисунок 3 – Форма «Справочник»

  1. Форма «Карточка недвижимости» содержит следующие поля:

- все поля формы подписаны с помощью компонента Label.

- поля «Адрес объекта недвижимости» (tbAdress) и «Стоимость аренды» (tbCash) представлены компонентом TextBox.

- поля «Тип дома» (cbHouseType), «Наличие балкона» (cbBalkon), «Наличие интернета» (cbInternet) представлены компонентом ComboBox и содержат заранее введенные данные.

- поля «Этаж» (numFloor), «Номер квартиры» (numKvartira), «Площадь» (numArea), «Количество комнат» (numKomnat) представлены компонентом NumericUpDown, представляющим собой счетчик (позволяет вводить данные как вручную, так и с помощью «стрелок»).

- кнопка «Добавить квартиру» (btnAddKvartira) представлена компонентом Button, при нажатии на которую вызывается событие записи информации из всех полей в базу данных, формируя запись об объекте недвижимости.

Форма «Карточка недвижимости» представлена на рисунке 4.

Рисунок 4 – Форма «Карточка недвижимости»

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

3.2. Написание кода на языке C#

Написание логики начнем с главной формы. Все кнопки будут иметь одно событие – Click.

Событие Click для кнопки «Добавить квартиросъемщика»:

private void btnAddTenant_Click(object sender, EventArgs e)

{

fTenants fTen = new fTenants();

fTen.btnAddPerson.Visible = true;

fTen.ShowDialog();

}

Здесь стоит сразу сказать, что для обращения к другому классу, необходимо создать экземпляр класса через служебное слово new, после чего можно получить доступ к его свойствам и компонентам. В этом коде мы создаем экземпляр класса формы «Карточка квартиросъемщика» (fTenants), после чего получаем доступ к кнопке «Добавить квартиросъемщика» (btnAddPerson), и показываем модальное окно формы.

Событие Click для кнопки «Изменить квартиросъемщика»:

private void btnChangeTenant_Click(object sender, EventArgs e)

{

int i = dataGridView2.CurrentRow.Index;

fTenants fTen = new fTenants();

fTen.currRow = i;

fTen.btnSave.Visible = true;

fTen.textmethod(недвижимостьDataSet.Tables ["Квартиросъемщики"]. Rows[i][1].ToString(),

недвижимостьDataSet.Tables["Квартиросъемщики"].Rows[i][2].ToString(),

недвижимостьDataSet.Tables["Квартиросъемщики"].Rows[i][3].ToString(),

недвижимостьDataSet.Tables["Квартиросъемщики"].Rows[i][4].ToString(),

недвижимостьDataSet.Tables["Квартиросъемщики"].Rows[i][5].ToString(),

недвижимостьDataSet.Tables["Квартиросъемщики"].Rows[i].Field<DateTime>("Дата выдачи"),

недвижимостьDataSet.Tables["Квартиросъемщики"].Rows[i][7].ToString(),

недвижимостьDataSet.Tables["Квартиросъемщики"].Rows[i][8].ToString(),

недвижимостьDataSet.Tables["Квартиросъемщики"].Rows[i].Field<int>("Код объекта"));

fTen.ShowDialog();

}

Здесь мы определяем индекс выбранной записи в таблице, на основе которой извлекаем данные из всех столбцов этой записи и заносим в поля формы «Карточка квартиросъемщика».

Событие Click для кнопки «Удалить квартиросъемщика»:

private void btnDeleteTenant_Click(object sender, EventArgs e)

{

int i = dataGridView2.CurrentRow.Index;

dataGridView2.Rows.Remove(dataGridView2.Rows[i]);

квартиросъемщикиTableAdapter.Update(недвижимостьDataSet. Квартиросъемщики);

}

На основе индекса выбранной строки в таблице, удаляем всю строку и сохраняем изменения в базу данных.

Событие Click для кнопки «Справочник»:

private void btnSpravochnik_Click(object sender, EventArgs e)

{

fSpravochnik fSprav = new fSpravochnik();

fSprav.ShowDialog();

}

Создаем экземпляр формы «Справочник» и вызываем модальное окно формы.

Отображение записей из базы данных происходит через связывание компонентов DataGridView с базой компонентами BindingSource, DataSet и TableAdapter. Пример представлен на рисунке 5.

Рисунок 5 – Добавление источника данных

Форма «Карточка квартиросъемщика», как говорилось выше, будет использоваться в двух режима – добавление и изменение данных. Разница будет в наличие одной из двух кнопок «Добавить в базу» и «Сохранить изменения».

Событие Click для кнопки «Добавить в базу»:

private void btnAddPerson_Click(object sender, EventArgs e)

{

Form1 frm1 = new Form1();

frm1.квартиросъемщикиTableAdapter.Insert(tbFam.Text, tbName.Text, tbOtch.Text, cbGrazh.Text, mtPassport.Text, dateTimePicker1.Value, tbVydan.Text, tbAdress.Text, int.Parse(cbKvartira.SelectedValue.ToString()));

Close();

}

Создаем экземпляр главной формы и обращаемся к базе данных через TableAdapter методом Insert для внесения данных из всех полей.

Событие Click для кнопки «Сохранить изменения»:

private void btnSave_Click(object sender, EventArgs e)

{

Form1 frm1 = new Form1();

недвижимостьDataSet.Tables["Квартиросъемщики"].Rows[currRow].SetField<string>("Фамилия", tbFam.Text);

недвижимостьDataSet.Tables["Квартиросъемщики"].Rows[currRow].SetField<string>("Имя", tbName.Text);

недвижимостьDataSet.Tables["Квартиросъемщики"].Rows[currRow].SetField<string>("Отчество", tbOtch.Text);

недвижимостьDataSet.Tables["Квартиросъемщики"].Rows[currRow].SetField<string>("Гражданство", cbGrazh.Text);

недвижимостьDataSet.Tables["Квартиросъемщики"].Rows[currRow].SetField<string>("Серия и номер паспорта", mtPassport.Text);

недвижимостьDataSet.Tables["Квартиросъемщики"].Rows[currRow].SetField<DateTime>("Дата выдачи", dateTimePicker1.Value);

недвижимостьDataSet.Tables["Квартиросъемщики"].Rows[currRow].SetField<string>("Кем выдан", tbVydan.Text);

недвижимостьDataSet.Tables["Квартиросъемщики"].Rows[currRow].SetField<string>("Адрес регистрации", tbAdress.Text); недвижимостьDataSet.Tables["Квартиросъемщики"].Rows[currRow].SetField<object>("Код объекта", cbKvartira.SelectedValue);

квартиросъемщикиTableAdapter.Update(недвижимостьDataSet.Квартиросъемщики);

Close();

}

Этот код позволяет внести изменения в базу данных, не добавляя новые записи, а путем изменения текущих данных.

Форма «Справочник» содержит кнопку «Добавить квартиру», которая вызывает окно формы «Карточка недвижимости».

private void btnAddKvartira_Click(object sender, EventArgs e)

{

fNedvizh fned = new fNedvizh();

fned.ShowDialog();

}

Форма «Карточка недвижимости» содержит кнопку «Добавить квартиру», которая позволяет добавить запись в базу данных через TableAdapter методом Insert из всех полей.

private void btnAddKvartira_Click(object sender, EventArgs e)

{

fSpravochnik fspr = new fSpravochnik();

fspr.объекты_недвижимостиTableAdapter.Insert(tbAdress.Text,cbHouseType.Text,numFloor.Value.ToString(),numKvartira.Value.ToString(),numArea.Value.ToString(),numKomnat.Value.ToString(),cbBalkon.Text,cbInternet.Text, tbCash.Text);

Close();

}

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

- для формы «Справочник»

private void fSpravochnik_Activated(object sender, EventArgs e)

{

объекты_недвижимостиTableAdapter.Fill(недвижимостьDataSet2.Объекты_недвижимости);

}

- для главной формы

private void Form1_Activated(object sender, EventArgs e)

{

квартиросъемщикиTableAdapter.Fill(недвижимостьDataSet.Квартиросъемщики);

}

Таким образом, в рамках курсовой работы было разработано приложение с графическим интерфейсом пользователя, состоящее из четырех форм и позволяющее пользователю с легкостью осуществлять основные операции, а именно – добавлять, изменять и удалять данные из базы данных на платформе MS SQL Server.

ЗАКЛЮЧЕНИЕ

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

Язык программирования – это формальная знаковая система, которая предназначена для описания алгоритмов в форме, наиболее удобной для программиста. Одним из основных понятий в программировании является понятие алгоритм. Алгоритм – это совокупность команд или инструкций, которые описывают порядок действий, а результатом их выполнения является решение поставленной задачи.

Рассмотрены языки программирования высокого уровня и их классификация по типу решаемых задач, способу получения результата, степени детализации алгоритма получения результата, степени ориентации на специфические возможности ЭВМ.

Изучены типы данных.

Рассмотрена история развития среды программирования MS Visual Studio.

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

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

В третьем разделе данной курсовой работе рассмотрен практический пример разработки приложения с графическим интерфейсом пользователя для оснащения им базы данных на основе платформы MS SQL Server.

Практический пример был реализован на языке программирования высокого уровня C# в среде Visual Studio и СУБД MS SQL Server 2012. Были рассмотрены следующие вопросы:

- обращение к формам путем создания экземпляров класса;

- написание событий Click для кнопок;

- извлечение данных из БД MS SQL Server в компонент DataGridView;

- запись данных в БД MS SQL Server через компонент TableAdapter.

В процессе выполнения курсовой работы решены следующие задачи:

1) даны определения основным понятиям – язык программирования, алгоритм, транслятор, компилятор, интерпретатор, система программирования, а также базам данных и системе управления базами данных;

2) изучена классификация языков программирования по типу решаемых задач, способу получения результата, степени детализации алгоритма получения результата, степени ориентации на специфические возможности ЭВМ;

3) изучены типы данных;

4) изучена историю развития среды программирования MS Visual Studio;

5) рассмотрены основные этапы проектирования графического интерфейса;

6) разработано приложение для оснастки СУБД MS SQL Server графическим интерфейсом.

Считаю, что все поставленные задачи курсовой работы, как теоретические, так и практические, решены, следовательно, главная цель исследования – достигнута.

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

  1. Алгоритмические языки и основы программирования: Учебное пособие / В.Д.Былкин, Ю.В Блинков, Т.А. Глебова, В.В. Пикулин / Под общ ред. проф. А.Н.Кошева.- Пенза: ПГУAC, 2004. - 280 с.
  2. Ананченко И. В., Козлов И.В. Пособие к курсу Администрирование Microsoft SQL Server 2012R2. Часть 1. С.-П. – 2014. – 71 с.
  3. Андрианова А.А., Исмагилов Л.Н., Мухтарова Т.М. Объектно-ориентированное программирование на С# : Учебное пособие / А.А. Андрианова, Л.Н. Исмагилов, Т.М. Мухтарова. – Казань: Казанский (Приволжский) федеральный университет, 2012. – 134 с.
  4. Баканов А.С., Обознов А.А. Проектирование пользовательского интерфейса: эргономический подход - М.: Изд-во «Институт психологии РАН», 2009. - 184 с.
  5. Бураков П.В., Петров В.Ю. Введение в системы баз данных: Учебное пособие. - СПб: СПбГУ ИТМО, 2010. - 128 с.
  6. Борисенко В. Основы программирования. – Национальный Открытый Университет "ИНТУИТ" [Электронный ресурс]. URL: http://www.intuit.ru/department/se/pbmsu/
  7. Введение в язык C# и .NET.Framework https://docs.microsoft.com/ru-ru/dotnet/articles/csharp/getting-started/introduction-to-the-csharp-language-and-the-net-framework
  8. Гультяев А. К. Help. Разработка справочных систем: Учебный курс. - СПб.: Питер, 2004. -270 с.
  9. Давыдова Н. А. Программирование : учебное пособие / Н. А. Давыдова, Е. В. Боровская. — М. : БИНОМ. Лаборатория знаний, 2009. — 238 с.
  10. Дьяков И.А. Базы данных. Язык SQL: Учебное пособие. - Тамбов: Изд-во ТГТУ, 2004. - 80 с.
  11. Евсеева О.Н., Шамшев А.Б. Работа с базами данных на языке C#. Технология ADO.NET: Учебное пособие – Ульяновск: УлГТУ, 2009 г. – 170 с.
  12. Информационные системы / Петров В. Н. — СПб.: Питер, 2003. — 688 с
  13. Кип Р.Ирвин. Язык ассемблера для процессоров Intel, 4-е изд., 2005, 912 с.
  14. Култыгин О.П. Администрирование баз данных. СУБД MS SQL Server [Электронный ресурс]: учебное пособие/ Култыгин О.П.— Электрон. текстовые данные. – М.: Московский финансово-промышленный университет «Университет», 2012.— 232 c.
  15. Лебедев И.С., Петров В.Ю. Информатика. Программирование. Учебно-методическое пособие. Часть 2. – СПб: Университет ИТМО, 2017. – 71c.
  16. Марапулец Ю.В.Программирование на языке высокого уровня: Учебное пособие. - Петропавловск-Камчатский: КамчатГТУ, 2008. - 189 с.
  17. Миндалев И.В. Теория экономических информационных систем: Электронный учебно-методический комплекс. — КрасГАУ, 2011. http://www.kgau.ru/istiki/istiki/teis/bk01-toc.html
  18. Мирошниченко Г. Реляционные базы данных. Практические приемы оптимальных решений. – СПб. : БХВ-Петербург, 2005. – 400с.
  19. Нейгел К., Ивьен Б., Глинн Д. и др. C# 5.0 и платформа .NET 4.5 для профессионалов Пер. с англ. — М. : Вильямс, 2014. — 1440 с.
  20. Павловская Т.А. Программирование на языке высокого уровня. Учебник для вузов. — СПб.: Питер, 2009. — 432 с.
  21. Руководство по программированию на C# https://docs.microsoft.com/ru-ru/dotnet/articles/csharp/programming-guide/index
  22. Сафонов В. Возможности Visual Studio 2013 и их использование для облачных вычислений. – Национальный Открытый Университет "ИНТУИТ" [Электронный ресурс]. URL: http://www.intuit.ru/studies/courses/13805/1223/lecture/23388?page=2
  23. Сергеев С.Ф., Падерно П.И., Назаренко Н.А. Введение в проектирование интеллектуальных интерфейсов:Учебное пособие.-СПб: СПбГУ ИТМО, 2011.-108с.
  24. Сивохин А.В., Шибанов С.В., Самуйлов С.В. Разработка и сопровождение баз данных в среде СУБД MS SQL Server 2000: Учебное пособие. - Пенза: Пенз. гос. ун-т, 2004. - 154 с.
  25. Советов, Б. Я. Базы данных : учебник для прикладного бакалавриата / Б. Я. Советов, В. В. Цехановский, В. Д. Чертовской. — 3-е изд. — М. : Издательство Юрайт, 2018. — 420 с.
  26. Ткачев О.А. Создание и манипулирование базами данных средствами СУБД Мicrosoft SQL Server 2008 [Электронный ресурс]: учебное пособие/ Ткачев О.А.— Электрон. текстовые данные.— М.: Московский городской педагогический университет, 2013.— 152 c
  27. Троелсен. Э.С# и платформа .NET. Библиотека программиста. — СПб.: Питер, 2004. —796 с
  28. Фленов М. Библия C# (3-е – изд).- БХВ-Петербург. – 2016. – 546 с.
  29. Химонин Ю. Сбор и анализ требований к программному продукту. [Электронный ресурс]. -. 2009 – URL: https://pmi.ru/articles/articles/1211/
  30. Шилдт Герберт C# 4.0: полное руководство.: Пер. с англ. — М.: ООО "И.Д. Вильямс", 2011. — 1056 с.