43150

Разработка алгоритмического и программного обеспечения для работы с текстовыми файлами

Курсовая

Информатика, кибернетика и программирование

Составить программу которая читает текст из разбитого на строки текстового файла и записывает в выходной файл текст с выравниванием по центру. Имена входного и выходного файлов вводятся пользователем. Цель работы Составить программу которая читает текст из разбитого на строки текстового файла и записывает в выходной файл текст с выравниванием по центру.

Русский

2013-11-03

351 KB

5 чел.

Министерство образования и науки РФ

Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

Воронежская государственная лесотехническая академия

Кафедра вычислительной техники и информационных систем

Курсовая работа

По дисциплине «Основы программирования и алгоритмизации»

На тему:

«Разработка алгоритмического и программного обеспечения для работы с текстовыми файлами»

Студент ___________ группы

                      (номер группы)

Руководитель,

_________________________________

                 (ученая степень, ученое звание)

___________

(подпись)

___________

(подпись)

______________

       (Фамилия И. О.)

______________

       (Фамилия И. О.)

Воронеж 2012

ЗАДАНИЕ

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


СОДЕРЖАНИЕ


ВВЕДЕНИЕ

Язык программирования Си был разработан в лабораториях Bell Labs в период с 1969 по 1973 годы. Согласно Ритчи, самый активный период творчества пришёлся на 1972 год. Язык назвали «Си» (C - третья буква латинского алфавита), потому что многие его особенности берут начало от старого языка «Би» (B - вторая буква латинского алфавита). 

С++ - компилируемый статически типизированный язык общего назначения. Являясь одним из самых популярных языков программирования, C++ широко используется для разработки программного обеспечения. Область его применения включает создание операционных систем, разнообразных прикладных программ, драйверов устройств, приложений для встраиваемых систем, высокопроизводительных серверов, а также развлекательных приложений (например, видео игры).

Цель работы

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

Задачи работы

  1.  Создать файл 1, записать текст.
  2.  Создать пустой файл 2.
  3.  Найти самую длинную строку в файле 1, и посчитать количество символов этой строки. Посчитать количество символов остальных строк. Найти количество пробелов, которые нужны для вставки перед строками отличных от самой длинной строки.
  4.  Результаты вывести на экран.
  5.  Так же результат работы записать в фал 2.


1 Описание приложения

1.1 Описание структуры

1.1.1 Описание типа данных

1. Символьный тип данных – Char.

В памяти компьютера тип данных char представляется, как и другие целые типы, числом, однако в действительности это число является кодом символа. Преобразование символа в число и обратно происходит автоматически в соответствии с таблицей кодировки символов ASCII, представленной в приложении «Таблица ASCII-кодов». Например, код символа «равно» (=) представляется в памяти компьютера как число 61 и занимает один байт. При его обозначении в качестве простого символа он должен быть заключен в апострофы. На практике тип char довольно редко используется для хранения отдельных символов и значительно чаще для хранения строк, являющихся массивами символов.

2. Целочисленный тип данных – int.

Тип int является наиболее используемым целым типом С и С++. Единственное, что можно сказать определенно, это то, что число типа int не короче числа типа short и не длиннее числа типа long. Этот тип используется для объявления положительных или отрицательных целых чисел. В 16-разрядных системах числа типа int могут принимать значения от -32 768 до 32 767 и занимают 2 байта. В 32-разрядных системах числа этого типа занимают 4 байта и принимают те же значения, что и длинные целые, поэтому существует потенциальная опасность того, что в 32-разрядных системах не возникнет ошибки превышения возможного значения.
В связи с этим, несмотря на то, что тип int является наиболее естественным для процессора и требуется при использовании многих библиотечных функций, программисты стараются не задавать этот тип в сложных и достаточно важных программах.


1.1.2 Описание файлов по строковым переменным

1. Stdlib.h

Stdlib.h - заголовочный файл стандартной библиотеки языка Си, который содержит в себе функции, занимающиеся выделением памяти, контроль процесса выполнения программы, преобразования типов и другие. Заголовок вполне совместим с C++ и известен в нём как cstdlib. Название «stdlib» расшифровывается как «standard library» (стандартная библиотека).

2. String

String.h - заголовочный файл стандартной библиотеки языка Си, содержащий функции для работы с нуль-терминированными строками и различными функциями работы с памятью.

3. iostream

iostream - заголовочный файл с классами, функциями и переменными для организации ввода-вывода в языке программирования C++. Он включён в стандартную библиотеку C++. Название образовано от Input/Output Stream («поток ввода-вывода»). В языке C++ и его предшественнике, языке программирования Си, нет встроенной поддержки ввода-вывода, вместо этого используется библиотека функций. iostream управляет вводом-выводом, как и stdio.h в Cи. iostream использует объекты cin, cout, cerr и clog для передачи информации в и из стандартных потоков ввода, вывода, ошибок (без буферизации) и ошибок (с буферизацией) соответственно. Являясь частью стандартной библиотеки C++, эти объекты также являются частью стандартного пространства имён - std.

4. vcl.h

VCL предоставляет огромное количество готовых к использованию компонентов для работы в самых разных областях программирования, таких, например, как интерфейс пользователя (экранные формы и элементы управления - т. н. «контролы», «контроли»), работа с базами данных, взаимодействие с операционной системой, программирование сетевых приложений и прочее.


1.1.3 Работа с файлами складывается из трех шагов.

1. Файл открывается. Это означает, что программа "захватывает" заданный по имени файл, сообщает Windows, что далее она будет с ним работать. Данный шаг нужен, чтобы не возникало конфликтов, когда несколько программ одновременно хотят записывать информацию в один и тот же файл. Правда, считывать данные из файла, очевидно, допустимо одновременно множеством программ, поэтому в операции открытия файла обычно уточняется, что файл открывается "на чтение" (считывание информации, которая не меняется) либо "на запись" (данные в файле модифицируются).

Операция открытия файла возвращает некий идентификатор (как правило, целое число), которое идентифицирует в программе в дальнейшем нужный открытый файл. Этот идентификатор запоминается в переменной; обычно такая переменная называется файловой переменной.

2. Ведется работа с файлом. Из него данные либо считываются, либо в него записываются.

3. Файл закрывается. После этой операции он снова доступен другим программам для обработки.

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

Текстовые файлы относятся к файлам последовательного доступа, т.к. единицей хранения информации в них являются строки переменной длины. Каждая строка заканчивается специальным признаком, обычно его функцию выполняет пара символов 0D0A – "возврат каретки" и "перевод строки". Самым важным преимуществом текстовых файлов является универсальность формата хранения информации – числовые данные в символьном виде доступны на любом компьютере, при необходимости их может прочитать и человек. Однако это преимущество имеет и обратную сторону медали – преобразование числовых данных из машинных форматов в символьный вид при выводе и обратное преобразование при вводе сопряжено с дополнительными расходами. Кроме того, объем числовых данных в символьном формате занимает в несколько раз больше памяти по сравнению с их машинным представлением.

Текстовый файл может быть создан путем записи на диск символьных и/или числовых данных по заданному формату с помощью оператора fprintf. В качестве признака конца строки здесь заносятся те же самые байты0D0A, которые появляются на диске в результате вывода управляющего символа \n.

Для инициализации текстового файла необходимо завести указатель на структуру типа FILE и открыть файл по оператору fopen в одном из нужных режимов – "rt" (текстовый для чтения), "wt" (текстовый для записи), "at"(текстовый для дозаписи в уже существующий набор данных):

FILE *f1;

   f1=fopen(имя_файла, "режим")

Работаем с потоками на C++ ofstream и ifstream. Используем потоковый ввод/вывод.

Потоки для работы с файлами создаются как объекты следующих классов:

ofstream - для вывода (записи) данных в файл;

ifstream - для ввода (чтения) данных из файла;

fstream - для чтения и для записи данных (двунаправленный обмен).

Чтобы использовать эти классы, в текст программы необходимо включить дополнительный заголовочный файл fstream.h. После этого в программе можно определять конкретные файловые потоки, соответствующих типов (объекты классов ofstream, ifstream, fstream), например, таким образом:

ofstream outFile; // Выходной файловый поток.

ifstream inFile; // Входной файловый поток.

fstream ioFile; // Файловый поток для ввода и вывода.

Создание файлового потока (объекта соответствующего класса) связывает имя потока с выделяемым для него буфером и инициализирует переменные состояния потока. Так как перечисленные классы файловых потоков наследуют свойства класса ios, то и переменные состояния каждого файлового потока наследуются из этого базового класса. Так как файловые классы являются производными от классов ostream (класс ofstream),istream (класс ifstream), stream (класс fstream), то они поддерживают описанный в предыдущих шагах форматированный и бесформатный обмен с файлами. Однако прежде чем выполнить обмен, необходимо открыть соответствующий файл и связать его с файловым потоком.

Открытие файла в самом общем смысле означает процедуру, информирующую систему о тех действиях, которые предполагается выполнять с файлом. Существуют функции стандартной библиотеки языка Сдля открытия файлов fopen(), open(). Но работая с файловыми потоками библиотеки ввода-вывода языка С++, удобнее пользоваться компонентными функциями соответствующих классов.

Создав файловый поток, можно "присоединить" его к конкретному файлу с помощью компонентной функции open(). Функция open() унаследована каждым из файловых классов ofstream, ifsream, fstream от классаfstreambase. С ее помощью можно не только открыть файл, но и связать его с уже определенным потоком. Формат функции:

#include <fstream.h>
#include <conio.h>
#include <iostream.h>
#include <fcntl.h>
#include <io.h>

char k;
--------------------------------------
char god[100];
char kolvo[100];
main()
--------------------------------------
clrscr(); \\
очищает текущее текстовое окно
--------------------------------------
cout<<"\n
Количество томов : "; \\ функция вывода на экран
cin>>kolvo; \\
функция считывания

Функция length. Данная функция предназначена для нахождения длины строки. Используется через оператор присваивания какой-либо переменной.

if (str.length()>max) max=str.length();      //если длина строки больше,

переопределяем максимум.


1.2 Ход решения

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


2 Алгоритм решения

Объявляются переменные, массив для записи в него строк из файлов. Для нужного выравнивания по центру, необходимо в начало строк, меньших по количеству символов в длинной строке, вставлять пробелы. Объявляем переменную для пробелов. Пользователем вводится имя входного файла, для считывания из него строк. Файл открывается для чтения. После обработки текстового файла в строковый массив записывается самая длинная строка из текста. Затем, используя циклический оператор, находим количество символов этой длинной строки. В случае неверного ввода  пользователем требуемого файла, выходит сообщение, повествующее о том, что указанный файл не найден. Далее ведется обработка текстового файла на считку символов остальных строк. Выполняется действие, по которому от максимального количества длинной строки отнимаются количество символов остальных строк. После этого действия определенной переменной присваивается значение(пробелы) необходимые вставлять в начало строк отличных от длинной строки. Все строки над которыми выполнялись действия выводятся на консоль, с начала текст начального вида и центрированный текст. Затем открывается выходной файл для записи в него строк, которые были выравнены по центру. Закрываем файл. В конце, после успешного выполнения операции, память, выделенная для выполнения вычислений, очищается.


2.1 Руководство пользователя

Открывается приложение work with files.exе двойным щелчком по иконке. Запускается  приложение. Пользователю выдается сообщение о предложении ввести имя входного файла (имя файла необходимо вводить с расширением). Пользователь вводит имя файла, нажимает Enter. Затем пользователю необходимо будет ввести имя второго файла (так же указывая расширение).После ввода данных на консоль будет выведено результат работы.

2.2 Примеры работы программы

Ввод имен файлов, входного и выходного:

  1.  

Ввод имени начального файла

Рис. 1 Предложение ввести имя файла

Рис. 1.2 При нахождении первого файла программой, просьбы ввести имя второго файла


Рис. 1.3 При успешном выполнении операции, выводится результат работы

Как видно на рисунке, после вводы имен файлов, следует вывод начального вида строк в первом текстовом файле. Затем вывод вида строк, которые были выравнены по центру.

  1.  

Результат работы в текстовых файлах:

Рис. 2.1 Начальный вид текста в первом текстовом файле

Рис. 2.2 Требуемый результат, центрированный текст

во втором текстовом файле

  1.  

В случае неправильного ввода файла с требуемым расширением, или не нахождения файла:

Рис. 3.1 Неправильный ввод


Рис. 3.2 Файл не найден

3 Анализ работы

Программа работает исправно и выполняет все действия указанные в поставленной задаче. Была разработка алгоритмического и программного обеспечения для работы с текстовыми файлами.


ЛИСТИНГ ПРОГРАММЫ

#include <fstream.h>

#include <conio.h>

#include <iostream.h>

#include <vcl.h>

void main(void)

{

char *pr = new char[100];//строка из файла

string str;

string spc;//строка добавляемых пробелов

char *name1=new char[80];//имена файлов

char *name2=new char[80];

int i,//счетчик

   n,  //количество добавляемых пробелов

   max;//максимальная длина строки файла

 SetConsoleCP(1251);//установка поддержки русских букв

 SetConsoleOutputCP(1251);

 cout << "Vvedite imya vhodnogo faila : ";

 cin >> name1;

 ifstream f;

 f.open(name1,fmOpenRead);//открываем файл для чтения

 if (f.fail()) //если файла нет

   {

     cout << "Fail ne nayden\n";

     getch();

     return;

   }

 cout << "Vvedite imya vahodnogo faila :  ";

 cin >> name2;

 ofstream g(name2);//открыли файл для записи

 max=0;//максимальная длина строки начальная

 cout << "Ishodnyy tekst" << "\n";

 while (! f.eof())  //пока не конец файла

   {

     f.getline(pr,100);//читаем строку

     str=pr;

     cout << str << "\n";//вывод на экран

     if (str.length()>max) max=str.length();//если длина строки больше, переопределяем максимум

   }

 f.close();//закрыли файл

 f.clear(0);//очистили буфер

 f.open(name1,fmOpenRead);  //вновь открыли для чтения

 cout << "Centrirovannyy tekst" << "\n";

 while (! f.eof()) //пока не конец файла

   {

     f.getline(pr,100);//читаем строку

     str=pr;

     n=(max-str.length())/2;//определяем количество пробелов

     spc=" ";//формирование строки пробелов

     for (i=1;i<=n;i++)

       spc=spc+" ";//добавляем пробел

     str=spc+str;//добавляем пробелы в начало строки

     cout << str << "\n";//вывод на экран

     str=str+"\n";

     g.write(str.c_str(),str.length());//запись в файл

   }

 f.close();//закрыли файлы

 g.close();

 getch();

}


ЗАКЛЮЧЕНИЕ

Программа полностью реализована для работ с файлами, и работы с содержанием самого файла, которое выводится в консоль С++ Builder 6. Подробно изучил навыки работы с файлами, функции ввода и вывода на экран, функции считывания и записи данных в файлы. В составлении программы были использованы циклические операторы, операторы условия и другие. Использована функция для нахождения длины строки length. Программа читает текст из разбитого на строки текстового файла, и записывает в выходной файл считанный раннее текст с выравниванием по центру.


СПИСОК ЛИТЕРАТУРЫ

  1.  Джаррод Холингворт, Боб Сворт, Марк Кэшмэн, Поль Густавсон Borland C++ Builder 6. Руководство разработчика = Borland C++ Builder 6 Developer’s Guide. — М.: «Вильямс», 2004. — С. 976
  2.  Страуструп Б. Программирование: принципы и практика использования C++, исправленное издание = Programming: Principles and Practice Using C++. — М.: «Вильямс», 2011. — С. 1248
  3.  Керниган Б., Ритчи Д. Язык программирования Си = The C programming language. — 2-е изд. — М.: Вильямс, 2007. — С. 304. 
  4.  Герберт Шилдт. C: полное руководство, классическое издание = C: The Complete Reference, 4th Edition. — М.: Вильямс, 2010. — С. 704.
  5.  Кочан С. Программирование на языке Си = Programming in C. — 3-е изд. — М.: Вильямс, 2006. — С. 496. 


 

А также другие работы, которые могут Вас заинтересовать

55036. Портфоліо учня - незамінний порадник учителя, який є носієм інформації про учня як особистість 283 KB
  Контроль та оцінювання навчальних досягнень школярів - тема актуальна, і тому постійно обговорюється. Зазвичай увага зосереджується навколо форм та методів зовнішнього контролю, тобто того, що здійснює вчитель. А як, у якій формі подається учню зростання рівня його знань?
55037. Адаптация молодых специалистов на предприятии ШЧ-5 745 KB
  Повышение роли предприятий-работодателей в системе профессиональной подготовки управленческих кадров. Обучение по охране труда и проверка знаний требований охраны труда работников рабочих профессий при профессиональной подготовке, переподготовке и обучении их вторым профессиям...
55038. Портфоліо як одна з форм оцінювання індивідуальних досягнень учнів початкових класів 214.5 KB
  Відсутність оцінок протягом першого і другого років навчання в початковій школі в жодному разі не повинно розумітися як повна відмова від системи контролю і оцінки з боку вчителя. Навпаки, оцінка замінюється розгорнутою системою взаємин, співпрацею дитини і дорослого у контрольно-оціночної діяльності, яка будується на змістовно-оціночної основі.
55039. ПОРТРЕТ УЧИТЕЛЯ В РІЗНИХ РАКУРСАХ 73 KB
  Тому для одних Учитель це жива конкретна людина симпатична чи не дуже, як поталанило, а для інших - це певна міфологема одиниця легенди, яка необхідна часом людині для самозбагачення, самовиправдання, самоствердження чи просто для того, щоб пам’ять про чарівну частину життя дитинство та молодість...
55040. До 70-річчя Перемоги 144 KB
  Масовий подвиг народу, воїнів Армії і Флоту у двобої з фашистськими загарбниками, все героїчне минуле Батьківщини – вдячна і корисна нива для виховання підростаючого покоління. В наші дні героїко-патріотичне виховання набуває особливого звучання нині, в період відзначення річниць видатних перемог у Великій Вітчизняній війні і підготовки до 70-річчя Великої Перемоги.
55041. ПЕДАГОГІЧНІ ІННОВАЦІЇ ЯК РЕЗУЛЬТАТ ТВОРЧОГО ПОШУКУ ПЕДАГОГА 7.77 MB
  З огляду на важливість і актуальність поставлених перед освітою завдань, ми часто використовуємо інноваційні технології навчання, що дозволяють істотно активізувати розумову та пізнавальну діяльність студентів, підвищити інтерес до дисципліни.
55042. Пошук інформації в Internet. Пошукові системи 614.5 KB
  Мета: ознайомити із засобами пошуку інформації в Інтернеті принципами функціонування вебкаталогів та пошукових систем; навчити стратегії пошуку інформації; виховувати інформаційну культуру учнів уважність дисциплінованість прищеплювати навички групової роботи співробітництва.
55043. Объекты, цели, методы государственного регулирования экономики 19.59 KB
  Продажа государственной собственности частным физическим и юридическим лицам позволяет: уменьшить дефицит бюджета, пополнить его доходами и увеличить средства, направляемые в другие сектора экономики; расширить сферу действия рыночного механизма и развить конкурентную среду; привлечь частный капитал в совместный с государством бизнес
55044. Використання інформаційно-комунікаційних технологій на уроках української мови та літератури 242.5 KB
  Комп’ютерна презентація на уроках української мови та літератури. Це уможливлює: удосконалення методології і стратегії добору змісту методів і організаційних форм навчання що відповідають задачам розвитку особистості того кого навчають у сучасних умовах інформатизації суспільства; створення методичних систем навчання орієнтованих на розвиток інтелектуального потенціалу того кого навчають на формування умінь самостійно здобувати знання здійснювати інформаційнонавчальну...