#include <conio.h>
#include <vector>
#include <fstream>
#include <iostream>
#include <iomanip>
using namespace std;
vector<char*>& arr = *new vector<char*>;
void print()
{
if(arr.size() % 6 != 0) arr.clear();
system("cls");
cout << " " << endl;
cout << " Фамилия СетевойАдрес Подключение ОбъемТрафика ДенегНаСчету НомерСчета " << endl;
cout << " " << endl;
for(int i = 0; i < arr.size(); i+=6)
cout
<< " " << setw(11) << arr[i]
<< " " << setw(16) << arr[i+1]
<< " " << setw(11) << arr[i+2]
<< " " << setw(12) << arr[i+3]
<< " " << setw(12) << arr[i+4]
<< " " << setw(10) << arr[i+5]
<< " " << endl << endl;
cout << endl;
}
void sort()
{
for(int j = 6; j < arr.size(); j+=6)
for(int i = 6; i < arr.size(); i+=6)
{
__int64 t1, t2;
int a1,b1,c1,d1, a2,b2,c2,d2;
sscanf(arr[i-5], "%d.%d.%d.%d", &a1, &b1, &c1, &d1);
sscanf(arr[i+1], "%d.%d.%d.%d", &a2, &b2, &c2, &d2);
t1 = (__int64)d1 + (__int64)c1 * 1000 + (__int64)b1 * 1000000 + (__int64)a1 * 1000000000;
t2 = (__int64)d2 + (__int64)c2 * 1000 + (__int64)b2 * 1000000 + (__int64)a2 * 1000000000;
if(t1 > t2)
{
swap(arr[i-6], arr[i]);
swap(arr[i-5], arr[i+1]);
swap(arr[i-4], arr[i+2]);
swap(arr[i-3], arr[i+3]);
swap(arr[i-2], arr[i+4]);
swap(arr[i-1], arr[i+5]);
}
}
}
void load()
{
arr.clear();
ifstream inp("base.txt");
while(!inp.eof())
{
char* temp = new char[256];
inp.getline(temp, 256);
arr.push_back(temp);
}
inp.close();
}
void save()
{
ofstream out("base.txt", ios_base::app);
char temp[256];
cout << "Введите фамилию: ";
cin >> temp;
cout << "Введите IP (a b c d): ";
short a, b, c, d;
cin >> a >> b >> c >> d;
cout << "Введите Дату Подключения (dd mm yy): ";
short dd, mm, yy;
cin >> dd >> mm >> yy;
cout << "ОбъемТрафика: ";
int traf; cin >> traf;
cout << "ДенегНаСчету: ";
int deneg; cin >> deneg;
cout << "НомерСчета: ";
int num; cin >> num;
if(arr.size() >= 6) out << endl;;
out << temp << endl;
out << a << "." << b << "." << c << "." << d << endl;
out << dd << "." << mm << "." << yy << endl;
out << traf << endl;
out << deneg << endl;
out << num;
out.close();
}
void del()
{
if(arr.size() < 6) return;
ofstream out("base.txt");
for(int i = 0; i < arr.size() - 6; i++)
{
out << arr[i];
if(i != arr.size()-7) out << endl;
}
out.close();
}
void find()
{
cout << "Введите номер счёта: ";
int f;
cin >> f;
char temp[256];
sprintf(temp, "%d", f);
for(int i = 5; i < arr.size(); i+=6)
if(strcmp(temp, arr[i]) == 0)
{
cout << "Найдено" << endl;
_getch();
return;
}
cout << "Не найдено" << endl;
_getch();
return;
}
int main()
{
setlocale(LC_ALL, ".1251");
load();
int c = 0;
while(c != 48)
{
print();
cout << "Возможные действия:" << endl;
cout << "0-Выход. 1-Добавить запись. 2-Удалить последню запись. 3-Поиск. 4-Сортировка" << endl << endl;;
c = _getch();
switch(c)
{
case 49: save(); load(); break;
case 50: del(); load(); break;
case 51: find();
case 52: sort(); break;
}
}
return 0;
}