Часть полного текста документа:Программа "текстовый редактор" Пояснительная записка к курсовой работе по дисциплине "Основы алгоритмизации и программирования" Выполнил : студент гр. 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); - Вызывается из основной программы. ............ |