Advertisement
Guest User

Untitled

a guest
Dec 8th, 2019
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.89 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4. #include <fstream>
  5. using namespace std;
  6.  
  7. struct Train
  8. {
  9. int number;
  10. string point;
  11. string time;
  12. string travel_time;
  13. int place;
  14. };
  15.  
  16. ostream& operator << (ostream& os, Train& i)
  17. {
  18. os << i.number << ' ';
  19. os << i.point << ' ';
  20. os << i.time << ' ';
  21. os << i.travel_time << ' ';
  22. os << i.place << ' ';
  23. return os;
  24. }
  25.  
  26. ostream& operator << (ostream& os, vector<Train> v)
  27. {
  28. for (auto i : v)
  29. cout << i;
  30. }
  31.  
  32. istream& operator >> (istream& is, Train& i)
  33. {
  34. is >> i.number;
  35. is >> i.point;
  36. is >> i.time;
  37. is >> i.travel_time;
  38. is >> i.place;
  39. return is;
  40. }
  41.  
  42. int update (vector<Train>& train)
  43. {
  44. train.clear();
  45. Train objectStruct;
  46. ifstream file("out.txt");
  47. while(!file.eof())
  48. {
  49. file >> objectStruct;
  50. train.push_back(objectStruct);
  51. }
  52. train.erase(train.end());
  53. file.close();
  54. return train.size();
  55. }
  56.  
  57. void WriteInFile (vector<Train>& train, int size)
  58. {
  59. ofstream file("out.txt");
  60. for (int i = 0; i < size; i++)
  61. file << train[i] << endl;
  62. file.close();
  63. }
  64.  
  65.  
  66. void NewStruct(int n)
  67. {
  68. ofstream file("out.txt");
  69. Train objectStruct;
  70. for (int i = 0; i < n; ++i)
  71. {
  72. cin >> objectStruct;
  73. file << objectStruct << endl;
  74. }
  75. file.close();
  76. }
  77.  
  78. int main(int argc, char const *argv[])
  79. {
  80.  
  81. vector<Train> train;
  82. Train objectStruct;
  83. int answer;
  84. int size = update(train);
  85. bool state = true;
  86. cout << "Курсовая работа\n№ 15. ТЕМА: Разработка ПО для создания и обработки сведений по расписанию на железной дороге";
  87. while (state)
  88. {
  89. cout << "\n\n\nMenu:";
  90. cout << "\n#1) Создать файл с заданной структурой записи";
  91. cout << "\n#2) Выдать на экран содержимое файла.";
  92. cout << "\n#3) Выдать на экран для заданного пункта назначения список всех поездов в виде: — № поезда;\n — время отправления.";
  93. cout << "\n#4) Сформировать файл, содержащий № поезда и количество свободных мест.";
  94. cout << "\n#5) Вновь сформированный файл распечатать";
  95. cout << "\n#6) Добавить запись в исходный файл";
  96. cout << "\n#7) Удалить все записи с указанными № поездов.";
  97. cout << "\n#8) По № поезда изменить количество свободных мест.";
  98. cout << "\n#9) Выход";
  99.  
  100. int choice;
  101. cout << "\n\nВаш вариант - ";
  102. cin >> choice;
  103. switch(choice)
  104. {
  105. case 1:
  106. {
  107. cout << "Количество новых записей: ";
  108. cin >> answer;
  109. NewStruct(answer);
  110. break;
  111. }
  112. case 2:
  113. {
  114. update(train);
  115. cout << "Содержимое файла >\n";
  116. for (auto i : train)
  117. cout << i << endl;
  118. break;
  119. }
  120.  
  121. case 3:
  122. {
  123. string searchPoint;
  124. cout << "\nПункта назначения = ";
  125. cin >> searchPoint;
  126. for(auto i : train)
  127. {
  128. if (i.point == searchPoint)
  129. {
  130. cout << "Номер поезда - " << i.number;
  131. cout << " Время отправления - " << i.time << endl;
  132. }
  133. }
  134. break;
  135. }
  136. case 4:
  137. {
  138. ofstream file("out2.txt");
  139. for (auto i : train)
  140. {
  141. file << i.number << ' ';
  142. file << i.place << endl;
  143. }
  144. file.close();
  145. cout << "Готово. Откройте файл out2.txt";
  146. break;
  147. }
  148. case 5:
  149. {
  150. cout << "Содержимое файла >\n";
  151. ifstream file("out2.txt");
  152. for (int i = 0; i < train.size(); i++)
  153. {
  154. file >> objectStruct.number;
  155. file >> objectStruct.place;
  156. cout << objectStruct.number << " " << objectStruct.place << endl;
  157. }
  158. file.close();
  159. break;
  160. }
  161. case 6:
  162. {
  163. cin >> objectStruct;
  164. ofstream file("out.txt", ios_base::app);
  165. file << objectStruct << endl;
  166. file.close();
  167. break;
  168. }
  169. case 7:
  170. {
  171. cout << "Номер вагона = ";
  172. cin >> answer;
  173. size = update(train);
  174. cout << size << endl;
  175. for (int i = 0; i < size; ++i)
  176. {
  177. if (answer == train[i].number)
  178. {
  179. train.erase(train.begin() + i);
  180. size = train.size();
  181. }
  182. }
  183. cout << train.size() << endl;
  184. WriteInFile(train, train.size());
  185. break;
  186. }
  187. case 8:
  188. {
  189. cout << "Номер поезда = ";
  190. cin >> answer;
  191. int seat;
  192. cout << "Количество мест = ";
  193. cin >> seat;
  194. size = update(train);
  195. for (int i = 0; i < size; ++i)
  196. {
  197. if (train[i].number == answer)
  198. train[i].place = seat;
  199. }
  200. WriteInFile(train, size);
  201. break;
  202. }
  203. case 9:
  204. {
  205. state = false;
  206. cout << "Выходим.\n";
  207. break;
  208. }
  209. default:
  210. {
  211. cout << "Ошибка" << endl;
  212. state = false;
  213. }
  214. }
  215. }
  216. return 0;
  217. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement