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

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

Рубрика Программирование, компьютеры и кибернетика
Вид контрольная работа
Язык русский
Дата добавления 24.09.2012
Размер файла 51,4 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Содержание

1. Практическое задание

1.1 Цель

1.2 Техническое задание (конкретный вариант)

1.3 Структура программы

1.4 Таблица глобальных переменных

Исходные тексты программы

Приложение А

1. Практическое задание

1.1 Цель

1) Целью занятий является освоение методов работы с бинарными и текстовыми файлами,

освоение алгоритма удаления данных из бинарного файла.

2) Освоение методов внутренней сортировки.

3) Освоение приемов отладки программ, выполняющих сортировку данных

4) Приобретение навыков разработки многомодульных программ.

5) Освоение методов разработки программы, управление которыми осуществляется с помощью меню.

6) Освоение препроцессорных средств управления ходом компиляции программы.

1.2 Техническое задание

бинарный текстовый алгоритм компиляция многомодульный программа

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

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

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

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

3) Разработать многомодульную программу, включающую:

- заголовочный файл, с объявлением внешних переменных и прототипов используемых пользовательских функций;

- библиотеку функций пользователя - файл с определениями функций;

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

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

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

1.3 Структура программы

Размещено на http://www.allbest.ru/

1.4 Таблица глобальных переменных

Таблица 1 -- Глобальные переменные

Название

Тип

Назначение

fin,in

ifstream

входной файловый поток

fout,out

ofstream

выходной файловый поток

io

fstream

двунаправленный файловый поток

z

int

размер структуры в байтах

sh[]

char

массив указателей для хранения строк шапки таблицы

st

Stud

переменная структурного типа для чтения и записи

Таблица 2 -- Состав структуры «stud»

fio

Массив символов - имя студента

nz

Массив символов - номер зачетки

gr

Массив символов - номер группы

stip

Целое число- размер стипендии

bal

Целое число - средний балл

Приложение А

prakt1.cpp

#include <iostream.h>

#include <iomanip.h>

#include <conio.h>

#include <stdlib.h>

#include <stdio.h>

#include <fstream.h>

#include <string.h>

struct ekskurs

{

ekskurs *next;

char name[15];

char place[13];

double time;

double price;

char transport[80];

} eks;

fstream finout;

ifstream fin;

ofstream fout;

int stick;

int z=sizeof(ekskurs);

char *sh[]={

" Экскурсии",

"г==============T============T===================T===========T===========¬",

"¦ Наименование ¦ Страна ¦ Продолжительность ¦ Стоимость ¦ Транспорт ¦",

"¦ ¦ ¦ ¦ ¦ ¦",

"¦==============+============+===================+===========+===========¦",

"L==============¦============¦===================¦===========¦===========-"

};

void filtr(char *a), psh(ostream&), sozdat(), dat2bin(),

udal(), cht(), bin2dat(), bin2res();

ostream &operator<< (ostream&, ekskurs &);

istream &operator>> (istream&, ekskurs &);

void main()

{

clrscr();

// sozdat();

dat2bin();

udal();

bin2dat();

bin2res();

}

void filtr(char *a)

{

int i, l=strlen(a),j;

for (i=0; i<l;i++)

if (a[i]!=' '&&a[i]!='\t')

for (j=l-1;j>=i;j--)

if(a[j]!=' '&&a[j]!='\n')

{

for (l=i; l<=j; l++)

a[l-i]=a[l];

a[l-i]='\0';

goto m;

}

a[0]=0;

m:;

}

void psh(ostream& out)

{

for (int i=0; i<5; i++) out << sh[i]<<endl;

}

void sozdat(char *filename)

{

stick=0;

fout.open(filename);

if (!fout)

{

cout <<endl<< "Ошибка открытия файла данных для записи";

exit(0);

}

int done=0;

char c;

do

{

clrscr();

psh(cout);

cin >> eks;

fout << eks;

cout << "Будем еще вводить? (Y\y - да, остальное - нет)";

c=getch();

if(c!='Y'&&c!='y') done=1;

} while (!done);

fout.close();

}

void dat2bin()

{

fin.open("prakt1.dat");

if (!fin)

{

cout <<endl<< "Ошибка открытия файла данных для чтения";

exit(1);

}

fout.open("prakt1.bin", ios::binary);

if (!fout)

{

cout <<endl<< "Ошибка открытия бинарного файла для записи";

exit(2);

}

while (fin.peek()!=EOF)

{

fin >> eks;

fout.write((char*)&eks,z);

}

fin.close();

fout.close();

}

void udal()

{

remove ("prakt1.res");

bin2res();

finout.open("prakt1.bin", ios::in|ios::out|ios::binary);

if (!finout)

{

cout <<endl<< "Ошибка открытия бинарного файла для чтения\записи";

exit(3);

}

fin.open("prakt1.del");

if (!fin)

{

cout <<endl<< "Ошибка открытия файла с данными удаления для чтения";

exit(4);

}

fout.open("prakt1.res", ios::app);

if (!fout)

{

cout << "Ошибка открытия файла результатов"; exit(5);

}

char *todel=new char[80];

int found_to_del;

while (fin.peek()!=EOF)

{

fin.getline(todel,80);

filtr(todel);

if (!strcmp(todel, "")) fout << "Нет записи для удаления\n\n";

else

{

fout << "Ищем данные с полем \"Страна\" = \"" << todel << "\"\n";

found_to_del=0;

while (finout.peek()!=EOF)

{

finout.read ((char*)&eks, z);

if (!strcmp(eks.place, todel))

{

fout << eks;

strcpy(eks.place,"DELETED");

finout.seekp(-z, ios::cur);

finout.write((char*)&eks,z);

found_to_del++;

}

}

if (!found_to_del) fout << "Нет совпадений\n\n";

else fout << "Удалено записей: " << found_to_del << "\n\n";

finout.seekp(0);

}

}

fin.close();

fout.close();

ekskurs *s=0;

ekskurs *stnew;

while (finout.peek()!=EOF)

{

finout.read((char*)&eks,z);

eks.next=0;

if (strcmp(eks.place,"DELETED"))

{

stnew = new (ekskurs);

*stnew = eks;

ekskurs * p, * q ;

p=s; q=0;

while (p)

{ q=p ; p=p->next ; };

if (q) q->next= stnew ;

else s = stnew;

}

}

finout.close();

fout.open("prakt1.bin", ios::binary);

if (!fout)

{

cout << "Ошибка открытия временного бинарного файла"; exit(7);

}

ekskurs * p ;

while (s)

{

p=s;

s=s->next;

eks=*p;

fout.write((char*)&eks,z);

delete p;

}

fout.close();

}

void bin2dat()

{

stick=0;

int count=0;

fin.open("prakt1.bin",ios::binary);

if (!fin)

{

cout <<endl<< "Ошибка открытия бинарного файла для чтения";

exit(5);

}

fout.open("prakt1.dat");

if (!fout)

{

cout <<endl<< "Ошибка открытия файла данных для записи";

exit(6);

}

while (fin.peek()!=EOF)

{

fin.read((char*)&eks,z) ;

fout << eks;

count++;

}

fin.close();

fout.close();

}

void bin2res()

{

stick=1;

int count=0;

fin.open("prakt1.bin",ios::binary);

if (!fin)

{

cout <<endl<< "Ошибка открытия бинарного файла для чтения";

exit(5);

}

fout.open("prakt1.res", ios::app);

if (!fout)

{

cout <<endl<< "Ошибка открытия файла данных для записи";

exit(6);

}

psh(fout);

while (fin.peek()!=EOF)

{

fin.read((char*)&eks,z) ;

fout << eks;

count++;

}

fout << sh[5] << "\nВсего "<<count<<" записей" <<"\n\n";

fin.close();

fout.close();

}

ostream &operator<< (ostream&out, ekskurs &ek)

{

char symb=' ';

if (stick) symb='¦';

out<< setiosflags(ios::left) << symb <<setw(14) << ek.name << symb

<<setw(12)<<ek.place << symb << setw(19)<<ek.time<<symb<< setw(11)

<<ek.price<<symb<<setw(11)<<ek.transport<<symb<<endl;

return out;

}

istream &operator>> (istream&in, ekskurs &ek)

{

in.getline(ek.name, 16); filtr(ek.name);

in.getline(ek.place,14); filtr(ek.place);

in >> ek.time >> ek.price;

in.getline(ek.transport,80); filtr(ek.transport);

return in;

}

prakt1.dat

Биг Бэн Англия 10 200 Б-737

Эльф. башня Франция 13 123 A-320

Пентагон США 23 4000 Б-747

Мин. Воды Россия 6 400 Икарус

Бол. Канйон США 30 6000 Б-767

Припять Украина 8 1313 Икарус

Колизей Италия 4 800 Б-240

prakt1.del

Англия

США

Франция

Замбия

prakt1.res

Данные до удаления

Экскурсии

г==============T============T===================T===========T===========¬

¦ Наименование ¦ Страна ¦ Продолжительность ¦ Стоимость ¦ Транспорт ¦

¦ ¦ ¦ ¦ ¦ ¦

¦==============+============+===================+===========+===========¦

¦Биг Бэн ¦Англия ¦10 ¦200 ¦Б-737 ¦

¦Эльф. башня ¦Франция ¦13 ¦123 ¦A-320 ¦

¦Пентагон ¦США ¦23 ¦4000 ¦Б-747 ¦

¦Мин. Воды ¦Россия ¦6 ¦400 ¦Икарус ¦

¦Бол. Канйон ¦США ¦30 ¦6000 ¦Б-767 ¦

¦Припять ¦Украина ¦8 ¦1313 ¦Икарус ¦

¦Колизей ¦Италия ¦4 ¦800 ¦Б-240 ¦

L==============¦============¦===================¦===========¦===========-

Всего 7 записей

Ищем данные с полем "Страна" = "Англия"

¦Биг Бэн ¦Англия ¦10 ¦200 ¦Б-737 ¦

Удалено записей: 1

Нет записи для удаления

Ищем данные с полем "Страна" = "США"

¦Пентагон ¦США ¦23 ¦4000 ¦Б-747 ¦

¦Бол. Канйон ¦США ¦30 ¦6000 ¦Б-767 ¦

Удалено записей: 2

Ищем данные с полем "Страна" = "Франция"

¦Эльф. башня ¦Франция ¦13 ¦123 ¦A-320 ¦

Удалено записей: 1

Ищем данные с полем "Страна" = "Замбия"

Нет совпадений

Данные после удаления

Экскурсии

г==============T============T===================T===========T===========¬

¦ Наименование ¦ Страна ¦ Продолжительность ¦ Стоимость ¦ Транспорт ¦

¦ ¦ ¦ ¦ ¦ ¦

¦==============+============+===================+===========+===========¦

¦Мин. Воды ¦Россия ¦6 ¦400 ¦Икарус ¦

¦Припять ¦Украина ¦8 ¦1313 ¦Икарус ¦

¦Колизей ¦Италия ¦4 ¦800 ¦A-240 ¦

L==============¦============¦===================¦===========¦===========-

Всего 3 записей

Размещено на Allbest.ru


Подобные документы

  • Проектирование программ в среде Рascal с интерфейсом типа "Меню". Разработка и отладка программы сортировки массива данных. Освоение методов проектирования Pascal-программ с использованием графических процедур и функций из стандартного модуля Graph.

    контрольная работа [581,1 K], добавлен 16.01.2015

  • Средства языка программирования Delphi. Структурные типы данных. Строковые переменные, массивы, множества, файлы. Механизм классов в C++. Интерфейсный и описательный обзоры классов в Delphi. Работа с текстовыми и бинарными файлами прямого доступа.

    курсовая работа [990,4 K], добавлен 07.08.2012

  • Основные виды загрузки. Приемы работы в ТР: процесс отладки. Команды редактирования отладки программ с помощью командного меню Pascal. Составление программы с использованием простых операторов ввода, вывода. Сравнения с текстовыми и числовыми условиями.

    отчет по практике [134,7 K], добавлен 02.09.2010

  • Программы для делопроизводства, обмена информацией, деловой графики и презентаций. Работа с текстовыми и табличными процессорами, с системами управления базами данных на примере программы Microsoft Office Word. Описание основных функций программ.

    курсовая работа [1,0 M], добавлен 12.01.2015

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

    контрольная работа [964,3 K], добавлен 23.11.2014

  • Освоение функций работы со структурами данных и файлами. Разработка программного обеспечения для создания, обработки сведений о сотрудниках учреждения. Реализация алгоритма программы в среде Microsoft Visual Studio 2010. Изучение руководства пользователя.

    курсовая работа [3,3 M], добавлен 28.08.2012

  • Использование различных программ Microsoft Office для создания таблиц. Системы управления базами данных (СУБД) как специальные программные средства, предназначенные для работы с файлами баз данных. Возможности работы с табличными данными в Excel.

    контрольная работа [21,6 K], добавлен 20.02.2010

  • Изучение составляющих этапов разработки программ, процесса их тестирования, отладки и документирования в контексте курса обучения начинающих программистов. Теоретический анализ постановки задачи и модели программы, создания текста, семантической отладки.

    курсовая работа [29,2 K], добавлен 28.11.2010

  • Освоение сервисной системы управления базами данных Microsoft SQL. Разработка базы данных "Служба АТС" в среде Microsoft SQL Server Management Studio и создание запросов на языке SQL. Апробация инфологической модели "сущность - связь" базы данных.

    курсовая работа [2,9 M], добавлен 29.06.2015

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

    курсовая работа [1,9 M], добавлен 18.12.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.