Добавил:
yermolenkoigor9
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:First_magistr / First_course_magistr / Train_to_Cplusplus / functions
.cpp#include "precompilator.h"
#include "functions.h"
void print_train(Ttrain *arr, int N)//распечатывает данные структуры
{
for(int i=0; i < N ; i++)
{
cout << endl;
cout << arr[i].NAZN << endl;
cout << arr[i].NUMR << endl;
cout << arr[i].TIME << endl;
}
}
void file_train(Ttrain *arr, int N)//считывание из файла
{
int i;
ifstream fp("structures.txt");
if(!fp)
cout << "file don't opened \n";
for(i = 0; i < N; i++)
{
fp >> arr[i].NAZN;
fp >> arr[i].TIME;
fp >> arr[i].NUMR;
}
print_train(arr,N);
fp.close();
}
void input_train(Ttrain *arr, int N)//ввод с клавиатуры
{
int i;
for(i = 0; i < N; i++)
{
cout << "Введите название пункта назначения \n";
cin >> arr[i].NAZN;
cout << "Введите время отправления \n";
cin >> arr[i].TIME;
cout << "Введите номер поезда \n";
cin >> arr[i].NUMR;
}
}
void preordering(Ttrain *arr, int N)//упорядочивание по алфавиту
{
int i, j;
Ttrain tmp;
ofstream fp("structuries.dat");//бинарный файл
if(!fp)
cout << "file don't opened \n";
cout << "\n До сортировки \n";
for(i = 0; i < N; i++)
cout << i+1 << " " << arr[i].NAZN << endl;
for (i = 1; i < N; i++)
for (j = 0; j < N - i; j++)
if (arr[j].NAZN > arr[j + 1].NAZN)//BUBBLE
{
tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
}
cout << "\n После сортировки \n";
print_train(arr,N);
for(int i=0; i < N ; i++)
{
fp.write((char*)&arr[i].NAZN, sizeof(arr[i].NAZN));//запись в бинарный файл
fp.write((char*)&arr[i].NUMR, sizeof(arr[i].NUMR));
fp.write((char*)&arr[i].TIME, sizeof(arr[i].TIME));
}
fp.close();
}
void search_train(Ttrain *arr, int N)//поиск по времени отправления
{
int i, sw = 1;
string s;
cout << "Введите время отправления для поиска \n";
cin >> s;
for(i = 0; i < N; i++)
if(arr[i].TIME > s)
{
cout << endl;
cout << "№" << arr[i].NUMR << endl;
cout << arr[i].NAZN << endl;
cout << arr[i].TIME << endl;
sw = 0;
}
if(sw) cout << "\nДанные отсутствуют\n";
}
void exit_prog(Ttrain *arr, int N)
{
cout << "\nВыход из программы ...\n";
exit(0);
}
void bin_train(Ttrain *arr, int N)//считывание из бинарного файла
{
int i, k;
string s, t;
ifstream fp ("structuries.dat");
if(!fp)
cout << "file don't opened \n";
for(i=0; i < N ; i++)
{
fp.read((char*)&s, sizeof(arr[i].NAZN));
fp.read((char*)&k, sizeof(arr[i].NUMR));
fp.read((char*)&t, sizeof(arr[i].TIME));
cout<<"///"<<endl;
cout << s << endl;
cout << k << endl;
cout << t << endl;
}
fp.close();
}
void bin_search_num(Ttrain *arr, int N)// поиск по номеру поезда
{
int i,k, num;
string s, t;
ifstream fp ("structuries.bin");
if(!fp)
cout << "file don't opened \n";
cout << "Введите номер поезда для поиска \n";
cin >> num;
for(i=0; i < N ; i++)
{
fp.read((char*)&s, sizeof(arr[i].NAZN));
fp.read((char*)&k, sizeof(arr[i].NUMR));
fp.read((char*)&t, sizeof(arr[i].TIME));
if(k == num)
break;
}
if(k != num)
cout << "No information in database\n";
else
cout<<arr[i].NAZN<<" "<<"№"<<arr[i].NUMR<<" "<<arr[i].TIME<<endl;
fp.close();
}
void bin_search(Ttrain *arr, int N)//считывание из бинарного файла по номеру записи
{
int k, num, ssize;
string s, t;
ifstream fp ("structuries.bin");
if(!fp)
cout << "file don't opened \n";
cout << "Введите номер записи для поиска \n";
cin >> num;
ssize = (num-1)*(sizeof(arr[0].NAZN)+sizeof(arr[0].TIME)+sizeof(arr[0].NUMR));
if(num <= R)
{
fp.seekg(ssize,std::ios::beg);//смещает указатель от начала файла на ssize байт
fp.read((char*)&s, sizeof(arr[0].NAZN));
fp.read((char*)&k, sizeof(arr[0].NUMR));
fp.read((char*)&t, sizeof(arr[0].TIME));
cout << s << endl;
cout << k << endl;
cout << t << endl;
}
else
cout << "Выход за пределы списка" << endl;
fp.close();
}
int menu(int max_menu) {
int i_menu;
cout << "\n\nВведите номер действия 1-" << max_menu << endl;
do
{
cout << "1 - Выход" << endl;
cout << "2 - Ввод элементов массива с клавиатуры" << endl;
cout << "3 - Показать расписание" << endl;
cout << "4 - Составление расписания (сортировка)" << endl;
cout << "5 - Считывание информации о поездах из файла" << endl;
cout << "6 - Проверка содержимого бинарного файла" << endl;
cout << "7 - Вывод информации о поездах по заданному времени" << endl;
cout << "8 - Поиск данных по номеру поезда" << endl;
cout << "9 - Поиск данных по номеру записи в бин.файле" << endl;
cout << endl;
cin >> i_menu;
}
while( (i_menu < 0) || (i_menu > max_menu));
return i_menu;
}
Соседние файлы в папке Train_to_Cplusplus