Добавлен: 28.03.2023
Просмотров: 731
Скачиваний: 3
СОДЕРЖАНИЕ
1 Теоретические основы организации работы с файлами в MS Visual C++
1.1 Организация работы с файлами средствами C++
1.2 Возможности компонента RichTextBox по работе с файлами
2 Разработка электронного учебника по курсу JavaScript
2.1 Логическая структура приложения
2.4 Разработка программного кода
Введение
Представленная курсовая работа посвящена теме «Работа с файлами в MS Visual C++».
С момента появления первых больших ЭВМ и по сей день, интенсивно изучаются проблемы разработки и проектирования системного и прикладного программного обеспечения. В настоящее время развиваются новые направления исследований в данной области, в частности, системные исследования в области компьютерных технологий и систем, методологии анализа и синтеза новых информационных решений.
В C++ предусмотрен классический способ работы с файлами, основанный на библиотеке stdio.h и доступе к данным через структуру FILE. Существует также альтернативный механизм работы с файлами в языке C++ на основе потоков и библиотек <fstream>, <ifstream>, <ofstream>. Однако в настоящее время является актуальным использование возможностей библиотеки компонентов Visual Studio для работы с текстовыми файлами, именно они и реализованы в курсовой работе.
Работа с файлами была реализована в ходе создания электронного учебного пособия по курсу JavaScript, что также является актуальной задачей.
В автоматизации обучения дисциплине «JavaScript» наиболее существенны следующие возможности:
- «одноразовый» ввод данных и многоцелевое их использование;
- многоаспектный поиск данных по различным признакам и их
сочетаниям без формирования дополнительных картотек и
указателей;
- сокращение затрат на обработку входных потоков документов.
На практике это означает освобождение преподавателей от ряда рутинных работ по подготовке лекций, вопросов, отчетной документации.
Цель курсовой работы – изучение основных аспектов организации работы с файлами в MS Visual C++ и реализация электронного учебного пособия по курсу JavaScript.
Для достижения цели поставлены следующие задачи:
- изучить теоретические аспекты работы с файлами в MS Visual C++;
-разработать концепцию ЭУ по курсу «JavaScript»;
- разработать программное обеспечение электронного учебного пособия.
В ходе написания курсовой работы были использованы труды следующих специалистов по программированию на языке С++: Баженова И. Ю., Николенко Д. В., Павловская Т.А., Пахомов Б. C., Холзнер, С. И др.
1 Теоретические основы организации работы с файлами в MS Visual C++
1.1 Организация работы с файлами средствами C++
Файлом называют способ хранения информации на физическом устройстве. Файл — это понятие, которое применимо ко всему — от файла на диске до терминала.
Файлы позволяют пользователю считывать большие объемы данных непосредственно с диска, не вводя их с клавиатуры. Существуют два основных типа файлов: текстовые и двоичные.
Текстовыми называются файлы, состоящие из любых символов. Они организуются по строкам, каждая из которых заканчивается символом «конца строки». Конец самого файла обозначается символом «конца файла». При записи информации в текстовый файл, просмотреть который можно с помощью любого текстового редактора, все данные преобразуются к символьному типу и хранятся в символьном виде.
В двоичных файлах информация считывается и записывается в виде блоков определенного размера, в которых могут храниться данные любого вида и структуры.
Для работы с файлами используются специальные типы данных, называемые потоками. Поток ifstream служит для работы с файлами в режиме чтения, а ofstream в режиме записи. Для работы с файлами в режиме как записи, так и чтения служит поток fstream.
В программах на C++ при работе с текстовыми файлами необходимо подключать библиотеки iostream иfstream.
Для того чтобы записывать данные в текстовый файл, необходимо [6]:
- описать переменную типа ofstream.
- открыть файл с помощью функции open.
- вывести информацию в файл.
- обязательно закрыть файл.
Для считывания данных из текстового файла, необходимо [11]:
- описать переменную типа ifstream.
- открыть файл с помощью функции open.
- считать информацию из файла, при считывании каждой порции данных необходимо проверять, достигнут ли конец файла.
- закрыть файл.
Запись информации в текстовый файл
Как было сказано ранее, для того чтобы начать работать с текстовым файлом, необходимо описать переменную типа ofstream. Например, так:
ofstream F;
Будет создана переменная F для записи информации в файл. На следующим этапе файл необходимо открыть для записи. В общем случае оператор открытия потока будет иметь вид:
F.open(«file», mode);
Здесь F — переменная, описанная как ofstream, file — полное имя файла на диске, mode — режим работы с открываемым файлом. Обратите внимание на то, что при указании полного имени файла нужно ставить двойной слеш. Для обращения, например, к файлу accounts.txt, находящемуся в папке sites на диске D, в программе необходимо указать: D:\\sites\\accounts.txt.
Файл может быть открыт в одном из следующих режимов:
- ios::in — открыть файл в режиме чтения данных; режим является режимом по умолчанию для потоков ifstream;
- ios::out — открыть файл в режиме записи данных (при этом информация о существующем файле уничтожается); режим является режимом по умолчанию для потоков ofstream;
- ios::app — открыть файл в режиме записи данных в конец файла;
- ios::ate — передвинуться в конец уже открытого файла;
- ios::trunc — очистить файл, это же происходит в режиме ios::out;
- ios::nocreate — не выполнять операцию открытия файла, если он не существует;
- ios::noreplace — не открывать существующий файл.
Параметр mode может отсутствовать, в этом случае файл открывается в режиме по умолчанию для данного потока.
После удачного открытия файла (в любом режиме) в переменной F будет храниться true, в противном случае false. Это позволит проверить корректность операции открытия файла.
После открытия файла в режиме записи будет создан пустой файл, в который можно будет записывать информацию.
После открытия файла в режиме записи, в него можно писать точно так же, как и на экран, только вместо стандартного устройства вывода cout необходимо указать имя открытого файла.
Например, для записи в поток F переменной a, оператор вывода будет иметь вид [8]:
F<<a;
Для последовательного вывода в поток G переменных b, c, d оператор вывода станет таким:
G<<b<<c<<d;
Закрытие потока осуществляется с помощью оператора:
F.close();
Чтение информации из текстового файла
Для того чтобы прочитать информацию из текстового файла, необходимо описать переменную типа ifstream. После этого нужно открыть файл для чтения с помощью оператора open.
После открытия файла в режиме чтения из него можно считывать информацию точно так же, как и с клавиатуры, только вместо cin нужно указать имя потока, из которого будет происходить чтение данных.
Например, для чтения данных из потока F в переменную a, оператор ввода будет выглядеть так:
F>>a;
Два числа в текстовом редакторе считаются разделенными, если между ними есть хотя бы один из символов: пробел, табуляция, символ конца строки. Хорошо, когда программисту заранее известно, сколько и какие значения хранятся в текстовом файле. Однако часто известен лишь тип значений, хранящихся в файле, при этом их количество может быть различным. Для решения данной проблемы необходимо считывать значения из файла поочередно, а перед каждым считыванием проверять, достигнут ли конец файла. А поможет сделать это функция F.eof(). Здесь F — имя потока функция возвращает логическое значение: true или false, в зависимости от того достигнут ли конец файла.
1.2 Возможности компонента RichTextBox по работе с файлами
В разрабатываемом приложении в качестве компонента, в котором будут отображаться все учебные материалы, был выбран компонент RichTextBox.
Данный элемент управления дает возможность пользователю вводить и обрабатывать большие объемы информации (более 64 килобайт). Кроме того, RichTextBox позволяет редактировать цвет текста, шрифт, добавлять изображения. RichTextBox включает все возможности текстового редактора Microsoft Word [2].
Вводить текст в RichTextBox можно с помощью свойства Text данного элемента, которое предоставляет окно, в которое осуществляется ввод.
RichTextBox предоставляет методы, которые предоставляют функциональные возможности для открытия и сохранения файлов [10].
В таблице (таб. 1) ниже приведены некоторые свойства доступные при использовании RichTextBox.
Таблица 1
Свойства компонента RichTextBox
|
BackColor |
Возвращает или задает цвет фона элемента управления. |
|
BorderStyle |
Получает или задает тип границы элемента управления "Текстовое поле". |
|
Font |
Возвращает или задает шрифт текста, отображаемого элементом управления. |
|
ForeColor |
Возвращает или задает цвет элемента управления. |
|
Lines |
Получает или задает строки текста в элементе управления "Текстовое поле". |
|
ReadOnly |
Получает или задает значение, указывающее, является ли текст в текстовом поле доступным только для чтения. |
|
ScrollBars |
Получает или задает тип полос прокрутки, отображающихся в элементе управления RichTextBox. |
|
SelectedText |
Получает или задает выделенный в элементе управления RichTextBoxтекст. |
|
Size |
Возвращает или задает высоту и ширину элемента управления. |
|
Tag |
Возвращает или задает объект, содержащий данные об элементе управления. |
|
Text |
Получает или задает текущий текст в поле форматированного текста. |
|
Visible |
Возвращает или задает значение, указывающее, отображаются ли элемент управления и все его дочерние элементы управления. |
|
WordWrap |
Показывает, переносятся ли автоматически в начало следующей строки слова текста по достижении границы многострочного текстового поля. |
В таблице 2 представлены Методы компонента RichTextBox
Таблица 2
Методы компонента RichTextBox
|
Clear() |
Удаляет весь текст из элемента управления "Текстовое поле". |
|
Copy() |
Копирует текущий выбор из текстового поля в буфер обмена. |
|
Cut() |
Перемещает текущий выбор из текстового поля в буфер обмена. |
|
DeselectAll() |
Указывает, что значение свойства SelectionLength равно нулю для отмены выделения символов в элементе управления. |
|
Find(Char[]) |
Осуществляет поиск первого экземпляра символа из списка символов по тексту элемента управления RichTextBox. |
|
LoadFile(Stream, RichTextBoxStreamType) |
Загружает в элемент управления RichTextBox содержимое существующего потока данных. |
|
LoadFile(String) |
Загружает файл в формате RTF или стандартный текстовый файл в кодировке ASCII в элемент управления RichTextBox. |
|
LoadFile(String, RichTextBoxStreamType) |
Загружает в элемент управления RichTextBox определенный тип файла. |
|
Paste() |
Заменяет текущее выделение в текстовом поле содержимым буфера обмена. (Inherited from TextBoxBase) |
|
SaveFile(Stream, RichTextBoxStreamType) |
Сохраняет содержимое элемента управления RichTextBox в открытый поток данных. |
|
SaveFile(String) |
Сохраняет содержимое элемента управления RichTextBox в RTF-файл. |
|
SaveFile(String, RichTextBoxStreamType) |
Сохраняет содержимое элемента управления RichTextBox в файл определенного типа. |
|
Select() |
Активирует элемент управления. |
Таким образом, в C++ отсутствуют операторы для работы с файлами. Все необходимые действия выполняются с помощью функций, включенных в стандартную библиотеку. Они позволяют работать с различными устройствами, такими, как диски, принтер, коммуникационные каналы и т.д. Эти устройства сильно отличаются друг от друга. Однако файловая система преобразует их в единое абстрактное логическое устройство, называемое потоком.
В разрабтываемом приложении будет использован компонент RichTextBox – расширенное поле ввода, который предоставляет возможность пользователю вводить и обрабатыать большие объемы информации (более 64 кБт). Кроме того, RichTextBox позволяет редактировать цвет текста, шрифт, добавлять изображения.
RichTextBox включает все возможности текстового редактора Microsoft Word, в том числе, возможность работать с текстовыми файлами.