Advertisement
codegod313

Done_laba

Jan 9th, 2021
692
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.22 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <fstream>
  4. #include <Windows.h>
  5.  
  6. using namespace std;
  7.  
  8. struct Student {
  9.     string name{};
  10.     string surname{};
  11.     string patronymic{};
  12.     int number_group{};
  13.     int birthYear{};
  14.     int physics{};
  15.     int math{};
  16.     int informatics{};
  17.     int chemistry{};
  18.     double gap = (physics + math + informatics + chemistry) / 4.;
  19. };
  20.  
  21.  
  22. int strCounter()
  23. {
  24.     ifstream fin("File.txt", ios::in | ios::app);
  25.     char * str = new char[256];
  26.     int ans = 0;
  27.     while (!fin.eof())
  28.     {
  29.         fin.getline(str, 256, '\n');
  30.         ans++;
  31.     }
  32.     fin.close();
  33.     delete[] str;
  34.     return ans-1;
  35. }
  36.  
  37. bool isGood(Student &s)
  38. {
  39.     if (s.informatics > 4 && s.math > 4)
  40.         return true;
  41.     return false;
  42. }
  43.  
  44. void menu();
  45.  
  46. void push_back(Student *&students, Student &s, int &quantity)
  47. {
  48.     quantity++;
  49.     Student *arr = new Student[quantity];
  50.     for (int i = 0; i < quantity-1; i++)
  51.     {
  52.         arr[i] = students[i];
  53.     }
  54.     arr[quantity - 1] = s;
  55.     students = arr;
  56. }
  57.  
  58. void add(Student *&students, int &quantity) {
  59.     ofstream fout("File.txt", ios::app);
  60.     Student student;
  61.     string temp;
  62.     int temp_int = 0;
  63.     int middle = 0;
  64.     cout << "Enter name : ";
  65.     cin >> temp;
  66.     student.name = temp;
  67.     fout << temp << " ";
  68.     cout << "Enter surname : ";
  69.     cin >> temp;
  70.     student.surname = temp;
  71.     fout << temp << " ";
  72.     cout << "Enter patronymic : ";
  73.     cin >> temp;
  74.     student.patronymic = temp;
  75.     fout << temp << " ";
  76.     cout << "Enter number of group : ";
  77.     cin >> temp_int;
  78.     student.number_group = temp_int;
  79.     fout << temp_int << " ";
  80.     cout << "Enter year of birth : ";
  81.     cin >> temp_int;
  82.     student.birthYear = temp_int;
  83.     fout << temp_int << " ";
  84.     cout << "Enter mark of physics : ";
  85.     cin >> temp_int;
  86.     student.physics = temp_int;
  87.     middle += temp_int;
  88.     fout << temp_int << " ";
  89.     cout << "Enter mark of math : ";
  90.     cin >> temp_int;
  91.     student.math = temp_int;
  92.     middle += temp_int;
  93.     fout << temp_int << " ";
  94.     cout << "Enter mark of informatics : ";
  95.     cin >> temp_int;
  96.     student.informatics = temp_int;
  97.     middle += temp_int;
  98.     fout << temp_int << " ";
  99.     cout << "Enter mark of chemistry : ";
  100.     cin >> temp_int;
  101.     student.chemistry = temp_int;
  102.     middle += temp_int;
  103.     fout << temp_int << " ";
  104.     fout << middle / 4.;
  105.     student.gap = temp_int;
  106.     fout << endl;
  107.     fout.close();
  108.     push_back(students, student, quantity);
  109. }
  110.  
  111. void show(const Student *students, int quantity)
  112. {
  113.  
  114.     for (int i = 0; i < quantity; i++)
  115.     {
  116.         cout << "Name : " << students[i].name << endl;
  117.         cout << "Surname : " << students[i].surname << endl;
  118.         cout << "Patronymic : " << students[i].patronymic << endl;
  119.         cout << "Group : " << students[i].number_group << endl;
  120.         cout << "Year of birth : " << students[i].birthYear << endl;
  121.         cout << "Physics : " << students[i].physics << endl;
  122.         cout << "Math : " << students[i].math << endl;
  123.         cout << "Informatics : " << students[i].informatics << endl;
  124.         cout << "Chemistry : " << students[i].chemistry << endl;
  125.         cout << "Middle mark : " << students[i].gap << endl;
  126.     }
  127.  
  128. }
  129. void individual(Student *students, int quantity)
  130. {
  131.     for (int i = 0; i < quantity; i++)
  132.     {
  133.         if (!isGood(students[i])) continue;
  134.         cout << "Name : " << students[i].name << endl;
  135.         cout << "Surname : " << students[i].surname << endl;
  136.         cout << "Patronymic : " << students[i].patronymic << endl;
  137.         cout << "Group : " << students[i].number_group << endl;
  138.         cout << "Year of birth : " << students[i].birthYear << endl;
  139.         cout << "Physics : " << students[i].physics << endl;
  140.         cout << "Math : " << students[i].math << endl;
  141.         cout << "Informatics : " << students[i].informatics << endl;
  142.         cout << "Chemistry : " << students[i].chemistry << endl;
  143.         cout << "Middle mark : " << students[i].gap << endl;
  144.     }
  145. }
  146. void edit(Student *&students, int quantity) {
  147.     system("cls");
  148.     cout << "Vvedite nomer studenta korogo nuzhno izmenit: ";
  149.     int number;
  150.     cin >> number;
  151.     cout << "Viberite chto vam nyzhno izmenit: " << endl;
  152.     cout << "1 - Name" << endl;
  153.     cout << "2 - Surname" << endl;
  154.     cout << "3 - patronymic" << endl;
  155.     cout << "4 - nember_group" << endl;
  156.     cout << "5 - birthYear" << endl;
  157.     cout << "6 - physics" << endl;
  158.     cout << "7 - math" << endl;
  159.     cout << "8 - informatics" << endl;
  160.     cout << "9 - chemistry" << endl;
  161.     int choice;
  162.     cin >> choice;
  163.     switch (choice)
  164.     {
  165.     case 1:
  166.     {
  167.         cout << "Vvedite imya: ";
  168.         string nam;
  169.         cin >> nam;
  170.         students[number].name = nam;
  171.     }
  172.         break;
  173.     case 2:
  174.     {
  175.         cout << "Vvedite famil: ";
  176.         string nam;
  177.         cin >> nam;
  178.         students[number].surname = nam;
  179.     }
  180.         break;
  181.     case 3:
  182.     {
  183.         cout << "Vvedite otchestv: ";
  184.         string nam;
  185.         cin >> nam;
  186.         students[number].patronymic = nam;
  187.     }
  188.         break;
  189.     case 4:
  190.     {
  191.         cout << "Vvedite nomer_group: ";
  192.         int nam;
  193.         cin >> nam;
  194.         students[number].number_group = nam;
  195.     }
  196.         break;
  197.     case 5:
  198.     {
  199.         cout << "Vvedite data rozhdeniya: ";
  200.         int nam;
  201.         cin >> nam;
  202.         students[number].birthYear = nam;
  203.     }
  204.         break;
  205.     case 6:
  206.     {
  207.         cout << "Vvedite ocenky po fizike: ";
  208.         int nam;
  209.         cin >> nam;
  210.         students[number].physics = nam;
  211.     }
  212.         break;
  213.     case 7:
  214.     {
  215.         cout << "Vvedite ocenky po mat: ";
  216.         int nam;
  217.         cin >> nam;
  218.         students[number].math = nam;
  219.     }
  220.         break;
  221.     case 8:
  222.     {
  223.         cout << "Vvedite ocenky po informat: ";
  224.         int nam;
  225.         cin >> nam;
  226.         students[number].informatics = nam;
  227.     }
  228.         break;
  229.     case 9:
  230.     {
  231.         cout << "Vvedite ocenky po himii: ";
  232.         int nam;
  233.         cin >> nam;
  234.         students[number].chemistry = nam;
  235.     }
  236.         break;
  237.     default:
  238.         cout << "ERROR" << endl;
  239.         break;
  240.     }
  241.     ofstream fout("File.txt", ios::out);
  242.     for (int i = 0; i < quantity; i++) {
  243.         fout << students[i].name << " ";
  244.         fout << students[i].surname << " ";
  245.         fout << students[i].patronymic << " ";
  246.         fout << students[i].number_group << " ";
  247.         fout << students[i].birthYear << " ";
  248.         fout << students[i].physics << " ";
  249.         fout << students[i].math << " ";
  250.         fout << students[i].informatics << " ";
  251.         fout << students[i].chemistry << " ";
  252.         fout << students[i].gap << endl;
  253.     }
  254.     system("cls");
  255.     cout << "Izmenino!!!" << endl;
  256. }
  257.  
  258. int initiaize(Student *&students)
  259. {
  260.     int n = strCounter();
  261.     students = new Student[n];
  262.     ifstream fin("File.txt");
  263.     string temp;
  264.     int t;
  265.     double tt;
  266.     for (int i = 0; i < n; i++)
  267.     {
  268.         fin >> temp;
  269.         students[i].name = temp;
  270.         fin >> temp;
  271.         students[i].surname = temp;
  272.         fin >> temp;
  273.         students[i].patronymic = temp;
  274.         fin >> t;
  275.         students[i].number_group = t;
  276.         fin >> t;
  277.         students[i].birthYear = t;
  278.         fin >> t;
  279.         students[i].physics = t;
  280.         fin >> t;
  281.         students[i].math = t;
  282.         fin >> t;
  283.         students[i].informatics = t;
  284.         fin >> t;
  285.         students[i].chemistry = t;
  286.         fin >> tt;
  287.         students[i].gap = t;
  288.         temp = "";
  289.         t = 0;
  290.         tt = 0;
  291.     }
  292.     return n;
  293. }
  294.  
  295. int main()
  296. {
  297.     Student *students;
  298.     int quantity = initiaize(students);
  299.     while (true)
  300.     {
  301.         system("cls");
  302.         int choise = 0;
  303.         menu();
  304.         cin >> choise;
  305.         switch (choise)
  306.         {
  307.         case 1: show(students, quantity); break;
  308.         case 2: edit(students, quantity); break;
  309.         case 3: add(students, quantity); break;
  310.         case 4: individual(students, quantity); break;
  311.         case 0: return 0;
  312.         default:"ERROR!";
  313.         }
  314.         system("pause");
  315.     }
  316. }
  317.  
  318. void menu()
  319. {
  320.     cout << "Enter , what do you want :" << endl;
  321.     cout << "1 - Show all data " << endl;
  322.     cout << "2 - Edit " << endl;
  323.     cout << "3 - Add " << endl;
  324.     cout << "4 - Individual task " << endl;
  325.     cout << "0 - Exit" << endl;
  326. }
  327.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement