Решал задачку: Хранится информация про работников (имя, отдел, год, стаж, должностть, зарплата). Предусмотреть: добавление сотрудники получить список работников пенсионного возраста с указаниеем стажа получить среднюю зарплату работников Использовал текстовый файл, что не удобно. Как из С++ использовать 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]); }
|
Из чистого С++ (без борланда...)
|