fork download
  1. #include <iostream>
  2. #include <fstream>
  3. #include <windows.h>
  4. #include <cstdlib>
  5. #include <iomanip>
  6. #include <conio.h>
  7. using namespace std;
  8. const char* file = "jurnal";
  9. char* r(char* buf);
  10. char a[256];
  11. char* r(char* b)
  12. {
  13. CharToOem(b, a);
  14. return a;
  15. }
  16. inline void eatline()
  17. {
  18. while (cin.get() != '\n')
  19. continue;
  20. }
  21. struct Stud
  22. {
  23. int number;
  24. char prizv[15];
  25. char name[15];
  26. char batk[15];
  27. double istor_ukr;
  28. double informatic;
  29. double fizika;
  30. double matem;
  31. double ukr_mov;
  32. double ukr_lit;
  33. double in_mov;
  34. double fizra;
  35. double biologia;
  36. double geografiy;
  37. double seredniy_bal;
  38. char clas[15];
  39. };
  40. class Base
  41. {
  42. int a, num, j, b, g, c, d;
  43.  
  44. public:
  45. Stud ob;
  46. void menu()
  47. {
  48. system("cls");
  49. cout << "**********************************************************************************************************************************************" << endl;
  50. cout << "\n\t\t\t\t\t\tКонтроль успішності учнів ліцею №11\t\t\t\t\t\t" << endl << endl;
  51. cout << "**********************************************************************************************************************************************" << endl;
  52. cout << "\n\t\t\t\t\t\t\t 1. Перегляд" << endl;
  53. cout << "\t\t\t\t\t\t\t 2. Ввід" << endl;
  54. cout << "\t\t\t\t\t\t\t 3. Редагування" << endl;
  55. cout << "\t\t\t\t\t\t\t 4. Пошук" << endl;
  56. cout << "\t\t\t\t\t\t\t 5. Сортування" << endl;
  57. cout << "\t\t\t\t\t\t\t 6. Видалення" << endl;
  58. cout << "\t\t\t\t\t\t\t 7. Вихід" << endl;
  59.  
  60. a = _getch();
  61. switch (a)
  62. {
  63. case '1':
  64. view();
  65. //look();
  66. next();
  67. break;
  68. case '2':
  69. enter();
  70. next();
  71. break;
  72. case '3':
  73. redac();
  74. next();
  75. break;
  76. case '4':
  77. poshyk();
  78. next();
  79. break;
  80. case '5':
  81. sort();
  82. next();
  83. break;
  84. case '6':
  85. delet();
  86. next();
  87. break;
  88. case '7':
  89. exit(1);
  90. break;
  91. default:
  92. cout << "Помилка, повторіть ввід!";
  93. }
  94. }
  95. void next() // вихід в головне меню
  96. {
  97. cout << "Для виходу в головне меню натисніть (1)" << endl;
  98. a = _getch();
  99. switch (b)
  100. {
  101. case '1':
  102. menu();
  103. break;
  104. case '2':
  105. exit(1);
  106. }
  107. }
  108.  
  109. void que() // вихід для перегляду
  110. {
  111. cout << "Для виходу в головне меню натисніть (1), в перегляд (2)" << endl;
  112. d = _getch();
  113. switch (d)
  114. {
  115. case '1':
  116. menu();
  117. break;
  118. case '2':
  119. view();
  120. break;
  121. }
  122. }
  123.  
  124. void view() // перегляд різних категорій учнів
  125. {
  126. system("cls");
  127. cout << "Перегляд:\n1 - 1-4 класи\n2 - 5-11 класи\nЗ - Всіх" << endl;
  128. c = _getch();
  129. switch (c)
  130. {
  131. case '1':
  132. look_l();
  133. que();
  134. break;
  135. case '2':
  136. look_b();
  137. que();
  138. break;
  139. case '3':
  140. look();
  141. que();
  142. break;
  143.  
  144. }
  145. }
  146.  
  147. void provirka() // провірка для файлу
  148. {
  149. fstream fil;
  150. fil.open(file, ios::out | ios::in | ios::binary);
  151. if (!file)
  152. {
  153. cout << " Файл не знайдений !!!" << endl;
  154. system("pause");
  155. }
  156. fil.close();
  157. }
  158.  
  159. void look() // перегляд всіх учнів
  160. {
  161. system("cls");
  162. Stud ob;
  163. ifstream in;
  164. in.open(file, ios::in | ios::binary);
  165. if (!in)
  166. {
  167. cout << "Помилка" << endl;
  168. }
  169. cout << "**********************************************************************************************************************************************";
  170. cout << "\n\t\t\t\t\t\t\t\tВсі учні школи" << endl;
  171. cout << "**********************************************************************************************************************************************" << endl;
  172. cout << "|Номер|Клас| Прізвище | Ім'я | По батькові |Укр.мова|Матем.|Ін.мова|Фіз-ра|Укр.літ|Укр.історія|Географія|Фізика|Біологія|Інформ.|Середн.бал|" << endl;
  173. while (in.read((char*)&ob, sizeof ob))
  174. cout << "|" << setw(4) << ob.number << " |" << setw(4) << ob.clas << "|" << setw(10) << ob.prizv << "|" << setw(8) << ob.name << "|"
  175. << setw(13) << ob.batk << "| " << setw(2) << ob.ukr_mov << " | " << setw(2) << ob.matem << " | "
  176. << setw(2) << ob.in_mov << " | " << setw(2) << ob.fizra << " | " << setw(2) << ob.ukr_lit << " | "
  177. << setw(2) << ob.istor_ukr << " | " << setw(2) << ob.geografiy << " | " << setw(2) << ob.fizika << " | "
  178. << setw(2) << ob.biologia << " | " << setw(2) << ob.informatic << " | " << setw(4)
  179. << setprecision(2) << ob.seredniy_bal << " |" << endl;
  180. cout << "**********************************************************************************************************************************************" << endl;
  181. in.close();
  182. }
  183. void enter() // ввід даних про учнів
  184. {
  185. Stud ob;
  186. ofstream out;
  187. out.open(file, ios::out | ios::app | ios::binary);
  188. if (!out)
  189. {
  190. cout << "Помилка";
  191. }
  192. system("cls");
  193. detail();
  194. cout << "Клас: ";
  195. cin >> ob.clas;
  196. cout << "Особистий номер: ";
  197. cin >> ob.number;
  198. eatline();
  199. cout << "Прізвище: ";
  200. cin.getline(ob.prizv, 15);
  201. cout << "Ім'я: ";
  202. cin.getline(ob.name, 15);
  203. cout << "По батькові: ";
  204. cin.getline(ob.batk, 15);
  205. if (ob.number < 499)
  206. {
  207. cout << "Українська мова: ";
  208. cin >> ob.ukr_mov;
  209. cout << "Математика: ";
  210. cin >> ob.matem;
  211. cout << "Іноземна мова: ";
  212. cin >> ob.in_mov;
  213. cout << "Фіз-ра: ";
  214. cin >> ob.fizra;
  215. ob.ukr_lit = '\0';
  216. ob.informatic = '\0';
  217. ob.fizika = '\0';
  218. ob.istor_ukr = '\0';
  219. ob.geografiy = '\0';
  220. ob.biologia = '\0';
  221. ob.seredniy_bal = (ob.matem + ob.ukr_mov + ob.in_mov + ob.fizra) / 4;
  222. }
  223. else
  224. {
  225. cout << "Українська мова: ";
  226. cin >> ob.ukr_mov;
  227. cout << "Математика: ";
  228. cin >> ob.matem;
  229. cout << "Українська література: ";
  230. cin >> ob.ukr_lit;
  231. cout << "Іноземна мова: ";
  232. cin >> ob.in_mov;
  233. cout << "Інформатика: ";
  234. cin >> ob.informatic;
  235. cout << "Фізика: ";
  236. cin >> ob.fizika;
  237. cout << "Історія України: ";
  238. cin >> ob.istor_ukr;
  239. cout << "Географія: ";
  240. cin >> ob.geografiy;
  241. cout << "Біологія: ";
  242. cin >> ob.biologia;
  243. cout << "Фіз-ра: ";
  244. cin >> ob.fizra;
  245.  
  246. ob.seredniy_bal = (ob.matem + ob.ukr_mov + ob.informatic + ob.ukr_lit + ob.in_mov + ob.biologia + ob.istor_ukr + ob.fizika + ob.fizra + ob.geografiy) / 10;
  247. }
  248. eatline();
  249. out.write((char*)&ob, sizeof ob);
  250. out.close();
  251. system("pause");
  252. }
  253. void poshyk() // пошук з умовами
  254. {
  255. system("cls");
  256. int temp;
  257. Stud ob;
  258. fstream poshyk(file, ios::in | ios::binary);
  259. look();
  260. detail();
  261. cout << "Пошук по особистому номером:" << endl;
  262. cin >> temp;
  263. eatline();
  264. while (true)
  265. {
  266. poshyk.read((char*)&ob, sizeof(Stud));
  267. if (poshyk.eof())
  268. {
  269. cout << "Немає " << temp << endl;
  270. return;
  271. }
  272. if (temp == ob.number)
  273. {
  274. if (ob.number < 499)
  275. {
  276. cout << "**************************************************************************************" << endl;
  277. cout << "| № |Клас| Прізвище | Ім'я | По батькові |Укр.мова|Матем.|Ін.мова|Фіз-ра|Середн.бал|" << endl;
  278. cout << "|" << setw(3) << ob.number << "|" << setw(4) << ob.clas << "|" << setw(10) << ob.prizv << "|" << setw(8) << ob.name << "|"
  279. << setw(13) << ob.batk << "| " << setw(2) << ob.ukr_mov << " | " << setw(2) << ob.matem << " | "
  280. << setw(2) << ob.in_mov << " | " << setw(2) << ob.fizra << " | " << setw(4)
  281. << setprecision(2) << ob.seredniy_bal << " |" << endl;
  282. cout << "**************************************************************************************" << endl;
  283. return;
  284. }
  285. else
  286. {
  287. cout << "**********************************************************************************************************************************************" << endl;
  288. cout << "|Номер|Клас| Прізвище | Ім'я | По батькові |Укр.мова|Матем.|Ін.мова|Фіз-ра|Укр.літ|Укр.історія|Географія|Фізика|Біологія|Інформ.|Середн.бал|" << endl;
  289. cout << "|" << setw(4) << ob.number << " |" << setw(4) << ob.clas << "|" << setw(10) << ob.prizv << "|" << setw(8) << ob.name << "|"
  290. << setw(13) << ob.batk << "| " << setw(2) << ob.ukr_mov << " | " << setw(2) << ob.matem << " | "
  291. << setw(2) << ob.in_mov << " | " << setw(2) << ob.fizra << " | " << setw(2) << ob.ukr_lit << " | "
  292. << setw(2) << ob.istor_ukr << " | " << setw(2) << ob.geografiy << " | " << setw(2) << ob.fizika << " | "
  293. << setw(2) << ob.biologia << " | " << setw(2) << ob.informatic << " | " << setw(4)
  294. << setprecision(2) << ob.seredniy_bal << " |" << endl;
  295. cout << "**********************************************************************************************************************************************" << endl;
  296. return;
  297. }
  298. }
  299. }
  300. }
  301. void sort() // сортування
  302. {
  303. system("cls");
  304. fstream sort;
  305. sort.open(file, ios::in | ios::binary);
  306. Stud ob[1000];
  307. Stud tem;
  308. int count = 0;
  309.  
  310. while (!sort.eof())
  311. {
  312. sort.read((char*)&ob[count], sizeof(Stud));
  313. count++;
  314. }
  315. count--;
  316. cout << "Сортування по:\n1 - Особистому номеру\n2 - По прізвищу\nЗ - Середньому балу\n4 - Класу" << endl;
  317. int a;
  318. cin >> a;
  319. eatline();
  320. if (a == 1)
  321. {
  322. for (int i = 0; i < count; i++)
  323. for (int j = 0; j < count; j++)
  324. {
  325. if (ob[i].number < ob[j].number)
  326. {
  327. tem = ob[i];
  328. ob[i] = ob[j];
  329. ob[j] = tem;
  330. }
  331. }
  332.  
  333. }
  334.  
  335. if (a == 2)
  336. {
  337. for (int i = 0; i < count; i++)
  338. for (int j = 0; j < count; j++)
  339. {
  340. if (ob[i].prizv[0] < ob[j].prizv[0]
  341. || ob[i].prizv[0] == ob[j].prizv[0] && ob[i].prizv[1] < ob[j].prizv[1])
  342. {
  343. tem = ob[i];
  344. ob[i] = ob[j];
  345. ob[j] = tem;
  346. }
  347.  
  348. }
  349. }
  350. if (a == 3)
  351. {
  352. for (int i = 0; i < count; i++)
  353. for (int j = 0; j < count; j++)
  354. {
  355. if (ob[i].seredniy_bal < ob[j].seredniy_bal)
  356. {
  357. tem = ob[i];
  358. ob[i] = ob[j];
  359. ob[j] = tem;
  360. }
  361. }
  362.  
  363. }
  364.  
  365.  
  366.  
  367.  
  368.  
  369. else if (a == 4)
  370. {
  371. for (int i = 0; i < count; i++)
  372. for (int j = 0; j < count; j++)
  373. {
  374. if (ob[i].number < ob[j].number)
  375. {
  376. tem = ob[i];
  377. ob[i] = ob[j];
  378. ob[j] = tem;
  379. }
  380. }
  381.  
  382. }
  383.  
  384.  
  385. sort.close();
  386. sort.clear();
  387. sort.open(file, ios::out | ios::binary);
  388. for (a = 0; a < count; a++)
  389. {
  390. sort.write((char*)&ob[a], sizeof(Stud));
  391. }
  392. cout << "Успішно!" << endl;
  393. sort.close();
  394.  
  395. }
  396. //////////////////////////////////////////////////
  397. void redac() // редагування
  398.  
  399. {
  400. system("cls");
  401. Stud ob[1000];
  402. fstream del;
  403. del.open(file, ios::in | ios::out | ios::binary);
  404. if (!del.is_open())
  405. {
  406. cout << "Помилка!" << endl;
  407. exit(1);
  408. }
  409. int count = 0;
  410. while (!del.eof())
  411. {
  412. del.read((char*)&ob[count], sizeof(Stud));
  413. count++;
  414. }
  415. look();
  416. count--;
  417. cout << "Введіть особистий номер учня для редагування: ";
  418. double number;
  419. cin >> number;
  420. del.close();
  421. del.clear();
  422. del.open(file, ios::out | ios::binary);
  423. for (int x = 0; x < count; x++)
  424. if (ob[x].number != number)
  425. del.write((char*)&ob[x], sizeof(Stud));
  426. entertoo();
  427. cout << "Успішно!" << endl;
  428. del.close();
  429. }
  430.  
  431. void delet() // видалення
  432. {
  433. system("cls");
  434. Stud ob[1000];
  435. fstream del;
  436. del.open(file, ios::in | ios::out | ios::binary);
  437. if (!del.is_open())
  438. {
  439. cout << "Помилка!" << endl;
  440. exit(1);
  441. }
  442. int count = 0;
  443. while (!del.eof())
  444. {
  445. del.read((char*)&ob[count], sizeof(Stud));
  446. count++;
  447. }
  448. look();
  449. count--;
  450. cout << "Введіть особистий номер учня якого треба видалити: ";
  451. double number;
  452. cin >> number;
  453. del.close();
  454. del.clear();
  455. del.open(file, ios::out | ios::binary);
  456. for (int x = 0; x < count; x++)
  457. if (ob[x].number != number)
  458. del.write((char*)&ob[x], sizeof(Stud));
  459. cout << "Успішно!" << endl;
  460. del.close();
  461. }
  462. void detail() // додаток для вводу особистого номеру
  463. {
  464. cout << "**************************************" << endl;
  465. cout << "| Для особистого номеру |"<< endl;
  466. cout << "|____________________________________|"<< endl;
  467. cout << "| Клас | А | Б | В |" << endl;
  468. cout << "| 1 | 101-130 | 131-160 | 161-190 |" << endl;
  469. cout << "| 2 | 201-230 | 231-260 | 261-290 |" << endl;
  470. cout << "| 3 | 301-330 | 331-360 | 361-390 |" << endl;
  471. cout << "| 4 | 401-430 | 431-460 | 461-490 |" << endl;
  472. cout << "| 5 | 501-530 | 531-560 | 561-590 |" << endl;
  473. cout << "| 6 | 601-630 | 631-660 | 661-690 |" << endl;
  474. cout << "| 7 | 701-730 | 731-760 | 761-790 |" << endl;
  475. cout << "| 8 | 801-830 | 831-860 | 861-890 |" << endl;
  476. cout << "| 9 | 901-830 | 931-960 | 961-990 |" << endl;
  477. cout << "| 10 |1001-1030|1031-1060|1061-1090|" << endl;
  478. cout << "| 11 |1101-1130|1131-1160|1161-1190|" << endl;
  479. cout << "**************************************" << endl;
  480.  
  481. }
  482.  
  483. void look_l() // перегляд учнів 1-4 кдасів
  484. {
  485. system("cls");
  486. Stud ob;
  487. ifstream in;
  488. in.open(file, ios::in | ios::binary);
  489. if (!in)
  490. {
  491. cout << "Помилка" << endl;
  492. }
  493.  
  494. cout << "**************************************************************************************";
  495. cout << "\n\t\t\t\tПочаткові класи (1-4 класи)" << endl;
  496. cout << "**************************************************************************************" << endl;
  497. cout << "| № |Клас| Прізвище | Ім'я | По батькові |Укр.мова|Матем.|Ін.мова|Фіз-ра|Середн.бал|" << endl;
  498. while (in.read((char*)&ob, sizeof ob))
  499. if (ob.number < 499)
  500. {
  501. cout << "|" << setw(3) << ob.number << "|" << setw(4) << ob.clas << "|" << setw(10) << ob.prizv << "|" << setw(8) << ob.name << "|"
  502. << setw(13) << ob.batk << "| " << setw(2) << ob.ukr_mov << " | " << setw(2) << ob.matem << " | "
  503. << setw(2) << ob.in_mov << " | " << setw(2) << ob.fizra << " | " << setw(4)
  504. << setprecision(2) << ob.seredniy_bal << " |" << endl;
  505.  
  506. }
  507.  
  508. cout << "**************************************************************************************" << endl;
  509.  
  510. in.close();
  511. }
  512.  
  513. void look_b() // перегляд учнів 5-11 кдасів
  514. {
  515. system("cls");
  516. Stud ob;
  517. ifstream in;
  518. in.open(file, ios::in | ios::binary);
  519. if (!in)
  520. {
  521. cout << "Помилка" << endl;
  522. }
  523.  
  524. cout << "**********************************************************************************************************************************************";
  525. cout << "\n\t\t\t\t\t\t\tСередні та старші класи (5-11 класи)" << endl;
  526. cout << "**********************************************************************************************************************************************" << endl;
  527. cout << "|Номер|Клас| Прізвище | Ім'я | По батькові |Укр.мова|Матем.|Ін.мова|Фіз-ра|Укр.літ|Укр.історія|Географія|Фізика|Біологія|Інформ.|Середн.бал|" << endl;
  528. while (in.read((char*)&ob, sizeof ob))
  529. if (ob.number > 500)
  530. {
  531. cout << "|" << setw(4) << ob.number << " |" << setw(4) << ob.clas << "|" << setw(10) << ob.prizv << "|" << setw(8) << ob.name << "|"
  532. << setw(13) << ob.batk << "| " << setw(2) << ob.ukr_mov << " | " << setw(2) << ob.matem << " | "
  533. << setw(2) << ob.in_mov << " | " << setw(2) << ob.fizra << " | " << setw(2) << ob.ukr_lit << " | "
  534. << setw(2) << ob.istor_ukr << " | " << setw(2) << ob.geografiy << " | " << setw(2) << ob.fizika << " | "
  535. << setw(2) << ob.biologia << " | " << setw(2) << ob.informatic << " | " << setw(4)
  536. << setprecision(2) << ob.seredniy_bal << " |" << endl;
  537.  
  538. }
  539. cout << "**********************************************************************************************************************************************" << endl;
  540. in.close();
  541. }
  542.  
  543. void entertoo() // ввід даних про учнів без очистки стоірнки (для редагування)
  544. {
  545. Stud ob;
  546. ofstream out;
  547. out.open(file, ios::out | ios::app | ios::binary);
  548. if (!out)
  549. {
  550. cout << "Помилка";
  551. }
  552. detail();
  553. cout << "Клас: ";
  554. cin >> ob.clas;
  555. cout << "Особистий номер: ";
  556. cin >> ob.number;
  557. eatline();
  558. cout << "Прізвище: ";
  559. cin.getline(ob.prizv, 15);
  560. cout << "Ім'я: ";
  561. cin.getline(ob.name, 15);
  562. cout << "По батькові: ";
  563. cin.getline(ob.batk, 15);
  564. if (ob.number < 499)
  565. {
  566. cout << "Українська мова: ";
  567. cin >> ob.ukr_mov;
  568. cout << "Математика: ";
  569. cin >> ob.matem;
  570. cout << "Іноземна мова: ";
  571. cin >> ob.in_mov;
  572. cout << "Фіз-ра: ";
  573. cin >> ob.fizra;
  574. ob.ukr_lit = '\0';
  575. ob.informatic = '\0';
  576. ob.fizika = '\0';
  577. ob.istor_ukr = '\0';
  578. ob.geografiy = '\0';
  579. ob.biologia = '\0';
  580. ob.seredniy_bal = (ob.matem + ob.ukr_mov + ob.in_mov + ob.fizra) / 4;
  581. }
  582. else
  583. {
  584. cout << "Українська мова: ";
  585. cin >> ob.ukr_mov;
  586. cout << "Математика: ";
  587. cin >> ob.matem;
  588. cout << "Українська література: ";
  589. cin >> ob.ukr_lit;
  590. cout << "Іноземна мова: ";
  591. cin >> ob.in_mov;
  592. cout << "Інформатика: ";
  593. cin >> ob.informatic;
  594. cout << "Фізика: ";
  595. cin >> ob.fizika;
  596. cout << "Історія України: ";
  597. cin >> ob.istor_ukr;
  598. cout << "Географія: ";
  599. cin >> ob.geografiy;
  600. cout << "Біологія: ";
  601. cin >> ob.biologia;
  602. cout << "Фіз-ра: ";
  603. cin >> ob.fizra;
  604.  
  605. ob.seredniy_bal = (ob.matem + ob.ukr_mov + ob.informatic + ob.ukr_lit + ob.in_mov + ob.biologia + ob.istor_ukr + ob.fizika + ob.fizra + ob.geografiy) / 10;
  606. }
  607. eatline();
  608. out.write((char*)&ob, sizeof ob);
  609. out.close();
  610. system("pause");
  611. }
  612.  
  613. };
  614.  
  615.  
  616. int main()
  617. {
  618. SetConsoleCP(1251);
  619. SetConsoleOutputCP(1251);
  620. Base ob;
  621. ob.provirka();
  622. while (1) {
  623. ob.menu();
  624. }
  625. return 0;
  626. }
  627.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cpp:3:10: fatal error: windows.h: No such file or directory
 #include <windows.h>
          ^~~~~~~~~~~
compilation terminated.
stdout
Standard output is empty