Объём учебного времени – 2ч
Методические рекомендации
1. Цель работы: Научиться работать с файлами средствами языка программирования С++.
2. Перечень необходимых средств обучения:
2.1 Технические средства обучения:
- Компьютер Core i3 3.0, 2 Gb оперативной памяти, винчестер 250 Gb, DVD
2.2 Программное обеспечение:
- Программа ОС Windows XP/7;
- Антивирусные программы: Kaspersky AntiVirus;
- MS Office (MS Visio 2010, MS Access 2010)
- Браузер Internet Explorer;
- Интегрированная среда программирования MS Visual Studio 2010.
3. Основные теоретические положения:
Функции (методы) манипулирования каталогами и файлами принадлежат пространству имен System::IO. При выполнении операций с каталогами и файлами возможны исключения (di — объект типа DirectoryInfo, fi — объект типа FileInfo, sr — объект типа StreamReader, sw — объект типа StreamWriter).
Функция (метод) | Результат (значение) |
DirectoryInfo (Path) | Создает объект типа DirectoryInfo, соответствующий каталогу, заданному параметром Path |
di->GetFiles(fn) | Формирует список файлов каталога — массив объектов типа FileInfо |
Каждый элемент массива соответствует файлу каталога, заданного объектом di (тип DirectoryInfo). Параметр fn задает критерий отбора файлов | |
di->Exists | Проверяет, существует ли в системе каталог. Если каталог существует, то значение функции равно true, в противном случае — false |
di->Create(dn) | Создает каталог. Если путь к новому каталогу указан неправильно, возникает исключение |
fi->CopyTo(Path) | Копирует файл, заданный объектом fi (тип FileInfo), в каталог и под именем, заданным параметром Path. Значение метода — объект типа FileInfo, соответствующий файлу, созданному в результате копирования |
fi->MoveTo(Path) | Перемещает файл, заданный объектом fi (тип FileInfo), в каталог и под именем, заданным параметром Path |
fi->Delete() | Уничтожает файл, соответствующий объекту fi (тип FileInfo) |
StreamReader(fn) | Создает и открывает для чтения поток, соответствующий файлу, заданному параметром fn. Значение метода — объект типа StremReader. Поток открывается для чтения в формате UTF-8 |
StreamReader (fn, encd) | Создает и открывает для чтения поток, соответствующий файлу, заданному параметром fn. Значение метода — объект типа StremReader |
Поток открывается для чтения в кодировке, заданной параметром encd (объект типа System::Text::Encoding). Для чтения текста в кодировке Windows 1251 параметр encd необходимо инициализировать значением System::Text::Encoding:: GetEncoding(1251) | |
sr->Read() | Читает символ из потока sr (объект типа StremReader). Значение метода — код символа |
sr->Read(buf, p, n) | Читает из потока sr (объект типа StremReader) символы и записывает их в массив символов buf (тип Char). Параметр p задает номер элемента массива, в который будет помещен первый прочитанный символ, параметр n — количество символов, которое нужно прочитать |
sr->ReadToEnd() | Читает весь текст из потока sr (объект типа StremReader). Значение метода — прочитанный текст |
sr->ReadLine() | Читает строку из потока sr (объект типа StremReader). Значение метода — прочитанная строка |
StreamWriter(fn) | Создает и открывает для записи поток, соответствующий файлу, заданному параметром fn. Значение метода — объект типа StremWriter. Поток открывается для записи в формате (кодировке) UTF-8 |
StreamWriter (fn,a,encd) | Создает и открывает для записи поток, соответствующий файлу, заданному параметром fn. Значение метода — объект типа StremWriter |
Поток открывается для записи в кодировке, заданной параметром encd (объект типа System::Text::Encoding). Для записи текста в кодировке Windows 1251 параметр encd необходимо инициализировать значением System::Text::Encoding:: GetEncoding(1251). Параметр a задает режим записи: true — добавление в файл, false — перезапись | |
sw->Write(v) | Записывает в поток sw (объект типа StreamWriter) строку символов, соответствующую значению v. В качестве v можно использовать выражение строкового или числового типа |
sw->WriteLine(v) | Записывает в поток sw (объект типа StreamWriter) строку символов, соответствующую значению v, и символ "новая строка". В качестве v можно использовать выражение строкового или числового типа |
sw->WriteLine | Записывает в поток sw (объект типа StreamWriter) символ "новая строка" |
s->Close() | Закрывает поток s |
4. Практические указания:
4.1 Разработать программное приложение демонстрирующее создание текстового файла, содержащего информацию о текущем курсе доллара.
4.2 Откройте программу Visual Studio 2010 Professional
4.3 Создайте новый проект Windows Form Application (Visual C++).
4.4 Переименуйте заголовок формы на имя вашего приложения: USD (курс ЦБ РФ).
4.5 Создайте форму следующего вида:
4.6 На форме содержатся следующие элементы:
ü Для ввода даты – компонент DateTimePicker,
ü Текстовое поле – textBox1,
ü Кнопка Добавить – button1.
4.7 В конструктор формы добавьте следующие команды:
public:
Form1(void)
{
InitializeComponent();
//
button1->Enabled=false;
//
}
4.8 Напишите процедуру для обработки события нажатия клавиши в поле редактирования textBox1.
private: System::Void textBox1_KeyPress(System::Object^ sender, System::Windows::Forms::KeyPressEventArgs^ e)
ü Если нажата клавиша из диапазона цифр (от 0 до 9), то разрешить их ввод;
ü Если нажата клавиша “.”, то вывести символ “,”;
ü Выполнить проверку: в поле редактирования не может быть больше одной запятой и запятая не может быть первым символом;
ü Если нажата клавиша Enter установить курсор на кнопку OK;
ü Остальные символы запретить.
4.9 Напишите процедуру для обработки изменения содержимого в поле редактирования.
private: System::Void textBox1_TextChanged(System::Object^ sender, System::EventArgs^ e)
ü Если в текстовое поле textBox1 не введены данные, то кнопка Добавить не доступна, в противном случае –доступна.
4.10 Напишите процедуру, выполняемую по щелчку на кнопке Добавить.
ü Введите переменную kurs типа данных Double;
ü Введите переменную date типа данных DateTime;
ü В переменную date получите значение из DateTimePicker;
ü В переменную kurs получите преобразование строкового значения textBox1.Text;
ü Получите информацию о файле:
System::IO::FileInfo^fi=