Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- //#include <clocale>
- #include <cstdlib>
- #include <fstream>
- #include <list>
- //#include <Windows.h>
- #include <cstring>
- using namespace std;
- #define CHAR_LEN 255
- // Структура - пользователь
- typedef struct user
- {
- int id,
- status;
- char name[CHAR_LEN],
- password[CHAR_LEN];
- } user_t;
- int main()
- {
- //Устанавливаем кодировку ввода-вывода для корректного отображения кириллицы
- system("chcp 1251");
- int userCount;
- cout << "Какое количество пользователей вы хотите добавить в систему: ";
- cin >> userCount;
- user_t tempUser;
- list<user_t> userList;
- //Ввод данных
- cout << "ВВОД ДАННЫХ" << endl;
- for (int i = 0; i < userCount; i++)
- {
- //Заполняем поля временного объекта структуры
- cout << "ID: ";
- cin >> tempUser.id;
- cout << "Статус: ";
- cin >> tempUser.status;
- cout << "Логин: ";
- cin >> tempUser.name;
- cout << "Пароль: ";
- cin >> tempUser.password;
- cout << "\n";
- //Записываем временный объект в связный список
- userList.push_back(tempUser);
- }
- //Вывод введенных на консоль данных
- cout << "ВВЕДЕННЫЕ ДАННЫЕ" << endl;
- for (list<user_t>::iterator it = userList.begin(); it != userList.end(); ++it)
- cout << "ID: " << it->id << '\n'
- << "Статус: " << it->status << "\n"
- << "Логин: " << it->name << '\n'
- << "Пароль: " << it->password << '\n'
- << "----------" << endl;
- // Запись данных из связного списка в двоичный файл
- ofstream output_file("users.dat", ios::binary);
- for (list<user_t>::iterator it = userList.begin(); it != userList.end(); ++it)
- {
- output_file.write((char*)&it->id, sizeof(it->id));
- output_file.write((char*)&it->status, sizeof(it->status));
- output_file.write((char*)&it->name, sizeof(it->name));
- output_file.write((char*)&it->password, sizeof(it->password));
- }
- output_file.close();
- // Чтение из двоичного файла в связный список
- user_t readUser;
- list<user_t> readUserList;
- ifstream input_file("users.dat", ios::binary);
- while (true)
- {
- input_file.read((char*)&readUser.id, sizeof(readUser.id));
- input_file.read((char*)&readUser.status, sizeof(readUser.status));
- input_file.read((char*)&readUser.name, sizeof(readUser.name));
- input_file.read((char*)&readUser.password, sizeof(readUser.password));
- if (input_file.eof())
- break;
- readUserList.push_back(readUser);
- }
- input_file.close();
- // Вывод данных считанных из файла
- cout << "\nДАННЫЕ ИЗ ФАЙЛА" << endl;
- for (list<user_t>::iterator it = readUserList.begin(); it != readUserList.end(); ++it)
- cout << "ID: " << it->id << '\n'
- << "Статус: " << it->status << "\n"
- << "Логин: " << it->name << '\n'
- << "Пароль: " << it->password << '\n'
- << "----------" << endl;
- // Удаление элемента по ID
- int temp;
- cout << "\nВведите ID элемента, который вы хотите удалить: ";
- cin >> temp;
- for (list<user_t>::iterator it = readUserList.begin(); it != readUserList.end(); ++it)
- {
- if (it->id == temp)
- {
- readUserList.erase(it);
- break;
- }
- }
- cout << "\nИТОГОВЫЙ СПИСОК" << endl;
- for (list<user_t>::iterator it = readUserList.begin(); it != readUserList.end(); ++it)
- cout << "ID: " << it->id << '\n'
- << "Статус: " << it->status << "\n"
- << "Логин: " << it->name << '\n'
- << "Пароль: " << it->password << '\n'
- << "----------" << endl;
- // Удаление элемента по имени
- char buff1[CHAR_LEN];
- cout << "\nВведите имя элемента, который вы хотите удалить: ";
- cin >> buff1;
- for (list<user_t>::iterator it = readUserList.begin(); it != readUserList.end(); ++it)
- {
- //char buff2[CHAR_LEN] = it->name;
- if (strcmp(it->name, buff1) == 0)
- {
- readUserList.erase(it);
- break;
- }
- }
- cout << "\nИТОГОВЫЙ СПИСОК" << endl;
- for (list<user_t>::iterator it = readUserList.begin(); it != readUserList.end(); ++it)
- cout << "ID: " << it->id << '\n'
- << "Статус: " << it->status << "\n"
- << "Логин: " << it->name << '\n'
- << "Пароль: " << it->password << '\n'
- << "----------" << endl;
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement