Рефераты. База данных пилотов Формулы 1

       };


       save.close(); // Закрываем фаил

       save.clear();

      

       return true;

};


/* Закрываем бд */

void Reader::close_db()

{

       db.close();

       db.clear();

};



/* Читаем параграф */

bool Reader::read()

;


/* Читаем число */

int Reader::loadAsInt(string name) // Loading As Int

{

       string s;

       db >> s;

       name+="=";


       return atoi(s.substr(name.size(),s.size()).c_str());

};



/* Читаем строку */

string Reader::loadAsString(string name) // Loading As String

{

       string s;

       db >> s;

       name+="=";


       return s.substr(name.size(),s.size());

};



/* Переход на новый параграф */

void Reader::new_paragraph()

{

       db.ignore(1,'\n');

};



// ----------------------------------------------------------------------------------------

// Работа приложения



class Application

{

public:

       Application();

       ~Application();


       bool db_load(const char *file); // Загрузка бд

       void db_close(); // Закрыть  текущую бд

       bool db_save(const char *file); // Сохранить бд


       void db_add_item(); // Добавить элемент

       void db_delete_item(int number); // Удалить элемент


       void bd_sortby(int value); // Сортировать по элементу

       int bd_findby(int value,string look); // Искать в элементе


       vector<Racer> racers; // Гонщики

private:

       inline int find_name(string value);

      


// -----------------------------------------------

       Reader reader; // Файловая система

};



Application::Application() {}; // Конструктор / деструктор

Application::~Application() {};


bool Application::db_load(const char * file)

{

       if(reader.open_db(file))

       {

             racers.clear(); // Очищаем вектор

             while(reader.read())

             {

                    Racer m_racer;

                    m_racer.famely = reader.loadAsString("SurName");

                    m_racer.name =  reader.loadAsString("Name");

                    m_racer.races = reader.loadAsInt("Races");

                    m_racer.wons = reader.loadAsInt("Wons");

                    m_racer.pouls = reader.loadAsInt("Pouls");

                    m_racer.frace = reader.loadAsString("FirstRace");

                    m_racer.tituls = reader.loadAsInt("Tituls");

                    m_racer.blaps = reader.loadAsInt("BestLaps");

                    reader.paragraph;

                    racers.push_back(m_racer); // Добавляем гонщика в аккумулятор

             };

             reader.close_db(); // Закрываем фаил


             return true;

       };


       return false;

};



/* Закрываем бд */

void Application::db_close()

{

       racers.clear(); // Очищаем список гонщиков

};



/* Сохранение бд */

bool Application::db_save(const char * name)

{

       if(!reader.save_db(name,racers)) return false;


       return true;

};



/* Добавить элемент */

void Application::db_add_item()

{

       Racer temp;

       temp.blaps = 0;

       temp.famely = "Mr.Unknown";

       temp.frace = "When?";

       temp.name = "Unknown";

       temp.pouls = 0;

       temp.races = 0;

       temp.tituls = 0;

       temp.wons = 0;

       racers.push_back(temp);

};


/* Удалить элемент */

void Application::db_delete_item(int  number)

       if(number >= racers.size() ;




// -----------------------------------------------

/* Сортировка */


bool sort_famely(Racer &one,Racer &two);

bool sort_name(Racer &one,Racer &two);

bool sort_frace(Racer &one,Racer &two);

bool sort_blaps(Racer &one,Racer &two);

bool sort_pouls(Racer &one,Racer &two);

bool sort_races(Racer &one,Racer &two);

bool sort_tituls(Racer &one,Racer &two);

bool sort_wons(Racer &one,Racer &two);


inline bool sort_famely(Racer &one,Racer &two)

{

       if(one.famely < two.famely) return true;

       return false;

};


inline bool sort_name(Racer &one,Racer &two)

{

       if(one.name < two.name) return true;

       return false;

};


inline bool sort_frace(Racer &one,Racer &two)

{

       if(one.frace < two.frace) return true;

       return false;

};


inline bool sort_blaps(Racer &one,Racer &two)

{

       if(one.blaps > two.blaps) return true;

       return false;

};


inline bool sort_pouls(Racer &one,Racer &two)

{

       if(one.pouls > two.pouls) return true;

       return false;

};


inline bool sort_races(Racer &one,Racer &two)

{

       if(one.races > two.races) return true;

       return false;

};



inline bool sort_tituls(Racer &one,Racer &two)

{

       if(one.tituls > two.tituls) return true;

       return false;

};


inline bool sort_wons(Racer &one,Racer &two)

{

       if(one.wons > two.wons) return true;

       return false;

};



void Application::bd_sortby(int value)

{

       switch(value)

       {

       case 1: // Фамилия

             sort(racers.begin(),racers.end(),sort_famely);

             return;

       case 2: // Имя

             sort(racers.begin(),racers.end(),sort_name);

             return;

       case 3: // Гонок

             sort(racers.begin(),racers.end(),sort_races);

             return;

       case 4: // Побед

             sort(racers.begin(),racers.end(),sort_wons);

             return;

       case 5: // Поулов

             sort(racers.begin(),racers.end(),sort_pouls);

             return;

       case 6: // Первая гонка

             sort(racers.begin(),racers.end(),sort_frace);

             return;

       case 7: // Титулов

             sort(racers.begin(),racers.end(),sort_tituls);

             return;

       case 8: // Лучших кругов

             sort(racers.begin(),racers.end(),sort_blaps);

             return;

       default:

             return;

       };

};


int Application::find_name(string value)

{


//     for(int i=0;i<racers.size();i++) vec[i] = racers[i].name;

return 0;


};


int Application::bd_findby(int value,string look)

{

       switch(value)

       {

       case 1: // Фамилия

            

             return 0;

       case 2: // Имя

             return find_name(look);


       case 3: // Гонок


             return 0;

       case 4: // Побед


             return 0;

       case 5: // Поулов


             return 0;

       case 6: // Первая гонка


             return 0;

       case 7: // Титулов


             return 0;

       case 8: // Лучших кругов


             return 0;

       default:

             return 0;

       };

};


// ---------------------------------------------------------------------

// Программа

Application app;

int number; // Номер текущего элемента


LRESULT CALLBACK WindowFunc(HWND, UINT, WPARAM, LPARAM);


char *szWinName = "MyClass";



HWND hwnd,hwndSort, hwndFind; // Окна - стандартное, сортировки, поиска

HWND button_last,button_next; // Кнопки

HWND edit_find, edit_famely,edit_name,edit_races,edit_wons,edit_pouls,edit_tituls,edit_frace,edit_blaps; // Едиты

HWND text_1,text_2,text_3,text_4,text_5,text_6,text_7,text_8,text_9,text_10,text_11,text_number; // Тексты

MSG msg;

WNDCLASS wcl;

HMENU menu;

Racer *find_racer,*find_result;



void draw_sort();

void draw_sort()

{

       char val[5];

                 LVITEM lvi;

                        ZeroMemory(&lvi, sizeof(lvi));

                        ListView_DeleteAllItems(hwndSort);



                        lvi.mask = LVIF_TEXT;


                        for(int i=0;i<app.racers.size();i++)

                        {

                    lvi.iItem = i;

                    lvi.iSubItem = 0;

                   

                    _itoa(i+1,val,10);

                    lvi.pszText = val;

                   

                    lvi.iItem = ListView_InsertItem(hwndSort, &lvi);

                  


                    lvi.iSubItem++;

                    lvi.pszText = (char *) app.racers[i].famely.c_str();

                    ListView_SetItem(hwndSort, &lvi);

                           };

                   

  

                           char text[50];

SetWindowText(edit_famely, (char*)app.racers[number-1].famely.c_str());

                    SetWindowText(edit_name, (char*)app.racers[number-1].name.c_str());

                    itoa(app.racers[number-1].tituls,text,10);

                    SetWindowText(edit_tituls, text);

                    itoa(app.racers[number-1].wons,text,10);

                    SetWindowText(edit_wons, text);

                    itoa(app.racers[number-1].pouls,text,10);

                    SetWindowText(edit_pouls, text);

                    itoa(app.racers[number-1].blaps,text,10);

                    SetWindowText(edit_blaps, text);

                    itoa(app.racers[number-1].races,text,10);

                    SetWindowText(edit_races, text);

                    SetWindowText(edit_frace,app.racers[number-1].frace.c_str());

Страницы: 1, 2, 3, 4, 5



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.