Задание:
- Создать файл, содержащий ФИО сотрудника, год, месяц, длительность командировки в днях, город, в который осуществляется выезд, выездная сумма командировочных расходов.
- Определить общие выплаты командировочных за указанный месяц.
- Вывести список наиболее часто посещаемых городов в порядке убывания за указанный период (с месяца X по месяц Y).
Данный проект имеет два типа пользователя: администратор и пользователь.
Администратор может:
- Загрузка данных из файла
- Вывод записей
- Удаление одной или всех записей
- Поиск записи
- Редактирование записи
- Вывод списка наиболее посещаемых городов за указанный месяц
- Вывод общей выплаты командировочных за указанный месяц
- Запись в файл
- Изменение пароля
Пользователь может:
- Просмотр записей
- Вывод списка наиболее посещаемых городов за указанный месяц
- Вывод общей выплаты командировочных за указанный месяц
- Поиск записи
Содержимое проекта:
Для данной задачи лучше всего подходят текстовые файлы. Во время своей работы, программа оперирует структурами которые ввиду своей простоты без проблем записываются и считываются из текстового файла.
Для объединения данных внутри программы используется контейнер std::list из стандартной библиотеки
Пример кода:
// Ф-ция добавления новых элементов void addCommandV(list<CommandStruct> &a) { system("Cls"); std::string TEXT; //Создаем временную переменную CommandStruct *tmp = new CommandStruct; double dBuffer = 0; int i = 0, iBuffer = 0; int count; cout << "Сколько записей добавить?" << endl; cin >> count; cin.ignore(); for (i = 0; i < count; i++) { //Заполняем её cout << "Элемент " << a.size() << endl; //Ввод инвентарного номера //Цикл который выполниться минимум 1 раз do { cout << "Введите инв.номер: "; getline(cin, TEXT); try { //Конверт данных в число iBuffer = std::stoi(TEXT); } catch(...) { cout << "Неправильный формат инвентарного номера!!! Попробуйте еще!!!" << endl; //tmp->position = 0; iBuffer = -2; } if (iBuffer != -2 && iBuffer < 0) { cout << "Неправильный формат инвентарного номера!!! Попробуйте еще!!!" << endl; } } while(iBuffer < 0); tmp->position = iBuffer; iBuffer = 0; cout << "Введите ФИО: "; getline(cin, TEXT); tmp->sFIO = TEXT; //Ввод год поездки //Цикл который выполниться минимум 1 раз do { cout << "Введите год поездки: "; getline(cin, TEXT); try { //Конверт данных в число iBuffer = std::stoi(TEXT); } catch(...) { cout << "Неправильный формат года!!! Попробуйте еще!!!" << endl; //tmp->position = 0; iBuffer = -2; } if (iBuffer != -2 && iBuffer < 0) { cout << "Неправильный формат года!!! Попробуйте еще!!!" << endl; } } while(iBuffer < 0); tmp->iYear = iBuffer; iBuffer = 0; //Ввод месяца //Цикл который выполниться минимум 1 раз do { cout << "Введите месяц поездки: "; getline(cin, TEXT); try { //Конверт данных в число iBuffer = std::stoi(TEXT); } catch(...) { cout << "Неправильный формат месяца!!! Попробуйте еще!!!" << endl; //tmp->position = 0; iBuffer = -2; } if (iBuffer != -2 && iBuffer < 0) { cout << "Неправильный формат месяца!!! Попробуйте еще!!!" << endl; } } while(iBuffer < 0); tmp->iMonth = iBuffer; iBuffer = 0; //Ввод количества дней отведенных на поездку //Цикл который выполниться минимум 1 раз do { cout << "Введите количество дней поездки: "; getline(cin, TEXT); try { //Конверт данных в число iBuffer = std::stoi(TEXT); } catch(...) { cout << "Неправильный формат количества дней!!! Попробуйте еще!!!" << endl; //tmp->position = 0; iBuffer = -2; } if (iBuffer != -2 && iBuffer < 0) { cout << "Неправильный формат количества дней!!! Попробуйте еще!!!" << endl; } } while(iBuffer < 0); tmp->iCountOfDays = iBuffer; iBuffer = 0; //Ввод города cout << "Введите город: "; getline(cin, TEXT); tmp->sCity = TEXT; //Ввод выделенной суммы на поездку //Цикл который выполниться минимум 1 раз do { cout << "Введите сумму в рублях, выделенную на поездку: "; getline(cin, TEXT); try { //Конверт данных в число dBuffer = std::stod(TEXT); } catch(...) { cout << "Неправильный формат суммы!!! Попробуйте еще!!!" << endl; //tmp->position = 0; dBuffer = -2; } if (dBuffer != -2 && dBuffer < 0) { cout << "Неправильный формат суммы!!! Попробуйте еще!!!" << endl; } } while(dBuffer < 0); tmp->dSumm = dBuffer; dBuffer = 0; // Добавляем её в список a.push_back( *tmp ); } // Освобождаем память delete tmp; }
Содержание архива
-
Исходный код на С++ для Visual Studio
Zicise