Savelyev_Vyacheslav

KursovC++3

Jun 22nd, 2021 (edited)
265
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 21.44 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <fstream> // chtenie faila
  4. #include <stdlib.h>     //for using the function sleep
  5. #include <windows.h> // для Win32 систем
  6. #include <clocale>
  7. #include <typeinfo>
  8. #include <fstream>
  9. using namespace std;
  10.  
  11. int const feldsUniversStruct = 9;
  12. int const maxRooms = 20;
  13.  
  14. struct Hostel // структура
  15. {
  16.     string HostelN; // номер ощежития
  17.     string room; // номер комноты
  18.     string debt; // долг
  19. };
  20.  
  21. struct  University  // структура
  22. {
  23.     string Rbook;  // номер зачетки
  24.     string name; // имя
  25.     string surname; // фамелия
  26.     string patronymic; // отчество
  27.     string faculty; // факультет
  28.     string teamN; // группа
  29.     Hostel* HostelPtr = new Hostel(); // структура общага
  30.     struct University* ptr; // указатель на следующий узел
  31. };
  32. struct DebtObrabot {
  33.     int room;
  34.     int debt;
  35. };
  36.  
  37. //номер зачетки / фио / направление / группа / № Общаги / № комнаты /долги за общежитие
  38. // выбрать 5 комнат с макс долгом проживания
  39.  
  40. // заголовки функций
  41. int main();
  42. void StekOperation();
  43. University* Dobav_head();
  44. University* delBySurname_(string valueDell);
  45. University* Corr_By_value();
  46. University* SearchByName();
  47. void Obrabotka();
  48. void Delete_ALL();
  49. void setFileName();
  50. void Help();
  51. void gotovo();
  52. void DelContent(string path);
  53. void WriteFromProgToTxt(string path);
  54. void ReedOfTxtToProg(string nameFile);
  55. void sortRoom();
  56. void Print();
  57. void SetValue(string num[]);
  58. University* ChekValidALL(string num[]);
  59. void SetUniversity(University* elem, string num[]);
  60. bool isEmpty();
  61. string getValue0(University* p);
  62. string getValue1(University* p);
  63. string getValue2(University* p);
  64. string getValue3(University* p);
  65. string getValue4(University* p);
  66. string getValue5(University* p);
  67. string getValue6(University* p);
  68. string getValue7(University* p);
  69. string getValue8(University* p);
  70. University* Prev(University* nod);
  71. University* Next(University* university_);
  72. int ValidChislo(string s);
  73. int ValidText(string s);
  74. void ReedOfTxtToProg(string nameFile);
  75. void headDel(University* temp);
  76. void headNextDel(University* temp);
  77. void DeleteEnd(University* temp);
  78. void DeletePreEnd(University* temp);
  79. void DeleteMidle(University* nod);
  80. int CountRooms();
  81. void quicksort(DebtObrabot* mas, int first, int last);
  82. void Shapka();
  83.  
  84. University* head;
  85. //headR = NULL;
  86. string nameFile = "write.txt";
  87.  
  88.  
  89.  
  90. bool isEmpty() { return head == NULL; }  // Проверка, пуст ли список
  91. void setFileName() { cout << " \nVvedite name.txt: "; cin >> nameFile; }
  92. string getValue0(University* p) { return p->Rbook; } // Получение значения  узла списка
  93. string getValue1(University* p) { return p->name; } // Получение значения узла списка patronymic
  94. string getValue2(University* p) { return p->surname; } // Получение значения узла списка
  95. string getValue3(University* p) { return p->patronymic; }
  96. string getValue4(University* p) { return p->faculty; } // Получение значения 2го узла списка
  97. string getValue5(University* p) { return p->teamN; }
  98. string getValue6(University* p) { return p->HostelPtr->HostelN; }
  99. string getValue7(University* p) { return p->HostelPtr->room; }
  100. string getValue8(University* p) { return p->HostelPtr->debt; }
  101. void SetValue(string num[]) {
  102.     cout << "Введите номер зачетной книжки:     "; cin >> num[0];
  103.     cout << "Введите имя:                       "; cin >> num[1];
  104.     cout << "Введите фамелию:                   "; cin >> num[2];
  105.     cout << "Введите отчество:                  "; cin >> num[3];
  106.     cout << "Введите направление:               "; cin >> num[4];
  107.     cout << "Введите группу:                    "; cin >> num[5];
  108.     cout << "Введите № общежития:               "; cin >> num[6];
  109.     cout << "Введите № комноты:                 "; cin >> num[7];
  110.     cout << "Введите долги:                     "; cin >> num[8];
  111. }
  112. void SetUniversity(University* elem, string num[]) {
  113.     elem->Rbook = num[0];
  114.     elem->name = num[1];
  115.     elem->surname = num[2];
  116.     elem->patronymic = num[3];
  117.     elem->faculty = num[4];
  118.     elem->teamN = num[5];
  119.     elem->HostelPtr->HostelN = num[6];
  120.     elem->HostelPtr->room = num[7];
  121.     elem->HostelPtr->debt = num[8];
  122. }
  123. University* Prev(University* nod)
  124. {
  125.     if (isEmpty()) return NULL;
  126.     if (nod == head) return NULL;
  127.     University* p = head;
  128.     while (p->ptr != nod)
  129.         p = p->ptr;
  130.     return p;
  131. }
  132. University* Next(University* university_)
  133. {
  134.     if (isEmpty()) return NULL;
  135.     return university_->ptr;
  136. }
  137.  
  138.  
  139.  
  140.     int ValidChislo(string s) {
  141.     for (auto c : s) {
  142.         if ((c <= 'z') && (c >= 'a')) {
  143.             cout << "Vi vveli text ne tuda"; return 0;
  144.         }
  145.         else if ((c <= 'Z') && (c >= 'A')) {
  146.             cout << "Vi vveli text  ne tuda"; return 0;
  147.         }
  148.         else if ((c <= 'Я') && (c >= 'А')) {
  149.             cout << "Vi vveli text  ne tuda"; return 0;
  150.         }
  151.         else if ((c <= 'я') && (c >= 'а')) {
  152.             cout << "Vi vveli text  ne tuda"; return 0;
  153.         }
  154.     }
  155.     return 1;
  156. }
  157.     int ValidText(string s) {
  158.     for (auto c : s)
  159.         if ((c <= '9') && (c >= '0')) {
  160.             cout << "Vi vveli cislo ne tuda";
  161.             return 0;
  162.         }
  163.     return 1;
  164. }
  165.     University* ChekValidALL(string num[])
  166. {  
  167.     if (!ValidChislo(num[0])) { cout << " 0-HostelN \n"; return NULL; }
  168.     if (!ValidText(num[1])) { cout << " 1-Rbook \n"; return NULL; }
  169.     if (!ValidText(num[2])) { cout << " 2-name \n"; return NULL; }
  170.     if (!ValidText(num[3])) { cout << " 3-name \n"; return NULL; }
  171.     if (!ValidText(num[4])) { cout << " 4-name \n"; return NULL; }
  172.     //if (!ValidChislo(num[5])) { cout << " 5-faculty \n"; return NULL; }
  173.     if (!ValidChislo(num[6])) { cout << " 6-HostelN \n"; return NULL; }
  174.     if (!ValidChislo(num[7])) { cout << " 7-room \n"; return NULL; }
  175.     if (!ValidChislo(num[8])) { cout << " 8-debt \n"; return NULL; }
  176. }
  177. University* Add(string num[],  University* university_ = NULL)
  178. {
  179.     //ChekValidALL(num);
  180.     University* elem = new University();
  181.     SetUniversity(elem, num);
  182.     if (university_ == NULL) // Добавление нового корня
  183.     {
  184.         if (head == NULL) {
  185.             elem->ptr = NULL;
  186.             head = elem;
  187.         }
  188.         else {
  189.             elem->ptr = head;
  190.             head = elem;
  191.         }
  192.         return elem;
  193.     }
  194.     elem->ptr = university_->ptr; // Добавление узла после текущего
  195.     university_->ptr = elem;
  196.     return elem;
  197. }
  198. University* getLast()
  199. {
  200.     University* p = head;
  201.     while (Next(p) != NULL)
  202.         p = Next(p);
  203.     return p;
  204. }
  205. void ReedOfTxtToProg(string nameFile)
  206. {
  207.     ifstream inf(nameFile);
  208.     // Если мы не можем открыть файл для чтения его содержимого,
  209.     if (!inf)
  210.     {
  211.         // то выводим следующее сообщение об ошибке и выполняем функцию exit()
  212.         cerr << nameFile << " could not be opened for reading!" << endl;
  213.         cerr << "Perezagruzi programmu" << endl;
  214.         Sleep(5000);
  215.         exit(1);
  216.     }
  217.     //string z0, z1, z2, z3, z4, z5, z6, z7;
  218.        string z[feldsUniversStruct];
  219.     // Пока есть, что читать,
  220.        int count=0;
  221.     while (inf)
  222.     {
  223.        
  224.         // то перемещаем то, что можем прочитать, в строку, а затем выводим эту строку на экран
  225.         string strInput;
  226.         getline(inf, strInput);
  227.         int ci = 0;
  228.         string word = "";
  229.         int probels = 0;
  230.        
  231.  
  232.         while ((strInput[ci] != NULL)) {
  233.             strInput[ci];
  234.             if (strInput[ci] != ' ') { word += strInput[ci]; }
  235.             if ((strInput[ci] == ' ') || (strInput[ci + 1] == NULL)) {
  236.                 probels++;
  237.                 switch (probels) {
  238.                 case 1:  z[0] = word;
  239.                 case 2:  z[1] = word;
  240.                 case 3:  z[2] = word;
  241.                 case 4:  z[3] = word;
  242.                 case 5:  z[4] = word;
  243.                 case 6:  z[5] = word;
  244.                 case 7:  z[6] = word;
  245.                 case 8:  z[7] = word;
  246.                 case 9:  z[8] = word;
  247.                 default: word = "";
  248.                 }
  249.             }
  250.             ci++;
  251.         }
  252.         University* s = getLast();
  253.         if (strInput != "\0") { s = Add(z, s); }
  254.        
  255.        
  256.     }
  257.    
  258.    
  259.     Sleep(500);
  260. }
  261.  
  262.  
  263.  
  264. void PrintRow(University* p)
  265. {
  266.     if (isEmpty()) { cout << "Список пуст" << endl; return; }
  267.     cout << getValue0(p)
  268.         << " " << getValue1(p)
  269.         << " " << getValue2(p)
  270.         << " " << getValue3(p)
  271.         << " " << getValue4(p)
  272.         << " " << getValue5(p)
  273.         << " " << getValue6(p)
  274.         << " " << getValue7(p)
  275.         << " " << getValue8(p)
  276.         ;
  277.         cout << endl;
  278. }
  279. void Print()
  280. {   University* p = head;
  281.     //int razmerUzlaBit = sizeof(p) + sizeof(p->faculty) + sizeof(p->HostelPtr) + sizeof(p->HostelPtr->debt) + sizeof(p->HostelPtr->HostelN) + sizeof(p->HostelPtr->room) + sizeof(p->name) + sizeof(p->patronymic) + sizeof(p->Rbook) + sizeof(p->surname) + sizeof(p->teamN) + sizeof(p->ptr);
  282.     //cout << " Размер узла списка = "<< razmerUzlaBit / 8 << " байта." << endl; cout << endl;
  283.  
  284.     cout << "\n";
  285.     if (isEmpty()) { cout << "Список пуст" << endl; return; }
  286.    
  287.     int count = -1;
  288.    
  289.     do {
  290.         PrintRow(p);
  291.         p = Next(p);
  292.         count++;
  293.     } while (p != NULL);
  294.     /*cout << endl;
  295.     cout << "Всего строк = " << count << " штук" << endl;*/
  296.    
  297.  
  298. }
  299.  
  300.  
  301.  
  302.     void headDel(University* temp)
  303. {
  304.     University* t1 = temp;
  305.     University* t2 = Next(temp);
  306.     head = t2;
  307.     t1 = NULL;
  308.     delete t1;
  309. }
  310.     void headNextDel(University* temp)
  311. {  
  312.     University* t1 = Prev(temp);
  313.     University* t2 = temp;
  314.     University* t3 = Next(temp);
  315.     t1->ptr = t3;
  316.     t2->ptr = NULL;
  317.     delete t2;
  318. }
  319.     void DeleteEnd(University* temp)
  320. {
  321.     University* t1 = Prev(temp);
  322.     University* t2 = temp;
  323.     t1->ptr = NULL;
  324.     delete t2;
  325. }
  326.     void DeletePreEnd(University* temp)
  327. {
  328.     University* t1 = Prev(temp);
  329.     University* t2 = temp;
  330.     University* t3 = Next(temp);
  331.     t1->ptr = t3; delete t2;
  332. }
  333.     void DeleteMidle(University* nod)
  334. {
  335.     University* t1 = Prev(nod); // Удаление промежуточного узла
  336.     University* t2 = nod;
  337.     University* t3 = Next(nod);
  338.     t1->ptr = t3;
  339.     t2->ptr = NULL;
  340.     delete t2;
  341. }
  342. University* delBySurname_(string valueDell) {
  343.     University* head2 = head;
  344.     if (head2 == NULL) { return NULL; } // В списке нет узлов
  345.     University* temp = NULL;
  346.    
  347.     if (head2->surname == valueDell) { cout << "Удалить голову "; headDel(head2); return NULL; }
  348.     head2 = head2->ptr;
  349.     if (head2->surname == valueDell) { cout << "Удалить второй с головы "; headNextDel(head2); return NULL; }
  350.     head2 = head2->ptr;
  351.     int j = 0;
  352.  
  353.     while (head2->ptr->ptr != NULL) {
  354.         temp = head2;
  355.         if (temp->surname == valueDell) {
  356.             cout << "Удаление в середине\n";
  357.             DeleteMidle(temp);
  358.             return NULL;
  359.         }
  360.         head2 = head2->ptr;
  361.         j++;
  362.     }
  363.     if (head2->surname == valueDell) { cout << "Удалить второй с конца "; DeletePreEnd(head2); return NULL; }
  364.     if (head2->ptr->surname == valueDell) { cout << "Удалить первыЙ с конца "; DeleteEnd(head2->ptr); return NULL; }
  365. }
  366.  
  367.     int chekValue(University* head, University* iPtr, string s1, string s2) {
  368.  
  369.     if (iPtr == NULL) return 0;
  370.     if (s2 == "|комната") { return 1;}
  371.     if (s1 == "|комната") { return 0;}
  372.     int number1 = std::stoi(s1);
  373.     int number2 = std::stoi(s2);
  374.     if (number1 < number2) {
  375.         return 1;
  376.     }
  377.     else { return 0; }
  378.    
  379.  
  380. }
  381.     void Swap(University* ptr1, University* ptr2)
  382. {
  383.     if (ptr1 == NULL || ptr2 == NULL) return;
  384.     if (ptr1 == ptr2) return;
  385.  
  386.  
  387.     University* prev1 = Prev(ptr1);
  388.     University* prev2 = Prev(ptr2);
  389.     University* next1 = Next(ptr1);
  390.     University* next2 = Next(ptr2);
  391.  
  392.     if (ptr1 == head) {
  393.         head = ptr2;
  394.         ptr1->ptr = next2;
  395.         ptr2->ptr = ptr1;
  396.        
  397.     }
  398.     else {
  399.         prev1->ptr = ptr2;
  400.         ptr2->ptr = ptr1;
  401.         ptr1->ptr = next2;
  402.    
  403.     }
  404.    
  405.        
  406. }
  407.    
  408. void sortRoom() {
  409.  
  410.     University* ptr = NULL;
  411.     University* headCop = head;
  412.     int p = 0;
  413.     if (headCop->ptr == NULL) {} // В списке нет узлов
  414.     while (headCop != NULL) {
  415.         if (headCop->ptr == NULL) break;
  416.         if (headCop->name != "|имя") {
  417.         if (chekValue(headCop, headCop->ptr, headCop->HostelPtr->room, headCop->ptr->HostelPtr->room)) {
  418.             Swap(headCop, headCop->ptr);
  419.             p++;
  420.         }
  421.     }
  422.         headCop = headCop->ptr;
  423.     }
  424.     if (p != 0) {
  425.         sortRoom();
  426.     }
  427. }
  428.  
  429. University* Dobav_head()
  430. {
  431.     University* temp = NULL;
  432.     University* head2 = head;
  433.     string num[feldsUniversStruct];
  434.     SetValue(num);
  435.     ChekValidALL(num);
  436.     University* elem = new University();
  437.     SetUniversity(elem, num);
  438.     elem->ptr = head2;
  439.     head = elem;
  440.    
  441.     if (head2 == NULL) { return NULL; } // В списке нет узлов
  442.  
  443. }
  444. University* Corr_By_value()
  445. {
  446.     University* temp = NULL;
  447.     University* head2 = head;
  448.     int cor;
  449.     string valueSearch;
  450.     cout << "Введите фамелию для корректировки строки : "; cin >> valueSearch;
  451.     if (head2 == NULL) { cout << "pusto "; return NULL; } // В списке нет узло
  452.     int j = 0;
  453.     while (head2 != NULL) {
  454.         temp = head2;
  455.         if (temp->surname == valueSearch) {
  456.             cout << "зачетка_N-1 имя-2 фамелия-3 отчество-4 направление-5 группа-6 общага_N-7\n";
  457.             cout << "комната-8 долг-9 Exit - anyKEY \n";
  458.                      {
  459.                         cin >> cor;
  460.                 switch (cor) {
  461.                 case 1:
  462.                     cout << "зачетка_N\n"; cin >> temp->Rbook;
  463.                     break;
  464.                 case 2:
  465.                     cout << "имя\n"; cin >> temp->name;
  466.                     break;
  467.                 case 3:
  468.                     cout << "фамелия\n"; cin >> temp->surname;
  469.                     break;
  470.                 case 4:
  471.                     cout << "отчество\n";  cin >> temp->patronymic;
  472.                     break;
  473.                 case 5:
  474.                     cout << "направление()\n"; cin >> temp->faculty;
  475.                     break;
  476.                 case 6:
  477.                     cout << "группа()\n"; cin >> temp->teamN;
  478.                     break;
  479.                 case 7:
  480.                     cout << "общага_N;\n"; cin >> temp->HostelPtr->HostelN;
  481.                     break;
  482.                 case 8:
  483.                     cout << "комната\n"; cin >> temp->HostelPtr->room;
  484.                     break;
  485.                 case 9:
  486.                     cout << "долг()\n"; cin >> temp->HostelPtr->debt;
  487.                     break;
  488.                 default:
  489.                     cout << "Exit Corr\n"; goto tryAgain2;
  490.                     break;
  491.  
  492.                 }
  493.             }
  494.                  // это лейбл  
  495.         }
  496.         head2 = head2->ptr;
  497.         j++;
  498.    
  499. //break;
  500.     }
  501. tryAgain2:return NULL;
  502. }
  503. University* SearchByName()
  504. {
  505.     University* temp = NULL;
  506.     University* head2 = head;
  507.  
  508.     string valueSearch;
  509.     cout << "Поиск по фамилии: "; cin >> valueSearch;
  510.     if (head2 == NULL) { cout << "pusto "; return NULL; } // В списке нет узло
  511.     int j = 0;
  512.     while (head2 != NULL) {
  513.         temp = head2;
  514.         if (temp->surname == valueSearch) {
  515.             cout << "Поиск идет ... \n";
  516.             PrintRow(temp);
  517.             break;
  518.         }
  519.         head2 = head2->ptr;
  520.         j++;
  521.     }
  522.     system("pause");
  523. }
  524. void WriteFromProgToTxt(string path){
  525. int count = -1;
  526.     //string path = "write.txt";
  527.     ofstream fout;
  528.     fout.open(path, ofstream::app);
  529.     if (!fout.is_open()) {
  530.         cout << "Ошибка открытия фаила" << endl;
  531.         Sleep(5000);
  532.     }
  533.     else {
  534.         if (isEmpty()) { cout << "Список пуст" << endl; return; }
  535.         University* p = head;
  536.         do {
  537.             fout << "\n" << getValue0(p)
  538.                 << " " << getValue1(p)
  539.                 << " " << getValue2(p)
  540.                 << " " << getValue3(p)
  541.                 << " " << getValue4(p)
  542.                 << " " << getValue5(p)
  543.                 << " " << getValue6(p)
  544.                 << " " << getValue7(p)
  545.                 << " " << getValue8(p)
  546.                 ;
  547.             p = Next(p);
  548.             count++;
  549.         } while (p != NULL);
  550.     }
  551.     cout << "Всего строк = " << count << " штук. \n";
  552.  
  553.     fout.close();
  554. }
  555. void DelContent(string path)
  556. {
  557.     ofstream fout;
  558.     fout.open(path, ofstream::trunc);
  559.    
  560.     fout.close();
  561. }
  562. ///////////////////
  563. void Delete_ALL()
  564. {
  565.     class University* p = head;
  566.     if (p == NULL) return;
  567.     do {
  568.         University* d = p;
  569.         p = p->ptr;
  570.         delete d;
  571.     } while (p != NULL);
  572.     head = NULL;
  573. }
  574. int CountRooms()
  575. {
  576.     sortRoom();
  577.     University* t = head;
  578.  
  579.     int i = 1;
  580.     int vsego=0;
  581.  
  582.     while (t != NULL) {
  583.         if (t->ptr == NULL) return vsego;
  584.         if (t->HostelPtr->room != t->ptr->HostelPtr->room){ i++; }
  585.         t = t->ptr;
  586.         vsego = i;
  587.     }
  588.     return vsego;
  589. }
  590.  
  591. void quicksort(DebtObrabot* mas, int first, int last)
  592. {
  593.     int mid, count1, count2;
  594.     int f = first, l = last;
  595.     mid = mas[(f + l) / 2].debt; //вычисление опорного элемента
  596.     do
  597.     {  
  598.         while (mas[f].debt > mid) f++;
  599.         while (mas[l].debt < mid) l--;
  600.         if (f <= l) //перестановка элементов
  601.         {
  602.             count1 = mas[f].debt;
  603.             mas[f].debt = mas[l].debt;
  604.             mas[l].debt = count1;
  605.  
  606.             count2 = mas[f].room;
  607.             mas[f].room = mas[l].room;
  608.             mas[l].room = count2;
  609.             f++;
  610.             l--;
  611.         }
  612.     } while (f < l);
  613.  
  614.     if (first < l) quicksort(mas, first, l);
  615.     if (f < last) quicksort(mas, f, last);
  616. }
  617. void Obrabotka() {
  618.     sortRoom();
  619.    
  620.     DebtObrabot ArrObrabotka[maxRooms];
  621.     int i = 0;
  622.    
  623.     string s1;
  624.     string s2;
  625.     string s3;
  626.     int number1=0;
  627.     int number2=0;
  628.     int number3 = 0;
  629.     int a = 0;
  630.     int k = 0;
  631.     University* t = head;
  632.  
  633.     while (t != NULL) {
  634.         if (t->name == "|имя") {// delBySurname_("|фамелия");
  635.         t = t->ptr; continue; }
  636.         s1 = t->HostelPtr->room;
  637.         s3 = t->HostelPtr->debt;
  638.         number3 = std::stoi(s3);
  639.         number1 = std::stoi(s1);
  640.         if (t->ptr == NULL) {
  641.             t = t->ptr;
  642.             a = a + number3;
  643.             ArrObrabotka[i].debt = a;
  644.             ArrObrabotka[i].room = number1;
  645.             break;
  646.         }
  647.             s2 = t->ptr->HostelPtr->room;
  648.             number2 = std::stoi(s2);
  649.             a = a + number3;
  650.             t = t->ptr;
  651.             if (number1 != number2) {
  652.            
  653.             ArrObrabotka[i].debt = a;
  654.             ArrObrabotka[i].room = number1;
  655.                 a = 0;
  656.                 i++;
  657.             }
  658.     }
  659.     quicksort(ArrObrabotka, 0, maxRooms - 1);
  660.     int y = 0;
  661.     while (y<5) {
  662.         cout << "Долг-" << ArrObrabotka[y].debt << "  |  НомерКомнаты-" << ArrObrabotka[y].room << " \n";
  663.         y++;
  664.         }
  665.     system("pause");
  666. }
  667.  
  668. void gotovo() {
  669.     sortRoom();
  670.     DelContent(nameFile);
  671.     WriteFromProgToTxt(nameFile);
  672.     Delete_ALL();
  673.     ReedOfTxtToProg(nameFile);
  674.     Print();
  675. }
  676. void Help()
  677. {
  678.     system("cls");
  679.     cout << "Dobav_head-1 delBySurname_-2 Corr_By_value-3 SearchByName-4 \n";
  680.     cout << "Obrabotka-5  Delete_ALL-6 setFileName-7 Exit - anyKEY\n";
  681.     cout << "Таблица находится в файле "<< nameFile <<". ";
  682. }
  683. void Shapka() {
  684.     University* t = head;
  685.     if (t == NULL || t->name != "|имя"
  686.         ) {
  687.         University* head2 = head;
  688.         University* elem = new University();
  689.         // зачетк / фио / направление / группа / № Общаги / № комнаты /долги за общежитие
  690.         elem->Rbook = "|зачетка_N";
  691.         elem->name = "|имя";
  692.         elem->surname = "|фамелия";
  693.         elem->patronymic = "|отчество";
  694.         elem->faculty = "|направление";
  695.         elem->teamN = "|группа";
  696.         elem->HostelPtr->HostelN = "|общага_N";
  697.         elem->HostelPtr->room = "|комната";
  698.         elem->HostelPtr->debt = "|долг\a|";
  699.         elem->ptr = head2;
  700.         head = elem;
  701.     }
  702. }
  703. void StekOperation()
  704. {
  705.     WriteFromProgToTxt(nameFile);
  706.     ReedOfTxtToProg(nameFile);
  707.     Shapka();
  708.  
  709.     string valueDell;
  710.     int opN;
  711.     Help();
  712.     gotovo();
  713.  
  714.     //cin >> opN;
  715.     while (true)
  716.     {
  717.         cout << "OPERAVION # >>  ";
  718.         cin >> opN;
  719.         switch (opN) {
  720.             case 1:
  721.                 cout << "Dobav_head\n";  Dobav_head();
  722.                 break;
  723.             case 2:
  724.                 cout << "delBySurname_\n";  cout << "Удаление по фамилии: "; cin >> valueDell; delBySurname_(valueDell);
  725.                 break;
  726.             case 3:
  727.                 cout << "Corr_By_value\n";  Corr_By_value();
  728.                 break;
  729.             case 4:
  730.                 cout << "SearchByName\n";  SearchByName();
  731.                 break;
  732.             case 5:
  733.                 cout << "Obrabotka()\n";  Obrabotka();
  734.                 break;
  735.             case 6:
  736.                 cout << "Delete_ALL()\n";  Delete_ALL();
  737.                 break;
  738.             case 7:
  739.                 cout << "setFileName\n"; setFileName();  Delete_ALL(); WriteFromProgToTxt(nameFile); ReedOfTxtToProg(nameFile); Shapka();
  740.                 break;
  741.         default:
  742.             cout << "Exit\n"; Delete_ALL(); goto tryAgain;
  743.         }
  744.         Help();
  745.         gotovo();
  746.        
  747.     }
  748. tryAgain: // это лейбл
  749.     exit;
  750. }
  751.  
  752.  
  753. // Запуск программы: CTRL+F5 или меню "Отладка" > "Запуск без отладки"
  754. // Отладка программы: F5 или меню "Отладка" > "Запустить отладку"
  755.  
  756. int main()
  757. {
  758.    
  759.     //setlocale(LC_ALL, "ru");
  760.     setlocale(LC_CTYPE, "Russian");
  761.     SetConsoleCP(1251);// установка кодовой страницы win-cp 1251 в поток ввода
  762.     SetConsoleOutputCP(1251); // установка кодовой страницы win-cp 1251 в поток вывода
  763.     setlocale(LC_ALL, "Rus"); // Подключение русского языка
  764.     StekOperation();
  765. }
  766. // Советы по началу работы
  767. //   1. В окне обозревателя решений можно добавлять файлы и управлять ими.
  768. //   2. В окне Team Explorer можно подключиться к системе управления версиями.
  769. //   3. В окне "Выходные данные" можно просматривать выходные данные сборки и другие сообщения.
  770. //   4. В окне "Список ошибок" можно просматривать ошибки.
  771. //   5. Последовательно выберите пункты меню "Проект" > "Добавить новый элемент", чтобы создать файлы кода, или "Проект" > "Добавить существующий элемент", чтобы добавить в проект существующие файлы кода.
  772. //   6. Чтобы снова открыть этот проект позже, выберите пункты меню "Файл" > "Открыть" > "Проект" и выберите SLN-файл.
  773.  
  774.  
  775.  
  776.  
  777.  
  778.  
  779.  
  780.  
  781.  
Add Comment
Please, Sign In to add comment