Разработка приложения для выполнения операций с текстом

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

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 16.06.2013
Размер файла 3,2 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Министерство образования и науки Российской Федерации

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

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

Пятигорский филиал

Кафедра информатики и вычислительной техники

Курсовой проект

Разработка приложения для выполнения операций с текстом

Выполнил студент

Басковский Д.С.

Пятигорск - 2011

Содержание

  • Введение
  • 1. Аналитическая часть
  • 1.1. Сравнительная характеристика языков программирования
  • 1.2. Обоснование выбора языка программирования
  • 1.3 Описание Assembler
  • 1.4 Разработка алгоритма решения задачи и обработка данных
  • 1.5 Схема алгоритма решения задачи
  • 1.6 Техническое задание на проектирование
  • 1.7 Инструменты разработки
  • 1.8 Системные требования
  • 1.9 Интерфейс программы
  • 2. Проектная часть
  • 2.1 Программные методы решения задачи
  • 2.2 Модульная структура программы
  • 2.3 Обработка данных в программе
  • 3. Технологическая часть
  • 3.1 Цель проектирования
  • 3.2 Задачи проектирования
  • 3.3 Аппаратно-программная платформа
  • 3.4 Архитектура информационной системы
  • 3.5 Инструменты проектирования и разработки
  • 4. ПРОЕКТНАЯ ЧАСТЬ
  • 4.1 Моделирование бизнес-процессов предметной области
  • 4.2 Информационное моделирование
  • 4.3 Программные модули
  • 5. Технология работы с программным продуктом
  • 5.1 Работа пользователя с системой
  • 5.2 Скриншоты программного продукта
  • 5.3 Перспективы развития проекта
  • 5.4 Экономическая эффективность внедрения программного продукта
  • 5.5 Описание работы программы
  • 5.6 Результаты тестирования программы1
  • 5.7 Рекомендации по оптимизации кода программы
  • Заключение
  • Список литературы
  • Приложение

Введение

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

Программа не потребует внедрения новых дополнительных возможностей. Поэтому разработка программы требует особых знаний в Объектно Ориентированном Программировании (ООП). Так как ассемблер от Microsoft достаточно объектно ориентированный будем во время разработки использовать его (версия 8.0). В данный момент это последняя версия ассемблера, вышла она сравнительно недавно - в 2008 году. И поддерживает разработку в операционной системе Windows 7.

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

Рассмотрим подробнее цель проектирования.

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

Условно выделяют два типа редакторов: потоковые текстовые редакторы и интерактивные.

Потоковые текстовые редакторы

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

Интерактивные текстовые редакторы

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

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

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

1. Аналитическая часть

1.1 Сравнительная характеристика языков программирования

В конце прошлого века сформировались два принципиально различных подхода к программированию. Это, ООП и Структурное программирование. Структурное программирование предполагает точно обозначенные управляющие структуры, программные блоки, отсутствие инструкций безусловного перехода (GOTO), автономные подпрограммы, поддержка рекурсии и локальных переменных. Сегодня существуют десятки действующих языков. Они подразделяются на высокоуровневые и низкоуровневые. Языки высокого уровня имитируют естественные языки, используя некоторые слова разговорного языка и общепринятые математические символы. Язык ассемблера принято относить к низкоуровневому. Как и у любого языка, а не только компьютерного, у ассемблера существуют как сильные, так и слабые стороны.

Достоинства языка Ассемблера

· Язык ассемблера позволяет писать самый быстрый и компактный код, какой вообще возможен для данного процессора.

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

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

· При программировании на языке ассемблера возможен непосредственный доступ к аппаратуре, в том числе портам ввода-вывода, регистрам процессора и др.

· Язык ассемблера применяется для создания драйверов оборудования и ядра операционной системы.

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

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

Недостатки

· Сложную программу написать на ассемблере намного сложнее (вплоть до невозможности, по причине сложности), чем с использованием языка высокого уровня.

· В силу машинной ориентации («низкого» уровня) языка ассемблера человеку сложнее читать и понимать программу на нём по сравнению с языками программирования высокого уровня; программа состоит из слишком «мелких» элементов -- машинных команд, соответственно, усложняются программирование и отладка, растёт трудоёмкость, велика вероятность внесения ошибок.

· Требуется высокая квалификация программиста. Код на ассемблере выполняется быстрее, но написанный неопытным программистом, обычно оказывается хуже сгенерированного компилятором

· Отсутствует переносимость программ на компьютеры с другой архитектурой и системой команд.

1.2 Обоснование выбора языка программирования

За основу разработки взят программный пакет MASM 8.0. Это ассемблер под Windows поддерживающий макросы.

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

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

1.3 Описание Assembler

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

Ассемблер и Форт изобрела фирма IBM - в 1950 и в 1958 году соответственно. Что касается макросов, то до MASM существовал Forth assembler. Но ясно, что в 1958 все полезное из ассемблера было включено в Форт.

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

1.4 Разработка алгоритма решения задачи и обработка данных

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

Текст кодируется в системе с использованием ASCII (англ. American Standard Code for Information Interchange) -- американская стандартная кодировочная таблица для печатных символов и некоторых специальных кодов. ASCII представляет собой кодировку для представления десятичных цифр, латинского и национального алфавитов, знаков препинания и управляющих символов. Изначально разработанная как 7-битная, с широким распространением 8-битного байта ASCII стала восприниматься как половина 8-битной.

Использование такого стандарта очевидно - оно соответствует ГОСТу, каждый знак занимает всего 1байт. В отличие от использования Unicode. А также содержит в себе все буквы русского алфавита.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Рис. 2. Этап 1. Диаграмма выполнения

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Рис. 3. Этап 2. Диаграмма выполнения

Процедура принимает в качестве параметров адреса строк и возвращает адрес строки в виде упорядоченного набора байт

Пересылка данных происходит из 32 разрядного регистра.

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

Если при вводе текста вы упираетесь в конец строки, после автоматически делается переход на следующую строку;

Word 1

Word 2

Word 3

Рис. 4 Сохранение данных в стеке

1.5 Схема алгоритма решения задачи

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Схема 1. Блок схема алгоритма работы программы

1.6 Техническое задание на проектирование

В качестве объекта исследования возьмем фрагмент кода написанный на языке C++. Ниже показана инициализация библиотеки «vcl.h» и WinApi.

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

#include <vcl.h>

#pragma hdrstop

USEFORM("Unit1.cpp", Form1);

WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) {

try

{

Application->Initialize();

Application->CreateForm(__classid(TForm1), &Form1);

Application->Run();

}

catch (Exception &exception)

{

Application->ShowException(&exception);

}

catch (...)

{

try

{ throw Exception(""); }

catch (Exception &exception)

{ Application->ShowException(&exception); }

}

return 0;

}

1.7 Инструменты разработки

Microsoft Macro Assembler (MASM) -- ассемблер для процессоров семейства x86. Создан компанией Microsoft для написания программ в операционной системе MS-DOS и Windows. Это единственный процессор обеспечивающий компиляцию как 16 битных, так и 32 битных программ. Отличительной особенностью является очень быстрый компилятор который создан при поддержке инженеров корпорации Intel. Тем самым, MASM 8.0 поддерживает последние архитектуры процессоров семейства Pentium. Что вместе с полноценной поддержкой MMX и SSE2 делает макроассемблер одним из лучших инструментов на рынке готовых IDE.

Ключевые факторы

· MASM является наиболее популярной средой программирования на ассемблере

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

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

· Стандарты и соглашения, принятые в MASM, полностью совместимы с теми, что приняты в наиболее популярных средах разработки. Это позволяет включать скомпилированные макроассемблером объектные файлы в программы, разработанные на языках высокого уровня.

1.8 Системные требования

Таблица 1

Системные требования

Минимальные системные требования

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

Процессор

Intel Pentium 100 MHz

Intel Pentium 200 MHz

Оперативная память

16 Mb

32 Mb

Свободное место на диске

144 Kb

144 Kb

Устройства ввода

Клавиатур

Клавиатура, мышь

Устройства вывода

Монитор VGA

Монитор SVGA

Видеопамять

2 Mb

4 Mb

Звуковая карта

Не требуется

Не требуется

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

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

1.9 Интерфейс программы

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

2. Проектная часть

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

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

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

Машина -- текстовый процессор Brother WP-1400D, 1994 год

Программы для работы с текстами можно разделить на простые текстовые процессоры, мощные текстовые процессоры и издательские системы.

Разрабатываемый мною текстовый редактор является приложением, которое поддерживает архитектуру документ-представление. Программа обеспечивает ввод и редактирование текста в окне представления, и способно отображать весь документ целиком с помощью полосы прокрутки. Меню программы будет содержать команды печати, отмены последних действий, относящихся к редактированию, команды вырезания, копирования и вставки текста, а также поиска. Для реализации операций ввода и редактирования текста внутри окна представления необходимо класс представления сделать производным от класса “EditControl”. При этом меню приложения будет содержать набор команд редактирования, и программисту не потребуется писать код для данных функций.

Рис. 1 Скриншот программы WordPad

Текстовые редактор - это программа обработки текста, которая используется для создания новых документов (писем, отчетов, бюллетеней) или изменения уже существующих. Современные текстовые редакторы (в том числе и редактор Word) иногда называются текстовыми процессорами, поскольку содержат очень большое количество функций обработки текста. Ранние текстовые редакторы для DOS подразделялись на строчные и экранные, такие например, как EDLIN, MULTIEDIT и EDIT.

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

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

2.1 Программные методы решения задачи

Специалисты Microsoft считают текстовые документы единственным достойным объектом своей работы. Вся операционная система MSDOS и Windows разрабатывалась именно для работы с данным типом документов. Поэтому, рассматривая мою задачу, нельзя обойти молчанием эту область его применения.

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

2.2 Модульная структура программы

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

filedlgs.asm - диалоговые окна открытия, сохранения, загрузки

fileio.asm - обработка нажатия клавиш, мыши

misc.asm - макрос сохранения

richedit.asm - самый главный макрос. Инициализирует форму

richedit.inc - содержит в себе необходимые библиотеки Windows API, которые инициализируют Windows формы. (подробнее описаны в следующем пункте)

search.asm - осуществляет поиск по документу

statusbr.asm - статус бар (число строчек, количество знаков и пр.)

tbmacros.asm - макрос создания toolbar

toolbar.asm - тулбар (нижнее меню)

А также файл ресурсов rsrc.rc

2.3 Обработка данных в программе

Вся структура проекта состоит из нескольких макросов. Объект класса CEdit обеспечивает функционирование элемента управления текстового поля Windows. Текстовое поле Windows представляет собой прямоугольное дочернее окно, в которое пользователь может вводить текст. Данный элемент управления может создаваться в шаблоне диалога или непосредственно в программе пользователя. В обоих случаях сначала вызывается конструктор класса CEdit, создающий объект данного класса, а затем вызывается функция Create, создающая текстовое поле Windows и связывающая его с объектом класса CEdit. Эти функции позволяют записать или считать весь текст, содержащийся в данном элементе управления даже в том случае, когда он является многострочным.

Для создания Windows приложения необходимо работать с его API.

ON_EN_CHANGE - пользователь произвел действие, которое может привести к изменению текста, содержащегося в текстовом поле. В отличие от сообщения EN_UPDATE данное сообщение посылается после того, как Windows произведет обновление экрана;

ON_EN_ERRSPACE - для данного текстового поля не может быть выделен необходимый для него объем памяти;

ON_EN_HSCROLL - пользователь воспользовался горизонтальной полосой прокрутки данного элемента управления. Сообщение посылается родительскому окну до обновления экрана;

ON_EN_KILLFOCUS - данное текстовое поле потеряло фокус ввода;

ON_EN_MAXTEXT - текущая вставка привела к превышению определенного в данном объекте максимального числа символов, что привело к ее урезанию. Данное сообщение посылается также в том случае, если текстовое поле не имеет стиля ES_AUTOHSCROLL, а количество символов в текущей строке превышает ширину текстового поля. Другим случаем, когда посылается данное сообщение, является случай, когда текстовое поле не имеет стиля ES_AUTOVSCROLL, а количество строк в нем превышает высоту текстового поля, или же текстовое поле не имеет стиля ES_AUTOHSCROLL, а количество символов в текущей строке превышает ширину текстового поля;

ON_EN_SETFOCUS - данное текстовое поле получило фокус ввода;

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

ON_EN_VSCROLL - пользователь воспользовался вертикальной полосой прокрутки данного элемента.

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

3. Технологическая часть

3.1 Цель проектирования

Разработка приложения для выполнения операций с текстом. Цель проектирования - разработка текстового редактора, изучение методов редактирования текста, а также более общее понимание работы языка Assembler.

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

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

3.2 Задачи проектирования

Разработать программу имеющий следующий функционал

· Создание нового текстового файла

· Открытие существующего файла *.TXT

· Сохранение документа

· Отмена последнего действия

· Вырезание текста в буфер обмена

· Копировать текста в буфер обмена

· Вставка текста из буфера обмена

· Нахождение текста по выбранному слову

3.3 Аппаратно-программная платформа

Компьютер клиента:

· IBM совместимый компьютер.

· Процессор VISC. Совместимый с технологиями MMX и SSE2.

· PC/A стандартная компьютерная 101 клавишная клавиатура. Разъема PS2 или USB.

· Windows 95 или выше.

Компьютер разработчика:

· IBM совместимый компьютер.

· Процессор CISC. Совместимый с технологиями MMX и SSE2.

· PC/A стандартная компьютерная 101 клавишная клавиатура. Разъема PS2 или USB.

· Windows 95 или выше.

· MASM 8.0.

· Notepad++.

3.4 Архитектура информационной системы

Конфигурация сети любая. Исключается любая работа с сетью (ради наивысшей степени безопасности).

3.5 Инструменты проектирования и разработки

1. ERwin Process Modeler r7.3

CA ERwin Process Modeler (ранее называвшийся AllFusion Process Modeler) -- программный продукт в области реализации средств CASE-технологий.

Позволяет проводить описание, анализ и моделирование модели данных -- построитель мета-моделей данных. Занимает одно из лидирующих мест в своём сегменте рынка. В настоящее время выпускается компанией Computer Associates. Распространяется на коммерческой основе.

Включает три стандартные методологии: IDEF0 (функциональное моделирование), DFD (моделирование потоков данных) и IDEF3 (моделирование потоков работ).

2. MASM32 8.0

Microsoft Macro Assembler (MASM) -- ассемблер для процессоров семейства x86

3. Notepad++ 5.9.3

Notepad++ -- свободный текстовый редактор для Windows с подсветкой синтаксиса большого количества языков программирования и разметки. Он базируется на компоненте Scintilla, написан на C++ с использованием STL, а также Win32 API и распространяется под лицензией GPL. Базовая функциональность программы может быть расширена как за счёт плагинов, так и сторонних модулей, таких как компиляторы и препроцессоры.

4. Microsoft Excel 2010

Microsoft Excel -- программа для работы с электронными таблицами, созданная корпорацией Microsoft для Microsoft Windows, Windows NT и Mac OS. Она предоставляет возможности экономико-статистических расчетов, графические инструменты и, за исключением Excel 2008 под Mac OS X, язык макропрограммирования VBA (Visual Basic для приложений). Microsoft Excel входит в состав Microsoft Office и на сегодняшний день Excel является одним из наиболее популярных приложений в мире.

5. Microsoft Word 2010

Microsoft Word -- текстовый процессор, предназначенный для создания, просмотра и редактирования текстовых документов, с локальным применением простейших форм таблично-матричных алгоритмов. Выпускается корпорацией Microsoft в составе пакета Microsoft Office. Первая версия была написана Ричардом Броди (Richard Brodie) для IBM PC, использующих DOS, в 1983 году. Позднее выпускались версии для Apple Macintosh (1984), SCO UNIX и Microsoft Windows (1989).

6. WinRAR 4.0

WinRAR -- это архиватор файлов в формат RAR и ZIP для 32-битных и 64-разрядных операционных систем Windows и Pocket PC с высокой степенью сжатия. Является одним из лучших архиваторов по соотношению степени сжатия к скорости работы. Распространяется по shareware-лицензии.

4. ПРОЕКТНАЯ ЧАСТЬ

4.1 Моделирование бизнес-процессов предметной области

Рис. 8. Контекстная диаграмма функциональной модели

Рис. 9. Контекстная диаграмма первого уровня функциональной модели

программа операция текст assembler

Рис. 10. Контекстная диаграмма второго уровня функциональной модели

Рис. 11. Контекстная диаграмма третьего уровня функциональной модели

Рис. 12. Контекстная диаграмма четвертого уровня функциональной модели

Рис. 13 Контекстная диаграмма Конфигураций

Рис. 14. Контекстная диаграмма Реализации плана

Рис. 15. Контекстная диаграмма Сборки проекта

Рис. 16. Контекстная диаграмма Компиляции

Рис. 17. Контекстная диаграмма Устранения неполадок в работе

Рис. 18. Контекстная диаграмма Продажи

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

Рис. 20. Контекстная диаграмма Приема заказов

Рис. 21. Контекстная диаграмма Поддержки продукта

Рис. 22. Контекстная диаграмма Оформления кредита

Рис. 23. Контекстная диаграмма Продажи

4.2 Информационное моделирование

Моделирование текстового редактора можно условно разделить на несколько частей: Это маркентинг, Конфигурация, Реализация плана, Сборка проекта, Продажа и Поддержка продукта.

4.3 Программные модули

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

Рис. 24. Диаграмма бизнес-процессов в информационной системе

5. Технология работы с программным продуктом

5.1 Работа пользователя с системой

· Пользователь устанавливает программу.

· Пользователь включает программу со своего компьютера.

· Пользователь создает новый документ или открывает уже существующий

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

· Пользователь в реальном времени может увидеть изменившиеся действия на экране

· При неправильном редактировании или опечатки пользователь может отменить последнее действие

· Так же существует возможность копировать текст из любого другого открытого документа. Например, из веб браузера или Microsoft Word

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

5.2 Скриншоты программного продукта

Рис. 24. Открытие файла .TXT

Рис. 25. Открытие дочернего (Второго) окна

Рис. 26. Предупреждающее окно о сохранении файла

Рис. 27. Окно «О программе»

5.3 Перспективы развития проекта

Дополнения к функциям программного продукта.

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

Другой возможностью - открытие файлов формата *.RTF

Развитие программного продукта

Развитие программного продукта не планируется из-за наличия подобных решений на рынке, таких как WordPad, OpenOffice и других.

5.4 Экономическая эффективность внедрения программного продукта

Расчет затрат на реализацию технологии до автоматизации.

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

Расчет затрат на реализацию технологии после автоматизации.

После автоматизации технологии, затраты в первое время будут достаточно большими. Т.к. персонал необходимо обучить созданными программными средствами. А также работе с операционной системой Microsoft Windows. Включаются затраты на лицензирование программных средств. Покупка соответствующего оборудования - Компьютер, Принтер, Монитор. При этом затраты после всех проведенных автоматизаций будут уменьшаться, а также использование современных средств увеличит надежность работы, что является одним из самых главных затрат.

Расчет затрат на разработку ИС:

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

Эффект: 20000 рублей чистой прибыли после 10 месяцев работы.

Эффективность: 70% уже после 8 месяцев работы.

Вывод: Время окупаемости системы составляет 8 месяцев.

Рис. 28. Процентный график затрат на автоматизацию

Рис. 29. Денежный график эффективности внедрения автоматизации

5.5 Описание работы программы

После установки программы появляется окно «Новый документ». Так выглядит внешний вид программы.

Меню File имеет следующие пункты:

1. New - Новый файл

2. New instance - Открыть новую вкладку

3. Open - Открыть файл

4. Save - Сохранить файл

5. Save as - Сохранить документ как

6. Exit - Выйти из программы

Меню Правка имеет следующие пункты:

1. Undo - Отменить последнее действие

2. Cut - Вырезать текст в буфер обмена

3. Copy - Скопировать текст в буфер обмена

4. Paste - Вставить текст из буфера обмена

5. Del - Удаляет букву/цифру следующую за курсором

6. Find Text - Найти текст (Открывается новое окно в котором надо ввести текст)

7. Find Next - Найти следующее слово

8. Select All - Выделить весь текст

Меню Help имеет следующие пункты:

1. About - Показывает информацию об операционной системе и оборудовании.

5.6 Результаты тестирования программы

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

Как видно программа занимает в памяти чуть более 1 Мб. И совершенно не загружает процессор. Для примера виден открытый Office Word который занимает 70 Мб ОЗУ.

(Тестирование проводилось на процессоре AMD Athlon II X2 2.8 Ghz, 3Gb RAM).

Рис. 30. Программа RichEdit в диспетчере задач

Рис. 31. Лицензионное соглашение программы

Рис. 32. Установка «Текстового редактора»

Рис. 33. Создание ярлыка в меню «ПУСК»

5.7 Рекомендации по оптимизации кода программы

Оптимизация кода программы не требуется.

ЗАКЛЮЧЕНИЕ

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

Показаны алгоритмы построения desktop приложения на платформе Microsoft Windows. Программа работает на всем семействе Windows, начиная с версии Windows 95.

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

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

Таким образом, в ходе написания курсового проекта показано применение языка Ассемблера для разработки достаточно трудоемких и сложных операций по работе с текстовыми данными в формате *.TXT.

СПИСОК ЛИТЕРАТУРЫ

1. Программирование на языке Ассемблера Год: 2004 Автор: Каспер Э. Издательство: М.: Горячая линия - Телеком

2. Практическое программирование микроконтроллеров Atmel AVR на языке ассемблера 2-е изд. Год: 2011 Автор: Ревич Ю.В. Издательство: БХВ-Петербург

3. Разработка и оптимизация Windows-приложения Год: 2003. Автор: Магда Ю.С. Издательство: БХВ-Петербург

Приложение

; include files

; ~~~~~~~~~~~~~

include \masm32\INCLUDE\windows.inc

include \masm32\INCLUDE\masm32.inc

include \masm32\INCLUDE\gdi32.inc

include \masm32\INCLUDE\user32.inc

include \masm32\INCLUDE\kernel32.inc

include \masm32\INCLUDE\Comctl32.inc

include \masm32\INCLUDE\comdlg32.inc

include \masm32\INCLUDE\shell32.inc

include \masm32\include\shlwapi.inc

include \masm32\include\oleaut32.inc

; libraries

; ~~~~~~~~~

includelib \masm32\LIB\masm32.lib

includelib \masm32\LIB\gdi32.lib

includelib \masm32\LIB\user32.lib

includelib \masm32\LIB\kernel32.lib

includelib \masm32\LIB\Comctl32.lib

includelib \masm32\LIB\comdlg32.lib

includelib \masm32\LIB\shell32.lib

includelib \masm32\lib\shlwapi.lib

includelib \masm32\LIB\oleaut32.lib

;=================

; Local prototypes

;=================

WinMain PROTO :DWORD,:DWORD,:DWORD,:DWORD

WndProc PROTO :DWORD,:DWORD,:DWORD,:DWORD

TopXY PROTO :DWORD,:DWORD

FillBuffer PROTO :DWORD,:DWORD,:BYTE

Paint_Proc PROTO :DWORD,:DWORD

EditControl

PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD

hEditProc PROTO :DWORD,:DWORD,:DWORD,:DWORD

Select_All PROTO :DWORD

TextFind PROTO :DWORD,:DWORD

SearchProc PROTO :DWORD,:DWORD,:DWORD,:DWORD

CallSearchDlg PROTO

StreamFileOut PROTO :DWORD,:DWORD

StreamFileIn PROTO :DWORD,:DWORD

ofCallBack PROTO :DWORD,:DWORD,:DWORD,:DWORD

sfCallBack PROTO :DWORD,:DWORD,:DWORD,:DWORD

Confirmation PROTO :DWORD

MergeFile PROTO :DWORD

;=============

; Local macros

;=============

szText MACRO Name, Text:VARARG

LOCAL lbl

jmp lbl

Name db Text,0

lbl:

ENDM

m2m MACRO M1, M2

push M2

pop M1

ENDM

return MACRO arg

mov eax, arg

ret

ENDM

stralloc MACRO ln

invoke SysAllocStringByteLen,0,ln

ENDM

strfree MACRO strhandle

invoke SysFreeString,strhandle

ENDM

.data

szDisplayName db "Текстовый редактор",0

Untitled db "НОВЫЙ ДОКУМЕНТ",0

; ------------------------------------

; string data for status bar messages

; used in WM_NOTIFY message.

; ------------------------------------

tbn_new db "Новый File",0

tbn_open db "Открыть File",0

tbn_save db "Сохранить File",0

tbn_cut db "Вырезать",0

tbn_copy db "Копировать",0

tbn_paste db "Вставить",0

tbn_undo db "Назад",0

tbn_find db "Найти Текст",0

tbn_instance db "Новая Вкладка",0

tbn_quit db "Закрыть Редактор",0

tbn_else db 0

.data?

CommandLine dd ?

hWnd dd ?

hInstance dd ?

hIcon dd ?

hRichEd dd ?

lpfnhEditProc dd ?

hToolTips dd ?

hCheck1 dd ?

hCheck2 dd ?

TextLen dd ?

CaseFlag dd ?

WholeWord dd ?

CtrlFlag dd ?

hMnu dd ?

SearchText db 128 dup(?)

include toolbar.asm

include statusbr.asm

include filedlgs.asm

include fileio.asm

include search.asm

include misc.asm

#################

ofCallBack proc

dwCookie:DWORD,pbBuff:DWORD,cb:DWORD,pcb:DWORD

invoke ReadFile,dwCookie,pbBuff,cb,pcb,NULL

mov eax, 0

ret

ofCallBack endp

sfCallBack proc

dwCookie:DWORD,pbBuff:DWORD,cb:DWORD,pcb:DWORD

invoke WriteFile,dwCookie,pbBuff,cb,pcb,NULL

mov eax, 0

ret

sfCallBack endp

StreamFileIn proc hEdit:DWORD,lpszFileName:DWORD

LOCAL hFile :DWORD

LOCAL fSiz :DWORD

LOCAL ofs :OFSTRUCT

LOCAL est :EDITSTREAM

LOCAL buffer[32]:BYTE

LOCAL aval[8]:BYTE

invoke OpenFile,lpszFileName,ADDR ofs,OF_READ

mov hFile, eax

mov est.dwCookie, eax

mov est.dwError, 0

mov eax, offset ofCallBack

mov est.pfnCallback, eax

invoke SendMessage,hEdit,EM_STREAMIN,SF_TEXT,ADDR est

invoke GetFileSize,hFile,NULL

mov fSiz, eax

invoke CloseHandle,hFile

szText OpenMsg,"Документ содержит "

szText OpenByt," байтов"

mov buffer[0], 0

invoke szCatStr,ADDR buffer,ADDR OpenMsg

invoke dwtoa,fSiz,ADDR aval

invoke szCatStr,ADDR buffer,ADDR aval

invoke szCatStr,ADDR buffer,ADDR OpenByt

invoke SendMessage,hStatus,SB_SETTEXT,3,ADDR buffer

invoke SendMessage,hEdit,EM_SETMODIFY,0,0

mov eax, 0

ret

StreamFileIn endp

StreamFileOut proc hEdit:DWORD,lpszFileName:DWORD

LOCAL hFile :DWORD

LOCAL fSiz :DWORD

LOCAL ofs :OFSTRUCT

LOCAL est :EDITSTREAM

LOCAL buffer[32]:BYTE

LOCAL aval[8]:BYTE

invoke GetWindowTextLength,hEdit

mov fSiz, eax

szText CloseMsg,"Сохранено "

szText CloseByt," байт"

mov buffer[0], 0

invoke szCatStr,ADDR buffer,ADDR CloseMsg

invoke dwtoa,fSiz,ADDR aval

invoke szCatStr,ADDR buffer,ADDR aval

invoke szCatStr,ADDR buffer,ADDR CloseByt

szText sfTest,"Test"

invoke SendMessage,hStatus,SB_SETTEXT,3,ADDR buffer

invoke OpenFile,lpszFileName,ADDR ofs,OF_CREATE

mov hFile, eax

mov est.dwCookie, eax

mov est.dwError, 0

mov eax, offset sfCallBack

mov est.pfnCallback, eax

invoke SendMessage,hEdit,EM_STREAMOUT,SF_TEXT,ADDR est

invoke CloseHandle,hFile

invoke SendMessage,hEdit,EM_SETMODIFY,0,0

mov eax, 0

ret

StreamFileOut endp

MergeFile proc hEdit:DWORD

LOCAL hFile :DWORD

LOCAL hMem :DWORD

LOCAL ln :DWORD

LOCAL br :DWORD

jmp @F

@@:

mov szFileName[0],0

cmp szFileName[0],0 ;<< zero if cancel pressed in dlgbox

je @F

invoke CreateFile,ADDR szFileName,

GENERIC_READ,

FILE_SHARE_READ,

NULL,OPEN_EXISTING,

FILE_ATTRIBUTE_NORMAL,

NULL

mov hFile, eax

invoke GetFileSize,hFile,NULL

mov ln, eax

stralloc ln

mov hMem, eax

invoke ReadFile,hFile,hMem,ln,ADDR br,NULL

invoke SendMessage,hEdit,EM_REPLACESEL,0,hMem

strfree hMem

@@:

ret

MergeFile endp

#################

GetFileName PROTO :DWORD, :DWORD, :DWORD

SaveFileName PROTO :DWORD, :DWORD, :DWORD

.data

szFileName db 260 dup(0)

ofn OPENFILENAME <> ; structure

.code

GetFileName proc hParent:DWORD,lpTitle:DWORD,lpFilter:DWORD

mov ofn.lStructSize, sizeof OPENFILENAME

m2m ofn.hwndOwner, hParent

m2m ofn.hInstance, hInstance

m2m ofn.lpstrFilter, lpFilter

m2m ofn.lpstrFile, offset szFileName

mov ofn.nMaxFile, sizeof szFileName

m2m ofn.lpstrTitle, lpTitle

mov ofn.Flags, OFN_EXPLORER or OFN_FILEMUSTEXIST or \

OFN_LONGNAMES

invoke GetOpenFileName,ADDR ofn

ret

GetFileName endp

SaveFileName proc hParent:DWORD,lpTitle:DWORD,lpFilter:DWORD

mov ofn.lStructSize, sizeof OPENFILENAME

m2m ofn.hwndOwner, hParent

m2m ofn.hInstance, hInstance

m2m ofn.lpstrFilter, lpFilter

m2m ofn.lpstrFile, offset szFileName

mov ofn.nMaxFile, sizeof szFileName

m2m ofn.lpstrTitle, lpTitle

mov ofn.Flags, OFN_EXPLORER or OFN_LONGNAMES

invoke GetSaveFileName,ADDR ofn

ret

SaveFileName endp Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.