45839 (Программа текстовый редактор)
Описание файла
Документ из архива "Программа текстовый редактор", который расположен в категории "". Всё это находится в предмете "информатика" из , которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "рефераты, доклады и презентации", в предмете "информатика, программирование" в общих файлах.
Онлайн просмотр документа "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 Технические требования для использования