Advertisement
Dinmrmr

List

Mar 8th, 2017
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.57 KB | None | 0 0
  1. #include <iostream>
  2. //#include <clocale>
  3. #include <cstdlib>
  4. #include <fstream>
  5. #include <list>
  6. //#include <Windows.h>
  7. #include <cstring>
  8.  
  9. using namespace std;
  10.  
  11. #define CHAR_LEN 255
  12.  
  13. // Структура - пользователь
  14. typedef struct user
  15. {
  16.     int id,
  17.         status;
  18.     char name[CHAR_LEN],
  19.         password[CHAR_LEN];
  20. } user_t;
  21.  
  22. int main()
  23. {
  24.     //Устанавливаем кодировку ввода-вывода для корректного отображения кириллицы
  25.     system("chcp 1251");
  26.  
  27.     int userCount;
  28.     cout << "Какое количество пользователей вы хотите добавить в систему: ";
  29.     cin >> userCount;
  30.     user_t tempUser;
  31.     list<user_t> userList;
  32.  
  33.     //Ввод данных
  34.     cout << "ВВОД ДАННЫХ" << endl;
  35.     for (int i = 0; i < userCount; i++)
  36.     {
  37.         //Заполняем поля временного объекта структуры
  38.         cout << "ID:     ";
  39.         cin >> tempUser.id;
  40.         cout << "Статус: ";
  41.         cin >> tempUser.status;
  42.         cout << "Логин:  ";
  43.         cin >> tempUser.name;
  44.         cout << "Пароль: ";
  45.         cin >> tempUser.password;
  46.         cout << "\n";
  47.         //Записываем временный объект в связный список
  48.         userList.push_back(tempUser);
  49.     }
  50.  
  51.     //Вывод введенных на консоль данных
  52.     cout << "ВВЕДЕННЫЕ ДАННЫЕ" << endl;
  53.     for (list<user_t>::iterator it = userList.begin(); it != userList.end(); ++it)
  54.         cout << "ID:     " << it->id << '\n'
  55.         << "Статус: " << it->status << "\n"
  56.         << "Логин:  " << it->name << '\n'
  57.         << "Пароль: " << it->password << '\n'
  58.         << "----------" << endl;
  59.  
  60.     // Запись данных из связного списка в двоичный файл
  61.     ofstream output_file("users.dat", ios::binary);
  62.     for (list<user_t>::iterator it = userList.begin(); it != userList.end(); ++it)
  63.     {
  64.         output_file.write((char*)&it->id, sizeof(it->id));
  65.         output_file.write((char*)&it->status, sizeof(it->status));
  66.         output_file.write((char*)&it->name, sizeof(it->name));
  67.         output_file.write((char*)&it->password, sizeof(it->password));
  68.        
  69.     }
  70.     output_file.close();
  71.  
  72.     // Чтение из двоичного файла в связный список
  73.     user_t readUser;
  74.     list<user_t> readUserList;
  75.     ifstream input_file("users.dat", ios::binary);
  76.     while (true)
  77.     {
  78.         input_file.read((char*)&readUser.id, sizeof(readUser.id));
  79.         input_file.read((char*)&readUser.status, sizeof(readUser.status));
  80.         input_file.read((char*)&readUser.name, sizeof(readUser.name));
  81.         input_file.read((char*)&readUser.password, sizeof(readUser.password));
  82.         if (input_file.eof())
  83.             break;
  84.         readUserList.push_back(readUser);
  85.     }
  86.     input_file.close();
  87.  
  88.     // Вывод данных считанных из файла
  89.     cout << "\nДАННЫЕ ИЗ ФАЙЛА" << endl;
  90.     for (list<user_t>::iterator it = readUserList.begin(); it != readUserList.end(); ++it)
  91.         cout << "ID:     " << it->id << '\n'
  92.         << "Статус: " << it->status << "\n"
  93.         << "Логин:  " << it->name << '\n'
  94.         << "Пароль: " << it->password << '\n'
  95.         << "----------" << endl;
  96.    
  97.     // Удаление элемента по ID
  98.     int temp;
  99.     cout << "\nВведите ID элемента, который вы хотите удалить: ";
  100.     cin >> temp;
  101.     for (list<user_t>::iterator it = readUserList.begin(); it != readUserList.end(); ++it)
  102.     {
  103.         if (it->id == temp)
  104.         {
  105.             readUserList.erase(it);
  106.             break;
  107.         }
  108.     }
  109.     cout << "\nИТОГОВЫЙ СПИСОК" << endl;
  110.     for (list<user_t>::iterator it = readUserList.begin(); it != readUserList.end(); ++it)
  111.         cout << "ID:     " << it->id << '\n'
  112.         << "Статус: " << it->status << "\n"
  113.         << "Логин:  " << it->name << '\n'
  114.         << "Пароль: " << it->password << '\n'
  115.         << "----------" << endl;
  116.  
  117.     // Удаление элемента по имени
  118.     char buff1[CHAR_LEN];
  119.     cout << "\nВведите имя элемента, который вы хотите удалить: ";
  120.     cin >> buff1;
  121.     for (list<user_t>::iterator it = readUserList.begin(); it != readUserList.end(); ++it)
  122.     {
  123.         //char buff2[CHAR_LEN] = it->name;
  124.         if (strcmp(it->name, buff1) == 0)
  125.         {
  126.             readUserList.erase(it);
  127.             break;
  128.         }
  129.     }
  130.     cout << "\nИТОГОВЫЙ СПИСОК" << endl;
  131.     for (list<user_t>::iterator it = readUserList.begin(); it != readUserList.end(); ++it)
  132.         cout << "ID:     " << it->id << '\n'
  133.         << "Статус: " << it->status << "\n"
  134.         << "Логин:  " << it->name << '\n'
  135.         << "Пароль: " << it->password << '\n'
  136.         << "----------" << endl;
  137.  
  138.     system("pause");
  139.     return 0;
  140. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement