Advertisement
Guest User

Untitled

a guest
May 21st, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.67 KB | None | 0 0
  1. #include<iostream>
  2. #include<iomanip>
  3. #include<locale>
  4. #include<conio.h>
  5. #include<fstream>
  6. using namespace std;
  7.  
  8. struct dvig {
  9. char nazv[10];
  10. int year;
  11. int cilin;
  12. float V;
  13. int horses;
  14. int n_m;
  15. float rashod;
  16. float V_masla;
  17. char pitanie[1];
  18. };
  19.  
  20. void addelement(dvig* p, int n)
  21. {
  22. do {
  23. cout << "Введите модель двигателя:\n";
  24. cin >> p[n].nazv;
  25. } while (strlen(p[n].nazv) > 10);
  26. do {
  27. cout << "Введите год выпуска (1930 - 2018):\n";
  28. cin >> p[n].year;
  29. } while (p[n].year <= 1930 || p[n].year > 2018 || cin.fail());
  30. do {
  31. cout << "Введите кол-во цилиндров (4 - 10):\n";
  32. cin >> p[n].cilin;
  33. } while (p[n].cilin < 4 || p[n].cilin > 10 || cin.fail());
  34. do {
  35. cout << "Введите объём двигателя (0.5 - 8):\n";
  36. cin >> p[n].V;
  37. } while (p[n].V < 0.5 || p[n].V > 8 || cin.fail());
  38. do {
  39. cout << "Введите кол-во лошадиных сил (30 - 10000):\n";
  40. cin >> p[n].horses;
  41. } while (p[n].horses < 30 || p[n].horses > 10000 || cin.fail());
  42. do {
  43. cout << "Введите крутящий момент (100 - 10000):\n";
  44. cin >> p[n].n_m;
  45. } while (p[n].n_m < 100 || p[n].n_m > 10000 || cin.fail());
  46. do {
  47. cout << "Введите расход (1 - 100):\n";
  48. cin >> p[n].rashod;
  49. } while (p[n].rashod <= 1 || p[n].rashod > 100 || cin.fail());
  50. do {
  51. cout << "Введите объём масла (1 - 10):\n";
  52. cin >> p[n].V_masla;
  53. } while (p[n].V_masla < 1 || p[n].V_masla > 10 || cin.fail());
  54. do {
  55. cout << "Введите тип питания (i или k):\n";
  56. cin >> p[n].pitanie;
  57. } while ((p[n].pitanie[0]!='k' || p[n].pitanie[0] != 'i') && strlen(p[n].pitanie) != 1);
  58. }
  59. void menu() {
  60. system("cls");
  61. cout << "1.Создать информацию о двигателях" << endl;
  62. cout << "2.Просмотреть информацию" << endl;
  63. cout << "3.Таблица" << endl;
  64. cout << "4.Очистить всё" << endl;
  65. cout << "5.Сохранить базу в файл" << endl;
  66. cout << "6.Загрузить данные из файла" << endl;
  67. cout << "7.Удаление файла по названию" << endl;
  68. cout << "8.Создание файла" << endl;
  69. cout << "9.Выход" << endl;
  70. }
  71.  
  72. void prosmotr(dvig *p, int n)
  73. {
  74. for (int i = 0; i < n; i++)
  75. {
  76. cout << "Модель: " << p[i].nazv << endl;
  77. cout << "Год выпуска: " << p[i].year << endl;
  78. cout << "Кол-во цилиндров: " << p[i].cilin << endl;
  79. cout << "Объём двигателя: " << p[i].V << " литра(литров)" << endl;
  80. cout << "Кол-во лошадиных сил: " << p[i].horses << endl;
  81. cout << "Крутящий момент: " << p[i].n_m << endl;
  82. cout << "Расход: " << p[i].rashod << " литра(литров)" << endl;
  83. cout << "Объём масла: " << p[i].V_masla << " литра(литров)" << endl;
  84. cout << "Тип питания: " << p[i].pitanie << endl;
  85. cout << endl;
  86. };
  87. }
  88.  
  89. void tablle(dvig *p, int n) {
  90. cout << "Таблица:\n";
  91. cout << endl;
  92. cout << setw(20) << left << "Модель: ";
  93. cout << setw(20) << left << "Год выпуска: ";
  94. cout << setw(20) << left << "Кол-во цилиндров: ";
  95. cout << setw(20) << left << "Объём двигателя: ";
  96. cout << setw(20) << left << "Кол-во лош. сил: ";
  97. cout << setw(20) << left << "Крутящий момент: ";
  98. cout << setw(20) << left << "Расход: ";
  99. cout << setw(20) << left << "Объём масла: ";
  100. cout << setw(20) << left << "Тип питания: " << "\n";
  101. for (int i = 0; i < n; i++)
  102. {
  103. cout << setw(20) << left << p[i].nazv;
  104. cout << setw(20) << left << p[i].year;
  105. cout << setw(20) << left << p[i].cilin;
  106. cout << setw(20) << left << p[i].V;
  107. cout << setw(20) << left << p[i].horses;
  108. cout << setw(20) << left << p[i].n_m;
  109. cout << setw(20) << left << p[i].rashod;
  110. cout << setw(20) << left << p[i].V_masla;
  111. cout << setw(20) << left << p[i].pitanie << "\n";
  112. }
  113. }
  114.  
  115.  
  116. void new_DB(char *pr) {
  117. ofstream file(pr);
  118. }
  119.  
  120. void remove_DB(char *pr) {
  121. ifstream file(pr);
  122. if (file.is_open()) {
  123. file.close();
  124. if (remove(pr));
  125. cout << "Файл удалён!" << endl;
  126. return;
  127. }
  128. cout << "Ошибка" << endl;
  129. }
  130.  
  131. void clear(dvig *p, int n) {
  132. if (n > 0) {
  133. free(p);
  134. }
  135. }
  136.  
  137. void save_DB(dvig *p, int n, char *pr) {
  138. ofstream file(pr);
  139. file << n << endl;
  140. for (int i = 0; i < n; i++) {
  141. file << p[i].nazv << endl;
  142. file << p[i].year << endl;
  143. file << p[i].cilin << endl;
  144. file << p[i].V << endl;
  145. file << p[i].horses << endl;
  146. file << p[i].n_m << endl;
  147. file << p[i].rashod << endl;
  148. file << p[i].V_masla << endl;
  149. file << p[i].pitanie << endl;
  150. }
  151. file.close();
  152. }
  153.  
  154. void load_DB(dvig *p, int n, char *pr) {
  155. ifstream file(pr);
  156. if (!file.is_open()) {
  157. cout << "Ошибка!" << endl;
  158. }
  159. else {
  160. file >> n;
  161. }
  162. if (n > 0) {
  163. for (int i = 0; i < n; i++) {
  164. file >> p[i].nazv;
  165. file >> p[i].year;
  166. file >> p[i].cilin;
  167. file >> p[i].V;
  168. file >> p[i].horses;
  169. file >> p[i].n_m;
  170. file >> p[i].rashod;
  171. file >> p[i].V_masla;
  172. file >> p[i].pitanie;
  173. }
  174. file.close();
  175. }
  176. }
  177.  
  178.  
  179. int main() {
  180. setlocale(LC_ALL, "RU");
  181. dvig *p;
  182. int n = 0;
  183. char num = '8';
  184. char pr[20];
  185. //Создаем динамический массив структур
  186. p = (dvig *)malloc((n + 1) * sizeof(dvig));
  187. while (num != '9') {
  188. menu();
  189. cin >> num;
  190. switch (num) {
  191. case '1':
  192. system("cls");
  193. p = (dvig *)realloc(p, (n + 1) * sizeof(dvig));
  194. addelement(p, n);
  195. cout << "Нажмите любую клавишу для возвращения в меню!";
  196. _getch();
  197. n++;
  198. break;
  199. case '2':
  200. system("cls");
  201. prosmotr(p, n);
  202. cout << "Нажмите любую клавишу для возвращения в меню!";
  203. _getch();
  204. break;
  205. case '3':
  206. system("cls");
  207. tablle(p, n);
  208. cout << "Нажмите любую клавишу для возвращения в меню!";
  209. _getch();
  210. break;
  211. case '4':
  212. system("cls");
  213. clear(p, n);
  214. n = 0;
  215. p = (dvig *)malloc(1 * sizeof(dvig));
  216. cout << "Информация очищена!" << endl;
  217. cout << "Нажмите любую клавишу для возвращения в меню!";
  218. _getch();
  219. break;
  220. case '5':
  221. system("cls");
  222. cout << "Введите название файла:" << endl;
  223. cin >> pr;
  224. save_DB(p, n, pr);
  225. cout << "Запись сделана!" << endl;
  226. cout << "Нажмите любую клавишу для возвращения в меню!";
  227. _getch();
  228. break;
  229. case '7':
  230. system("cls");
  231. cout << "Введите название файла:" << endl;
  232. cin >> pr;
  233. remove_DB(pr);
  234. cout << "Нажмите любую клавишу для возвращения в меню!";
  235. _getch();
  236. break;
  237. case '8':
  238. system("cls");
  239. cout << "Введите название файла:" << endl;
  240. cin >> pr;
  241. new_DB(pr);
  242. cout << "Файл создан!" << endl;
  243. cout << "Нажмите любую клавишу для возвращения в меню!";
  244. _getch();
  245. break;
  246. case '6':
  247. system("cls");
  248. cout << "Введите название файла:" << endl;
  249. cin >> pr;
  250. ifstream file(pr);
  251. if (!file.is_open()) {
  252. }
  253. else {
  254. file >> n;
  255. }
  256. file.close();
  257. p = (dvig *)realloc(p, n * sizeof(dvig));
  258. load_DB(p, n, pr);
  259. cout << "Информация загружена!" << endl;
  260. cout << "Нажмите любую клавишу для возвращения в меню!";
  261. _getch();
  262. break;
  263. }
  264. }
  265. _getch();
  266. return 0;
  267. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement