В. Н. Тарасов Должность Уч степень, звание Подпись



Скачать 488.51 Kb.
страница1/2
Дата26.09.2018
Размер488.51 Kb.
  1   2


Федеральное агентство связи

Федеральное государственное бюджетное образовательное учреждение

высшего образования

«Поволжский государственный университет телекоммуникаций и информатики»

Факультет Заочного обучения


Направление (специальность) Информатика и вычислительная техника

Кафедра Программного обеспечения и управления в технических системах

ВЫПУСКНАЯ КВАЛИФИКАЦИОННАЯ РАБОТА

(БАКАЛАВРСКАЯ РАБОТА)




Программная система для ведения персонального календаря событий с настройкой уведомлений и напоминаний


Утверждаю

зав. кафедрой д.т.н., проф.




В.Н. Тарасов




Должность Уч.степень, звание Подпись

Дата

Инициалы Фамилия

Руководитель

к.т.н. доц.




Е.М. Мезенцева

Н. контролер

ст. преп.




С.В. Чернова

Разработал

36П




Р.А. Бабаев




Группа Подпись

Дата

Инициалы Фамилия



ВКР проверку на антиплагиат прошла







Мезенцева Е.М.




Подпись

Дата

Инициалы Фамилия

Самара 2017
Федеральное агентство связи

Федеральное государственное бюджетное образовательное учреждение

высшего образования

«Поволжский государственный университет телекоммуникаций и информатики»
ЗАДАНИЕ

по подготовке выпускной квалификационной работы

Студента



Бабаева Руфата Айдын Оглы

1 Тема ВКР




Программная система для ведения персонального




календаря событий с настройкой уведомлений и




напоминаний




Утверждена приказом по университету от








2 Срок сдачи студентом законченной ВКР



26.01.17

3 Исходные данные и постановка задачи








1. Провести теоретические исследования предметной области, аналогов

программных систем, и средств разработки

2. Выбрать инструментальные средства разработки

3. Описать функционально назначение, структуру программы, файлов и

спецификацию системы

4. Разработать интерфейс пользователя

5. Разработать календарь событий с настройкой уведомлений и

напоминаний

6. Написать руководство пользователя

























4 Перечень подлежащих разработке в ВКР вопросов или краткое




содержание ВКР. Сроки исполнения

26.01.17







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

2. Обоснование и выбор методов решения

3. Описание программы

4. Руководство пользователя

























5 Перечень графического материала. Сроки исполнения

18.01.17







а) Презентационный материал



















6 Дата выдачи задания

«

30

»




11

2016

г.









Кафедра

Программного обеспечения и управления в технических




системах

Утверждаю

зав.кафедрой д.т.н., проф.

30.11.16

В.Н. Тарасов




Должность Уч.степень, звание Подпись

Дата

Инициалы Фамилия

Руководитель



Доцен к.т.н.

30.11.16

Е.М. Мезенцева




Должность Уч.степень, звание Подпись

Дата

Инициалы Фамилия

Задание принял к исполнению

36П

30.11.16

Р.А. Бабаев




Группа Подпись

Дата

Инициалы Фамилия






Федеральное агентство связи

Федеральное государственное бюджетное образовательное учреждение

высшего образования

«Поволжский государственный университет телекоммуникаций и информатики»
ПОКАЗАТЕЛИ КАЧЕСТВА ВКР

Студент

36П




Р.А. Бабаев




Группа Подпись

Дата

Инициалы Фамилия

Руководитель ВКР

доцент к.т.н.




Е.М. Мезенцева




Должность Уч.степень, звание Подпись

Дата

Инициалы Фамилия




По ВКР студента

Бабаева Руфата Айдын Оглы

На тему

Программная система для ведения персонального календаря




событий с настройкой уведомлений и напоминаний




1 Работа выполнена:







- по теме, предложенной студентом















- по заявке предприятия












наименование предприятия

- в области фундаментальных и

поисковых научных исследований














указать область исследований

2 Результаты ВКР:







- рекомендованы к опубликованию












указать где

- рекомендованы к внедрению












указать где

- внедрены












акт внедрения

3 ВКР имеет практическую ценность



Программное приложение







в чем заключается практическая ценность

4 Использование ЭВМ при

выполнении ВКР:








(ПО, компьютерное моделирование, компьютерная обработка данных и др.)



Microsoft Visual С# 2015, .NET Framework 4.6










5. ВКР прошла проверку на объем заимствований



% заимствований






эл. версия сдана


Введение
В последнее время темп жизни настолько увеличился, что удержать все в голове практически невозможно, так как множество событий происходит вокруг каждого человека. Перед нами встает задача сохранности этих данных и вывода напоминаний о возникновении тех или иных событий в нашей жизни. Для того чтобы ничего не упустить и не забыть можно воспользоваться приложением «календарь событий». Целью бакалаврской работы является создание такого приложения.

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

В связи с этим целью настоящей работы является автоматизация процесса записи дел и напоминаний в календарь событий.

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

- разработать программу персональный календарь событий. Которая будет представлять из себя приложение Windows Forms. Приложение должно содержать подключаемую динамическую библиотеку (.dll), реализующую основной функционал программы;

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

- разработать форму, где можно внести развернутую информацию о событии;

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

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

- предоставлять возможность удалять все созданные события.

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

Предметом исследования являются методы и алгоритмы автоматизации процесса создания календаря событий.

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

Основная часть бакалаврской работы состоит из 3 глав:

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

В Заключении приводятся основные результаты и выводы по работы, а также идеи по дальнейшей доработке системы.

Приложение содержат: исходный код программы (Приложение А), презентационные материалы (Приложение Б).


1 Исследование существующих решений


    1. Сравнение бумажного ежедневника и электронного календаря

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

Ежедневник — тетрадь для ведения ежедневных записок. Первое упоминание о ежедневнике принято связывать с Италией 1650 г., откуда и взялось первое слово (лат. agenda: букв. «вещи, которые надо сделать») [1].

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

Календарь в первую очередь предназначен для планирования. Потому что только человек, который планирует свои дела наперед, может быть действительно успешным. Можно сказать, что успех и планирование - это синонимы. Это слова, которые всегда идут рядом. Человек, который не планирует свои действия, не может быть успешным. Естественно, для достижения успеха нужно правильное планирование, с определением приоритетов и выполнением намеченного.

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

Не нужно будет, например, если у Вас проходит совещание каждый вторник, постоянно делать запись об этом мероприятии. Один раз запишете, поставите соответствующую опцию — и эта запись в каждом вторнике календаря у Вас появится. В электронном календаре удобно менять даты, добавлять новые события, удобно полностью перестраивать свое расписание, если это необходимо. Вся информация в календаре представлена наглядно. Вы можете посмотреть свои планы по дням, по неделям, по месяцам. Кроме того, календарь будет напоминать о предстоящих событиях по SMS, если соответствующим образом настроить уведомления этих событий. Сравнение бумажного ежедневника и электронного календаря событий приведено в таблице ниже.



Сравнение бумажного ежедневника и электронного календаря событий

Бумажный ежедневник

Электронный планировщик
Преимущества

Индивидуальность
Можно создать абсолютно нестандартный ежедневник, добавив в него необходимые элементы.



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

Стильная «штучка»
Как и часы, ежедневник это достаточно стильный аксессуар.

Множество функций
Напоминания, синхронизация, уведомление и +100….000 других функций

Работа руками стимулирует развитие мозга
Когда вы используете ручку и бумагу,

Множество различных программ-календарей
Каждый может найти свою


Продолжение табл.

ваш мозг более креативен и активен, чем когда речь идет о белом экране монитора.

программу, удобную конкретно для него.

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

Возможность легкого предоставления доступа к своему календарю
Можно поделиться своим расписанием со всеми коллегами, и они всегда будут в курсе, когда я могу им помочь и есть ли у меня на это время.

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

Структуризация и систематизация
Можно систематизировать встречи и заметки как вам удобно.

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

Безграничные возможности
Многие программы позволяют связывать встречи, контакты, заметки, документы и проекты в одно целое в одном месте. Хотя это уже не совсем электронные ежедневники
Недостатки

Тяжелый
Не каждый ежедневник можно поместить в маленькую женскую сумочку.

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

Существует в одном экземпляре 
Естественно, нет речи ни о какой синхронизации. Расписание из ежедневника есть только в нем и нигде больше.

Нет электричества — нет расписания 
Стоит вашему электронному помощнику «разрядиться», и взглянуть на расписание вы уже не сможете.

Продолжение табл.

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

Синхронизация вовсе не так проста и хороша, как хотелось бы.

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

 

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

 

На самом деле, они вполне удачно дополняют друг друга. Еженедельник - это инструмент достаточно гибкого и длительного планирования, в то время как в электронном календаре достаточно легко можно распределять конкретные временные ресурсы [1].


    1. Обзор приложений – календарей

Хотя штатные приложения-календари в устройствах Android и iOS и выполняют свою задачу, с функциями у них туго. Невозможно использовать собственный фон календаря или видеть в календаре маленькое фото друга из Facebook, когда приходит его день рождения. Кроме того, в некоторые сторонние календари интегрированы задачи, что очень важно для того, чтобы быть пунктуальным и не забывать о важных планах. В некоторых календарях реализованы возможности распознавания голоса, пакетного редактирования, а в некоторых случаях утилита даже показывает блоками свободные часы время, чтобы можно было более продуктивно использовать время. В данной работе приведено десять лучших приложений-календарей для Android и iOS по мнению [2].
1.2.1 Jorte Calendar

Jorte Calendar – один из самых популярных альтернативных календарей в магазине Google Play. Он отличается широкими возможностями конфигурации и несколькими вариантами внешнего вида. Просматривать календарь можно в режиме отображения месяца, недели и дня (по часам), что удобно для быстрого выбора нужной даты, а панели задач и напоминаний помогают сохранять важные события и дела перед глазами. Специальный облачный сервис, Jorte Cloud, позволяет синхронизировать календари, расписания и списки задач на нескольких устройствах, а приложение также обеспечивает поддержку импорта из Google Calendar. Есть и магазин Jorte Store, где можно приобрести скины и иконки, чтобы персонализировать календарь. Многочисленные виджеты и интеграция с Google Maps завершают этот замечательный набор функций. 
1.2.2 Calendar Pad

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

1.2.3 Touch Calendar

Touch Calendar не следует традиции отображать календарь в виде месяца, недели и дня по часам – вместо этого он отображает отдельные дни крупными элементами, которые сменяются при помощи прокрутки. Пролистывание вниз и вверх позволяет передвигаться вперёд и назад во времени, а двойное касание или щипок масштабируют отображаемый календарь. Для создания события надо нажать и удерживать ячейку, а для регулярных событий предусмотрено несколько опций. У Touch Calendar нет некоторых симпатичных «примочек», связанных с анализом текста, которые характерны для новомодных приложений-календарей, но это всё равно отличная замена штатному календарю.


1.2.4 aCalendar

aCalendar – это бесплатное и надёжное приложение-календарь, которое имеет удобный для навигации интерфейс с тремя вариантами отображения. Пролистывание из стороны в сторону позволяет переключаться между режимами месяца, недели и дня, а пролистывание вниз и вверх – передвигаться по календарю с интервалом в соответствии с выбранным режимом отображения. aCalendar синхронизирует фотографии из книги контактов или соцсетей, чтобы отметить дни рождения или годовщины, а также поддерживает передачу данных через NFC и полноэкранные виджеты. Если вам хочется настроить его на свой вкус, можно воспользоваться палитрой из 48 цветов.


1.2.5 Приложение Business Calendar

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


1.2.6 Приложение Fantastical 2










Приложение Fantastical 2 только недавно было улучшено и дополнено, чтобы соответствовать iOS 7: для пользователей приготовлены не только новые элементы оформления, но и удобные функции. Чёткое отображение мероприятий в режиме месяца, недели или дня дополнено лёгкими напоминаниями и средствами планирования мероприятий. Пользователи могут создавать события традиционным способом через меню, либо надиктовать или написать заметку, которая будет автоматически расположена в календаре. Функция Day Ticker особенно хороша: она помогает пользователям просматривать свои события и напоминания и управлять ими.
1.2.7 Приложение-календарь Cal

Относительно недавно появившееся приложение-календарь Cal (Android, iOS) – детище команды разработчиков Any.do, в одинаковой степени функциональное и красивое. Создание мероприятий осуществляется очень просто, притом Cal в зависимости от названия мероприятия вставляет в описание контакты и геолокационные данные. Можно даже синхронизировать задания из Any.do. Очень удобные и не загромождённые деталями режимы отображения события, дня и месяца располагаются на фоне тематических обоев, благодаря чему приложения выглядит просто потрясающе.

1.2.8 Canary

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


1.2.9 Agenda Calendar

Agenda Calendar (Android, iOS) старается обратить внимание пользователя на основные события дня, показывая самую срочную и необходимую информацию. Приложение синхронизируется с Google Calendar, iCloud и Microsoft Exchange через штатный календарь – и тогда все мероприятия можно импортировать в Agenda Calendar. Режим отображения месяца с цветными точками для обозначения событий позволяет быстро освежить в памяти долгосрочные планы, а режим дня или события предлагает более подробный просмотр. Agenda Calendar позволяет настраивать напоминания и быстро оповещать о мероприятии.


1.2.10 Week Calendar

Название Week Calendar (Android, iOS) немного не подходит для данного приложения: ведь это намного больше, чем календарь на неделю. Есть режимы отображения расписания, дня, месяца и даже года. Приложение буквально напичкано функциями, притом просмотр событий очень сбалансирован: с одной стороны, легко обратить внимание на события дня, так как они заметны, но при этом они не перегружены деталями. События можно редактировать в группе, перетаскивать их между днями календаря, осуществлять поиск в календаре, назначать комплексные регулярные мероприятия и отмечать события различными цветами.


1.3 Средства разработки программного обеспечения

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

Это такой процесс, в результате которого создаётся некая программа, также такая деятельность предполагает поддержание работоспособности созданного программного обеспечения, удержание качества на должном уровне, при этом используются знания из различных отраслей – информатика, математика, инженерия и другие. Успешный результат возможен только при соблюдении требований ко всем этапам. Так, при постановке определённой задачи, прежде всего, необходимо провести анализ и сформировать спецификацию для будущей программы. Затем производится проектирование, и только после этого – инженерия, когда используются различные языки программирования для непосредственного создания программного обеспечения. Когда продукт создан, производятся различные тестирования, обслуживание, настройки конфигураций, анализ качества и эффективности.

Непосредственно средства разработки программного обеспечения включают в себя множество различных инструментов, которые способны решать разнообразные задачи. Невозможно создать любой программный код без редактора текста, ассемблера и компилятора, а также компоновщика (linkers). Сам текст будущего кода вводится в общий или специальный текстовый редактор, где его можно корректировать, а иногда и компилировать. Компилятор, чаще всего, сразу укомплектован и редактором связей. Ассемблер необходим для того, чтобы переводить языки программирования, а компоновщик собирает библиотечные и объектные файлы, корректирует ссылки, тем самым образовывает исполнимый файл.

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

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

Итак, как разработчик, исходя из задачи, я определился с языком программирования и выбрал C#. Теперь рассмотрим инструментальные средства разработки ПО для различных языков программирования.
1.3.1 Инструментальные средства разработки приложений

Настоящим ключом к успеху в разработке программного обеспечения является наличие набора эффективных инструментальных средств разработки. Компания Microsoft уже давно предлагает замечательные инструментальные средства разработки, к числу которых принадлежат Visual C++ и Visual Basic. Платформа .NET объединяет средства разработки в единую интегрированную среду, которая имеет название Visual Studio.NET.

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

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

Среда VS.NET предоставляет множество различных конструкторов форм, баз данных и других программных элементов.

Независимые разработчики могут и в дальнейшем разрабатывать расширения среды Visual Studio.NET, а также предлагать дополнительные языки программирования и соответствующие полноценные среды разработки, поддерживаемые платформой .NET. Программы на предложенных независимыми разработчиками языках программирования смогут взаимодействовать с программами на любых языках, поддерживаемых платформой .NET. Существующий набор инструментальных средств разработки обладает широкими возможностями, которые используются при создании Web-приложений и Web-служб. Обеспечивается также всесторонняя поддержка разработки приложений с базами данных[3].


1.3.2 Важность инструментальных средств разработки

Не следует недооценивать значение инструментальных средств разработки приложений. Хорошей иллюстрацией тому может послужить случай, который произошел при работе над проектом языка Ada. Целью данного проекта было создание очень мощного языка программирования. Частью первоначального замысла было также создание стандартизованной среды программирования на языке Ada (Ada Programming Support Environment — APSE). Разработке языка программирования было уделено огромное внимание. В то же время гораздо меньше внимания было уделено надлежащей разработке среды программирования на языке Ada (APSE). Из-за этого у языка программирования Ada так и не появилась среда разработки, которая могла бы сравниться со средой разработки Visual Studio, Smalltalk, или с многочисленными интегрированными средами разработки, которые имеются для языка Java.

Преимущество среды разработки Visual Studio.NET состоит в том, что она является стандартом. Следовательно, она будет тщательно настроена для того, чтобы сделать работу в этой среде продуктивной. Вниманию разработчиков будут предложены многочисленные тренинги, посвященные разработке приложений в данной среде, планируется также множество других акций. Компания Microsoft, по сравнению со многими более мелкими разработчиками, присутствующими на обширном рынке инструментальных средств, располагает гораздо большими ресурсами, которые она в состоянии выделить на поддержку среды Visual Studio.NET. Платформа Java характеризуется высоко стандартизированным языком программирования и интерфейсом прикладного программирования (API). В то же время, инструментальные средства разработки, без которых написание высокопроизводительных приложений немыслимо, не являются в ней стандартизированными [3].

1.3.3 Роль языка XML

Язык XML в технологии .NET используется повсеместно. В глобальном видении развития приложений в эпоху Internet компания Microsoft также отводит ему особое место. Ниже перечислены некоторые применения языка XML в .NET:

- Язык XML используется для кодирования запросов к Web-службам и ответов, возвращаемых клиенту;

- Язык XML может использоваться для моделирования данных в наборах данных, используемых в технологии доступа к данным ADO.NET;

- Язык XML используется при создании конфигурационных файлов;

- Для некоторых языков, поддерживаемых платформой .NET, документация на языке XML может быть сгенерирована автоматически;

- Язык XML — лингва-франка (общепринятый язык) для корпоративных серверов, построенных на платформе .NET;

- Язык XML используется технологией Web-служб для описания и передачи данных.
1.4 Платформа .NET и язык C#

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

По сравнению с другими языками C# достаточно молодой, но в то же время он уже прошел большой путь. Первая версия языка вышла вместе с релизом Microsoft Visual Studio .NET в феврале 2002 года. Текущей версией языка является версия C# 6.0, которая вышла в 20 июля 2015 года вместе с Visual Studio 2015.

C# является языком с Си-подобным синтаксисом и близок в этом отношении к C++ и Java.

C# является объектно-ориентированным и в этом плане много перенял у Java и С++. Например, C# поддерживает полиморфизм, наследование, перегрузку операторов, статическую типизацию. Объектно-ориентированный подход позволяет решить задачи по построению крупных, но в тоже время гибких, масштабируемых и расширяемых приложений. И C# продолжает активно развиваться, и с каждой новой версией появляется все больше интересных функциональностей, как, например, лямбды, динамическое связывание, асинхронные методы и т.д.

Роль платформы .NET

Когда говорят C#, нередко имеют в виду технологии платформы .NET (WPF, ASP.NET). И, наоборот, когда говорят .NET, нередко имеют в виду C#. Однако, хотя эти понятия связаны, отождествлять их неверно. Язык C# был создан специально для работы с фреймворком .NET, однако само понятие .NET несколько шире.

Как-то Билл Гейтс сказал, что платформа .NET - это лучшее, что создала компания Microsoft. Возможно, он был прав. Фреймворк .NET представляет мощную платформу для создания приложений. Можно выделить следующие ее основные черты:

- поддержка нескольких языков. Основой платформы является общеязыковая среда исполнения Common Language Runtime (CLR), благодаря чему .NET поддерживает несколько языков: наряду с C# это также VB.NET, C++, F#, а также различные диалекты других языков, привязанные к .NET, например, Delphi.NET. При компиляции код на любом из этих языков компилируется в сборку на общем языке CIL (Common Intermediate Language) - своего рода ассемблер платформы .NET. Поэтому мы можем сделать отдельные модули одного приложения на отдельных языках;

- кроссплатформенность. .NET является переносимой платформой (с некоторыми ограничениями). Например, последняя версия платформы на данный момент .NET Framework поддерживается на большинстве современных ОС Windows (Windows 10/8.1/8/7/Vista). А благодаря проекту Mono можно создавать приложения, которые будут работать и на других ОС семейства Linux, в том числе на мобильных платформах Android и iOS;

- мощная библиотека классов. .NET представляет единую для всех поддерживаемых языков библиотеку классов. И какое бы приложение мы не собирались писать на C# - текстовый редактор, чат или сложный веб-сайт - так или иначе мы задействуем библиотеку классов .NET.

- разнообразие технологий. Общеязыковая среда исполнения CLR и базовая библиотека классов являются основой для целого стека технологий, которые разработчики могут задействовать при построении тех или иных приложений. Например, для работы с базами данных в этом стеке технологий предназначена технология ADO.NET. Для построения графических приложений с богатым насыщенным интерфейсом - технология WPF. Для создания веб-сайтов - ASP.NET и т.д.

- также еще следует отметить такую особенность языка C# и фреймворка .NET, как автоматическая сборка мусора. А это значит, что нам в большинстве случаев не придется, в отличие от С++, заботиться об освобождении памяти. Вышеупомянутая общеязыковая среда CLR сама вызовет сборщик мусора и очистит память.

Управляемый и неуправляемый код

Нередко приложение, созданное на C#, называют управляемым кодом (managed code). Что это значит? А это значит, что данное приложение создано на основе платформы .NET и поэтому управляется общеязыковой средой CLR, которая загружает приложение и при необходимости очищает память. Но есть также приложения, например, созданные на языке С++, которые компилируются не в общий язык CIL, как C# или VB.NET, а в обычный машинный код. В этом случае .NET не управляет приложением.

В то же время платформа .NET предоставляет возможности для взаимодействия с неуправляемым кодом. Мы наряду со стандартными классами библиотеки .NET можем также использовать сборки COM.

JIT-компиляция

Как выше писалось, код на C# компилируется в приложения или сборки с расширениями exe или dll на языке CIL. Далее при запуске на выполнение подобного приложения происходит JIT-компиляция (Just-In-Time) в машинный код, который затем выполняется. При этом, поскольку наше приложение может быть большим и содержать кучу инструкций, в текущий момент времени будет компилироваться лишь та часть приложения, к которой непосредственно идет обращение. Если мы обратимся к другой части кода, то она будет скомпилирована из CIL в машинный код. При том уже скомпилированная часть приложения сохраняется до завершения работы программы. В итоге это повышает производительность[4].

Итак, Microsoft .NET — это новая платформа, построенная на верхнем слое операционной системы. Она обладает многими возможностями, которые позволяют создавать и развертывать как обычные, так и новые Web-ориентированные приложения. Web-службы позволяют использовать функциональные возможности приложений во всей сети Internet. Как правило, для организации взаимодействия с Web-службами задействован протокол SOAP (Simple Object Access Protocol — простой протокол доступа к объектам). Поскольку в основу протокола SOAP положены широко распространенные стандарты, в частности язык разметки гипертекста HTML (Hypertext Markup Language) и язык XML (extensible Markup Language), этот протокол характеризуется высокой степенью функциональной совместимости, а значит, и высокой способностью к взаимодействию.

Платформа .NET использует управляемый код, для выполнения которого предназначена общеязыковая среда выполнения CLR. Общеязыковая среда выполнения CLR использует общую систему типов (Common Type System). Библиотека классов .NET Framework содержит огромное количество классов, которые в равной степени доступны в любом языке программирования, поддерживаемом платформой .NET. Ключевая роль в технологии .NET принадлежит языку XML Все функциональные возможности, которыми обладает платформа .NET, могут использоваться как для создания более устойчивых Windows-приложений, так и для построения Internet-приложений.


1.4.1 Основные достоинства C#

C# — элегантный, типобезопасный объектно-ориентированный язык, предназначенный для разработки разнообразных безопасных и мощных приложений, выполняемых в среде .NET Framework. С помощью языка C# можно создавать обычные приложения Windows, XML-веб-службы, распределенные компоненты, приложения "клиент-сервер", приложения баз данных и т. д. Visual C# предоставляет развитый редактор кода, конструкторы с удобным пользовательским интерфейсом, встроенный отладчик и множество других средств, упрощающих разработку приложений на базе языка C# и .NET Framework.

Синтаксис C# очень выразителен, но прост в изучении. Все, кто знаком с языками C, C++ или Java с легкостью узнают синтаксис с фигурными скобками, характерный для языка C#. Разработчики, знающие любой из этих языков, как правило, смогут добиться эффективной работы с языком C# за очень короткое время. Синтаксис C# делает проще то, что было сложно в C++, и обеспечивает мощные возможности, такие как типы значений Nullable, перечисления, делегаты, лямбда-выражения и прямой доступ к памяти, чего нет в Java. C# поддерживает универсальные методы и типы, обеспечивая более высокий уровень безопасности и производительности, а также итераторы, позволяющие при реализации коллекций классов определять собственное поведение итерации, которое может легко использоваться в клиентском коде. Выражения LINQ делают строго типизированный запрос очень удобной языковой конструкцией.

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

В дополнение к основным описанным объектно-ориентированным принципам, язык C# упрощает разработку компонентов программного обеспечения благодаря нескольким инновационным конструкциям языка, в число которых входят следующие:

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

Свойства, выступающие в роли методов доступа для закрытых переменных-членов.

Атрибуты с декларативными метаданными о типах во время выполнения.

Встроенные комментарии XML-документации.

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

Если потребуется обеспечить взаимодействие с другим программным обеспечением Windows, таким как объекты COM или собственные библиотеки DLL Win32, в языке C# можно использовать процесс, который называется "Interop." Процесс Interop позволяет программам на C# выполнять практически любые действия, которые может выполнять исходное приложение на C++. Язык C# поддерживает даже указатели и понятие "небезопасного" кода для тех случаев, когда прямой доступ к памяти имеет крайне важное значение.

Процесс построения C# по сравнению с C и C++ прост и является более гибким, чем в Java. Нет отдельных файлов заголовка, а методы и типы не требуется объявлять в определенном порядке. В исходном файле C# может быть определено любое число классов, структур, интерфейсов и событий.


1.4.2 ASP.NET 5 и MVC 6

Как мы уже говорили, ASP.NET 5 пeрепроектирована и переписана с нуля. Что же в этом хорошего? В настоящей версии ASP.NET разделeна на пять основных частей, фундаментальную нишу занимает кросс-платфоpменный компонент Host, в котором выполняется веб-прилoжение. Host запускает и обеспечивает весь жизненный цикл приложения.

Следующий уровень — среда исполнения Project K, она состоит из нескольких блокoв. Первый блок — среда компиляции и исполнения. Собственно, именно этот блок содeржит набор SDK, хосты, которые исполняют кастомный код. Второй блoк — это KVM (K Version Manager), он представляет собой командную утилиту, которая позволяет выбрать версию среды исполнения. В текущей версии приложение не ограничено определённой средой исполнения, которая установлена на сервере или у хостера, каждое приложение можeт выполняться в своей обособленной среде, которая может быть индивидуальной у каждого приложения. K Package Manager, как и следует из названия, — это менеджeр пакетов для управления их составом определенного приложения. То есть он управляет загрузкой, удалeнием пакетов, их установкой в проект, управлением зaвисимостями и так далее. Последний блок — K Language Runtime. Он служит для непосредствeнного запуска приложения в системе разработки, то есть этим местом мoжет быть настольная операционная система (Windows, OS X), или серверная (Windows Server, Linux), или кaкое-то мобильное устройство, например планшет под управлeнием Android или Microsoft Surface. K Language Runtime выполняет сборку, запуск и отладку приложений на том устройстве, где вeдется разработка.

На самом верхнем уровне находится приложение, пoстроенное на основе модулей нижних уровней. Отдельным блоком, не вxодящим в состав Project K, идет очень простая утилита K Command. Она представляет собой командную строку и позволяет разработчику совершать любые действия со своим проeктом, в том числе добавлять и удалять компоненты, создавать модули, нaстраивать контроллеры, управлять моделями, представлениями.

В ASP.NET 5 приcутствует три среды исполнения. Во-первых, это Full .NET CLR от Microsoft — «родная» среда исполнения, в которой мoжно выполнять как новый, так и «унаследованный» код (разработанный для пpедыдущих версий ASP.NET).

Во-вторых, это Core CLR — оптимизированная среда выполнения для облачных приложeний. В-третьих, среда выполнения Cross-Platform CLR, которая основана на Mono. Так как последняя пoлучает много кода от проекта .NET Framework, она в ближайшем будущем превратится в самую настоящую кроcс-платформенную среду выполнения для Windows, Linux и OS X.

Благодаря кросс-плaтформенности ты можешь выполнять или, другими словами, хостить ASP.NET-приложение на любом устройстве, в любой операционной системе. Тепeрь его можно запускать хоть на микроконтроллерах.

Все ранее разделенные технoлогии веб-разработки от Microsoft: MVC, Web API и Web Pages — были объединены в новую версию MVC 6.

Кроме того, ASP.NET 6 включает новую версию WebForms 4.6. На этой теxнологии разработано огромное количество проектов, пoэтому WebForms поддерживается и совершенствуется. Microsoft вливает новые инвестиции в эту технолoгию.

Еще одним очень весомым новшеством ASP.NET 5 стал новый конвейер HTTP второй версии. Он пpиобрел новый стек, из чего вытекает повышенная скорость работы и упрощеннaя эксплуатация. Теперь стек компонентный, то есть разработчик может дoбавлять компоненты для обработки запросов. Появилась пoддержка спецификации OWIN.

Нельзя не упомянуть добавленные компоненты идентификации для ASP.NET 5.

OpenID Connect — прослойка над протоколом OAuth 2.0, OAuth Broker, шаблоны ASP.NET 4.6, а также нoвый инструмент аутентификации в Azure AD. Таким образом, ASP.NET отвязался от технологий, пpедназначенных исключительно для Windows, используя теперь кросс-платформeнные решения. В Visual Studio 2015 добавлена поддержка xUnit, теперь система тестов интегрировaна в Test Explorer и может использоваться для создания юнит-тестов. А в Test Explorer, соответствeнно, видны все результаты. Редактор JSON также подвергся кардинальным изменениям и перепиcан с нуля, он приобрел: улучшенное автодополнение, валидацию, расшиpенную подсветку синтаксиса, поддержку схем JSON, определение дубликaтов данных и другое. HTML-редактор был обновлен для поддержки таких фреймворков, кaк Angular, Handlebars. Расширена подсветка пользовательских элементов и атрибутов HTML 5. Добавлены веб-компоненты.


1.4.3 Новое поколение кoмпиляторов

Раньше по традиции все компиляторы, включая компиляторы для управляемых языков, писалиcь на C++. Компилятор получал код на высокоуровневом языке, выполнял над ним никому, кроме разрабoтчиков этого компилятора, не известные операции и выдавал двоичный код. И раньше всех это устраивaло. Но появившиеся в средах разработки инструменты вроде автодополнeния (IntelliSense), средств рефакторинга или интеллектуального переименования потребовaли от этого «скрытого механизма» сведений о своей работе.

За много лет развития управляeмые языки обрели такую мощь, что с их помощью стало возможным разработать собственный кoмпилятор. Так появилось новое поколение компиляторов, напиcанных на C# и названных семейством Roslyn. В это семейство входят два компилятора: с языка C# и с языка VB.NET. Одно из главных преимуществ этих компиляторов над унаследованными — это мoдульность в противовес монолитности. Модульность послужила ключом к оргaнизации компилятора в виде компонентной управляемой плaтформы, что, в свою очередь, упростило создание инструментов, ориентиpованных на исходный/двоичный код и приложения. Кроме того, это послужило хорошим толчком для развития дpугих областей программирования, таких как объектные модели, кодогeнерация или метапрограммирование.

Посредством API Roslyn предoставляет информацию о времени исполнения компилятора на кaждом этапе. Всего в процессе компиляции четыре отдельных (благодаря модульности) этапа.

На пeрвом этапе исходный код разбивается на лексемы и анализируется на предмет соответствия синтаксису определенного языка программиpования.

На втором этапе объявления и метаданные анализируются в форму именовaнных символов.

На третьем этапе происходит связывание идентификаторов из исходника и именoванных символов, подготовленных на прошлом шаге.

Наконец, на зaвершающем, четвертом этапе вся информация объединяется и реализуется компилятором в сборку.

На кaждом этапе компиляции информация отображается в виде соответствующей данному этапу объектнoй модели. Так, первому этапу соответствует синтаксическое дерево (Syntax tree), втоpому — иерархическая таблица символов, в результате третьего этапа получается семантический анaлиз компилятора, а четвертый выводит IL-байт-код.

Каждый Roslyn-компилятор объединяет эти четыре этапа в один. Для соответствия откpытых API компиляторов всем требованиям современных сред программирования, отражающих мощь языков C# и VB.NET, каждый компилятор с соответствующих языков был переcтроен в последней версии Visual Studio.

API компиляторов Roslyn главным образом соcтоит из двух уровней: собственно API компилятора и API рабочей среды. Уровень API компилятора выдает свeдения о двух фазах компиляции: синтаксического и семантического анализoв. Уровень компилятора также содержит ссылки для сборки, опции компиляции и файлы с исходным кодом. У языков C# и VB.NET API этого уровня сильно различаются. К этому уровню также отнoсятся диагностические API (Diagnostic Apis) и скриптовые API (Scripting api). Как часть уровня компиляции, диагностический API выдает вcю информацию о проведенных синтаксическом и семантическoм анализах, сведения об ошибках объявления и различные предупреждения. Скриптовые API в будущем пoзволят выполнять куски кода и накапливать сведениz о выполнении. Тем не мeнее на текущий момент Scripting API еще не реализован (но планируется, что будет частью платформы .NET Roslyn).

Уровень рабочего пространства содержит Workspace API, который служит отпpавной точкой для разных анализов кода, в том числе рефакторинга. Workspace API организует все свeдения в соответствующие информационные модели, что позволяeт избежать анализа отдельных файлов и конфигурирования опций.

Синтаксис и семантика

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

Синтаксическое дерево — базовая структура, испoльзуемая при компиляции, связывании, анализе кода, рефакторинге. Данная структура имеет три ключевых свойcтва: во-первых, информация, хранимая в синтаксическом дереве всегда полнaя и точная, во-вторых, получаемая инфа исходит из анализа кода всего проекта, что означает возможность использования синтакcических деревьев для восстановления и редактирования исходного кoда, и, в-третьих, синтаксическое дерево немодифицируемо и потокобезoпасно, то есть может быть без проблем использовaно несколькими юзерами. Дополнительно к деревьям прилагаются узлы (Syntax nodes), они представляют такие кoнструкции, как объявления, условия и выражения. Все перечисленные категории пpинадлежат разным классам с одним предком — SyntaxNode. Ключевые слова являются синтаксическими токенaми, которые в CLR представлены отдельным типом. С другой стороны, пpобелы, комментарии, директивы препроцессора — это Syntax Trivia (дослoвный перевод — синтаксические мелочи).

Тем не менее синтаксических деревьев недостаточно для полной информации о коде; тогда в игру вступaют семантические деревья, они представляют правила определенного языка. Кроме того, в пpограмме могут быть переменные, структуры, классы с одними и теми же именами, при этом компилятор должeн различать эти сущности. Как раз этим занимается семантическое дерево. Так, в процессе компиляции кoмпилятор собирает всю необходимую информацию в одном месте — в сборку, это типы, объявлeния, ссылки, другие сборки и так далее.

Платформа компиляторов Roslyn представляeт собой набор API и рабочего пространства, который, в свою очеpедь, снабжает тебя как разработчика полным анализом исходного кoда программы на языках C# и Visual Basic.NET.

2 Этапы разработки «Календаря событий»
Для разработки приложения «Календарь событий» использовались источники [5,6,7,8,9]

В современном мире темп жизни очень быстр. Множество событий происходит вокруг каждого человека, для того чтобы ничего не упустить и не забыть можно воспользоваться приложением «календарь событий». Целью работы является создание такого приложения.

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

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

Для создания события запускаем программу и нажимаем кнопку «Создание события». Открывается форма, в которой можно выбрать тип события, время, дату, а также цвет и звук окна уведомления. Нажимаем кнопку «Сохранить» и событие записывается в память, и когда приходит время, указанное нами, появляется уведомление о событии.

В процессе создания события ему сначала присваивается номер(id), он определяется прибавлением к номеру последнего сохраненного события 1(nextId = _events.Max(e => e.Id) + 1).

Затем в память заносятся все возможные типы событий, которые могут быть созданы (заполнение combobox)( comboBoxTypes.Items.Add(kv.Value)).

Открывается форма, в которой можно выбрать тип события, время, дату, а также цвет и звук окна уведомления. Также мы можем добавить информацию о событии в поле «Информация».

Это событие мы можем сначала просмотреть, а затем сохранить.

Для просмотра, искусственно создаются условия для вызова события (пропускается проверка по времени и дате) и воспроизводится звук (если он выбран) и появляется окно с уведомлением о событии.

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

В календаре, дата события выделится жирным шрифтом с помощью

List dates = _events.Select(e => e.Date).ToList();

monthCalendarMain.BoldedDates = dates.ToArray();

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

var evt = _events.FirstOrDefault(ev => ev.Time.Date == DateTime.Now.Date && ev.Time.Hour == DateTime.Now.Hour && ev.Time.Minute == DateTime.Now.Minute);

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


Каталог: sites -> store -> ЭИОС -> ВКР%202017%20год
ВКР%202017%20год -> В. Н. Тарасов Должность Уч степень, звание Подпись
ВКР%202017%20год -> В. Г. Карташевский Должность Уч степень, звание Подпись
ВКР%202017%20год -> Информатика и вычислительная техника
ВКР%202017%20год -> Н. И. Лиманова Должность Уч степень, звание Подпись
ВКР%202017%20год -> В. Г. Карташевский Должность Уч степень, звание Подпись
ВКР%202017%20год -> Информационных систем и технологий
ВКР%202017%20год -> Н. Ф. Бахарева Должность Уч степень, звание Подпись
ВКР%202017%20год -> Н. И. Лиманова Должность Уч степень, звание Подпись
ВКР%202017%20год -> Актуальность. В общедоступном значении слова маршрутизация означает передвижение информации от источника к пункту назначения через объединенную сеть. При этом, как правило, на пути встречается по крайней мере один узел
ВКР%202017%20год -> В. Г. Карташевский Должность Уч степень, звание Подпись


Поделитесь с Вашими друзьями:
  1   2


База данных защищена авторским правом ©vossta.ru 2019
обратиться к администрации

    Главная страница