29
Государственное бюджетное образовательное учреждение г. Москвы «Лицей №1598» Проектная работа «Создание прикладной программы обработки данных» Автор: Лёвшин Артём, учащийся 8 «А» класса. Руководитель: Дмитрий Романович Рыков, учитель информатики. 1

mgk.olimpiada.rumgk.olimpiada.ru/.../work/417/Proektnaya_papka1_2.docx  · Web viewMicrosoft Word (далее Word) – текстовый процессор, предназначенный

  • Upload
    vuthu

  • View
    253

  • Download
    0

Embed Size (px)

Citation preview

Page 1: mgk.olimpiada.rumgk.olimpiada.ru/.../work/417/Proektnaya_papka1_2.docx  · Web viewMicrosoft Word (далее Word) – текстовый процессор, предназначенный

Государственное бюджетное образовательное учреждение г. Москвы

«Лицей №1598»

Проектная работа

«Создание прикладной программы обработки

данных»

Автор: Лёвшин Артём,

учащийся 8 «А» класса.

Руководитель: Дмитрий Романович Рыков,

учитель информатики.

Москва, 20171

Page 2: mgk.olimpiada.rumgk.olimpiada.ru/.../work/417/Proektnaya_papka1_2.docx  · Web viewMicrosoft Word (далее Word) – текстовый процессор, предназначенный

СОДЕРЖАНИЕ

Содержание 2Введение 3I. ПОДГОТОВКА К СОЗДАНИЮ ПРОГРАММЫ 4 1.1 Изучение языка C# и его особенностей 4 1.2 Взаимодействие C# с MS Word и MS Excel 6 1.3 Архитектура приложений 8II. МОДЕЛИРОВАНИЕ, РАЗРАБОТКА И ОТЛАДКА ПРОГРАММЫ 9 2.1 Моделирование «каркаса» программы 9 2.2 Реализация функционала всех объектов программы 10ЗАКЛЮЧЕНИЕ 13СПИСОК ИСТОЧНИКОВ 14ПРИЛОЖЕНИЯ 15

2

Page 3: mgk.olimpiada.rumgk.olimpiada.ru/.../work/417/Proektnaya_papka1_2.docx  · Web viewMicrosoft Word (далее Word) – текстовый процессор, предназначенный

ВВЕДЕНИЕ

В наше время трудоёмкая, долгая и монотонная работа с электронными

данными выполняется компьютерами, которые имеют возможность

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

Но проблема в том, что не для каждого частного случая существует

Программное Обеспечение (далее ПО) для решения какой-либо проблемы.

Один из таких случаев – это обработка данных таблицы с успеваемостью

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

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

Цель: написать прикладную программу для эффективной обработки

данных таблиц с успеваемостью учеников.

Задачи:

1. Изучить язык C# и его преимущества;

2. Изучить особенности взаимодействия данного языка с MS Word и MS

Excel;

3. Смоделировать «каркас» программы;

4. Разработать функционал;

5. Отладить программу.

Продуктом моего проекта является программа, и следующие критерии

определяют её успешность:

1. Простой, понятный интерфейс;

2. Оптимизированный код;

3. Быстродействие программы.

3

Page 4: mgk.olimpiada.rumgk.olimpiada.ru/.../work/417/Proektnaya_papka1_2.docx  · Web viewMicrosoft Word (далее Word) – текстовый процессор, предназначенный

Глава I. ПОДГОТОВКА К СОЗДАНИЮ ПРОГРАММЫ

1.1 Изучение языка C# и его особенностей

Своё приложения я решил писать на языке C#, продвигаемом

компанией Microsoft, разрабатывавшимся группой инженеров под

руководством Андерса Хейлсберга в 1998-2001 годах. Его синтаксис C-

подобен, это значит, что изучив C#, вы легко перейдетё на такие же C-

подобные языки: C, C++, Java. Этот язык набирает популярность, потому что

приложения на нём пишутся и профилируются очень быстро и просто. C#

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

и подробное изучение архитектуры .NET (платформа, способная исполнять

код на поддерживающих её языках независимо от технических

характеристик оборудования) - очень долгий и трудоёмкий процесс, но C#

остаётся одним из лучших языков для лучшего понимания принципов

программирования за счёт его простоты и предназначения для разработки

программ, используя Объектно-Ориентированное Программирование (далее

ООП).

Для того, чтобы эффективно писать приложения на C-подобных

языках, нужно обладать мощным комплексом программных средств, которые

использует программист при разработке ПО. В качестве такой среды

разработки я выбрал Visual Studio (далее VS) – продукт, также

разрабатываемый Microsoft. Вместе с ним устанавливаются компиляторы и

библиотеки для C-подобных языков. Эта среда позволяет программисту

писать в комфорте за счет подсветки синтаксиса и удобного интерфейса.

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

обновления, облегчающие написание кода за счёт нововведений. Само

написание кода происходит быстрее за счёт множества функций

рефакторинга текста и технологии IntelliSence1. Также благодаря VS отладка

кода стала намного проще. Программист имеет возможность в любой момент 1 Технология автодополнения разработанная компанией Microsoft для ускорения процесса набора кода.

4

Page 5: mgk.olimpiada.rumgk.olimpiada.ru/.../work/417/Proektnaya_papka1_2.docx  · Web viewMicrosoft Word (далее Word) – текстовый процессор, предназначенный

времени приостановить программу, просмотреть значения, отследить место

возникновения ошибки. В окне обозревателя решений содержатся все

проекты и файлы конфигураций, поэтому навигация осуществляется

довольно просто. И ещё одно из самых главных достоинств VS –

возможность «конструировать» формы приложения визуально в специальном

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

Таким образом, я выбрал C# в качестве языка программирования и

среду разработки Visual Studio, потому что это наиболее подходящие

инструменты для удобного и результативного написания небольшого

настольного приложения в сжатые сроки.

1.2 Взаимодействие C# с MS Word и MS Excel5

Page 6: mgk.olimpiada.rumgk.olimpiada.ru/.../work/417/Proektnaya_papka1_2.docx  · Web viewMicrosoft Word (далее Word) – текстовый процессор, предназначенный

Microsoft Excel (далее Excel) – программа для работы с электронными

таблицами, позволяющая делать экономико-статические расчёты, создавать

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

таблицу, в которую можно вносить данные, то есть печатать слова и цифры.

Также, используя функции этой программы, можно производить с цифрами

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

другое. Эта программа очень популярна среди коммерческих предприятий и

является одной из самых используемых.

Microsoft Word (далее Word) – текстовый процессор, предназначенный

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

Возможности в области редактирования текста у этого приложения

настолько велики, что оно используется для оформления документов любой

сложности и даже написания небольших сайтов. Несмотря на то, что Word

предназначении для работы с текстом, в нём имеется возможность строить

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

чертить таблицы, вставлять формулы. Можно по-разному разметить

страницу, даже в клетку. Также в Word присутствует автокоррекция и

проверка орфографии, указывающая на ошибки в тексте.

Для переноса таблицы из Word в Excel мне необходимо узнать, какие

при этом возникают проблемы. Word – не табличный процессор, поэтому

возможностей в нём соответственно меньше, чем в Excel. Так, узнать,

сколько ячеек объединены в колонке в таблице Word программно я не имею

возможности. Вторая проблема заключается в том, что в Word при

построении таблицы используются специальные символы табуляции,

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

скрыть, а в Excel такая возможность отсутствует. Для того, чтобы решить

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

таблице и удалить все остальные из каждой ячейки.

6

Page 7: mgk.olimpiada.rumgk.olimpiada.ru/.../work/417/Proektnaya_papka1_2.docx  · Web viewMicrosoft Word (далее Word) – текстовый процессор, предназначенный

Исходя из вышесказанного, можно сказать, что в силу того, что Word, в

отличии от Excel, не предназначен для редактирования исключительно

электронных таблиц, и в нём может оказаться недостаточно информации для

корректного переноса таблицы в Excel, моя программа будет предназначена

для частного случая построения таблиц.

7

Page 8: mgk.olimpiada.rumgk.olimpiada.ru/.../work/417/Proektnaya_papka1_2.docx  · Web viewMicrosoft Word (далее Word) – текстовый процессор, предназначенный

1.3 Архитектура приложений

Не так давно все программы писались процедурно. Это означает, что

отдельные операторы кода, выполняющиеся в разные моменты времени,

формируют саму программу. В некоторых случаях следует отдать

предпочтение процедурному программированию, однако при разработке

крупного ПО этот принцип не принесёт высоких результатов. Для этого

придумали совсем другой принцип построения приложения. Суть этой новой

архитектуры заключается в том, что программа строится на совокупности

объектов, которые имеют поля (переменные), свойства (обеспечивают логику

доступа к полям), методы (фрагменты кода, которые исполняются при

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

нужным образом) и т.д. Для соблюдения этой методики следует для каждой

сущности, которая имеет свои параметры и логику их взаимодействия,

например, банковский счёт, который имеет сумму денег на данный момент и

процент прибыли, создавать отдельный класс. Затем есть возможность

создать экземпляр этого класса – объект, который будет представлять,

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

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

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

крупного ПО в том, что при хорошо выстроенной абстракции

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

редактировать код, и сокращается количество ошибок, т.к. всё лишнее

скрыто от не предназначенного для этого «лишнего» фрагмента кода.

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

перейти к моделированию «каркаса» моего приложения.

8

Page 9: mgk.olimpiada.rumgk.olimpiada.ru/.../work/417/Proektnaya_papka1_2.docx  · Web viewMicrosoft Word (далее Word) – текстовый процессор, предназначенный

Глава II. МОДЕЛИРОВАНИЕ, РАЗРАБОТКА И ОТЛАДКА ПРОГРАММЫ

2.1 Моделирование «каркаса» программы

Перед написанием кода я строю абстракцию у себя в голове, которая

отображает взаимодействие объектов в моей программе. Каждое окно в

программе является визуализацией какой-либо формы, являющейся классом

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

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

пользователю функционала, вторая отвечает за вычисление данных и

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

либо файлу я добавлю кнопку, открывающую файловый браузер, и текстовое

поле, в котором выбранный путь отображается. Далее, в зависимости от

выбранного пользователем файла, он либо переносит таблицы, либо

запускает построение диаграммы по выбранным файлам Excel. Так как в

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

будет разделена на две половины, предназначенные для каждого значения,

потому что если сделать два типа рядов на одной диаграмме, то смотреть по

ней амплитуду этих значений будет крайне неудобно. После запуска

построения выполняются вычисления, и затем открывается окно с готовой

диаграммой, которую можно вывести в файл Excel. Также очень важный

момент – быстродействие программы. Это значит, что пока программа

справляется с переносом таблиц, пользователь должен иметь возможность

строить диаграммы. Этот приём называется многопоточностью, когда для

различных фрагментов кода в процессе выделяется отдельный поток,

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

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

«зависать» и не реагировать на действия пользователя, т.к. будет занята

исключительной этой работой. В результате создания абстракции получились

следующие формы (см. Приложение А, Б).

9

Page 10: mgk.olimpiada.rumgk.olimpiada.ru/.../work/417/Proektnaya_papka1_2.docx  · Web viewMicrosoft Word (далее Word) – текстовый процессор, предназначенный

2.2 Реализация функционала форм

В языках программирования щелчок по мыши – это событие, для

которого можно написать обработчик в виде отдельной функции (в C# их

принято называть методами), которая подписана на это событие и в качестве

аргументов имеет ссылку на отправителя (объект из которого вызвано

событие) и экземпляр класса события, содержащий в себе информацию о

нём. Обработчики, которые не требуют большого количества строк код, я

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

код, а не отдельный метод на какое-либо событие. По нажатию кнопки

открытия файлового проводника (Приложение А, метка 1), я создаю

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

мог выбрать только файлы Word и Excel, затем, когда пользователь выбрал

файл, его путь я вставляю в текстовое поле (Приложение А, метка 2) (см.

Приложение В). Теперь всё готово к переносу таблицы из Word в Excel. Для

этого обработчик нажатия на кнопку копирования таблицы (Приложение А,

метка 3) запускает метод копирования в отдельном потоке. После этого

метод переноса начинает работать, не заставляя главную форму дожидаться

своего выполнения. Я создаю два экземпляра классов Word.Application и

Excel.Application – оболочек для работы с этими процессорами посредством

программирования, как только вызван их конструктор, эти процессоры

запускаются. Дальше все операторы идут в блоке try, который позволяет

обработать возникнувшую ошибку в блоке finally, который выполнится в

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

поток не может вмешиваться в этот процесс, иначе возникнет ошибка,

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

Затем создаю отдельный лист в книге, подстраиваю ячейки и начинаю

переносить в файл строки одна за одной (разумеется, удаляя из них

ненужные символы). После этого процесса я сохраняю книгу в той же папке,

с тем же именем, что и у файла Word (см. Приложение Г). В ходе написания

10

Page 11: mgk.olimpiada.rumgk.olimpiada.ru/.../work/417/Proektnaya_papka1_2.docx  · Web viewMicrosoft Word (далее Word) – текстовый процессор, предназначенный

программы, я заметил, что стандартный метод закрытия Excel закрывает его

визуально, а процесс остаётся рабочим. Чтобы это исправить я в начале

копирования сохранил ссылку на оболочку Excel (процессор Word

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

блока finally передать её в метод, который узнаёт номер процесса по ссылке и

завершает его. Если же программу вовсе закрывают во время выполнения, то

блок finally не выполнится, но при этом возникнет событие закрытия формы.

Там я закрываю всё процессы, ссылки от которых остались в списке, а

значит, не закрылись внутри блока finally (см. Приложение Д).

Теперь, когда перенос таблиц готов, чтобы построить диаграмму,

нужна одна или несколько таких таблиц, каждая из которых содержит

данные за разные периоды времени. Чтобы добавить таблицу к списку, я

создал кнопку (см. Приложение А, метка 4), которая заносит всех учеников

из таблицы в текстовое поле с выпадающим списком, чтобы можно было

выбрать одного ученика, либо всех сразу (см. Приложение А, метка 7). После

того, как пользователь выберет ученика, он должен щёлкнуть по кнопке

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

Приложение А, метка 6). После щелчка, создаётся новая форма,

существование которой начинается с конструктора: сначала задаются её

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

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

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

чтобы не зависала главная форма (см. Приложение Е). В этом блоке я сначала

создаю оболочку Excel.Application, затем цикл выполняется количество раз

равное числу загруженных таблиц. За каждую итерацию цикл либо строит

ряд диаграммы на основании данных одного ученика, либо на основании

всех, находя среднее значение. Как только диаграмма готова, осуществляется

возврат в прежний главный поток, из которого вызывается метод,

отображающий форму.

11

Page 12: mgk.olimpiada.rumgk.olimpiada.ru/.../work/417/Proektnaya_papka1_2.docx  · Web viewMicrosoft Word (далее Word) – текстовый процессор, предназначенный

На последнем этапе своей работы я напишу перенос диаграммы из

приложения в файл Excel. Для этого нужно щёлкнуть по кнопке для переноса

(см. Приложение Б, метка 1). После этого таблица Excel заполняется данным

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

диаграммы, чтобы было ясно, какое значение относится к каким рядам. Когда

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

сохранить этот файл (см. Приложение З).

12

Page 13: mgk.olimpiada.rumgk.olimpiada.ru/.../work/417/Proektnaya_papka1_2.docx  · Web viewMicrosoft Word (далее Word) – текстовый процессор, предназначенный

ЗАКЛЮЧЕНИЕ

По завершении моего проекта написанная мной программа способна

переносить частный случай таблиц из Word в Excel, строить диаграмму на

основе табличных данных и переносить эту диаграмму в Excel. Интерфейс

настолько понятен и удобен, что в нём просто разобраться даже человеку,

который впервые встретился с этой программой. Код программы был

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

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

код не содержит ничего лишнего. Также для каждой продолжительной

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

мог использовать её другие функции. Я считаю, что эта программа заметно

ускорит работу с таким форматом данных.

Несмотря на то, что моя программа действительно в разы облегчает

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

потому что меня не влечёт эта область разработок.

13

Page 14: mgk.olimpiada.rumgk.olimpiada.ru/.../work/417/Proektnaya_papka1_2.docx  · Web viewMicrosoft Word (далее Word) – текстовый процессор, предназначенный

СПИСОК ИСТОЧНИКОВ

Эндрю Троелсен. Язык программирования C# 5.0 и платформа .NET 4.5 - Вильямс, 2015.

Джеффри Рихтер. Программирование на платформе Microsoft .NET Framework 4.0 на языке C# - Питер, 2012.

https://professorweb.ru

http://metanit.com

http://wladm.narod.ru/C_Sharp/comword.html

http://wladm.narod.ru/C_Sharp/comexcel.html

14

Page 15: mgk.olimpiada.rumgk.olimpiada.ru/.../work/417/Proektnaya_papka1_2.docx  · Web viewMicrosoft Word (далее Word) – текстовый процессор, предназначенный

ПРИЛОЖЕНИЕ А. ГЛАВНАЯ ФОРМА

15

Page 16: mgk.olimpiada.rumgk.olimpiada.ru/.../work/417/Proektnaya_papka1_2.docx  · Web viewMicrosoft Word (далее Word) – текстовый процессор, предназначенный

ПРИЛОЖЕНИЕ Б. ФОРМА ДЛЯ ДИАГРАММЫ

16

Page 17: mgk.olimpiada.rumgk.olimpiada.ru/.../work/417/Proektnaya_papka1_2.docx  · Web viewMicrosoft Word (далее Word) – текстовый процессор, предназначенный

ПРИЛОЖЕНИЕ В. ФАЙЛОВЫЙ ПРОВОДНИК

17

Page 18: mgk.olimpiada.rumgk.olimpiada.ru/.../work/417/Proektnaya_papka1_2.docx  · Web viewMicrosoft Word (далее Word) – текстовый процессор, предназначенный

ПРИЛОЖЕНИЕ Г. ПЕРЕНОС ТАБЛИЦ

18

Page 19: mgk.olimpiada.rumgk.olimpiada.ru/.../work/417/Proektnaya_papka1_2.docx  · Web viewMicrosoft Word (далее Word) – текстовый процессор, предназначенный

ПРИЛОЖЕНИЕ Д. ЭКСТРЕННОЕ ЗАВЕРШЕНИЕ КОПИРОВАНИЯ

Метод, завершающий процесс.

Обработчик закрытия формы.

Блок finally.

19

Page 20: mgk.olimpiada.rumgk.olimpiada.ru/.../work/417/Proektnaya_papka1_2.docx  · Web viewMicrosoft Word (далее Word) – текстовый процессор, предназначенный

ПРИЛОЖЕНИЕ Е. ПОСТРОЕНИЕ ДИАГРАММЫ

Конструктор формы для диаграммы.

Метод, создающий диаграмму.

20

Page 21: mgk.olimpiada.rumgk.olimpiada.ru/.../work/417/Proektnaya_papka1_2.docx  · Web viewMicrosoft Word (далее Word) – текстовый процессор, предназначенный

ПРИЛОЖЕНИЕ Ж. ПЕРЕНОС ДИАГРАММЫ В EXCEL

21

Page 22: mgk.olimpiada.rumgk.olimpiada.ru/.../work/417/Proektnaya_papka1_2.docx  · Web viewMicrosoft Word (далее Word) – текстовый процессор, предназначенный

ПРИЛОЖЕНИЕ З. ДИАГРАММА В EXCEL

22