#include "data_table.hpp" #include "user_table.hpp" #include "headers.hpp" #include "congig.hpp" #include "input.hpp" #include "menu.hpp" /* User_table Create_User_database(); int login_user(); */ int main(){ User_table user_db( admin_password ); Data_table providers; //providers.add_row( "Постащик" ); providers.add_row( string("Продукция") ); providers.add_row( string("Объём") ); Data_table production; production.add_row( string("Тип") ); production.add_row( string("Материал") ); production.add_row( string("Количество на складе") ); production.add_row( string("Стоимость") ); user_db.sign_up( string("test"), string("test") ); int user_id = 1; do{ if( user_id < 0 ){ if( user_id == -1 ){ cout << "Вы ввели неверный пароль" << endl; } if( user_id == -2 ){ cout << "Неизвестный пользователь" << endl; } cout << "Повторите попытку входа" << endl; } cout << "Введите логин > "; string login = input_string(); cout << "Введите пароль > "; string pass = input_string(); user_id = user_db.sign_in( login, pass ); }while( user_id < 0 ); Menu menu; menu.add_item( string("База сотрудников"), 0 ); menu.add_item( string("База поставщиков"), 0 ); menu.add_item( string("База производства и продаж"), 0 ); menu.add_item( string("Импорт/Экспорт данных"), 0); menu.add_item( string("Выйти"), 0 ); Menu menu1; menu1.add_item( string("Вывести всех сотрудников"), 0 ); menu1.add_item( string("Добавить нового сотрудника"), 1 ); menu1.add_item( string("Удалить сотрудника"), 1 ); menu1.add_item( string("Дать права сотруднику"), 1 ); menu1.add_item( string("Вернуться в главное меню"), 0); Menu menu2; menu2.add_item( string("Вывести всех поставщиков"), 0 ); menu2.add_item( string("Добавить нового поставщика"), 1 ); menu2.add_item( string("Изменить поставщика"), 1 ); menu2.add_item( string("Удалить поставщика"), 1 ); menu2.add_item( string("Сортировать поставщиков"), 1 ); menu2.add_item( string("Фильтровать поставщиков"), 0 ); menu2.add_item( string("Вернуться в главное меню"), 0); Menu menu3; menu3.add_item( string("Вывести все позиции"), 0 ); menu3.add_item( string("Добавить новоую позицию"), 1 ); menu3.add_item( string("Изменить позицию"), 1 ); menu3.add_item( string("Удалить позицию"), 1 ); menu3.add_item( string("Сортировать позиции"), 1 ); menu3.add_item( string("Фильтровать позиции"), 0 ); menu3.add_item( string("Вернуться в главное меню"), 0); Menu menu4; menu4.add_item( string("Сохранить состояние программы"), 0 ); menu4.add_item( string("Восстановить состояние программы"), 1 ); menu4.add_item( string("Сохранить базу пользователей в файл"), 0 ); menu4.add_item( string("Загрузить базу пользователей из файла"), 1 ); menu4.add_item( string("Сохранить базу поставщиков в файл"), 0 ); menu4.add_item( string("Загрузить базу поставщиков из файла"), 1 ); menu4.add_item( string("Сохранить базу производства и продаж в файл"), 0 ); menu4.add_item( string("Загрузить базу производства и продаж из файла"), 1 ); menu4.add_item( string("Вернуться в главное меню"), 0); bool exit = false; do{ menu.print_menu( user_id ); cout << "Выберете пункт > "; int select = input_int(); switch( menu.select( select, user_id ) ){ case 0: { bool exit1 = false; do{ menu1.print_menu( user_id ); cout << "Выберете пункт > "; int select = input_int(); switch( menu1.select( select, user_id ) ){ case 0: { for( auto i = user_db.users.begin(); i != user_db.users.end(); i++ ){ cout << (*i).first << ' ' << get( (*i).second[0] ) << endl; } } break; case 1: { cout << "Введите логин сотрудника > "; string login = input_string(); cout << "Введите пароль сотрудника > "; string pass = input_string(); cout << "1 Обычый пользователь" << endl; cout << "2 Администратор" << endl; cout << "Введите привелегии сотрудника > "; int perm = input_int(); user_db.sign_up( login, pass, perm ); } break; case 2: { for( auto i = user_db.users.begin(); i != user_db.users.end(); i++ ){ cout << (*i).first << ' ' << get( (*i).second[0] ) << endl; } cout << "Выберете удаляемого сотрудника > "; int id = input_int(); user_db.users.delete_item( id ); } break; case 3: { for( auto i = user_db.users.begin(); i != user_db.users.end(); i++ ){ cout << (*i).first << ' ' << get( (*i).second[0] ) << endl; } cout << "Выберете сотрудника > "; int id = input_int(); cout << "1 Пользователь" << endl; cout << "2 Администратор" << endl; cout << "Введите привелегии сотрудника > "; int perm = input_int(); if( id >= 0 && id < user_db.users.size() ){ get( user_db.users[id][0] ).permission = perm; } } break; case 4: { exit1 = true; } break; } }while(!exit1); } break; case 1: { bool exit2 = false; do{ menu2.print_menu( user_id ); cout << "Выберете пункт > "; int select = input_int(); switch( menu2.select( select, user_id ) ){ case 0: { providers.print_table(); } break; case 1: { cout << "Введине наименование постовщика > "; string _prov = input_string(); cout << "Введите тип товара > "; string _prod = input_string(); cout << "Введите количество > "; int _count = input_int(); vector< value > item; value prod( _prod ); value count( _count ); item.push_back( prod ); item.push_back( count ); providers.add_item( _prov, item ); } break; case 2: { providers.print_table(); cout << "Введите выбранного постовщика > "; string _prov = input_string(); cout << "Введите тип товара > "; string _prod = input_string(); cout << "Введите количество > "; int _count = input_int(); vector< value > item; value prod( _prod ); value count( _count ); item.push_back( prod ); item.push_back( count ); providers.edit_item( _prod, item ); } break; case 3: { providers.print_table(); cout << "Введите выбранного постовщика > "; string _prov = input_string(); providers.delete_item( _prov ); } break; case 4: { for( int i = 0; i < providers.column_names.size(); i++ ){ cout << i << ' ' << providers.column_names[i] << endl; } cout << "Выберете поле сотрировки > "; int num = input_int(); providers.sort( [num]( vector v1, vector v2 )->bool{ return v1[num] > v2[num]; } ); } break; case 5: { for( int i = 0; i < providers.column_names.size(); i++ ){ cout << i << ' ' << providers.column_names[i] << endl; } cout << "Выберете поле фильтрации > "; int num = input_int(); cout << "Выберете занчение поля > "; if ( num == 1 ){ int v = input_int(); production.filter( [v](vector v1 )-> bool{ return get( v1[1] ) == v; } ); }else if( num == 0 ){ string v = input_string(); production.filter( [v](vector v1 )-> bool{ return get( v1[0] ) == v; } ); } } break; case 6: { exit2 = true; } break; } }while(!exit2); } break; case 2: { bool exit3 = false; do{ menu3.print_menu( user_id ); cout << "Выберете пункт > "; int select = input_int(); switch( menu3.select( select, user_id ) ){ case 0: { production.print_table(); } break; case 1: { cout << "Введите название продукции > "; string name = input_string(); cout << "Введите тип продукции > "; string type = input_string(); cout << "Введите материал продукции > "; string material = input_string(); cout << "Введите количество продукции > "; int count = input_int(); cout << "Введите цену продукции > "; int price = input_int(); vector< value > item; item.push_back( value( type ) ); item.push_back( value( material ) ); item.push_back( value( count ) ); item.push_back( value( price ) ); production.add_item( name, item ); } break; case 2: { production.print_table(); cout << "Введите название изменяемой продукции > "; string name = input_string(); cout << "Введите тип продукции > "; string type = input_string(); cout << "Введите материал продукции > "; string material = input_string(); cout << "Введите количество продукции > "; int count = input_int(); cout << "Введите цену продукции > "; int price = input_int(); vector< value > item; item.push_back( value( type ) ); item.push_back( value( material ) ); item.push_back( value( count ) ); item.push_back( value( price ) ); production.add_item( name, item ); } break; case 3: { production.print_table(); cout << "Введите название продукции > "; string name = input_string(); production.delete_item( name ); } break; case 4: { for( int i = 0; i < production.column_names.size(); i++ ){ cout << i << ' ' << production.column_names[i] << endl; } cout << "Выберете поле сотрировки > "; int num = input_int(); production.sort( [num]( vector v1, vector v2 )->bool{ return v1[num] > v2[num]; } ); } break; case 5: { for( int i = 0; i < production.column_names.size(); i++ ){ cout << i << ' ' << production.column_names[i] << endl; } cout << "Выберете поле фильтрации > "; int num = input_int(); cout << "Выберете занчение поля > "; if( num == 0 ){ string v = input_string(); production.filter( [v](vector v1 )-> bool{ return get( v1[0] ) == v; } ); }else if( num == 1 ){ string v = input_string(); production.filter( [v](vector v1 )-> bool{ return get( v1[1] ) == v; } ); }else if ( num == 2 ){ int v = input_int(); production.filter( [v](vector v1 )-> bool{ return get( v1[2] ) == v; } ); }else if ( num == 3 ){ int v = input_int(); production.filter( [v](vector v1 )-> bool{ return get( v1[3] ) == v; } ); } } break; case 6: { exit3 = true; } break; } }while(!exit3); } break; case 3: { bool exit4 = false; do{ menu4.print_menu( user_id ); cout << "Выберете пункт > "; int select = input_int(); switch( menu4.select( select, user_id ) ){ case 0: { user_db.users.save_table( "users.dat"); providers.save_table("prov.dat" ); production.save_table("prod.dat"); } break; case 1: { providers.column_names.clear(); production.column_names.clear(); user_db.users.column_names.clear(); user_db.users.load_table( "users.dat"); providers.load_table("prov.dat" ); production.load_table("prod.dat"); } break; case 2: { cout << "Ведите название файла > "; string file = input_string(); user_db.users.save_table( file ); } break; case 3: { cout << "Ведите название файла > "; string file = input_string(); user_db.users.load_table( file ); } break; case 4: { cout << "Ведите название файла > "; string file = input_string(); providers.save_table( file ); } break; case 5: { cout << "Ведите название файла > "; string file = input_string(); providers.load_table( file ); } break; case 6: { cout << "Ведите название файла > "; string file = input_string(); production.save_table( file ); } break; case 7: { cout << "Ведите название файла > "; string file = input_string(); production.load_table( file ); } break; case 8: { exit4 = true; } break; } }while(!exit4); } break; case 4: { exit = true; } break; } }while( !exit ); return 0; }