Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <stdio.h>
- #include <conio.h>
- #include <windows.h>
- #include <string>
- #include <fstream>
- using namespace std;
- struct Form {
- int age;
- char pol[2];
- char edu[20];
- char otvet[4];
- Form* next;
- };
- char* fileName = new char[50];
- FILE* fl;
- struct dyn_list {
- Form* head = NULL; // Первый элемент (голова) списка
- Form* tail; // Последний элемент (хвост) списка
- };
- short menu();
- void constr_list(dyn_list& l);
- bool chk_empty(dyn_list l);
- void comp_in(dyn_list& l, int n, char* nu, char* st, char* t);
- void news(dyn_list& vars1);
- void print(dyn_list l);
- int find_m(dyn_list l, int age, const char* pol, const char* edu, const char* otvet);
- int find_s(dyn_list l, int age, const char* pol, const char* edu, const char* otvet);
- void find(dyn_list l);
- int main() {
- SetConsoleCP(1251);
- SetConsoleOutputCP(1251);
- setlocale(LC_ALL, "Rus");
- char* buf_age = new char[3];
- char* buf_pol = new char[2];
- char* buf_edu = new char[20];
- char* buf_otvet = new char[4];
- dyn_list vars; // Динамический список
- cout << "Работаем с базой данных! ";
- cout << "Введите имя файла -> ";
- cin >> fileName;
- ifstream* inp = new ifstream(fileName);
- fopen_s(&fl, fileName, "r");
- if (!inp->good()) {
- cout << "Ошибка в открытии файла!\n";
- system("pause");
- return 0;
- }
- cout << "\nИнформация, содержащаяся в исходном файле:\n" << endl;
- while (!inp->eof()) {
- inp->getline(buf_age, 3);
- cout << buf_age << " ";
- int age = atoi(buf_age);
- inp->getline(buf_pol, 2);
- cout << buf_pol << " ";
- inp->getline(buf_edu, 20);
- cout << buf_edu << " ";
- inp->getline(buf_otvet, 20);
- cout << buf_otvet << " " << endl;
- comp_in(vars, age, buf_pol, buf_edu, buf_otvet);
- }
- system("pause");
- inp->close();
- short choise;
- do {
- system("cls");
- choise = menu();
- switch (choise) {
- case 1:
- system("cls");
- news(vars);
- _getch();
- system("cls");
- break;
- case 2:
- system("cls");
- print(vars);
- _getch();
- system("cls");
- break;
- case 3:
- system("cls");
- find(vars);
- _getch();
- system("cls");
- break;
- case 0:
- cout << "До свидания!!!" << endl;
- break;
- default:
- cout << "Неверный выбор!!!" << endl;
- cout << "\n\nPress Enter..." << endl;
- _getch();
- system("cls");
- break;
- }
- } while (choise);
- cout << endl;
- delete[] buf_pol;
- delete[] buf_edu;
- delete[] buf_otvet;
- return 0;
- }
- short menu() {
- short v;
- cout << " МЕНЮ" << endl;
- cout << " Введите [1] для заполнения анкеты\n";
- cout << " Введите [2] для просмотра всех анкет\n";
- cout << " Введите [3] для анализа анкет\n";
- cout << " Введите [0] для выхода\n";
- cout << " Пункт: ";
- cin >> v;
- return v;
- }
- void constr_list(dyn_list& l) {
- l.head = NULL;
- }
- // Проверка списка на пустоту
- bool chk_empty(dyn_list l) {
- return (l.head == NULL);
- }
- // Включение в список нового компонента
- void comp_in(dyn_list& l, int n, char* nu, char* st, char* t) {
- Form* c = new Form();
- c->age = n;
- //strcpy_s(c->age, 4, n);
- strcpy_s(c->pol, 2, nu);
- strcpy_s(c->edu, 20, st);
- strcpy_s(c->otvet, 4, t);
- c->next = NULL;
- if (chk_empty(l))
- l.head = c;
- else
- l.tail->next = c;
- l.tail = c;
- }
- //ФУНКЦИЯ НОВЫЕ ЗАПИСИ
- void news(dyn_list& vars1) {
- cout << "Введите возраст: ";
- int buf_age;
- cin >> buf_age;
- cout << "Введите пол (м/ж): ";
- char buf_pol[2];
- cin >> buf_pol;
- cout << "Образование (начальное, среднее, высшее): ";
- char buf_edu[20];
- cin >> buf_edu;
- cout << "Ответ на вопрос анкеты (да/нет): ";
- char buf_otvet[4];
- cin >> buf_otvet;
- comp_in(vars1, buf_age, buf_pol, buf_edu, buf_otvet);
- cout << "\nАнкета успешно добавлена в список";
- }
- void print(dyn_list l) {
- while (l.head != NULL) {
- cout << "Возраст: " << l.head->age << endl;
- cout << "Пол: " << l.head->pol << endl;
- cout << "Образование: " << l.head->edu << endl;
- cout << "Ответ на вопрос анкеты: " << l.head->otvet << endl << endl;
- l.head = l.head->next;
- }
- }
- //Поиск старших
- int find_s(dyn_list l, int age, const char* pol, const char* edu, const char* otvet) {
- bool flak = false;
- int numk = 0;
- while (l.head != NULL) {
- if (l.head->age > age)
- if (strcmp(l.head->pol, pol) == 0)
- if (strcmp(l.head->edu, edu) == 0)
- if (strcmp(l.head->otvet, otvet) == 0) {
- cout << "Возраст: " << l.head->age << endl;
- cout << "Пол: " << l.head->pol << endl;
- cout << "Образование: " << l.head->edu << endl;
- cout << "Ответ: " << l.head->otvet << endl << endl;
- flak = true;
- ++numk;
- }
- l.head = l.head->next;
- }
- if (!flak)
- cout << "Нет таких анкет\n";
- else {
- cout << "Таких анкет в списке: " << numk << endl;
- cout << "\nНажмите любую клавишу, чтобы продолжить работу!";
- }
- return 0;
- }
- //Поиск младших
- int find_m(dyn_list l, int age, const char* pol, const char* edu, const char* otvet) {
- bool flak = false;
- int numk = 0;
- while (l.head) {
- if (l.head->age < age)
- if (strcmp(l.head->pol, pol) == 0)
- if (strcmp(l.head->edu, edu) == 0)
- if (strcmp(l.head->otvet, otvet) == 0) {
- cout << "Возраст: " << l.head->age << endl;
- cout << "Пол: " << l.head->pol << endl;
- cout << "Образование: " << l.head->edu << endl;
- cout << "Ответ: " << l.head->otvet << endl << endl;
- flak = true;
- ++numk;
- }
- l.head = l.head->next;
- }
- if (!flak)
- cout << "Нет таких анкет\n";
- else {
- cout << "Таких анкет в списке: " << numk << endl;
- cout << "\nНажмите любую клавишу, чтобы продолжить работу!";
- }
- return 0;
- }
- void find(dyn_list l) {
- int v;
- cout << "[1] - Cколько мужчин старше 40 лет, имеющих высшее образование, ответили ДА на вопрос анкеты\n";
- cout << "[2] - Cколько женщин моложе 30 лет, имеющих среднее образование ответили НЕТ на вопрос анкеты\n";
- cout << "[3] - Cколько мужчин моложе 25 лет, имеющих начальное образование, ответили ДА на вопрос анкеты\n";
- cin >> v;
- switch (v) {
- case 1:
- system("cls");
- find_s(l, 40, "м", "высшее", "да");
- break;
- case 2:
- system("cls");
- find_m(l, 30, "ж", "среднее", "нет");
- break;
- case 3:
- system("cls");
- find_m(l, 25, "м", "начальное", "да");
- break;
- default:
- cout << "Неверный выбор!!!" << endl;
- cout << "\n\nPress Enter..." << endl;
- _getch();
- system("cls");
- break;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement