Guest User

Untitled

a guest
Apr 19th, 2018
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 24.08 KB | None | 0 0
  1. use DBI;
  2. use DBD::Pg;
  3. use Digest::MD5 qw (md5_hex);
  4.  
  5. #Цеплям базу, пока ток постгрес, лень мне муську крутить, хотя запросы одинаковые будут
  6.  
  7. {
  8. my $day;
  9. my $month;
  10. my $year;
  11. my $hours;
  12. my $minutes;
  13. my $seconds;
  14.  
  15. ( $seconds, $minutes, $hours, $day, $month, $year )
  16. = ( localtime ) [ 0,1,2,3,4,5 ];
  17. $month+=1;
  18. $year+=1900;
  19. $hours=$hours+1;
  20. print "Сегодня $day-$month-$year\n";
  21. print "Сейчас $hours:$minutes:$seconds\n";
  22. }
  23.  
  24.  
  25. my @InfoShowAll;
  26. my $dbname=bd;
  27. my $host=localhost;
  28. my $port=5432;
  29. my $username=postgres;
  30. my $pass=1;
  31. my $dbh = DBI->connect("dbi:Pg:dbname=$dbname;host=$host;port=$port",
  32. $username,
  33. $pass,
  34. {PrintError => 0}
  35. ) or die " \n\n\n\nОшибка соединения... $DBI::errstr\n";
  36. print "Connect OK\n\n\n";
  37.  
  38.  
  39. while($result!=1)
  40. {
  41. print"Логин:";
  42. $login=<STDIN>;
  43. chomp($login);
  44. print "\n";
  45. print "Пароль:";
  46. $pas=<STDIN>;
  47. chomp($pas);
  48. $pas=md5_hex($pas);
  49. $req = "SELECT * FROM users WHERE login='$login' AND pass='$pas';";
  50. $result = $dbh->do($req);
  51.  
  52. if ($result!=1)
  53. {
  54. print "Пароль неверный, попробуйте еще раз!";
  55. print "\n";
  56. } else { print "Добро пожаловать.\n\n";}
  57.  
  58. }
  59.  
  60. sub passchange
  61. {
  62. while($res!=1)
  63. {
  64. print"Логин:";
  65. $loginw=<STDIN>;
  66. chomp($login);
  67. print "\n";
  68. print "Пароль:";
  69. $pas=<STDIN>;
  70. chomp($pas);
  71. $pas=md5_hex($pas);
  72. $req = "SELECT * FROM users WHERE login='$login' AND pass='$pas';";
  73. $res = $dbh->do($req);
  74.  
  75. if ($res!=1)
  76. {
  77. print "Пароль неверный, попробуйте еще раз!";
  78. print "\n";
  79. } else { print "Вводи новый пароль.\n\n";}}
  80. $pasw=<STDIN>;
  81. chomp($pas);
  82. $pasw=md5_hex($pasw);
  83. $req = "UPDATE users SET pass='$pasw' WHERE login='$login';";
  84. $result = $dbh->do($req);
  85.  
  86. }
  87.  
  88.  
  89. sub user_add
  90. {
  91. print "Логин нового пользователя:";
  92. chomp($login=<STDIN>);
  93. while($bol!=1) {
  94. print "\nУровень доcтупа (1:администратор, 0:юзер):";
  95. chomp($acces=<STDIN>);
  96. if ($acces==0 or $acces==1) {$bol=1}
  97. }
  98. $bol=0;
  99. while ($bol!=1) {
  100. print "\nПароль:";
  101. chomp($pas=<STDIN>);
  102. print "\nПовторите пароль:" ;
  103. chomp($repas=<STDIN>);
  104. if ($pas==$repas){
  105. $pas=md5_hex($pas);
  106. $bol=1;
  107. }
  108. }
  109. $req="INSERT INTO users VALUES ('$login','$pas','$acces')";
  110. $rv=$dbh->do($req);
  111. print "Done!\n";
  112. }
  113.  
  114. sub user_del
  115. {
  116. print "Логин удаляемого пользователя:";
  117. chomp($login=<STDIN>);
  118. print "\nУверен? 1/0\n";
  119. chomp($yes=<STDIN>);
  120. if ($yes==1 or $yes==0)
  121. {
  122. if ($yes==1)
  123. {
  124. $req="DELETE FROM ONLY users WHERE users.login='$login'";
  125. $rv=$dbh->do($req);
  126. if ($rv!=1) {
  127. print "Нету такого пацана \n";} else
  128. {
  129. print "\n Done. $login deleted."}}
  130.  
  131. elsif ($yes==0) {
  132. print "\n Ну нет, так нет.";
  133. }
  134.  
  135. }
  136. }
  137.  
  138. sub baseadministration
  139. {
  140. print "Осторожно! Только для крутых парней. Может иметь необратимые последствия.\n";
  141. print "Вводи свой запрос. (для выхода Q) :";
  142. chomp($req=<STDIN>);
  143. if ( $req eq 'q' ) {
  144. return(0) }
  145. $rv=$dbh->do($req);
  146. print "done";
  147.  
  148. }
  149.  
  150. sub add
  151. {
  152.  
  153. my $a;
  154. my $j;
  155. my @info;
  156. print "\n";
  157. print " ";
  158. print " <Будьте внимательны при вводе>\n";
  159. print " ";
  160. print " <Для смены языка используйте Caps Lock>\n";
  161. print " ";
  162. print " <В случае ошибочного ввода нажмите Q \n";
  163. print " ";
  164. print " для выхода в главное меню>";
  165. print "\n\n";
  166. print "Введите фамилию, имя и отчество (через пробел):\n";
  167. @info = split (/\s+/, <STDIN>);
  168. chomp $info[ 2 ]; # первые три элемента массива введем
  169. # через пробел, последующие - отдельно
  170. # с запросом ввода для каждого.
  171. print "Введите должность: ";
  172. $info[ 3 ] = <STDIN>;
  173. chomp $info[ 3 ];
  174. if ( $info[ 3 ] eq 'q' ) # организуем цикл, c помощью которого
  175. # можно завершить ввод данных без записи
  176. # в файл нажатием клавиши q.
  177. {
  178. return( 0 );
  179. }
  180. print "Введите год принятия на работу: ";
  181. $info[ 4 ] = <STDIN>;
  182. chomp $info[ 4 ];
  183. if ( $info[ 4 ] eq 'q' )
  184. {
  185. return( 0 );
  186. }
  187. print "Введите стаж работы: ";
  188. $info[ 5 ] = <STDIN>;
  189. chomp $info[ 5 ];
  190. if ( $info[ 5 ] eq 'q' )
  191. {
  192. return( 0 );
  193. }
  194. print "Введите оклад: ";
  195. $info[ 6 ] = <STDIN>;
  196. chomp $info[ 6 ];
  197. if ( $info[ 6 ] eq 'q' )
  198. {
  199. return( 0 );
  200. }
  201. print "Введите пол: ";
  202. $info[ 7 ] = <STDIN>;
  203. chomp $info[ 7 ];
  204. if ( $info[ 7 ] eq 'q' )
  205. {
  206. return( 0 );
  207. }
  208. print "Введите год рождения: ";
  209. $info[ 8 ] = <STDIN>;
  210. chomp $info[ 8 ];
  211. if ( $info[ 8 ] eq 'q' )
  212. {
  213. return( 0 );
  214. }
  215. print "Введите серию и номер паспорта ( разделять знаком _ ): ";
  216. $info[ 9 ] = <STDIN>;
  217. chomp $info[ 9 ];
  218. if ( $info[ 9 ] eq 'q' )
  219. {
  220. return( 0 );
  221. }
  222. print "Введите улицу: ";
  223. $info[ 10 ] = <STDIN>;
  224. chomp $info[ 10 ];
  225. if ( $info[ 10 ] eq 'q' )
  226. {
  227. return( 0 );
  228. }
  229. print "Введите номер дома: ";
  230. $info[ 11 ] = <STDIN>;
  231. chomp $info[ 11 ];
  232. if ( $info[ 11 ] eq 'q' )
  233. {
  234. return( 0 );
  235. }
  236. print "Введите номер квартиры: ";
  237. $info[ 12 ] = <STDIN>;
  238. chomp $info[ 12 ];
  239. if ( $info[ 12 ] eq 'q' )
  240. {
  241. return( 0 );
  242. }
  243. print "Введите номер телефона: ";
  244. $info[ 13 ] = <STDIN>;
  245. chomp $info[ 13 ];
  246. if ( $info[ 13 ] eq 'q' )
  247. {
  248. return( 0 );
  249. }
  250. $j = 14;
  251. # организуем цикл do while для ввода информации об образовании.
  252. # Цикл совершается, затем следует запрос пользователя,
  253. # продолжать ли цикл или остановиться.
  254. do
  255. {
  256. print "Введите образование (используйте _ вместо пробела): ";
  257. $info[ $j ] = <STDIN>;
  258. chomp $info[ $j ];
  259. if ( $info[ $j ] eq 'q' )
  260. {
  261. return( 0 );
  262. }
  263. $j++;
  264. print "Введите учебное заведение (используйте _ вместо пробела): ";
  265. $info[ $j ] = <STDIN>;
  266. chomp $info[ $j ];
  267. if ( $info[ $j ] eq 'q' )
  268. {
  269. return( 0 );
  270. }
  271. $j++;
  272. print "Введите год окончания обучения: ";
  273. $info[ $j ] = <STDIN>;
  274. chomp $info[ $j ];
  275. if ( $info[ $j ] eq 'q' )
  276. {
  277. return( 0 );
  278. }
  279. $j++;
  280. print "Введите специальность: ";
  281. $info[ $j ] = <STDIN>;
  282. chomp $info[ $j ];
  283. if ( $info[ $j ] eq 'q' )
  284. {
  285. return( 0 );
  286. }
  287. $j++;
  288. print " Если есть еще одно образование, нажмите 1, если нет,\n";
  289. print " нажмите 0 для завершения ввода:\n";
  290. $a = <STDIN>;
  291. chomp $a;
  292. }
  293.  
  294. while ($a);
  295.  
  296. my $hurma;
  297. for ($i=14; $i<$j; $i++){
  298. $info[$i].=' ';
  299. $hurma.=$info[$i];
  300. }
  301.  
  302. $req="INSERT INTO data VALUES ('$info[0]','$info[1]','$info[2]','$info[3]','$info[4]','$info[5]','$info[6]','$info[7]','$info[8]','$info[9]','$info[10]','$info[11]','$info[12]','$info[13]','$hurma')";
  303. $rv=$dbh->do($req);
  304.  
  305. print "\n\n\nDONE\n";
  306. print $rv;
  307.  
  308. if (!defined $rv) {
  309. print "При выполнении запроса возникла ошибка: " . $dbh->errstr . "\n";
  310. }
  311.  
  312. }
  313.  
  314. sub magick
  315. {
  316. $query = "SELECT * FROM data";
  317.  
  318. $sth = $dbh->prepare($query);
  319. $rv = $sth->execute();
  320.  
  321. open (COUT, ">cout");
  322.  
  323. while (@array = $sth->fetchrow_array()) {
  324. print ( COUT "@array \n" );
  325. }
  326. close (COUT)
  327. }
  328.  
  329. sub magick2
  330. {
  331. $query = "SELECT * FROM users";
  332.  
  333. $sth = $dbh->prepare($query);
  334. $rv = $sth->execute();
  335.  
  336. open (COUT, ">cout");
  337.  
  338. while ($ref = $sth->fetchrow_hashref()) {
  339. ($login, $lvl) = ($ref->{'login'}, $ref->{'acceslevel'});
  340. print (COUT "$login\t$lvl\n");
  341. }
  342. close (COUT)
  343. }
  344.  
  345. sub admin_see
  346. {
  347. magick2();
  348. open (READ, 'cout' );
  349. while ( <READ> )
  350. { $i=0;
  351. @data = split (/\s+/, $_);
  352. print "$data[$i]\n";
  353. $i++;}
  354. }
  355.  
  356. sub output_all
  357. {
  358. my $n = 1;
  359. my $a;
  360. my $b;
  361. my $j;
  362. my $k;
  363. my @info;
  364. my @data;
  365. magick();
  366.  
  367. {
  368. open ( COUT, "cout" ) ;
  369. @info = <COUT>;
  370. close ( COUT );
  371. unlink(cout); # закроем файл
  372. for ( $j = 0; $j <= $#info; $j++ ) # организуем перебор массива @info
  373. {
  374. @data = split (/\s+/, $info[ $j ]); # массив @data разделен
  375. # функцией split на элементы.
  376. # /\s+/ - разделитель (пробел). (регулярк)
  377. $a = $data[ 0 ];
  378. $b = $j;
  379. for ( $k = $j+1; $k <= $#info; $k++ )
  380. {
  381. @data = split (/\s+/, $info[ $k ]);
  382. if ($a gt $data[ 0 ]) # gt - оператор сравнения строк,
  383. # истинен, если левый операнд > правого.
  384. {
  385. $a = $data[ 0 ];
  386. $b = $k;
  387. }
  388. }
  389. ( $info[$j], $info [$b] ) = ( $info [$b], $info[$j] );
  390. }
  391. @InfoShowAll = @info;
  392. for ( $j = 0; $j <= $#info; $j++ ) # вывод
  393. {
  394. @data = split (/\s+/, $info[ $j ]);
  395. print "$n) $data[0] $data[ 1 ] $data[ 2 ]. Должность - $data[ 3 ]\n";
  396. print " Работает с $data[ 4 ] года. Стаж работы - $data[ 5 ] лет. ";
  397. print "Оклад $data[ 6 ] т.р.\n";
  398. print " Пол - $data[ 7 ]. $data[ 8 ] года рождения. ";
  399. print "Пасп. данные - $data[ 9 ]\n";
  400. print " Улица $data[ 10 ], д. $data[ 11 ], кв. $data[ 12 ]. ";
  401. print "Телефон - $data[ 13 ]\n";
  402. $n++;
  403. for ( $k = 14; $k < $#data; $k++ )
  404. {
  405. print " Образование - $data[ $k ], окончил $data[ ++$k ] в ";
  406. print "$data[ ++$k ] году. \n";
  407. print " Специальность - $data[ ++$k ].\n";
  408. }
  409. print "\n";
  410. }
  411. print "\n ";
  412. print " !!!Для пролистывания экрана нажмите клавишу Scroll Lock!!!\n\n";
  413. }
  414.  
  415. }
  416.  
  417. sub output_educ
  418. {
  419.  
  420. my $n = 1;
  421. my $a;
  422. my $b;
  423. my $j;
  424. my $k;
  425. my @info;
  426. my @data;
  427. magick();
  428. {
  429. open ( COUT, "cout" ) ;
  430. @info = <COUT>;
  431. close ( COUT );
  432. unlink(cout); # закроем файл
  433. for ( $j = 0; $j <= $#info; $j++ )
  434. {
  435. @data = split (/\s+/, $info[ $j ]);
  436. $a = $data[ 0 ];
  437. $b = $j;
  438. for ( $k = $j+1; $k <= $#info; $k++ )
  439. {
  440. @data = split (/\s+/, $info[ $k ]);
  441. if ($a gt $data[ 0 ])
  442. {
  443. $a = $data[ 0 ];
  444. $b = $k;
  445. }
  446. }
  447. ( $info[$j], $info [$b] ) = ( $info [$b], $info[$j] );
  448. }
  449. @InfoShowAll = @info;
  450. for ( $j = 0; $j <= $#info; $j++ )
  451. {
  452. @data = split (/\s+/, $info[$j]);
  453. print "$n) $data[0] $data[ 1 ] $data[ 2 ]. ";
  454. $n++;
  455. for ( $k = 14; $k <= $#data; $k++ )
  456. {
  457. print "Образование - $data[ $k ].\n";
  458. print " Окончил $data[ ++$k ] в ";
  459. print "$data[ ++$k ] году. Специальность - $data[ ++$k ].\n";
  460. }
  461. print "\n";
  462. }
  463. print "\n ";
  464. print " !!!Для пролистывания экрана нажмите клавишу Scroll Lock!!!";
  465. print "\n\n";
  466. }
  467. }
  468.  
  469. sub output_private
  470. {
  471. my $n = 1;
  472. my $a;
  473. my $b;
  474. my $j;
  475. my $k;
  476. my @info;
  477. my @data;
  478. magick();
  479. {
  480. open ( COUT, "cout" ) ;
  481. @info = <COUT>;
  482. close ( COUT );
  483. unlink(cout);
  484. for ( $j = 0; $j <= $#info; $j++ )
  485. {
  486. @data = split (/\s+/, $info[ $j ]);
  487. $a = $data[ 0 ];
  488. $b = $j;
  489. for ( $k = $j+1; $k <= $#info; $k++ )
  490. {
  491. @data = split (/\s+/, $info[ $k ]);
  492. if ($a gt $data[ 0 ])
  493. {
  494. $a = $data[ 0 ];
  495. $b = $k;
  496. }
  497. }
  498. ( $info[$j], $info [$b] ) = ( $info [$b], $info[$j] );
  499. }
  500. @InfoShowAll = @info;
  501. for ( $j = 0; $j <= $#info; $j++ )
  502. {
  503. @data = split (/\s+/, $info[$j]);
  504. print "$n) $data[0] $data[ 1 ] $data[ 2 ], $data[ 8 ] года рождения.\n";
  505. print " Пасп. данные - $data[ 9 ]. ";
  506. print "Улица $data[ 10 ], д. $data[ 11 ], кв. $data[ 12 ].\n";
  507. print " Телефон - $data[ 13 ]";
  508. $n++;
  509. print "\n";
  510. }
  511. print "\n ";
  512. print " !!!Для пролистывания экрана нажмите клавишу Scroll Lock!!!";
  513. print "\n\n";
  514. }
  515. }
  516.  
  517. sub output_work
  518. {
  519. my $n = 1;
  520. my $a;
  521. my $b;
  522. my $j;
  523. my $k;
  524. my @info;
  525. my @data;
  526. {
  527. open ( COUT, "cout" ) ;
  528. @info = <COUT>;
  529. close ( COUT );
  530. unlink(cout);
  531. for ( $j = 0; $j <= $#info; $j++ )
  532. {
  533. @data = split (/\s+/, $info[ $j ]);
  534. $a = $data[ 0 ];
  535. $b = $j;
  536. for ( $k = $j+1; $k <= $#info; $k++ )
  537. {
  538. @data = split (/\s+/, $info[ $k ]);
  539. if ($a gt $data[ 0 ])
  540. {
  541. $a = $data[ 0 ];
  542. $b = $k;
  543. }
  544. }
  545. ( $info[$j], $info [$b] ) = ( $info [$b], $info[$j] );
  546. }
  547. @InfoShowAll = @info;
  548. for ( $j = 0; $j <= $#info; $j++ )
  549. {
  550. @data = split (/\s+/, $info[$j]);
  551. print "$n) $data[0] $data[ 1 ] $data[ 2 ], должность - $data[ 3 ]\n";
  552. print " Работает с $data[ 4 ]. Стаж работы - $data[ 5 ] лет. ";
  553. print "Оклад - $data[ 6 ] тысяч рублей.\n";
  554. $n++;
  555. print "\n";
  556. }
  557. }
  558. }
  559.  
  560. sub search
  561. {
  562. my $i = 1;
  563. my $k = 0;
  564. my $a;
  565. my $b;
  566. my @info;
  567. my @data;
  568. magick();
  569. print "\n Вы выбрали меню поиска.\n";
  570. print " Выберите нужный пункт:\n\n";
  571. print " (1) Поиск по фамилии\n";
  572. print " (2) Поиск по должности\n";
  573. print " (3) Поиск по образованию\n";
  574. print " (4) Поиск по улице проживания\n";
  575. print " (0) Вернуться в главное меню\n";
  576. $i = <STDIN>;
  577. if ( $i == 0 )
  578. {
  579. unlink(cout);
  580. return( 0 );
  581. }
  582. elsif ( $i == 1 )
  583. {
  584. print "Введите фамилию работника: ";
  585. $a = <STDIN>;
  586. chomp $a;
  587. open ( READ, "cout" );
  588. while ( <READ> )
  589. {
  590. @data = split (/\s+/, $_);
  591. if ( $a eq $data[ 0 ] )
  592. {
  593. $info[ $k ] = $_;
  594. $k++;
  595. }
  596. }
  597. close ( READ );
  598. unlink(cout);
  599. for ( $j = 0; $j <= $#info; $j++ )
  600. {
  601. @data = split (/\s+/, $info[ $j ]);
  602. print " Были найдены следующие работники с фамилией $a:\n\n";
  603. print " $data[ 0 ] $data[ 1 ] $data[ 2 ]. Должность - $data[ 3 ]\n";
  604. print " Работает с $data[ 4 ] года. Стаж работы - $data[ 5 ] лет. ";
  605. print "Оклад $data[ 6 ] т.р.\n";
  606. print " Пол - $data[ 7 ]. $data[ 8 ] года рождения. ";
  607. print "Пасп. данные - $data[ 9 ]\n";
  608. print " Улица $data[ 10 ], д. $data[ 11 ], кв. $data[ 12 ]. ";
  609. print "Телефон - $data[ 13 ]\n";
  610. $n++;
  611. for ( $k = 14; $k < $#data; $k++ )
  612. {
  613. print " Образование - $data[ $k ], окончил $data[ ++$k ] в ";
  614. print "$data[ ++$k ] году.\n";
  615. print " Специальность - $data[ ++$k ].\n";
  616. }
  617. print "\n";
  618. }
  619. return( 0 );
  620. }
  621. elsif ( $i == 2 )
  622. {
  623. print "Введите должность работника: ";
  624. $a = <STDIN>;
  625. chomp $a;
  626. open ( READ, "cout" );
  627. while ( <READ> )
  628. {
  629. @data = split (/\s+/, $_);
  630. if ( $a eq $data[ 3 ] )
  631. {
  632. $info[ $k ] = $_;
  633. $k++;
  634. }
  635. }
  636. close ( READ );
  637. unlink(cout);
  638. for ( $j = 0; $j <= $#info; $j++ )
  639. {
  640. @data = split (/\s+/, $info[ $j ]);
  641. print " Должность $a у следующих работников:\n\n";
  642. print " $data[ 0 ] $data[ 1 ] $data[ 2 ]. Должность - $data[ 3 ]\n";
  643. print " Работает с $data[ 4 ] года. Стаж работы - $data[ 5 ] лет. ";
  644. print "Оклад $data[ 6 ] т.р.\n";
  645. print " Пол - $data[ 7 ]. $data[ 8 ] года рождения. ";
  646. print "Пасп. данные - $data[ 9 ]\n";
  647. print " Улица $data[ 10 ], д. $data[ 11 ], кв. $data[ 12 ]. ";
  648. print "Телефон - $data[ 13 ]\n";
  649. $n++;
  650. for ( $k = 14; $k < $#data; $k++ )
  651. {
  652. print " Образование - $data[ $k ], окончил $data[ ++$k ] в ";
  653. print "$data[ ++$k ] году.\n";
  654. print " Специальность - $data[ ++$k ].\n";
  655. }
  656. print "\n";
  657. }
  658. return( 0 );
  659. }
  660. elsif ( $i == 3 )
  661. {
  662. print "Введите образование работника: ";
  663. $a = <STDIN>;
  664. chomp $a;
  665. open ( READ, "cout" );
  666. while ( <READ> )
  667. {
  668. @data = split (/\s+/, $_);
  669. if ( $a eq $data[ 14 ] || $data[ 18 ] )
  670. {
  671. $info[ $k ] = $_;
  672. $k++;
  673. }
  674. }
  675. close ( READ );
  676. unlink(cout);
  677. for ( $j = 0; $j <= $#info; $j++ )
  678. {
  679. @data = split (/\s+/, $info[ $j ]);
  680. print " $a образование имеют следующие работники:\n\n";
  681. print " $data[ 0 ] $data[ 1 ] $data[ 2 ]. Должность - $data[ 3 ]\n";
  682. print " Работает с $data[ 4 ] года. Стаж работы - $data[ 5 ] лет. ";
  683. print "Оклад $data[ 6 ] т.р.\n";
  684. print " Пол - $data[ 7 ]. $data[ 8 ] года рождения. ";
  685. print "Пасп. данные - $data[ 9 ]\n";
  686. print " Улица $data[ 10 ], д. $data[ 11 ], кв. $data[ 12 ]. ";
  687. print "Телефон - $data[ 13 ]\n";
  688. $n++;
  689. for ( $k = 14; $k < $#data; $k++ )
  690. {
  691. print " Образование - $data[ $k ], окончил $data[ ++$k ] в ";
  692. print "$data[ ++$k ] году.\n";
  693. print " Специальность - $data[ ++$k ].\n";
  694. }
  695. print "\n";
  696. }
  697. return( 0 );
  698. }
  699. elsif ( $i == 4 )
  700. {
  701. print "Введите улицу: ";
  702. $a = <STDIN>;
  703. chomp $a;
  704. open ( READ, "cout" );
  705. while ( <READ> )
  706. {
  707. @data = split (/\s+/, $_);
  708. if ( $a eq $data[ 10 ] )
  709. {
  710. $info[ $k ] = $_;
  711. $k++;
  712. }
  713. }
  714. close ( READ );
  715. unlink(cout);
  716. for ( $j = 0; $j <= $#info; $j++ )
  717. {
  718. @data = split (/\s+/, $info[ $j ]);
  719. print " На улице $a проживают следующие работники:\n\n";
  720. print " $data[ 0 ] $data[ 1 ] $data[ 2 ]. Должность - $data[ 3 ]\n";
  721. print " Работает с $data[ 4 ] года. Стаж работы - $data[ 5 ] лет. ";
  722. print "Оклад $data[ 6 ] т.р.\n";
  723. print " Пол - $data[ 7 ]. $data[ 8 ] года рождения. ";
  724. print "Пасп. данные - $data[ 9 ]\n";
  725. print " Улица $data[ 10 ], д. $data[ 11 ], кв. $data[ 12 ]. ";
  726. print "Телефон - $data[ 13 ]\n";
  727. for ( $k = 14; $k < $#data; $k++ )
  728. {
  729. print " Образование - $data[ $k ], окончил $data[ ++$k ] в ";
  730. print "$data[ ++$k ] году.\n";
  731. print " Специальность - $data[ ++$k ].\n";
  732. }
  733. print "\n";
  734. }
  735. }
  736. else
  737. {
  738. unlink(cout);
  739. return( 0 );
  740. }
  741.  
  742. }
  743.  
  744. sub del
  745. {
  746. print "Введите фамилию и должность сотрудника:\n";
  747. print "Фамилия:";
  748. $fam=<STDIN>;
  749. chomp($fam);
  750. print"\nДолжность:";
  751. $job=<STDIN>;
  752. chomp ($job);
  753. print "\nВы хотите удалить $fam $job, уверены? 1/0\n";
  754. $yes=<STDIN>;
  755. if ($yes==1 or $yes==0)
  756. {
  757. if ($yes==1)
  758. {
  759. $req="DELETE FROM ONLY data WHERE fam='$fam' AND func='$job'";
  760. $rv=$dbh->do($req);
  761. if ($rv!=1) {
  762. print "Нету такого пацана \n";} else
  763. {
  764. print "\n Done. Deleted."}}
  765.  
  766. elsif ($yes==0) {
  767. print "\n Ну нет, так нет.";
  768. }
  769. }
  770. }
  771.  
  772. sub about
  773. {
  774. open ( READ, "inf" )
  775. || die "Не могу открыть файл inf: $!\n";
  776. while ( <READ> )
  777. {
  778. print $_;
  779. }
  780. }
  781.  
  782. sub user_menu
  783. {
  784. my $i = 1;
  785. my $choice = 0;
  786. while ( $i == 1 )
  787. {
  788. print " (1) Вывод информации из базы данных на экран\n";
  789. print " (2) Добавление работника в базу данных\n";
  790. print " (3) Удаление работника из базы данных\n";
  791. print " (4) Редактирование работника в базе данных\n";
  792. print " (5) Поиск по базе данных\n";
  793. print " (6) Смена пароля\n";
  794. print " (9) О программе\n";
  795. print " (0) Выход из программы\n";
  796. SWITCH:
  797. $choice = <STDIN>;
  798. if ( $choice == 0 )
  799. {
  800. print " Вы завершили работу с программой. ";
  801. print "Благодарим за использование нашей продукции!\n";
  802. exit ( 0 );
  803. }
  804. elsif ( $choice == 1 )
  805. {
  806. output ();
  807. }
  808. elsif ( $choice == 2 )
  809. {
  810. add ();
  811. }
  812. elsif ( $choice == 3 )
  813. {
  814. del ();
  815. }
  816. elsif ( $choice == 4 )
  817. {
  818. edit ();
  819. }
  820. elsif ( $choice == 5 )
  821. {
  822. search ();
  823. }
  824. elsif ( $choice == 6 )
  825. {
  826. edit_password ();
  827. }
  828. elsif ( $choice == 9 )
  829. {
  830. about ();
  831. }
  832. else
  833. {
  834. print "\n";
  835. print " Некорректный ввод! Вводите цифры 1,2,3,4,5,6,9 или 0!\n\n";
  836. }
  837. }
  838. }
Add Comment
Please, Sign In to add comment