Advertisement
Guest User

Untitled

a guest
Dec 7th, 2019
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.78 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <vector>
  4. #include <cstdio>
  5. #include <Windows.h>
  6. #include <string>
  7.  
  8. //#include "FunctionsHeader.h"
  9.  
  10. using namespace std;
  11.  
  12.  
  13. struct Cars
  14. {
  15. string Mark;
  16. int Number;
  17. string Owner;
  18. int Specifications;
  19. };
  20.  
  21. ostream& operator<<(ostream& os,const Cars& i)
  22. {
  23. os << i.Mark<<" " << i.Number<< " " <<i.Owner<<" "<<i.Specifications<<'\n';
  24. return os;
  25. }
  26.  
  27. istream& operator >> (istream& is,Cars& j)
  28. {
  29. is>>j.Mark>>j.Number>>j.Owner>>j.Specifications;
  30. return is;
  31. }
  32.  
  33. ostream& operator<<(ostream& os, vector <Cars>& ii)
  34. {
  35. for(auto& item : ii)
  36. {
  37. os<<item;
  38. }
  39. return os;
  40. }
  41.  
  42. void PutBase (vector <Cars>& BaseOfCars,int N,Cars& cars)
  43. {
  44.  
  45. for (int i = 0; i < N; i++)
  46. {
  47. cout << "Введите марку " << endl;
  48. while (cin.get() != '\n');
  49. getline(cin, cars.Mark);
  50.  
  51. cout << "Введите регистрационный номер (3 цифры) " << endl;
  52. cin >> cars.Number;
  53.  
  54. cout << "Введите ФИО владельца " << endl;
  55. while (cin.get() != '\n');
  56. getline(cin, cars.Owner);
  57.  
  58. cout << "Введите технические характеристики (3 цифры) " << endl;
  59. cin >> cars.Specifications;
  60.  
  61. BaseOfCars.push_back(cars);
  62.  
  63. }
  64. }
  65.  
  66. void WriteAllInFile(vector <Cars> BaseOfCars)
  67. {
  68. ofstream file("BaseOfCars.txt");
  69. file << BaseOfCars << '\n';
  70. file.close();
  71. }
  72.  
  73. void CreateBaseOfOwners(vector <Cars> BaseOfCars)
  74. {
  75. ofstream file("BaseOfOwners.txt");
  76. for (int i = 0; i < BaseOfCars.size(); i++)
  77. {
  78. file << BaseOfCars[i].Owner << " " << BaseOfCars[i].Mark << '\n';
  79. }
  80. file.close();
  81. }
  82.  
  83.  
  84.  
  85. int main()
  86. {
  87. SetConsoleCP(1251);
  88. SetConsoleOutputCP(1251);
  89.  
  90. cout << "Выберете вариант заполнения\n" << "1: Ввести с клавиатуры\n2: Использовать готовую базу\n";
  91. int HowToPut;
  92. cin >> HowToPut;
  93.  
  94. vector <Cars> BaseOfCars;
  95.  
  96.  
  97. switch(HowToPut)
  98. {
  99. case 1:
  100. {
  101. int N;
  102. cout << "Введите количество автомобилей " << endl;
  103. cin >> N;
  104.  
  105. Cars cars;
  106. PutBase (BaseOfCars,N,cars);
  107.  
  108. }
  109.  
  110. break;
  111.  
  112. case 2:
  113. {
  114. BaseOfCars.push_back({"Toyota",312,"Вольсикий А.А.",101});
  115. BaseOfCars.push_back({"Honda",111,"Нестеров М.Ю.",102});
  116. BaseOfCars.push_back({"Kia",112,"Астахова И.А.",103});
  117. BaseOfCars.push_back({"Subaru",241,"Гривина Т.М.",104});
  118. BaseOfCars.push_back({"Skoda",500,"Абстракт К.Л.",105});
  119. BaseOfCars.push_back({"Toyota",102,"Кашин Д.В.",106});
  120. }
  121. break;
  122.  
  123. default:
  124. cout << "INPUT ERROR \n";
  125. break;
  126.  
  127. }
  128.  
  129. WriteAllInFile(BaseOfCars);
  130.  
  131.  
  132.  
  133. system("cls");
  134. cout << "Выберете, что вам нужно сделать: \n";
  135. cout<<"\n";
  136.  
  137. cout<<" |-----|-------------------------------------------------------------------|\n";
  138. cout<<" | 1 |Вывести количество машин марки по запросу: |\n";
  139. cout<<" |-----|-------------------------------------------------------------------|\n";
  140. cout<<" | 2 |Сформировать файл, содержащий ФИО владельца и марку его автомобиля |\n";
  141. cout<<" |-----|-------------------------------------------------------------------|\n";
  142. cout<<" | 3 |Добавить запись в файл |\n";
  143. cout<<" |-----|-------------------------------------------------------------------|\n";
  144. cout<<" | 4 |Удалить все записи по номеру автомобиля |\n";
  145. cout<<" |-----|-------------------------------------------------------------------|\n";
  146. cout<<" | 5 |Корректировка файла |\n";
  147. cout<<" |-----|-------------------------------------------------------------------|\n";
  148.  
  149. cout<<"\n";
  150.  
  151.  
  152.  
  153. int choice;
  154. cin >> choice;
  155.  
  156. switch(choice)
  157. {
  158. case 1:
  159. {
  160. /* map <string MarkType, int Count> List;
  161. int Count = 0;
  162. for (int i = 0; i < BaseOfCars.size(); i++)
  163. {
  164. if(List.first == BaseOfCars[i].Mark)
  165. {
  166. List.second = Count++;
  167. }
  168. else
  169. {
  170. List.insert(make_pair(BaseOfCars[i].Mark, Count));
  171. }
  172. }*/
  173.  
  174. cout << "Введите марку, чтобы узнать количество автомобилей \n";
  175. string TempMark;
  176. int counter = 0;
  177.  
  178. cin>>TempMark;
  179.  
  180. for (int i = 0; i < BaseOfCars.size(); i++)
  181. {
  182. if (TempMark == BaseOfCars[i].Mark)
  183. {
  184. counter++;
  185. }
  186. }
  187.  
  188. cout << "Количество автомобилей марки " << TempMark << " равно " << counter << '\n';
  189. }
  190. break;
  191.  
  192. case 2:
  193.  
  194. {
  195. CreateBaseOfOwners(BaseOfCars);
  196. }
  197.  
  198. break;
  199.  
  200. case 3:
  201. {
  202. cout << "Введите количество записей, которые нужно добавить\n";
  203. int N;
  204. cin >> N;
  205.  
  206. for (int i =0; i < N; i++)
  207. {
  208. cout << "Введите марку " << endl;
  209. while (cin.get() != '\n');
  210. getline(cin, BaseOfCars[i].Mark);
  211.  
  212. cout << "Введите регистрационный номер " << endl;
  213. cin >> BaseOfCars[i].Number;
  214.  
  215. cout << "Введите ФИО владельца " << endl;
  216. while (cin.get() != '\n');
  217. getline(cin, BaseOfCars[i].Owner);
  218.  
  219. cout << "Введите технические характеристики (3 числа) " << endl;
  220. cin >> BaseOfCars[i].Specifications;
  221.  
  222.  
  223.  
  224. }
  225.  
  226. fstream file;
  227. file.open("BaseOfCars.txt", fstream::in | fstream:: app);
  228.  
  229. for (int i = 0; i < N;i++)
  230. {
  231. file << BaseOfCars[i]<< '\n';
  232. }
  233.  
  234. file.close();
  235.  
  236. }
  237.  
  238. break;
  239.  
  240. case 4:
  241. {
  242. cout << "Исходная база данных: \n";
  243. cout << BaseOfCars;
  244.  
  245. cout << "Введите номер автомобиля, данные о котором нужно удалить \n";
  246. int NumberToDelete;
  247. cin>>NumberToDelete;
  248.  
  249. auto size = BaseOfCars.size();
  250.  
  251. for (int i = 0; i < BaseOfCars.size(); i++)
  252. {
  253. if (BaseOfCars[i].Number == NumberToDelete)
  254. {
  255. BaseOfCars.erase(BaseOfCars.begin() + i);
  256. size = BaseOfCars.size();
  257. }
  258. }
  259.  
  260. WriteAllInFile(BaseOfCars);
  261.  
  262. cout << "База данных после корректировки(удаления)\n\n" << BaseOfCars;
  263. }
  264.  
  265. break;
  266.  
  267. case 5:
  268. {
  269. cout << "Исходные данные \n";
  270. cout << BaseOfCars << '\n';
  271. string ChangeMarkOwner;
  272. cout << "Введите ФИО владельца, данные чьей машины нужно изменить " << endl;
  273. while (cin.get() != '\n');
  274. getline(cin, ChangeMarkOwner);
  275.  
  276.  
  277. for (int i = 0; i < BaseOfCars.size(); i++)
  278. {
  279. if (BaseOfCars[i].Owner == ChangeMarkOwner)
  280. {
  281. cout << "Введите марку " << endl;
  282. getline(cin, BaseOfCars[i].Mark);
  283. }
  284. }
  285.  
  286. WriteAllInFile(BaseOfCars);
  287.  
  288. cout << BaseOfCars << endl;
  289. }
  290. break;
  291.  
  292. default:
  293. cout << "INPUT ERROR \n";
  294. break;
  295.  
  296. }
  297.  
  298. return 0;
  299.  
  300. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement