Поиск:

Ответ в темуСоздание новой темы Создание опроса
> C++ и MySQL, БД вместо текстового файла 
:(
    Опции темы
AndreyKS
Дата 30.5.2007, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 30.5.2007

Репутация: нет
Всего: нет



Решал задачку:
Хранится информация про работников (имя, отдел, год, стаж, должностть, зарплата). Предусмотреть:
 добавление сотрудники
 получить список работников пенсионного возраста с указаниеем стажа
 получить среднюю зарплату работников

Использовал текстовый файл, что не удобно. Как из С++ использовать mysql? Запросы писать умею, сервер настроен, права есть.
Любой пример (подключение, передачу запроса, куда помещается результат)

На всякий случай вставлю код с текстовым файлом:

Код

#include <iostream>
#include <fstream>
#include <iomanip>
#define YEAR 2007
using namespace std;
struct Record{
    string Name;
    string Departament;
    int BirthYear;
    int Standing;
    string Place;
    int Salary;
};

class Table{
    Record myRecord;
    public:
        Table(char filename[]);
        void AddRecord(char filename[]);
        void GetRecords(char filename[]);
        void GetPensRecords(char filename[]);
        float Average(char filename[], string Departament, int field);
        //float averageSalary(char filename[], string Departament);
};
Table::Table(char filename[]){
    char c;
    string str;
    while(c!='x'){
        cout<<"Выберите действие: \n"
                <<"1) Ввести новую запись\n"
                <<"2) Выдать список работников пенсионного возраста у указанием стажа работы\n"
                <<"3) Получить средний стаж работников заданного отдела\n"
                <<"4) Получить среднюю зарплату работников заданного отдела\n"
                <<"5) Получить все записи\n"
                <<"x) Выход\n";
        cin>>c;
        switch(c){
            case '1': AddRecord(filename); break;
            case '2': GetPensRecords(filename); break;
            case '3':
                cout<<"Введите название отдела:  ";
                cin>>str;
                cout<<Average(filename, str, 4)<<endl;
                break;
            case '4':
                cout<<"Введите название отдела:  ";
                cin>>str;
                cout<<Average(filename, str, 6)<<endl;
                break;
            case '5': GetRecords(filename); break;
            case 'x':break;
            default: cout<<"Неправильный выбор. Повторите\n";
        }
    }

}
void Table::AddRecord(char filename[]){
    ofstream file(filename,ios::app);
    if(!file){ cerr << "\nError\n"; exit(1);}
    cout<<"Введите данные:\n";
    cout<<"Имя           "; cin>>myRecord.Name;            file<<myRecord.Name<<" ";
    cout<<"Отдел         "; cin>>myRecord.Departament;    file<<myRecord.Departament<<" ";
    cout<<"Год рождения  "; cin>>myRecord.BirthYear;    file<<myRecord.BirthYear<<" ";
    cout<<"Стаж          "; cin>>myRecord.Standing;        file<<myRecord.Standing<<" ";
    cout<<"Должность     "; cin>>myRecord.Place;        file<<myRecord.Place<<" ";
    cout<<"Зарплата      "; cin>>myRecord.Salary;        file<<myRecord.Salary<<endl;
    file.close();
}
void Table::GetRecords(char filename[]){
    ifstream file(filename);
    if(!file){ cerr << "\nError\n"; exit(1);}
    cout.setf(ios::left);
    while(file>>myRecord.Name>>myRecord.Departament>>myRecord.BirthYear>>myRecord.Standing>>myRecord.Place>>myRecord.Salary){
        //cout.width(20);
        cout<<setw(10)<<myRecord.Name
            <<setw(10)<<myRecord.Departament
            <<setw(7)<<myRecord.BirthYear
            <<setw(5)<<myRecord.Standing
            <<setw(10)<<myRecord.Place
            <<setw(6)<<myRecord.Salary<<endl;
    }
    file.close();
}
void Table::GetPensRecords(char filename[]){
    ifstream file(filename);
    if(!file){ cerr << "\nError\n"; exit(1);}
    cout.setf(ios::left);
    while(file>>myRecord.Name>>myRecord.Departament>>myRecord.BirthYear>>myRecord.Standing>>myRecord.Place>>myRecord.Salary)
        if((YEAR-myRecord.BirthYear)>=60)
            cout<<setw(10)<<myRecord.Name<<setw(5)<<myRecord.Standing<<endl;
    file.close();
}
float Table::Average(char filename[], string departament, int field){
    ifstream file(filename);
    if(!file){ cerr << "\nError\n"; exit(1);}
    int count=0, sum=0;
    while(file>>myRecord.Name>>myRecord.Departament>>myRecord.BirthYear>>myRecord.Standing>>myRecord.Place>>myRecord.Salary)    
        if (departament==myRecord.Departament){
            count++;
            switch(field){
                case 4: sum+=myRecord.Standing; break;
                case 6: sum+=myRecord.Salary; break;
            }
        }
    file.close();
    return (float)sum/count;
}

int main(int argc, char *argv[]){
    if(argc != 2){
        cerr << "Передайте аргумент - имя файла\n";
        return 1;
    }
    Table myTable(argv[1]);
}


Из чистого С++ (без борланда...)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C++: Базы данных"
chipset

Данный форум предназначен для обсуждения вопросов прямым образом связанных с C++ и БД. Так, вопросы только по C++ следует задавать в C++:Общие вопросы а вопросы по абстрактным БД в Базах данных или в соответствующих под-форумах.

Благодарим за понимание.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, chipset.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Базы данных | Следующая тема »


 




[ Время генерации скрипта: 0.0504 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.