45839 (Программа текстовый редактор)

2016-07-31СтудИзба

Описание файла

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

Онлайн просмотр документа "45839"

Текст из документа "45839"

Программа "текстовый редактор"

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

Выполнил : студент гр. 96-ВВ3 Курапов А.В.

Пензенский государственный технический университет, кафедра “Вычислительная Техника”

Пенза 1997

Введение

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

Интерес к персональным компьютерам постоянно растет,а круг их пользователей непрерывно расширяется.В число пользователей ПЭВМ вовлекаются как новички в компьютерном деле,так и специалисты по другим классам ЭВМ.

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

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

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

1) Ввод исходного текста в заданный файл;

2) Вывод содержимого файла на экран;

3) Обработка файла: форматирование текста по заданному образцу методом центрирования.

Парамерты для форматирования:

а) левый отступ;

b) количество символов в строке;

c) красная строка.

4) Поиск заданной в тексте введённой подстроки , после поиска выдать запрос : "продолжить или закончить".

5) Cохранение результатов обработки данных.

Имена фсех файлов задаются пользователем в диалоговом режиме.

2 Метод решения задачи

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

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

3 Описание логического представления данных

Входными данными в программе являются:

Уже существующий текстовый файл - хранится на диске , может быть под любым именем , при загрузки имя файла запрашивается программой в диалоговом режиме , при загрузке имя файла записывается в локальную переменную типа char - fname (25 символов) , уаказатель на начало текста записывается в переменную *text , а длина текста в переменную len типа int;

Параметры текста (левый отступ , количество символов в строке) - можно изменить в процессе работы программы , начальные значения при загрузки : левый отступ=0 , количество символов=60; Данные хранятся в переменных основной программы - left , right (int).

Текст , вводимый с клавиатуры хранится в переменной text типа char , которая в конце работы может быть сохранена в файле , имя которого задаётся пользователем в диалоговом режиме , имя файла записывается в локальную переменную типа char - fname (25 символов).

Шаблон для поиска , который вводится пользователем с клавиатуры хранится в меременной типа char - mascs длинной в 40 символов

Выходными данными в программе являются:

Текст , вводимый с клавиатуры хранится в переменной text типа char , которая в сохраняется в файле , имя которого задаётся пользователем с клавиатуры в диалоговом режиме , имя файла записывается в локальную переменную типа char - fname (25 символов).

Результат поиска по шаблону - координаты курсора x,y (int) записываются как координаты первого символа найденного по шаблону слова , если слово не найденно , то x=0 , y=0.

6 Спецификация на функциональные модули

6.1 Функция output

Строка вызова:

output(scrs,x,y);

Назначение:

Осуществляет вывод на экран текста и строки подсказки и курсора

Функции:

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

Логические

переменные:

*a (char) - указатель на начало верхней строки

x,ky (int) - позиция курсора в тексте

Внутренние

переменные:

np (int) - Количество непечатаемых символов

rx (int) - Реальная координата курсора на экране

y (int) - Координата Y вывода

* ot (char) - Временный указатель

n (int) - Временная переменная , необходима для вывода строки

Вызывает функции:

нет

Вызывается из:

основной программы.

6.2 Функция sinput

Строка вызова:

SInput(fname,20,21,25); - Вызывается из load

SInput(fname,20,21,25); - Вызывается из save

SInput(masks,40,30,25); - Вызывается из основной программы

Назначение:

Осуществляет ввод строки.

Функции:

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

Логические

переменные:

*s (char) - указатель на строку

lng (int) - максимальная длина

x,y - координаты ввода

Внутренние

переменные:

rs[100] (char) - Временная строка

n (int) - Счетчик

c (char) - Введённый с клавиатуры символ

Вызывает функции:

нет

Вызывается из:

load,save,основной программы.

6.3 Функция load

Строка вызова:

load(text); - Вызывается из основной программы

Назначение:

Осуществляет загрузку текста из файла.

Функции:

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

Логические

переменные:

*p (char) - указатель на текст

Внутренние

переменные:

fname[25] (char) - Имя файла

*f (file) - указатель на файл

Вызывает функции:

sinput

Вызывается из:

основной программы.

6.4 Функция save

Строка вызова:

save(text); - Вызывается из основной программы

Назначение:

Осуществляет запись текста в файл.

Функции:

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

Логические

переменные:

*p (char) - указатель на текст

Внутренние

переменные:

fname[25] (char) - Имя файла

*f (file) - указатель на файл

*pr (char) - временный указатель

Вызывает функции:

sinput

Вызывается из:

основной программы.

6.5 Функция reset

Строка вызова:

reset(text,32767); - Вызывается из основной программы

Назначение:

Осуществляет уничтожение информации.

Функции:

Заполнение кодом перевод строки переменной , указанной в сторке параметров , на длинну , указанную в строке параметров.

Логические

переменные:

*a (char) - указатель на текст

n (int) - количество символов в тексте

Внутренние

переменные:

m (int) - счётчик

Вызывает функции:

нет

Вызывается из:

основной программы.

6.6 Функция up

Строка вызова:

else scrs=up(text,scrs); - Вызывается из основной программы

Назначение:

Осуществляет передвижение указателя на одну строку вверх.

Функции:

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

Логические

переменные:

*a (char) - указатель на текст

*b (char) - указатель на текущую строку

Внутренние

переменные:

нет

Вызывает функции:

нет

Вызывается из:

основной программы.

6.7 Функция down

Строка вызова:

else scrs=down(text,scrs); - Вызывается из основной программы

Назначение:

Осуществляет передвижение указателя на одну строку вниз.

Функции:

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

Логические

переменные:

*a (char) - указатель на текст

*b (char) - указатель на текущую строку

Внутренние

переменные:

нет

Вызывает функции:

нет

Вызывается из:

основной программы.

6.8 Функция menu

Строка вызова:

switch (menu(30,5," Сохранить файл "

" Считать файл "

" Ввод шаблона "

" Параметры "

" Выход из программы "

"\x0"))

Вызывается из основной программы

Назначение:

Осуществляет вывод и обработку меню.

Функции:

Вывод меню на экран , опрос клавиатуры , при нажатии клавиш иправления курсором (вверх , вниз) перемещение цветового курсора по пунктам меню , выбор определённого пункта меню при нажатии клавиши с номером пункта меню , при нажатии клавиши Enter возвращается номер выбранного пункта меню , при нажатии клавиши Esc возвращается -1.

Логические

переменные:

x,y (int) - координаты вывода меню на экран.

*сapt (char) - указатель на текст меню

Внутренние

переменные:

n,m (int) - Счетчики

num (int) - Количество пунктов

k (int) - Выбранный пункт

pt (char) - Временный указатель на символ

c (char) - Считанный с клавиатуры символ

Вызывает функции:

нет

Вызывается из:

основной программы.

6.8 Функция add

Строка вызова:

add(st,a,0,0,' '); - Вызывается из centr

add(text,scrs,x,y,10);

add(text,scrs,x,y,13); Вызывается из основной программы

add(text,scrs,x,y,' ');

add(text,scrs,x,y,c);

Назначение:

Осуществляет добавление символа в текст.

Функции:

Помещение указателя на начало строки , подсчёт символов в строке , вставка символа в строку.

Логические

переменные:

*st (char) - указатель на текст

*a (char) - указатель на текущую строку

x,y (int) - координаты

c (char) - добавляемай символ

Внутренние

переменные:

n (int) - число символов в строке

d (int) - счётчик

*p (char) - временный указатель

Вызывает функции:

нет

Вызывается из:

centr , основной программы.

6.9 Функция end

Строка вызова:

x=end(text,scrs,x,y); - Вызывается из основной программы.

Назначение:

Осуществляет поиск конца сироки.

Функции:

Возвращает длину строки.

Логические

переменные:

*st (char) - указатель на текст

*a (char) - указатель на текущую строку

x,y (int) - координаты

Внутренние

переменные:

n (int) - число символов в строке

*p (char) - временный указатель

Вызывает функции:

нет

Вызывается из:

основной программы.

6.10 Функция del

Строка вызова:

del(st,a,0,0); - Вызывается из centr.

del(text,scrs,x,y); - Вызывается из основной программы.

del(text,scrs,x-1,y); - Вызывается из основной программы.

Назначение:

Осуществляет удаление символа из текста.

Функции:

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

Логические

переменные:

*st (char) - указатель на текст

*a (char) - указатель на текущую строку

x,y (int) - координаты

Внутренние

переменные:

n (int) - число символов в строке

d (int) - счётчик

*p (char) - временный указатель

Вызывает функции:

нет

Вызывается из:

centr , основной программы.

6.11 Функция find

Строка вызова:

find(text,&scrs,&x,&y,masks); - Вызывается из основной программы.

Назначение:

Осуществляет поиск фрагмента в тексте , начиная с текущего положения курсора.

Функции:

Поиск текущего места в тексте , поиск фрагмента , если фрагмент найден - перемещение курсора.

Логические

переменные:

*st (char) - указатель на текст

*scrs (char) - указатель на текущую строку

*x , *y (int) - указатель на координаты

Внутренние

переменные:

n (int) - число символов в строке

d (int) - счётчик

k (int) - счётчик

*p (char) - временный указатель

Вызывает функции:

нет

Вызывается из:

основной программы.

6.12 Функция dinput

Строка вызова:

left=DInput(30,25); - Вызывается из основной программы.

right=DInput(30,25); - Вызывается из основной программы.

Назначение:

Осуществляет ввод числа.

Функции:

Вывод строки запроса , считывание цифр с клавиатуры , выход , если нажата клавиша Enter или Esc , если нажата Esc то число не записывается не записывается. Возвращает считанное число в формате long.

Логические

переменные:

x , y (int) - координаты ввода

Внутренние

переменные:

s[100] (char) - временная строка

rz (long) - cчитанное число

n (int) - счётчик

c (char) - символ

Вызывает функции:

нет

Вызывается из:

основной программы.

6.13 Функция centr

Строка вызова:

centr(text,scrs,y,left,right); - Вызывается из основной программы.

Назначение:

Осуществляет центровку текущей строки.

Функции:

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

Логические

переменные:

*st (char) - указатель на текст

*scrs (char) - указатель на текущую строку

x , y (int) - координаты

left (int) - левый отступ

right (int) - число символов в строке

Внутренние

переменные:

n (int) - число символов в строке

d (int) - счётчик

Вызывает функции:

add , del

Вызывается из:

основной программы.

6.14 Основная программа

Назначение:

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

Функции:

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

Внутренние

переменные:

left (int) - левый отступ

right (int) - число символов в строке

masks (char) - маска для поиска

*scrs (char) - указатель на текущую строку

x , y (int) - координаты курсора

c (char) - введённый с клавиатуры символ

n (int) - счётчик

Вызывает функции:

output , sinput , load , save , reset , up , down , menu , add , end , del , find , dinput , centr .

7 Технические требования для использования

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5167
Авторов
на СтудИзбе
437
Средний доход
с одного платного файла
Обучение Подробнее