Разработка программы управления бинарными и текстовыми данными
Освоение методов работы с бинарными и текстовыми файлами, освоение алгоритма удаления данных из них. Приемы отладки программ сортировки данных и навыков разработки многомодульных программ. Освоение препроцессорных средств управления ходом компиляции.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | контрольная работа |
Язык | русский |
Дата добавления | 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