Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<iomanip>
- #include<locale>
- #include<conio.h>
- #include<fstream>
- using namespace std;
- struct dvig {
- char nazv[10];
- int year;
- int cilin;
- float V;
- int horses;
- int n_m;
- float rashod;
- float V_masla;
- char pitanie[1];
- };
- void addelement(dvig* p, int n)
- {
- do {
- cout << "Введите модель двигателя:\n";
- cin >> p[n].nazv;
- } while (strlen(p[n].nazv) > 10);
- do {
- cout << "Введите год выпуска (1930 - 2018):\n";
- cin >> p[n].year;
- } while (p[n].year <= 1930 || p[n].year > 2018 || cin.fail());
- do {
- cout << "Введите кол-во цилиндров (4 - 10):\n";
- cin >> p[n].cilin;
- } while (p[n].cilin < 4 || p[n].cilin > 10 || cin.fail());
- do {
- cout << "Введите объём двигателя (0.5 - 8):\n";
- cin >> p[n].V;
- } while (p[n].V < 0.5 || p[n].V > 8 || cin.fail());
- do {
- cout << "Введите кол-во лошадиных сил (30 - 10000):\n";
- cin >> p[n].horses;
- } while (p[n].horses < 30 || p[n].horses > 10000 || cin.fail());
- do {
- cout << "Введите крутящий момент (100 - 10000):\n";
- cin >> p[n].n_m;
- } while (p[n].n_m < 100 || p[n].n_m > 10000 || cin.fail());
- do {
- cout << "Введите расход (1 - 100):\n";
- cin >> p[n].rashod;
- } while (p[n].rashod <= 1 || p[n].rashod > 100 || cin.fail());
- do {
- cout << "Введите объём масла (1 - 10):\n";
- cin >> p[n].V_masla;
- } while (p[n].V_masla < 1 || p[n].V_masla > 10 || cin.fail());
- do {
- cout << "Введите тип питания (i или k):\n";
- cin >> p[n].pitanie;
- } while ((p[n].pitanie[0]!='k' || p[n].pitanie[0] != 'i') && strlen(p[n].pitanie) != 1);
- }
- void menu() {
- system("cls");
- cout << "1.Создать информацию о двигателях" << endl;
- cout << "2.Просмотреть информацию" << endl;
- cout << "3.Таблица" << endl;
- cout << "4.Очистить всё" << endl;
- cout << "5.Сохранить базу в файл" << endl;
- cout << "6.Загрузить данные из файла" << endl;
- cout << "7.Удаление файла по названию" << endl;
- cout << "8.Создание файла" << endl;
- cout << "9.Выход" << endl;
- }
- void prosmotr(dvig *p, int n)
- {
- for (int i = 0; i < n; i++)
- {
- cout << "Модель: " << p[i].nazv << endl;
- cout << "Год выпуска: " << p[i].year << endl;
- cout << "Кол-во цилиндров: " << p[i].cilin << endl;
- cout << "Объём двигателя: " << p[i].V << " литра(литров)" << endl;
- cout << "Кол-во лошадиных сил: " << p[i].horses << endl;
- cout << "Крутящий момент: " << p[i].n_m << endl;
- cout << "Расход: " << p[i].rashod << " литра(литров)" << endl;
- cout << "Объём масла: " << p[i].V_masla << " литра(литров)" << endl;
- cout << "Тип питания: " << p[i].pitanie << endl;
- cout << endl;
- };
- }
- void tablle(dvig *p, int n) {
- cout << "Таблица:\n";
- cout << endl;
- cout << setw(20) << left << "Модель: ";
- cout << setw(20) << left << "Год выпуска: ";
- cout << setw(20) << left << "Кол-во цилиндров: ";
- cout << setw(20) << left << "Объём двигателя: ";
- cout << setw(20) << left << "Кол-во лош. сил: ";
- cout << setw(20) << left << "Крутящий момент: ";
- cout << setw(20) << left << "Расход: ";
- cout << setw(20) << left << "Объём масла: ";
- cout << setw(20) << left << "Тип питания: " << "\n";
- for (int i = 0; i < n; i++)
- {
- cout << setw(20) << left << p[i].nazv;
- cout << setw(20) << left << p[i].year;
- cout << setw(20) << left << p[i].cilin;
- cout << setw(20) << left << p[i].V;
- cout << setw(20) << left << p[i].horses;
- cout << setw(20) << left << p[i].n_m;
- cout << setw(20) << left << p[i].rashod;
- cout << setw(20) << left << p[i].V_masla;
- cout << setw(20) << left << p[i].pitanie << "\n";
- }
- }
- void new_DB(char *pr) {
- ofstream file(pr);
- }
- void remove_DB(char *pr) {
- ifstream file(pr);
- if (file.is_open()) {
- file.close();
- if (remove(pr));
- cout << "Файл удалён!" << endl;
- return;
- }
- cout << "Ошибка" << endl;
- }
- void clear(dvig *p, int n) {
- if (n > 0) {
- free(p);
- }
- }
- void save_DB(dvig *p, int n, char *pr) {
- ofstream file(pr);
- file << n << endl;
- for (int i = 0; i < n; i++) {
- file << p[i].nazv << endl;
- file << p[i].year << endl;
- file << p[i].cilin << endl;
- file << p[i].V << endl;
- file << p[i].horses << endl;
- file << p[i].n_m << endl;
- file << p[i].rashod << endl;
- file << p[i].V_masla << endl;
- file << p[i].pitanie << endl;
- }
- file.close();
- }
- void load_DB(dvig *p, int n, char *pr) {
- ifstream file(pr);
- if (!file.is_open()) {
- cout << "Ошибка!" << endl;
- }
- else {
- file >> n;
- }
- if (n > 0) {
- for (int i = 0; i < n; i++) {
- file >> p[i].nazv;
- file >> p[i].year;
- file >> p[i].cilin;
- file >> p[i].V;
- file >> p[i].horses;
- file >> p[i].n_m;
- file >> p[i].rashod;
- file >> p[i].V_masla;
- file >> p[i].pitanie;
- }
- file.close();
- }
- }
- int main() {
- setlocale(LC_ALL, "RU");
- dvig *p;
- int n = 0;
- char num = '8';
- char pr[20];
- //Создаем динамический массив структур
- p = (dvig *)malloc((n + 1) * sizeof(dvig));
- while (num != '9') {
- menu();
- cin >> num;
- switch (num) {
- case '1':
- system("cls");
- p = (dvig *)realloc(p, (n + 1) * sizeof(dvig));
- addelement(p, n);
- cout << "Нажмите любую клавишу для возвращения в меню!";
- _getch();
- n++;
- break;
- case '2':
- system("cls");
- prosmotr(p, n);
- cout << "Нажмите любую клавишу для возвращения в меню!";
- _getch();
- break;
- case '3':
- system("cls");
- tablle(p, n);
- cout << "Нажмите любую клавишу для возвращения в меню!";
- _getch();
- break;
- case '4':
- system("cls");
- clear(p, n);
- n = 0;
- p = (dvig *)malloc(1 * sizeof(dvig));
- cout << "Информация очищена!" << endl;
- cout << "Нажмите любую клавишу для возвращения в меню!";
- _getch();
- break;
- case '5':
- system("cls");
- cout << "Введите название файла:" << endl;
- cin >> pr;
- save_DB(p, n, pr);
- cout << "Запись сделана!" << endl;
- cout << "Нажмите любую клавишу для возвращения в меню!";
- _getch();
- break;
- case '7':
- system("cls");
- cout << "Введите название файла:" << endl;
- cin >> pr;
- remove_DB(pr);
- cout << "Нажмите любую клавишу для возвращения в меню!";
- _getch();
- break;
- case '8':
- system("cls");
- cout << "Введите название файла:" << endl;
- cin >> pr;
- new_DB(pr);
- cout << "Файл создан!" << endl;
- cout << "Нажмите любую клавишу для возвращения в меню!";
- _getch();
- break;
- case '6':
- system("cls");
- cout << "Введите название файла:" << endl;
- cin >> pr;
- ifstream file(pr);
- if (!file.is_open()) {
- }
- else {
- file >> n;
- }
- file.close();
- p = (dvig *)realloc(p, n * sizeof(dvig));
- load_DB(p, n, pr);
- cout << "Информация загружена!" << endl;
- cout << "Нажмите любую клавишу для возвращения в меню!";
- _getch();
- break;
- }
- }
- _getch();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement