ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 28.03.2023

Просмотров: 737

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Введение

Представленная курсовая работа посвящена теме «Работа с файлами в 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]:

  1. описать переменную типа ofstream.
  2. открыть файл с помощью функции open.
  3. вывести информацию в файл.
  4. обязательно закрыть файл.

Для считывания данных из текстового файла, необходимо [11]:

  1. описать переменную типа ifstream.
  2. открыть файл с помощью функции open.
  3. считать информацию из файла, при считывании каждой порции данных необходимо проверять, достигнут ли конец файла.
  4. закрыть файл.

Запись информации в текстовый файл

Как было сказано ранее, для того чтобы начать работать с текстовым файлом, необходимо описать переменную типа ofstream. Например, так:

ofstream F;

Будет создана переменная F для записи информации в файл. На следующим этапе файл необходимо открыть для записи. В общем случае оператор открытия потока будет иметь вид:

F.open(«file»mode);

Здесь F — переменная, описанная как ofstreamfile — полное имя файла на диске, 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 необходимо указать имя открытого файла.

Например, для записи в поток переменной a, оператор вывода будет иметь вид [8]:

F<<a;

Для последовательного вывода в поток G переменных bcd оператор вывода станет таким:

G<<b<<c<<d;

Закрытие потока осуществляется с помощью оператора:

F.close();

Чтение информации из текстового файла

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

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

Например, для чтения данных из потока F в переменную a, оператор ввода будет выглядеть так:

F>>a;

Два числа в текстовом редакторе считаются разделенными, если между ними есть хотя бы один из символов: пробел, табуляция, символ конца строки. Хорошо, когда программисту заранее известно, сколько и какие значения хранятся в текстовом файле. Однако часто известен лишь тип значений, хранящихся в файле, при этом их количество может быть различным. Для решения данной проблемы необходимо считывать значения из файла поочередно, а перед каждым считыванием проверять, достигнут ли конец файла. А поможет сделать это функция F.eof(). Здесь — имя потока функция возвращает логическое значение: 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, в том числе, возможность работать с текстовыми файлами.