Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <vector>
- #include <cstdio>
- #include <Windows.h>
- #include <string>
- //#include "FunctionsHeader.h"
- using namespace std;
- struct Cars
- {
- string Mark;
- int Number;
- string Owner;
- int Specifications;
- };
- ostream& operator<<(ostream& os,const Cars& i)
- {
- os << i.Mark<<" " << i.Number<< " " <<i.Owner<<" "<<i.Specifications<<'\n';
- return os;
- }
- istream& operator >> (istream& is,Cars& j)
- {
- is>>j.Mark>>j.Number>>j.Owner>>j.Specifications;
- return is;
- }
- ostream& operator<<(ostream& os, vector <Cars>& ii)
- {
- for(auto& item : ii)
- {
- os<<item;
- }
- return os;
- }
- void PutBase (vector <Cars>& BaseOfCars,int N,Cars& cars)
- {
- for (int i = 0; i < N; i++)
- {
- cout << "Введите марку " << endl;
- while (cin.get() != '\n');
- getline(cin, cars.Mark);
- cout << "Введите регистрационный номер (3 цифры) " << endl;
- cin >> cars.Number;
- cout << "Введите ФИО владельца " << endl;
- while (cin.get() != '\n');
- getline(cin, cars.Owner);
- cout << "Введите технические характеристики (3 цифры) " << endl;
- cin >> cars.Specifications;
- BaseOfCars.push_back(cars);
- }
- }
- void WriteAllInFile(vector <Cars> BaseOfCars)
- {
- ofstream file("BaseOfCars.txt");
- file << BaseOfCars << '\n';
- file.close();
- }
- void CreateBaseOfOwners(vector <Cars> BaseOfCars)
- {
- ofstream file("BaseOfOwners.txt");
- for (int i = 0; i < BaseOfCars.size(); i++)
- {
- file << BaseOfCars[i].Owner << " " << BaseOfCars[i].Mark << '\n';
- }
- file.close();
- }
- int main()
- {
- SetConsoleCP(1251);
- SetConsoleOutputCP(1251);
- cout << "Выберете вариант заполнения\n" << "1: Ввести с клавиатуры\n2: Использовать готовую базу\n";
- int HowToPut;
- cin >> HowToPut;
- vector <Cars> BaseOfCars;
- switch(HowToPut)
- {
- case 1:
- {
- int N;
- cout << "Введите количество автомобилей " << endl;
- cin >> N;
- Cars cars;
- PutBase (BaseOfCars,N,cars);
- }
- break;
- case 2:
- {
- BaseOfCars.push_back({"Toyota",312,"Вольсикий А.А.",101});
- BaseOfCars.push_back({"Honda",111,"Нестеров М.Ю.",102});
- BaseOfCars.push_back({"Kia",112,"Астахова И.А.",103});
- BaseOfCars.push_back({"Subaru",241,"Гривина Т.М.",104});
- BaseOfCars.push_back({"Skoda",500,"Абстракт К.Л.",105});
- BaseOfCars.push_back({"Toyota",102,"Кашин Д.В.",106});
- }
- break;
- default:
- cout << "INPUT ERROR \n";
- break;
- }
- WriteAllInFile(BaseOfCars);
- system("cls");
- cout << "Выберете, что вам нужно сделать: \n";
- cout<<"\n";
- cout<<" |-----|-------------------------------------------------------------------|\n";
- cout<<" | 1 |Вывести количество машин марки по запросу: |\n";
- cout<<" |-----|-------------------------------------------------------------------|\n";
- cout<<" | 2 |Сформировать файл, содержащий ФИО владельца и марку его автомобиля |\n";
- cout<<" |-----|-------------------------------------------------------------------|\n";
- cout<<" | 3 |Добавить запись в файл |\n";
- cout<<" |-----|-------------------------------------------------------------------|\n";
- cout<<" | 4 |Удалить все записи по номеру автомобиля |\n";
- cout<<" |-----|-------------------------------------------------------------------|\n";
- cout<<" | 5 |Корректировка файла |\n";
- cout<<" |-----|-------------------------------------------------------------------|\n";
- cout<<"\n";
- int choice;
- cin >> choice;
- switch(choice)
- {
- case 1:
- {
- /* map <string MarkType, int Count> List;
- int Count = 0;
- for (int i = 0; i < BaseOfCars.size(); i++)
- {
- if(List.first == BaseOfCars[i].Mark)
- {
- List.second = Count++;
- }
- else
- {
- List.insert(make_pair(BaseOfCars[i].Mark, Count));
- }
- }*/
- cout << "Введите марку, чтобы узнать количество автомобилей \n";
- string TempMark;
- int counter = 0;
- cin>>TempMark;
- for (int i = 0; i < BaseOfCars.size(); i++)
- {
- if (TempMark == BaseOfCars[i].Mark)
- {
- counter++;
- }
- }
- cout << "Количество автомобилей марки " << TempMark << " равно " << counter << '\n';
- }
- break;
- case 2:
- {
- CreateBaseOfOwners(BaseOfCars);
- }
- break;
- case 3:
- {
- cout << "Введите количество записей, которые нужно добавить\n";
- int N;
- cin >> N;
- for (int i =0; i < N; i++)
- {
- cout << "Введите марку " << endl;
- while (cin.get() != '\n');
- getline(cin, BaseOfCars[i].Mark);
- cout << "Введите регистрационный номер " << endl;
- cin >> BaseOfCars[i].Number;
- cout << "Введите ФИО владельца " << endl;
- while (cin.get() != '\n');
- getline(cin, BaseOfCars[i].Owner);
- cout << "Введите технические характеристики (3 числа) " << endl;
- cin >> BaseOfCars[i].Specifications;
- }
- fstream file;
- file.open("BaseOfCars.txt", fstream::in | fstream:: app);
- for (int i = 0; i < N;i++)
- {
- file << BaseOfCars[i]<< '\n';
- }
- file.close();
- }
- break;
- case 4:
- {
- cout << "Исходная база данных: \n";
- cout << BaseOfCars;
- cout << "Введите номер автомобиля, данные о котором нужно удалить \n";
- int NumberToDelete;
- cin>>NumberToDelete;
- auto size = BaseOfCars.size();
- for (int i = 0; i < BaseOfCars.size(); i++)
- {
- if (BaseOfCars[i].Number == NumberToDelete)
- {
- BaseOfCars.erase(BaseOfCars.begin() + i);
- size = BaseOfCars.size();
- }
- }
- WriteAllInFile(BaseOfCars);
- cout << "База данных после корректировки(удаления)\n\n" << BaseOfCars;
- }
- break;
- case 5:
- {
- cout << "Исходные данные \n";
- cout << BaseOfCars << '\n';
- string ChangeMarkOwner;
- cout << "Введите ФИО владельца, данные чьей машины нужно изменить " << endl;
- while (cin.get() != '\n');
- getline(cin, ChangeMarkOwner);
- for (int i = 0; i < BaseOfCars.size(); i++)
- {
- if (BaseOfCars[i].Owner == ChangeMarkOwner)
- {
- cout << "Введите марку " << endl;
- getline(cin, BaseOfCars[i].Mark);
- }
- }
- WriteAllInFile(BaseOfCars);
- cout << BaseOfCars << endl;
- }
- break;
- default:
- cout << "INPUT ERROR \n";
- break;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement