Advertisement
qberik

Untitled

Jun 3rd, 2022
213
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 18.54 KB | None | 0 0
  1. #include "data_table.hpp"
  2. #include "user_table.hpp"
  3. #include "headers.hpp"
  4. #include "congig.hpp"
  5. #include "input.hpp"
  6. #include "menu.hpp"
  7.  
  8. /*
  9. User_table Create_User_database();
  10. int login_user();
  11. */
  12.  
  13. int main(){
  14.  
  15. User_table user_db( admin_password );
  16.  
  17. Data_table providers;
  18. //providers.add_row( "Постащик" );
  19. providers.add_row( string("Продукция") );
  20. providers.add_row( string("Объём") );
  21.  
  22.  
  23. Data_table production;
  24. production.add_row( string("Тип") );
  25. production.add_row( string("Материал") );
  26. production.add_row( string("Количество на складе") );
  27. production.add_row( string("Стоимость") );
  28.  
  29. user_db.sign_up( string("test"), string("test") );
  30.  
  31. int user_id = 1;
  32.  
  33. do{
  34.  
  35. if( user_id < 0 ){
  36. if( user_id == -1 ){
  37. cout << "Вы ввели неверный пароль" << endl;
  38. }
  39. if( user_id == -2 ){
  40. cout << "Неизвестный пользователь" << endl;
  41. }
  42. cout << "Повторите попытку входа" << endl;
  43. }
  44.  
  45. cout << "Введите логин > ";
  46. string login = input_string();
  47.  
  48. cout << "Введите пароль > ";
  49. string pass = input_string();
  50.  
  51. user_id = user_db.sign_in( login, pass );
  52.  
  53. }while( user_id < 0 );
  54.  
  55. Menu menu;
  56. menu.add_item( string("База сотрудников"), 0 );
  57. menu.add_item( string("База поставщиков"), 0 );
  58. menu.add_item( string("База производства и продаж"), 0 );
  59. menu.add_item( string("Импорт/Экспорт данных"), 0);
  60. menu.add_item( string("Выйти"), 0 );
  61.  
  62. Menu menu1;
  63. menu1.add_item( string("Вывести всех сотрудников"), 0 );
  64. menu1.add_item( string("Добавить нового сотрудника"), 1 );
  65. menu1.add_item( string("Удалить сотрудника"), 1 );
  66. menu1.add_item( string("Дать права сотруднику"), 1 );
  67. menu1.add_item( string("Вернуться в главное меню"), 0);
  68.  
  69. Menu menu2;
  70. menu2.add_item( string("Вывести всех поставщиков"), 0 );
  71. menu2.add_item( string("Добавить нового поставщика"), 1 );
  72. menu2.add_item( string("Изменить поставщика"), 1 );
  73. menu2.add_item( string("Удалить поставщика"), 1 );
  74. menu2.add_item( string("Сортировать поставщиков"), 1 );
  75. menu2.add_item( string("Фильтровать поставщиков"), 0 );
  76. menu2.add_item( string("Вернуться в главное меню"), 0);
  77.  
  78. Menu menu3;
  79. menu3.add_item( string("Вывести все позиции"), 0 );
  80. menu3.add_item( string("Добавить новоую позицию"), 1 );
  81. menu3.add_item( string("Изменить позицию"), 1 );
  82. menu3.add_item( string("Удалить позицию"), 1 );
  83. menu3.add_item( string("Сортировать позиции"), 1 );
  84. menu3.add_item( string("Фильтровать позиции"), 0 );
  85. menu3.add_item( string("Вернуться в главное меню"), 0);
  86.  
  87. Menu menu4;
  88. menu4.add_item( string("Сохранить состояние программы"), 0 );
  89. menu4.add_item( string("Восстановить состояние программы"), 1 );
  90. menu4.add_item( string("Сохранить базу пользователей в файл"), 0 );
  91. menu4.add_item( string("Загрузить базу пользователей из файла"), 1 );
  92. menu4.add_item( string("Сохранить базу поставщиков в файл"), 0 );
  93. menu4.add_item( string("Загрузить базу поставщиков из файла"), 1 );
  94. menu4.add_item( string("Сохранить базу производства и продаж в файл"), 0 );
  95. menu4.add_item( string("Загрузить базу производства и продаж из файла"), 1 );
  96. menu4.add_item( string("Вернуться в главное меню"), 0);
  97.  
  98. bool exit = false;
  99. do{
  100. menu.print_menu( user_id );
  101.  
  102. cout << "Выберете пункт > ";
  103. int select = input_int();
  104.  
  105. switch( menu.select( select, user_id ) ){
  106.  
  107. case 0:
  108. {
  109.  
  110. bool exit1 = false;
  111. do{
  112. menu1.print_menu( user_id );
  113. cout << "Выберете пункт > ";
  114. int select = input_int();
  115. switch( menu1.select( select, user_id ) ){
  116. case 0:
  117. {
  118. for( auto i = user_db.users.begin(); i != user_db.users.end(); i++ ){
  119. cout << (*i).first << ' ' << get<User>( (*i).second[0] ) << endl;
  120. }
  121. }
  122. break;
  123.  
  124. case 1:
  125. {
  126. cout << "Введите логин сотрудника > ";
  127. string login = input_string();
  128. cout << "Введите пароль сотрудника > ";
  129. string pass = input_string();
  130. cout << "1 Обычый пользователь" << endl;
  131. cout << "2 Администратор" << endl;
  132. cout << "Введите привелегии сотрудника > ";
  133. int perm = input_int();
  134. user_db.sign_up( login, pass, perm );
  135. }
  136. break;
  137.  
  138. case 2:
  139. {
  140. for( auto i = user_db.users.begin(); i != user_db.users.end(); i++ ){
  141. cout << (*i).first << ' ' << get<User>( (*i).second[0] ) << endl;
  142. }
  143. cout << "Выберете удаляемого сотрудника > ";
  144. int id = input_int();
  145. user_db.users.delete_item( id );
  146. }
  147. break;
  148.  
  149. case 3:
  150. {
  151. for( auto i = user_db.users.begin(); i != user_db.users.end(); i++ ){
  152. cout << (*i).first << ' ' << get<User>( (*i).second[0] ) << endl;
  153. }
  154. cout << "Выберете сотрудника > ";
  155. int id = input_int();
  156. cout << "1 Пользователь" << endl;
  157. cout << "2 Администратор" << endl;
  158. cout << "Введите привелегии сотрудника > ";
  159. int perm = input_int();
  160. if( id >= 0 && id < user_db.users.size() ){
  161. get<User>( user_db.users[id][0] ).permission = perm;
  162. }
  163. }
  164. break;
  165.  
  166. case 4:
  167. {
  168. exit1 = true;
  169. }
  170. break;
  171. }
  172.  
  173. }while(!exit1);
  174.  
  175. }
  176. break;
  177. case 1:
  178. {
  179.  
  180. bool exit2 = false;
  181. do{
  182. menu2.print_menu( user_id );
  183. cout << "Выберете пункт > ";
  184. int select = input_int();
  185. switch( menu2.select( select, user_id ) ){
  186. case 0:
  187. {
  188. providers.print_table();
  189. }
  190. break;
  191.  
  192. case 1:
  193. {
  194. cout << "Введине наименование постовщика > ";
  195. string _prov = input_string();
  196. cout << "Введите тип товара > ";
  197. string _prod = input_string();
  198. cout << "Введите количество > ";
  199. int _count = input_int();
  200.  
  201. vector< value > item;
  202. value prod( _prod );
  203. value count( _count );
  204. item.push_back( prod );
  205. item.push_back( count );
  206.  
  207. providers.add_item( _prov, item );
  208.  
  209. }
  210. break;
  211.  
  212. case 2:
  213. {
  214. providers.print_table();
  215.  
  216. cout << "Введите выбранного постовщика > ";
  217. string _prov = input_string();
  218. cout << "Введите тип товара > ";
  219. string _prod = input_string();
  220. cout << "Введите количество > ";
  221. int _count = input_int();
  222.  
  223. vector< value > item;
  224. value prod( _prod );
  225. value count( _count );
  226. item.push_back( prod );
  227. item.push_back( count );
  228.  
  229. providers.edit_item( _prod, item );
  230.  
  231. }
  232. break;
  233.  
  234. case 3:
  235. {
  236. providers.print_table();
  237. cout << "Введите выбранного постовщика > ";
  238. string _prov = input_string();
  239.  
  240. providers.delete_item( _prov );
  241.  
  242. }
  243. break;
  244.  
  245. case 4:
  246. {
  247. for( int i = 0; i < providers.column_names.size(); i++ ){
  248. cout << i << ' ' << providers.column_names[i] << endl;
  249. }
  250. cout << "Выберете поле сотрировки > ";
  251. int num = input_int();
  252. providers.sort( [num]( vector<value> v1, vector<value> v2 )->bool{ return v1[num] > v2[num]; } );
  253.  
  254. }
  255. break;
  256.  
  257. case 5:
  258. {
  259. for( int i = 0; i < providers.column_names.size(); i++ ){
  260. cout << i << ' ' << providers.column_names[i] << endl;
  261. }
  262. cout << "Выберете поле фильтрации > ";
  263. int num = input_int();
  264. cout << "Выберете занчение поля > ";
  265. if ( num == 1 ){
  266. int v = input_int();
  267. production.filter( [v](vector<value> v1 )-> bool{ return get<int>( v1[1] ) == v; } );
  268. }else if( num == 0 ){
  269. string v = input_string();
  270. production.filter( [v](vector<value> v1 )-> bool{ return get<string>( v1[0] ) == v; } );
  271. }
  272.  
  273.  
  274.  
  275. }
  276. break;
  277.  
  278. case 6:
  279. {
  280. exit2 = true;
  281. }
  282. break;
  283. }
  284.  
  285. }while(!exit2);
  286.  
  287.  
  288. }
  289. break;
  290. case 2:
  291. {
  292.  
  293. bool exit3 = false;
  294. do{
  295. menu3.print_menu( user_id );
  296. cout << "Выберете пункт > ";
  297. int select = input_int();
  298. switch( menu3.select( select, user_id ) ){
  299. case 0:
  300. {
  301. production.print_table();
  302. }
  303. break;
  304.  
  305. case 1:
  306. {
  307. cout << "Введите название продукции > ";
  308. string name = input_string();
  309. cout << "Введите тип продукции > ";
  310. string type = input_string();
  311. cout << "Введите материал продукции > ";
  312. string material = input_string();
  313. cout << "Введите количество продукции > ";
  314. int count = input_int();
  315. cout << "Введите цену продукции > ";
  316. int price = input_int();
  317.  
  318.  
  319. vector< value > item;
  320. item.push_back( value( type ) );
  321. item.push_back( value( material ) );
  322. item.push_back( value( count ) );
  323. item.push_back( value( price ) );
  324.  
  325. production.add_item( name, item );
  326.  
  327. }
  328. break;
  329.  
  330. case 2:
  331. {
  332. production.print_table();
  333.  
  334. cout << "Введите название изменяемой продукции > ";
  335. string name = input_string();
  336. cout << "Введите тип продукции > ";
  337. string type = input_string();
  338. cout << "Введите материал продукции > ";
  339. string material = input_string();
  340. cout << "Введите количество продукции > ";
  341. int count = input_int();
  342. cout << "Введите цену продукции > ";
  343. int price = input_int();
  344.  
  345.  
  346. vector< value > item;
  347. item.push_back( value( type ) );
  348. item.push_back( value( material ) );
  349. item.push_back( value( count ) );
  350. item.push_back( value( price ) );
  351.  
  352. production.add_item( name, item );
  353. }
  354. break;
  355.  
  356. case 3:
  357. {
  358. production.print_table();
  359.  
  360. cout << "Введите название продукции > ";
  361. string name = input_string();
  362.  
  363. production.delete_item( name );
  364. }
  365. break;
  366.  
  367. case 4:
  368. {
  369. for( int i = 0; i < production.column_names.size(); i++ ){
  370. cout << i << ' ' << production.column_names[i] << endl;
  371. }
  372. cout << "Выберете поле сотрировки > ";
  373. int num = input_int();
  374. production.sort( [num]( vector<value> v1, vector<value> v2 )->bool{ return v1[num] > v2[num]; } );
  375.  
  376. }
  377. break;
  378.  
  379. case 5:
  380. {
  381. for( int i = 0; i < production.column_names.size(); i++ ){
  382. cout << i << ' ' << production.column_names[i] << endl;
  383. }
  384. cout << "Выберете поле фильтрации > ";
  385. int num = input_int();
  386. cout << "Выберете занчение поля > ";
  387. if( num == 0 ){
  388. string v = input_string();
  389. production.filter( [v](vector<value> v1 )-> bool{ return get<string>( v1[0] ) == v; } );
  390. }else if( num == 1 ){
  391. string v = input_string();
  392. production.filter( [v](vector<value> v1 )-> bool{ return get<string>( v1[1] ) == v; } );
  393. }else if ( num == 2 ){
  394. int v = input_int();
  395. production.filter( [v](vector<value> v1 )-> bool{ return get<int>( v1[2] ) == v; } );
  396. }else if ( num == 3 ){
  397. int v = input_int();
  398. production.filter( [v](vector<value> v1 )-> bool{ return get<int>( v1[3] ) == v; } );
  399. }
  400.  
  401. }
  402. break;
  403.  
  404.  
  405.  
  406. case 6:
  407. {
  408. exit3 = true;
  409. }
  410. break;
  411. }
  412.  
  413. }while(!exit3);
  414.  
  415.  
  416. }
  417. break;
  418. case 3:
  419. {
  420.  
  421. bool exit4 = false;
  422. do{
  423. menu4.print_menu( user_id );
  424. cout << "Выберете пункт > ";
  425. int select = input_int();
  426. switch( menu4.select( select, user_id ) ){
  427. case 0:
  428. {
  429. user_db.users.save_table( "users.dat");
  430. providers.save_table("prov.dat" );
  431. production.save_table("prod.dat");
  432. }
  433. break;
  434.  
  435. case 1:
  436. {
  437. providers.column_names.clear();
  438. production.column_names.clear();
  439. user_db.users.column_names.clear();
  440.  
  441. user_db.users.load_table( "users.dat");
  442. providers.load_table("prov.dat" );
  443. production.load_table("prod.dat");
  444. }
  445. break;
  446.  
  447. case 2:
  448. {
  449. cout << "Ведите название файла > ";
  450. string file = input_string();
  451. user_db.users.save_table( file );
  452. }
  453. break;
  454.  
  455. case 3:
  456. {
  457. cout << "Ведите название файла > ";
  458. string file = input_string();
  459. user_db.users.load_table( file );
  460. }
  461. break;
  462.  
  463. case 4:
  464. {
  465. cout << "Ведите название файла > ";
  466. string file = input_string();
  467. providers.save_table( file );
  468. }
  469. break;
  470.  
  471. case 5:
  472. {
  473. cout << "Ведите название файла > ";
  474. string file = input_string();
  475. providers.load_table( file );
  476. }
  477. break;
  478.  
  479. case 6:
  480. {
  481. cout << "Ведите название файла > ";
  482. string file = input_string();
  483. production.save_table( file );
  484. }
  485. break;
  486.  
  487. case 7:
  488. {
  489. cout << "Ведите название файла > ";
  490. string file = input_string();
  491. production.load_table( file );
  492. }
  493. break;
  494.  
  495. case 8:
  496. {
  497. exit4 = true;
  498. }
  499. break; }
  500.  
  501. }while(!exit4);
  502.  
  503.  
  504. }
  505. break;
  506. case 4:
  507. {
  508. exit = true;
  509. }
  510. break;
  511.  
  512. }
  513.  
  514. }while( !exit );
  515.  
  516.  
  517.  
  518.  
  519. return 0;
  520. }
  521.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement