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