Advertisement
SergeyNasekin

Class StudentRegister

Jun 11th, 2021
243
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 9.77 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4. using namespace std;
  5. //---------------------------------------------------------------------------------------------------------------------
  6. /*
  7. 1. написать класс Студенческий журнал. в нем нужно хранить студентов,
  8. о каждом известны фио, номер группы, пол, средний балл зачетки.
  9. класс создается пустым, без студентов. можно добавлять студентов,
  10. выводить инфо о конкретном студенте, удалять студентов, очищать список.
  11. при этом, выводить инфо и удалять надо принимая фио. если такого студента нет,
  12. писать об этом в консоль. при добавлении если студент с таким фио уже есть -
  13. нужно не добавлять нового, а изменить параметры уже записанного. использовать stl
  14.  */
  15.  
  16.  
  17. class StudentRegister
  18. {
  19. private:
  20.     class Student
  21.     {
  22.     public:
  23.         string firstName;
  24.         string surname;
  25.         string patronymic;
  26.         string gender;
  27.         string averageScore; //Дописываю в ночь на Субботу, писать проверку на то, ввёл пользователь число или
  28.         string groupNumber; // любой другой симол, сил уже нет))
  29.  
  30.         void SetName(){
  31.             cout << "----------------------------------------------------------------------------------" << endl;
  32.             cout << "| Pleas enter Name of student: ";
  33.             cin >> firstName;
  34.  
  35.             cout << "| Pleas enter Surname of student: ";
  36.             cin >> surname;
  37.  
  38.             cout << "| Pleas enter Patronymic of student: ";
  39.             cin >> patronymic;
  40.         } /*Задаём отдельно ФИО, оно используется не только для создания объекта но и дл других
  41.                              операций, поэтому отдельно*/
  42.         void SetParam()
  43.         {
  44.             cout << "| Pleas enter gender of student: ";
  45.             cin >> gender;
  46.  
  47.             cout << "| Pleas enter number group where study student: ";
  48.             cin >> groupNumber;
  49.  
  50.             cout << "| Pleas enter a middle ball of student: ";
  51.             cin >> averageScore;
  52.             cout << "----------------------------------------------------------------------------------" << endl;
  53.         } // Здесь остальные параметры, гендер тоже тут, свободная стпана всё же)
  54.         void Show() const{
  55.             cout << "----------------------------------------------------------------------------------" << endl;
  56.             cout << "| Student:" << endl;
  57.             cout << "| Name: " << firstName
  58.                  << "\t Surname: " << surname
  59.                  << "\t\t Patronymic: " << patronymic << endl;
  60.             cout << "|" << endl;
  61.             cout << "| Gender: " << gender
  62.                  << "\t Group number: " << groupNumber
  63.                  << "\t The middle ball: " << averageScore << endl;
  64.             cout << "----------------------------------------------------------------------------------" << endl;
  65.         } // Выводим на экран Инфо
  66.         Student(){
  67.             this -> averageScore = "0";
  68.             this -> groupNumber = "0";
  69.             this -> firstName = "none";
  70.             this -> surname = "none";
  71.             this -> patronymic = "none";
  72.             this -> gender = "none";
  73.         }; // Конструктор, не знаю для чего он нужен, но висело предупреждение что нужен.
  74.     };// Тут всё в принципе понятно, объектом студенческого журнала должны быть студенты
  75.     vector<Student> Register; // Вектор под студентов
  76.     vector<Student> Check; // Вспомогательный вектор для операций сравнения
  77.     vector<string> AnswerType{"Yes","yes","Y","y","No","no","n"}; // Вектор под варианты ответов в функции "AddStudent"
  78.     string answer; // Перемнная под ответ пользователя в функции "AddStudent" 122 строка.
  79.     int identifier; //Вспомогательная переменная, определяется в функции "CheckName", хранит индекс определяемого объекта.
  80.     void EnterNewStudent()
  81.     {
  82.         Student NewStudent;
  83.         NewStudent.SetName();
  84.         Check[0] = NewStudent;
  85.     }; //Заводим новый объект Студент с ФИО, кладём в вектор "Check"
  86.     int CheckName(){
  87.         identifier = 0;
  88.         int size = Register.size(); // Тут какое то предупреждение о конвертации, но всё работает
  89.         for (int i = 0; i < size; ++i) {
  90.             if (Check[0].firstName == Register[i].firstName
  91.                 && Check[0].surname == Register[i].surname
  92.                 && Check[0].patronymic == Register[i].patronymic){
  93.                 identifier = i; // Тут, в случае если ФИО есть в векторе, сохранчю его индекс в массиве.
  94.                 return 1; // Эту функцию я использую в if-ах, поэтому удобно было поставить возврат 1, если есть дубль
  95.             }
  96.         }
  97.         return 0;// и 0, если нету.
  98.     }; // Проверка на наличие студента из "EnterNewStudent" в основном векторе "Register"
  99.  
  100. public: //Тут уже готовые методы класса, непосредственно для использования.
  101.     void AddStudent()
  102.     {
  103.         EnterNewStudent();
  104.         int point = 0; // Вспомогалельная переменная, Если введённого студента ещё нет в векторе или есть, и  пользователь
  105.         if (CheckName()){ // Ответил что хочет внести изменения, то остаётся изменений и данные вносятся.
  106.             cout << "@------------------------------------@" << endl;// А если нет, то выходим из программы не с чем.
  107.             cout << "|                                    |" << endl;
  108.             cout << "| Such a student is already existent |" << endl;
  109.             cout << "| Do you want to change his details? |" << endl;
  110.             cout << "| Please answer yes or no : ";
  111.             cin >> answer;
  112.             cout << "|                                    |" << endl;
  113.             cout << "@------------------------------------@" << endl;
  114.             if (AnswerType[0] == answer
  115.                 || AnswerType[1] == answer
  116.                 || AnswerType[2] == answer
  117.                 ||AnswerType[3] == answer){
  118.                 Check[0].SetParam();
  119.             }else if (AnswerType[4] == answer
  120.                       || AnswerType[5] == answer
  121.                       || AnswerType[6] == answer){
  122.                 point = 1;
  123.             } else{
  124.                 cout << "@-----------------------------------@" << endl;
  125.                 cout << "|                                   |" << endl;
  126.                 cout << "|   You entered an invalid value!   |" << endl;
  127.                 cout << "|   Input canceled.                 |" << endl;
  128.                 cout << "|                                   |" << endl;
  129.                 cout << "@-----------------------------------@" << endl;
  130.                 point = 1;
  131.             }
  132.         }
  133.         if (!point){
  134.             Check[0].SetParam(); // Добавляем или меняем инфу у студента
  135.             Register.push_back(Check[0]); // И передаём на постоянное хранение в главный вектор
  136.         } else{
  137.             cout << "@------------------------------------@" << endl;
  138.             cout << "|                                    |" << endl;
  139.             cout << "|   No changes have been made.       |" << endl;
  140.             cout << "|                                    |" << endl;
  141.             cout << "@------------------------------------@" << endl;
  142.         }
  143.     };
  144.     void DelStudent()
  145.     {
  146.         EnterNewStudent(); // Вводи Имя,
  147.         if (!CheckName()) {
  148.             cout << "@-----------------------------------@" << endl;
  149.             cout << "|                                   |" << endl;
  150.             cout << "|   Such a student does not exist!  |" << endl;
  151.             cout << "|                                   |" << endl;
  152.             cout << "@-----------------------------------@" << endl;
  153.         } else Register.erase(Register.begin()+identifier);
  154.     };
  155.     void ShowStudent()
  156.     {
  157.         EnterNewStudent();
  158.         if (!CheckName()){
  159.             cout << "@------------------------------------@" << endl;
  160.             cout << "|                                    |" << endl;
  161.             cout << "|   Such a student does not exist!   |" << endl;
  162.             cout << "|                                    |" << endl;
  163.             cout << "@------------------------------------@" << endl;
  164.         } else Register[identifier].Show();
  165.     };
  166.     void ShowAllStudent()
  167.     {
  168.         int sise = Register.size();
  169.         for (int i = 0; i < sise; ++i) {
  170.             Register[i].Show();
  171.         }
  172.     };
  173.     void ClearList ()
  174.     {
  175.         Register.clear();
  176.     };
  177. };
  178.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement