Advertisement
Guest User

Untitled

a guest
Dec 17th, 2018
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.37 KB | None | 0 0
  1. #include <iostream>
  2. #include <iomanip>
  3. #include <fstream>
  4. #include <cstring>
  5. #include <Windows.h>
  6.  
  7. using namespace std;
  8.  
  9. char file_name[20];
  10.  
  11. struct teacher {
  12.  
  13. char name[30], //ФИО учителя
  14.  
  15. subject[20] = "",//Предмет
  16.  
  17. classNumb[10] = "", // Класс
  18.  
  19. city[15]; //Город
  20.  
  21. teacher* next;
  22.  
  23. };
  24.  
  25. int count_lines(fstream &f) { //посчитать количество строк в списке
  26.  
  27. char *str = new char[1024];
  28.  
  29. int i = 0;
  30.  
  31. while (!f.eof())
  32.  
  33. {
  34.  
  35. f.getline(str, 1024, '\n');
  36.  
  37. i++;
  38.  
  39. }
  40.  
  41. delete str;
  42.  
  43. return i;
  44.  
  45. }
  46.  
  47. teacher* newTeachers(ifstream &f) {
  48.  
  49. teacher *k = NULL, *head = NULL;
  50.  
  51. while (!f.eof()) {
  52.  
  53. if (!head) {
  54.  
  55. head = new teacher;
  56.  
  57. f >> head->name >> head->subject >> head->classNumb >> head->city;
  58.  
  59. head->next = k;
  60.  
  61. k = head;
  62.  
  63. }
  64.  
  65. else {
  66.  
  67. teacher *n = new teacher;
  68.  
  69. f >> n->name >> n->subject >> n->classNumb >> n->city;
  70.  
  71. n->next = NULL;
  72.  
  73. k->next = n;
  74.  
  75. k = n;
  76.  
  77. }
  78.  
  79. }
  80.  
  81. k->next = NULL;
  82.  
  83. return head;
  84.  
  85. }
  86.  
  87. teacher* CreateList(fstream &f, int j) { //считывание списка
  88.  
  89. teacher *List = new teacher[j];
  90.  
  91. f.seekg(0);
  92.  
  93. for (int i = 0; i < j; i++) {
  94.  
  95. f >> List[i].name >> List[i].subject >> List[i].classNumb >> List[i].city;
  96.  
  97. }
  98.  
  99. return List;
  100.  
  101. }
  102.  
  103. void OutputList(teacher *f, int size) { //вывод списка
  104.  
  105. cout << "\n";
  106.  
  107. cout << setw(20) << "ФИО" << setw(20) << "Предмет" << setw(10) << "Класс" << setw(15) << "Город\n";
  108.  
  109. cout << setw(10) << "_________________________________________________________________\n";
  110.  
  111. for (int i = 0; i < size; i++) {
  112.  
  113. cout << setw(20) << f[i].name << setw(20) << f[i].subject << setw(10) << f[i].classNumb << setw(15) << f[i].city << endl;
  114.  
  115. }
  116.  
  117. }
  118.  
  119. void OutputLine(teacher *f, int line) {
  120.  
  121. cout << setw(20) << f[line].name << setw(20) << f[line].subject << setw(10) << f[line].classNumb << setw(15) << f[line].city << endl;
  122.  
  123. }
  124.  
  125. int menu_2() { //воторое меню
  126.  
  127. cout << "\n\tМЕНЮ РАБОТЫ СО СПИСКАМИ: \n";
  128.  
  129. cout << "1. Вывести весь список учителей\n";
  130.  
  131. cout << "2. Добавить нового учителя (только для соотрудников школы, имеющих определенные права)\n";
  132.  
  133. cout << "3. Поиск по определенному предмету\n";
  134.  
  135. cout << "4. Поиск по определенному классу\n";
  136.  
  137. cout << "5. Создать новый список\n";
  138.  
  139. cout << "6. Выйти из программы\n";
  140.  
  141. return 0;
  142.  
  143. }
  144.  
  145. int main() {
  146.  
  147. setlocale(LC_ALL, "Russian");
  148.  
  149. int choose1 = 0, choose2 = 0;
  150.  
  151. char str[20] = "";
  152.  
  153. bool flag = true;
  154.  
  155. int j = 0, lines;
  156.  
  157. teacher *List;
  158.  
  159. cout << "Добро пожаловать!" << endl;
  160.  
  161. cout << endl;
  162.  
  163. cout << "Программа использует только латиницу ";
  164.  
  165. cout << endl;
  166.  
  167. cout << endl;
  168.  
  169. cout << "Введите имя файла: ";
  170.  
  171. cin >> file_name;
  172.  
  173. while (true) {
  174.  
  175. fstream file(file_name, ios::in | ios::out | ios::binary);
  176.  
  177. if (!file) {
  178.  
  179. cout << file_name << " не существует!" << endl;
  180.  
  181. return 1;
  182.  
  183. }
  184.  
  185. file.seekg(0);
  186.  
  187. lines = count_lines(file);
  188.  
  189. List = CreateList(file, lines);
  190.  
  191. file.close();
  192.  
  193. menu_2();
  194.  
  195. cout << endl;
  196.  
  197. cin >> choose2;
  198.  
  199. cout << endl;
  200.  
  201. if (choose2 == 1) {
  202.  
  203. OutputList(List, lines);
  204.  
  205. }
  206.  
  207. if (choose2 == 2) {
  208.  
  209. fstream File(file_name, ios::out | ios::in | ios::app);
  210.  
  211. File << "\n";
  212.  
  213. cout << "Введите cледующие данные о новом учителе.\n";
  214.  
  215. while (flag) {
  216.  
  217. cout << "\tФИО: ";
  218.  
  219. cin >> str;
  220.  
  221. if (strlen(str) < 20) flag = false;
  222.  
  223. else cout << "\t\tОшибка, введите заново\n";
  224.  
  225. }
  226.  
  227. File.write(str, strlen(str));
  228.  
  229. File.write(" ", strlen(" "));
  230.  
  231. flag = true;
  232.  
  233. while (flag) {
  234.  
  235. cout << "\tПредмет: ";
  236.  
  237. cin >> str;
  238.  
  239. if (strlen(str) < 20) flag = false;
  240.  
  241. else cout << "\t\tОшибка, введите заново\n";
  242.  
  243. }
  244.  
  245. File.write(str, strlen(str));
  246.  
  247. File.write(" ", strlen(" "));
  248.  
  249. flag = true;
  250.  
  251. while (flag) {
  252.  
  253. cout << "\tКласс: ";
  254.  
  255. cin >> str;
  256.  
  257. if (strlen(str) < 15) flag = false;
  258.  
  259. else cout << "\t\tОшибка, введите заново\n";
  260.  
  261. }
  262.  
  263. File.write(str, strlen(str));
  264.  
  265. File.write(" ", strlen(" "));
  266.  
  267. flag = true;
  268.  
  269. while (flag) {
  270.  
  271. cout << "\tГород: ";
  272.  
  273. cin >> str;
  274.  
  275. if (strlen(str) < 10) flag = false;
  276.  
  277. else cout << "\t\tОшибка, введите заново\n";
  278.  
  279. }
  280.  
  281. File.write(str, strlen(str));
  282.  
  283. flag = true;
  284.  
  285. File.close();
  286.  
  287. }
  288.  
  289. if (choose2 == 3) {
  290.  
  291. int k = 0;
  292.  
  293. while (flag) {
  294.  
  295. cout << "Введите необходимый предмет (например Algebra): ";
  296.  
  297. cin >> str;
  298.  
  299. cout << endl;
  300.  
  301. if (strlen(str) < 20) flag = false;
  302.  
  303. else cout << "\t\tОшибка, введите заново\n";
  304.  
  305. }
  306.  
  307. flag = true;
  308.  
  309. cout << setw(20) << "ФИО" << setw(20) << "Предмет" << setw(10) << "Класс" << setw(15) << "Город\n";
  310.  
  311. cout << setw(10) << "_________________________________________________________________\n";
  312.  
  313. for (int i = 0; i < lines; i++) {
  314.  
  315. if (_stricmp(str, List[i].subject) == 0) {
  316.  
  317. k++;
  318.  
  319. OutputLine(List, i);
  320.  
  321. }
  322.  
  323. }
  324.  
  325. if (k == 0) cout << "\n\t Ошибка, товары не найдены!\n";
  326.  
  327. }
  328.  
  329. if (choose2 == 4) {
  330.  
  331. int k = 0;
  332.  
  333. while (flag) {
  334.  
  335. cout << "Введите необходимый класс (например 10'A'): ";
  336.  
  337. cin >> str;
  338.  
  339. cout << endl;
  340.  
  341. if (strlen(str) < 20) flag = false;
  342.  
  343. else cout << "\t\tОшибка, введите заново\n";
  344.  
  345. }
  346.  
  347. flag = true;
  348.  
  349. cout << setw(20) << "ФИО" << setw(20) << "Предмет" << setw(10) << "Класс" << setw(15) << "Город\n";
  350.  
  351. cout << setw(10) << "_________________________________________________________________\n";
  352.  
  353. for (int i = 0; i < lines; i++) {
  354.  
  355. if (_stricmp(str, List[i].classNumb) == 0) {
  356.  
  357. k++;
  358.  
  359. OutputLine(List, i);
  360.  
  361. }
  362.  
  363. }
  364.  
  365. if (k == 0) cout << "\n\t Ошибка, товары не найдены!\n";
  366.  
  367. }
  368.  
  369. if (choose2 == 5) {
  370.  
  371. char filename[25];
  372.  
  373. cout << "Введите имя файла: ";
  374.  
  375. cin >> filename;
  376.  
  377. fstream NewFile(filename, ios::out | ios::in | ios::app);
  378.  
  379. while (true) {
  380.  
  381. NewFile << "\n";
  382.  
  383. cout << "Введите cледующие данные о новом учителе.\n";
  384.  
  385. while (flag) {
  386.  
  387. cout << "\tФИО: ";
  388.  
  389. cin >> str;
  390.  
  391. if (strlen(str) < 20) flag = false;
  392.  
  393. else cout << "\t\tОшибка, введите заново\n";
  394.  
  395. }
  396.  
  397. NewFile.write(str, strlen(str));
  398.  
  399. NewFile.write(" ", strlen(" "));
  400.  
  401. flag = true;
  402.  
  403. while (flag) {
  404.  
  405. cout << "\tПредмет: ";
  406.  
  407. cin >> str;
  408.  
  409. if (strlen(str) < 20) flag = false;
  410.  
  411. else cout << "\t\tОшибка, введите заново\n";
  412.  
  413. }
  414.  
  415. NewFile.write(str, strlen(str));
  416.  
  417. NewFile.write(" ", strlen(" "));
  418.  
  419. flag = true;
  420.  
  421. while (flag) {
  422.  
  423. cout << "\tКласс: ";
  424.  
  425. cin >> str;
  426.  
  427. if (strlen(str) < 15) flag = false;
  428.  
  429. else cout << "\t\tОшибка, введите заново\n";
  430.  
  431. }
  432.  
  433. NewFile.write(str, strlen(str));
  434.  
  435. NewFile.write(" ", strlen(" "));
  436.  
  437. flag = true;
  438.  
  439. while (flag) {
  440.  
  441. cout << "\tГород: ";
  442.  
  443. cin >> str;
  444.  
  445. if (strlen(str) < 10) flag = false;
  446.  
  447. else cout << "\t\tОшибка, введите заново\n";
  448.  
  449. }
  450.  
  451. NewFile.write(str, strlen(str));
  452.  
  453. flag = true;
  454.  
  455. NewFile.close();
  456.  
  457. break;
  458.  
  459. }
  460.  
  461. }
  462.  
  463. if (choose2 == 6) {
  464.  
  465. cout << "Закрытие программы!\n";
  466.  
  467. return 3;
  468.  
  469. }
  470.  
  471. }
  472.  
  473. return 0;
  474.  
  475. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement