Форум программистов, компьютерный форум, киберфорум
C++/CLI Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 06.02.2011
Сообщений: 6

Обработка текстовых файлов

07.06.2011, 16:19. Показов 2075. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В приводимых ниже заданиях следует разработать програм-
му с использованием кнопок на форме (см. пример ниже). Дан-
ные рекомендуется вводить с использованием объекта Memo и
сохранять их в текстовом файле. Вывод на экран также произво-
дить в область Мемо. В качестве примера приведем выполнение
следующего задания:
Дана запись с именем STUDENT, содержащая следующие поля:
· Фамилия и инициалы;
· Номер группы;
· Успеваемость (массив из пяти элементов).
Написать программу, которая выполняет следующие действия:
· Ввод с клавиатуры данных из 10 записей типа STUDENT, и
занесение их в файл данных;
· Чтение данных из файла и вывод их на экран;
· Вывод на экран фамилий, номеров групп и оценок для всех
студентов, которые являются круглыми отличниками (если таких нет –
вывести об этом сообщение);
· Список должен быть упорядочен по возрастанию номера группы.
Обратите внимание на два объекта – openFileDialog и saveFileDialog .
Они нам потребуются для организации диалога при вводе данных в файл
(и последующего сохранения), а также при считывании из файла.
При первоначальном запуске данные на форме вносятся в поле
richTextBox (в соответствии с той структурой, которая указана в задании),
причем в пределах строки – данные одного студента: фамилия студента,
номер группы, каждая из оценок вносятся через пробел.
Кнопка «Сохранить» служит для сохранения данных из окна
richTextBox. Функция для кнопки «Сохранить» имеет вид:
C++
1
2
3
4
5
private: System::Void button3_Click(System::Object^
sender, System::EventArgs^ e) {
saveFileDialog1->ShowDialog();
richTextBox1->SaveFile(saveFileDialog1-
>FileName);
При этом откроется окно диалога
В этом окне нужно будет перейти на нужный диск и в нужную папку, а за-
тем указать имя файла. Рекомендуется указывать у файла расширение rtf.
Затем рекомендуется поле Memo очистить с помощью кнопки «Очи-
стить», функция для которой имеет вид:
C++
1
2
3
4
private: System::Void button2_Click(System::Object^
sender, System::EventArgs^ e) {
richTextBox1->Clear();
}
Далее следует файл открыть – кнопкой «Открыть», имеющей функцию:
C++
1
2
3
4
5
6
private: System::Void button1_Click(System::Object^
sender, System::EventArgs^ e) {
openFileDialog1->ShowDialog();
richTextBox1->LoadFile(openFileDialog1-
>FileName);
}
При выполнении этой функции появится аналогичное окно диалога (рис.
И-8). И здесь нужно будет перейти в соответствующий каталог (папку) и
выбрать нужный для открытия файл. Обратите внимание, что мы здесь за-
ранее ограничили список файлами текстового типа (rtf). Такой фильтр
обеспечивается выполнением (при запуске приложения, т.е. при открытии
формы) функции вида:
240
C++
1
2
3
4
5
6
private: System::Void Form1_Load(System::Object^
sender, System::EventArgs^ e) {
// фильтр списка файлов
openFileDialog1->Filter="RTF|*.rtf";
saveFileDialog1->Filter="RTF|*.rtf";
}
Теперь данный список (из открытого файла) вновь появится в поле
richTextBox и его можно обрабатывать. Например, для сортировки (упоря-
дочения по номеру группы) следует нажать кнопку «Сортировать», со-
держащую функцию:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
private: System::Void button4_Click(System::Object^ sender,
System::EventArgs^ e) {
int gr[20]; int i,j; String^ s;
int n=richTextBox1->Lines->Length; //n- число строк
for ( i=0;i<n;i++)
{int ns=richTextBox1->Lines[i]->Length;//ns– длина i-й строки
s =richTextBox1->Lines[i]; //вычленение i-й строки
int k0=s->IndexOf(" "); //поиск положения 1-го пробела
int k1=s->IndexOf(" ",k0+1); //положение 2-го пробела
String^ sgr=s->Substring(k0+1,k1-k0);//выделение подстроки
//между 1-м и 2-м пробелами - номер группы
gr[i]=Int32::Parse(sgr); //номер группы (в числовом виде)
}
//собственно сортировка поиском максимума
// и запоминанием порядка максимумов в массиве m
int k=0; int nmax, max, m[20];
for ( i=0;i<n;i++)
{ max=0;
for (j=0;j<n;j++)
{if (gr[j]>max) {max=gr[j];nmax=j;}}
m[k]=nmax;k=k+1;
gr[nmax]=0;}
richTextBox2->Clear();
// вывод упорядоченных строк в новое окно richTextBox2
for ( j=0;j<n;j++)
{richTextBox2->Text=
richTextBox2->Text+"\n"+richTextBox1->Lines[m[j]];
} }
Внимательно изучите данную функцию. Обратите внимание, например,
как вычисляется длина каждой строки.
Для преобразования номера группы (который в строке записан сим-
волами) в целое число используется функция Int32::Parse.
При нажатии на данную кнопку получим результат в отдельном окне
richTextBox
Далее потребуется отфильтровать список (в данном случае выделить от-
личников). Для этого служит кнопка «Отфильтровать» с функцией:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
private: System::Void button5_Click(System::Object^ sender,
System::EventArgs^ e) {
String^ s; String^ soc; int i,j; int oc[20][5];
int n=richTextBox1->Lines->Length; //n- число строк в окне RichTextBox
for ( i=0;i<n;i++)
{int ns=richTextBox1->Lines[i]->Length;//ns–длина i-й строки
s =richTextBox1->Lines[i];
s=s+" ";//добавили пробел в конец строки
int k0=s->IndexOf(" ");
int k1=s->IndexOf(" ",k0+1); ;
int k2=s->IndexOf(" ",k1+1); ;
soc=s->Substring(k1+1,k2-k1);
oc[i][1]=Int32::Parse(soc);
int k3=s->IndexOf(" ",k2+1); ;
soc=s->Substring(k2+1,k3-k2);
oc[i][2]=Int32::Parse(soc);
int k4=s->IndexOf(" ",k3+1); ;
soc=s->Substring(k3+1,k4-k3);
oc[i][3]=Int32::Parse(soc);
int k5=s->IndexOf(" ",k4+1); ;
soc=s->Substring(k4+1,k5-k4);
oc[i][4]=Int32::Parse(soc);
int k6=s->IndexOf(" ",k5+1); ;
soc=s->Substring(k5+1,k6-k5);
oc[i][5]=Int32::Parse(soc);
}
richTextBox2->Clear();
//отбор отличников
for ( i=0;i<n;i++)
{ int sum=0;
for (j=1;j<=5;j++)
{ if ((oc[i][j])==5) sum++;}
if (sum==5)
richTextBox2->Text=
richTextBox2->Text+"\n"+richTextBox1->Lines[i];
}
}
243
Здесь сначала вычленяются оценки каждого студента и подсчитывается их
количество. Поскольку заранее известно, что всего оценок пять штук, то
круглый отличник должен иметь пять «пятерок». В результате соответст-
вующую строку и выводим в поле richTextBox2 . Нажмем на эту кнопку
«Отфильтровать» и получим отдельно список отличников
Можно, кстати, такой отфильтрованный список записать в новый файл.
Для этого надо воспользоваться кнопкой «Сохранить» (но обратите вни-
мание, что мы выводим отличников в новом окне richTextBox2, поэтому
нужно будет поправить функцию для кнопки “Сохранить”). При нажатии
на нее потребуется указать имя (другое) файла и перейти, если нужно, в
другую папку. Потом уже отфильтрованный список можно открыть и про-
вести для него сортировку (т.е. упорядочить отдельно отличников).





Дана запись с именем WORKER, содержащая следующие поля:
· Фамилия и инициалы работника;
· Название занимаемой должности;
· Год поступления на работу.
Написать программу, которая выполняет следующие
действия:
· Ввод с клавиатуры данных из 10 элементов типа WORKER,
и занесение их в файл данных;
· Чтение данных из файла и вывод их на экраны
· вывод на экран фамилий работников, чей стаж работы в
организации превышает значение, введенное с клавиатуры
(если таких нет – вывести об этом сообщение);
· Список должен быть упорядочен по алфавиту фамилий.

 Комментарий модератора 
Используйте теги форматирования кода!
В следующий раз увижу настолько криво отформатированный код, да ещё без тегов - выдам карточку.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.06.2011, 16:19
Ответы с готовыми решениями:

Обработка текстовых файлов
Пусть на МД имеется текстовый файл ID.DAT, который содержит числовые значения вещественного типа по два числа в каждой строке - значения...

Обработка текстовых файлов
Здравствуйте, у меня следующий вопрос по обработке текстовой информации есть текстовый файл следующего вида. и есть другой файл...

Обработка текстовых файлов
Всем доброго времени суток. Не могу найти литературу по данной теме. Не подскажете где взять?! Мне для отчёта надо в курсовую работу....

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.06.2011, 16:19
Помогаю со студенческими работами здесь

Обработка текстовых файлов
Структура записи исходного документа имеет вид: **************************************************** * Ном. бригады * Ном. в бригаде *...

Обработка текстовых файлов
Помогите написать, Найти в текстовом файле все симметричные слова. Примеры симметричных слов: Anna, anpna.

Обработка текстовых файлов
помогите пожалуйста!!! есть программа: Дан исходный текстовый файл: Муз.Произведения в котором: -Название -Автор -Год -Стиль ...

обработка текстовых файлов
Товарищи,есть текстовый файл. в нем строка $$$ADDQUANTITY полсле неё идут строки,вида(первое длинное число уникально) после них...

Обработка текстовых файлов.
Помогите, а то я в них вообще запутался.... Добавлено через 1 час 2 минуты Ну помогите, кто может... var Form1: TForm1; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru