Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_WARNINGS
- #include <iostream>
- #include <fstream>
- using namespace std;
- struct client {
- char name[40]; // имя клиента
- char phone_number[20]; // номер телефона
- int client_id; // id клиента
- int personal_discount; // размер скидки
- int regular_customer; // постоянный покупатель (да / нет)
- };
- class client_base {
- public:
- client_base() {
- ifstream fin;
- fin.open("date.bin", ios::binary);
- if (!fin.is_open()) {
- cout << "Ошибка открытия файла" << endl;
- }
- else {
- fin.read((char*)&clients_number, sizeof(int));
- fin.read((char*)&clients_base_size, sizeof(int));
- clients = new client[clients_base_size];
- fin.read((char*)clients, clients_number * sizeof(client));
- fin.close();
- }
- }
- void new_client(const char* name, const char* phone_number, const int client_id, const int personal_discount, const int regular_customer) {
- if (clients_number == clients_base_size) {
- client* temp = new client[clients_base_size * 2];
- for (int i = 0; i < clients_number; i++) {
- temp[i] = clients[i];
- }
- delete[] clients;
- clients = temp;
- clients_base_size *= 2;
- }
- strcpy(clients[clients_number].name, name);
- strcpy(clients[clients_number].phone_number, phone_number);
- clients[clients_number].client_id = client_id;
- clients[clients_number].personal_discount = personal_discount;
- clients[clients_number].regular_customer = regular_customer;
- clients_number++;
- }
- void del_client(const char* name) {
- for (int i = 0; i < clients_number; i++) {
- if (!strcmp(clients[i].name, name)) {
- for (int j = i; j < clients_number - 1; j++) {
- clients[j] = clients[j + 1];
- }
- i--; // на случай идущих подряд клиентов с одинаковым именем (иначе второго перескакивает)
- clients_number--;
- }
- }
- }
- void find_client(const char* name) const {
- for (int i = 0; i < clients_number; i++) {
- if (!strcmp(clients[i].name, name)) {
- cout << clients[i].name << ": номер " << clients[i].phone_number << ", id " << clients[i].client_id << ", скидка " << clients[i].personal_discount << " %";
- if (clients[i].regular_customer) {
- cout << ", постоянный покупатель";
- }
- cout << endl;
- }
- }
- cout << endl;
- }
- void show_all_clients() const {
- ifstream fin;
- fin.open("date.bin", ios::binary);
- char a[40];
- char b[40];
- int c, d, e;
- if (!fin.is_open()) {
- cout << "Ошибка открытия файла" << endl;
- }
- else {
- for (int i = 0; i < clients_number; i++) {
- fin.read(a, 40);
- fin.read(b, 40);
- fin.read((char*)&c, sizeof(int));
- fin.read((char*)&d, sizeof(int));
- fin.read((char*)&e, sizeof(int));
- cout << a << " " << b << " " << c << " " << d << " " << e << endl;
- }
- fin.close();
- }
- }
- void show_regular_clients() const {
- ifstream fin;
- fin.open("date.bin", ios::binary);
- char a[40];
- char b[40];
- int c, d, e;
- if (!fin.is_open()) {
- cout << "Ошибка открытия файла" << endl;
- }
- else {
- for (int i = 0; i < clients_number; i++) {
- fin.read(a, 40);
- fin.read(b, 40);
- fin.read((char*)&c, sizeof(int));
- fin.read((char*)&d, sizeof(int));
- fin.read((char*)&e, sizeof(int));
- if (e) {
- cout << a << " " << b << " " << c << " " << d << " " << e << endl;
- }
- }
- fin.close();
- }
- }
- ~client_base() {
- ofstream fout;
- fout.open("date.bin", ios::binary);
- if (!fout.is_open()) {
- cout << "Ошибка открытия файла" << endl;
- }
- else {
- fout.write((char*)&clients_number, sizeof(int));
- fout.write((char*)&clients_base_size, sizeof(int));
- fout.write((char*)clients, clients_number * sizeof(client));
- fout.close();
- }
- delete[] clients;
- }
- private:
- int clients_number; // количество клиентов
- int clients_base_size; // размер базы
- client* clients; // массив клиентов
- };
- int main() {
- setlocale(LC_ALL, "ru");
- client_base my_base;
- my_base.new_client("иван", "+79111111111", 1129, 10, 1);
- my_base.new_client("вася", "+79111111222", 1130, 5, 0);
- my_base.new_client("олег", "+79111111333", 1131, 15, 1);
- my_base.new_client("мария", "+79111111444", 1132, 10, 0);
- my_base.new_client("галя", "+79111111555", 1133, 20, 1);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement