Программа "текстовый редактор"
Пояснительная записка к курсовой работе по дисциплине “Основы алгоритмизации и программирования”
Выполнил : студент гр. 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); - Вызывается из loadSInput(fname,20,21,25); - Вызывается из saveSInput(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