Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 27.06.2017
Сообщений: 8

БД Сотрудников

29.11.2017, 00:01. Показов 743. Ответов 7

Студворк — интернет-сервис помощи студентам
Взял за основу работающую программу и по аналогии решил сделать свою
В итоге вот код и что вышло. Может кто сможет подсказать что не так и как решить данную проблему?
Кликните здесь для просмотра всего текста
Account.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#pragma once
#include "stdafx.h"
#include <iostream>
class Account
{
public:
    Account();
    ~Account();
    char name[100];
    int id;
    char password[100];
    int role;
 
    void showHockeyAccountInfo();
};
AccountManager.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#pragma once
#include "stdafx.h"
#include <vector>
#include "Account.h"
#include <iostream>
#include "MenuHolder.h"
#include <regex>
using namespace std;
class AccountManager
{
public:
    AccountManager();
    ~AccountManager();
    Account createAccount();
    void showAllAccounts(vector<Account>* AccountVector);
    void addAccount(vector<Account>* AccountVector);
    void editAccount(vector<Account>* AccountVector);
    void deleteAccount(vector<Account>* AccountVector);
};
Admin.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#pragma once
#include "stdafx.h"
#include <vector>
#include "Work.h"
#include "MenuHolder.h"
#include <iostream>
#include <regex>
class Admin
{
private:    Work createWork();
public:
    Admin();
    ~Admin();
    void deleteWork(vector<Work>* WorkVector);
    void addWork(vector<Work>* WorkVector);
    void editWork(vector<Work>* WorkVector);
    void showAllWorks(vector<Work>* p);
    int inputDigits();
};
AuthHolder.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#pragma once
#include "stdafx.h"
#include "Initial.h"
#include "FileConnector.h"
#include "Account.h"
#include <vector>
#include "MenuHolder.h"
class AuthHolder
{
private:
    FileConnector f;
    Initial init;
    vector<Account> p;
public:
    AuthHolder();
    ~AuthHolder();
    void authMenu();
};
FileConnector.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#pragma once
#include "stdafx.h"
#include "Work.h"
#include <iostream>
#include <cstdlib>
#include <fstream>
#include <string>
#include <stddef.h>
#include <vector>
#include "Account.h"
class FileConnector
{
public:
    FileConnector();
    ~FileConnector();
    void writeIn(vector<Work>* p);
    vector<Work> readFrom(int countOfRecords);
    void writeInAc(vector<Account>* AccountVector);
    vector<Account> readFromAc(int countOFAccounts);
};
Initial.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#pragma once
#include "stdafx.h"
#include <iostream>
#include <fstream>
using namespace std;
class Initial
{
public:
    Initial();
    ~Initial();
 
public: int getCountOfRecords();
        int getCountOfAccounts();
 
};
MenuHolder.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#pragma once
#include "stdafx.h"
#include "ConsoleApplication2.h"
#include "Admin.h"
#include "Initial.h"
#include "FileConnector.h"
#include "User.h"
#include "AccountManager.h"
#include <regex>
 class MenuHolder
{
     FileConnector f;
     Initial init;
     vector<Work> p;
     vector<Account> a;
public:
     void mainMenuAdmin();
     void menuAccountsAdmin();
     void menuDataAdmin();
     void menuDataUser();
     void menuSearchUser();
    static MenuHolder& Instance()
    {   static MenuHolder s;
        return s;}
private:
    MenuHolder();  // конструктор недоступен
    ~MenuHolder() { } 
    MenuHolder(MenuHolder const&) = delete; 
    MenuHolder& operator= (MenuHolder const&) = delete;  
 
};
Work.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#pragma once
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
class Work
{
public:
    Work();
    ~Work();
public:
    string id;
    char name[100];
    char dept[100];
    string BirthYear;
    string AgreementConclusion;
    int ContractTerm;
    int salary;
    void showWorkInfo();
};
User.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#pragma once
#include "stdafx.h"
#include <vector>
#include "Work.h"
#include "MenuHolder.h"
#include <iostream>
#include <algorithm> 
#include <iomanip>
class User
{
public:
    User();
    ~User();
    void showAllWorks(vector<Work>* p);
    void doIndividualTask(vector<Work> p);
    void searchWork(vector<Work>* WorkVector,int key);
    void sortData(vector<Work> p);
    int inputDigits();
};
Миниатюры
БД Сотрудников  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.11.2017, 00:01
Ответы с готовыми решениями:

Вывести информацию о сотруднике, список сотрудников пенсионного возраста, средний оклад сотрудников отдела
Дан файл, содержащий информацию о сотрудниках отдела учреждения. Структура записи файла:...

Сформировать список, в котором хранится информация о заболеваниях сотрудников
Сформировать список, в котором хранится информация о заболеваниях сотрудников: ФИО, год рождения,...

Структуры... Задача: "База сотрудников небольшой фирмы"
По каждому сотруднику вводится следующая информация: • Фамилия, имя, отчество; • год и дата...

7
0 / 0 / 0
Регистрация: 27.06.2017
Сообщений: 8
29.11.2017, 00:02  [ТС]
Продолжение
Кликните здесь для просмотра всего текста

Account.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "stdafx.h"
#include "Account.h"
using namespace std;
Account::Account()
{}
Account::~Account()
{}
void Account::showHockeyAccountInfo() {
    cout << "Уникальный номер" << id << endl;
    cout << "Имя пользователя: " << name << endl;
    cout << "Пароль: " << password << endl;
    if (role == 1) {
    cout << "Роль: Администратор" << role;
    }
    else    cout << "Роль: Пользователь" << role;
}
AccountManager.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#include "stdafx.h"
#include "AccountManager.h"
AccountManager::AccountManager()
{}
AccountManager::~AccountManager()
{}
MenuHolder& instanceMenu1 = MenuHolder::Instance();
void AccountManager::showAllAccounts(vector<Account>* AccountVector) {
    vector<Account>::iterator p1;
    cout << endl;
    int i = 0;
    cout << "--------------------------------------------------------------------\n";
    cout << "|" << setw(5) << "Номер" << setw(10) << "|" << setw(10) << "Имя" << setw(10) << "|" << setw(15) << "Пароль" << setw(10) << "|" << setw(5) << "Роль |" << endl;
    cout << "--------------------------------------------------------------------\n";
    for (p1 = AccountVector->begin(); p1 < AccountVector->end(); p1++) {
        cout << "|" << setw(5) << p1->id << setw(10) << "|" << setw(10) << string(p1->name) << setw(10) << "|" << setw(15) << p1->password << setw(10) << "|" << setw(5) << p1->role << " |" << endl;
    }
    cout << "--------------------------------------------------------------------\n";
    cout << "Вернуться в меню" << endl;;
    system("pause");
    instanceMenu1.menuAccountsAdmin();
}
Account AccountManager::createAccount() {
    string buff;
    smatch m;
    regex e("\\d+");
    char role[100];
    Account p;
    cout << "Введите имя пользователя: ";
    cin >> p.name;
    cout << endl;
    cout << "Введите пароль: ";
    cin >> p.password;
    cout << endl;
    cout << "Введите роль ";
    cin >> role;
    if (string(role) == "admin") p.role = 1;
    else p.role = 0;
    cout << endl;
    return p;
}
void AccountManager::deleteAccount(vector<Account>* AccountVector) {
    vector<Account>::iterator p;
    int id;
    cout << "Введите номер пользователя, который подлежит удалению из базы" << endl;
    cin >> id;
    cout << endl;
    int i = 0, k = -1;
    for (p = AccountVector->begin(); p < AccountVector->end(); p++) {
        if (p->id == id) {
            cout << "Пользователь " << id << " найден" << endl;
            k = i;
        }
        i++;
    }
    if (k == -1) cout << "Не было удалено ни пользователя,т.к. пользователя с таким номером нет в базе";
    else {
        AccountVector->erase(AccountVector->begin() + k); cout << "Пользователь " << k << " удален" << endl;
        system("pause");
        instanceMenu1.menuAccountsAdmin();
    }
}
void AccountManager::addAccount(vector<Account>* AccountVector) {
    Account a;
    a = createAccount();
    a.id = AccountVector->size();
    AccountVector->push_back(a);
    cout << "Вернуться в меню";
    system("pause");
    instanceMenu1.menuAccountsAdmin();
}
void AccountManager::editAccount(vector<Account>* AccountVector) {
    vector<Account>::iterator p;
    system("cls");
    int id;
    cout << "Введите номер пользователя по списку, который подлежит редактированию" << endl;
    cin >> id;
    cout << endl;
    int i = 0, k = 0, z;
    for (p = AccountVector->begin(); p < AccountVector->end(); p++) {
    if (p->id == id) {
    do 
    {
cout << "Окно редактирования" << endl << "1. Изменить имя" << endl << "2.Изменить пароль" << endl << "3.изменить роль" << endl << "4.Выход" << endl;
    cin >> z;
    switch (z)
    {
    case 1: cout << "Старое значение: " << p->name << endl << "Введите новое значение: ";
    cin >> p->name;
    cout << endl; break;
    case 2: cout << "Старое значение: " << p->password << endl << "Введите новое значение: ";
    cin >> p->password;
    cout << endl; break;
    case 3: cout << "Старое значение: " <<p->role << endl << "Введите новое значение: (0 - пользователь, 1- админ) ";
    cin >> p->role;
    cout << endl; break;
    default:
    break;
    }
    } while (z != 4);
    k++;
    }
    }
    if (k == 0) cout << "Не было найдено пользователя для редактирования";
    system("pause");
    instanceMenu1.menuAccountsAdmin();
}
Admin.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
#include "stdafx.h"
#include "Admin.h"
using namespace std;
Admin::Admin()
{}
Admin::~Admin()
{}
string inputString()
{
    string buff;
    cin >> buff;
    return buff;
}
MenuHolder& instanceMenu2 = MenuHolder::Instance();
int Admin:: inputDigits() {
    string buff;
    smatch m;
    regex e("\\d+");
    do {
        cin >> buff;
        if (!regex_search(buff, m, e)) cout << endl << "Неправильно введены данные" << endl << endl;
    } while (!regex_search(buff, m, e));
    return stoi(buff);
}
Work Admin::createWork() {
    Work p;
    cout << "Введите ID: ";
    p.id = inputString();
    cout << endl;
    cout << "Введите ФИО: ";
    cin.get();
    cin.getline(p.name, 255);
    cin.sync();
    cout << endl;
    cout << "Введите отдел: ";
    cin.get();
    cin.getline(p.dept, 255);
    cin.sync();
    cout << endl;
    cout << "Введите дату рождения: ";
    p.BirthYear = inputString();
    cout << endl;
    cout << "Введите дату заключения договора: ";
    p.AgreementConclusion = inputString();
    cout << endl;
    cout << "Введите срок договора: ";
    p.ContractTerm = inputDigits();
    cout << endl;
    cout << "Введите оклад: ";
    p.salary = inputDigits();
    cout << endl;
        return p;
        }
void Admin::deleteWork(vector<Work>* WorkVector) {
    vector<Work>::iterator p;
    string id;
    cout << "Введите номер сотрудника(цы), которого необходимо удалить из базы" << endl;
    cin >> id;
    cout << endl;
    int i = 0, k = -1;
    for (p = WorkVector->begin(); p < WorkVector->end(); p++) {
        if (p->id == id) {
            cout << "Сотрудник(ца) " << id << " найден(а)" << endl;
            k=i;
        }
        i++;
    }
    if (k == -1) cout << "Не было удалено ни одного сотрудника(цы). Отсутствие наличия в базе данных";
    else {
        WorkVector->erase(WorkVector->begin() + k); cout << "Сотрудник(ца) " << k << " удален(а)" << endl;
    }
    system("pause");
    instanceMenu2.menuDataAdmin();
}
void Admin::addWork(vector<Work>* WorkVector) {
    Work p = createWork();
    p.id = WorkVector->size();
            WorkVector->push_back(p);
            cout << "Вернуться в меню";
            system("pause");
            instanceMenu2.menuDataAdmin();
                }
void Admin::editWork(vector<Work>* WorkVector) {
    vector<Work>::iterator p;
    system("cls");
            string id;
            string buff;
            cout << "Введите номер сотрудника(цы), который(ая) подлежит редактированию" << endl;
            id = inputString();
            cout << endl;
            int i = 0, k = 0, z, key;
            for (p = WorkVector->begin(); p < WorkVector->end(); p++) {
                if (p->id == id) { 
                    do
                    {
                        cout << "Окно редактирования" << endl << "1. Изменить ID" << endl << "2.Изменить ФИО" << endl << "3.Изменить отдел" << endl << "4.Изменить дату рождения" << endl << "5.Изменить дату заключения договора" << endl << "6.Изменить срок договора" << endl << "7.Изменить оклад" << endl << "8.Выход" << endl;
                        z = inputDigits();
                        cout << endl;
                        switch (z)
                        {
                        case 1: cout << "Старое значение: " << p->id << endl << "Введите новое значение: ";
                            p->id = inputString();
                            cout << endl; break;
                        case 2: cout << "Старое значение: " << p->name << endl << "Введите новое значение: ";
                            cin.get();
                            cin.getline(p->name, 255);
                            cin.sync();
                            cout << endl; break;
                        case 3: cout << "Старое значение: " << p->dept << endl << "Введите новое значение: ";
                            cin.get();
                            cin.getline(p->dept, 255);
                            cin.sync();
                            cout << endl; break;
                        case 4: cout << "Старое значение: " << p->BirthYear << endl << "Введите новое значение: ";
                            p->BirthYear = inputString();
                            cout << endl; break;
                        case 5: cout << "Старое значение: " << p->AgreementConclusion << endl << "Введите новое значение: ";
                            p->AgreementConclusion = inputString();
                            cout << endl; break;
                        case 6: cout << "Старое значение: " << p->BirthYear << endl << "Введите новое значение: ";
                            p->ContractTerm = inputDigits();
                            cout << endl; break;
                        case 7: cout << "Старое значение: " << p->salary << endl << "Введите новое значение: ";
                            p->salary = inputDigits();
                            cout << endl; break;
                        default:
                            break;
                        }
                    } while (z != 7);
                    k++; }
            }
            if (k == 0) cout << "Не было найдено сотрудника(цы) для редактирования" <<endl;
            system("pause");
            instanceMenu2.menuDataAdmin();
        }
void Admin::showAllWorks(vector<Work>* p) {
    vector<Work>::iterator p1;
    cout << endl;
    int i = 0;
    cout << "---------------------------------------------------------------------------------------------------------------------------------\n";
cout << "|" << setw(5) << "ID" << setw(10) << "|" << setw(10) << "ФИО" << setw(4) << "|" << setw(20) << "Название"<< setw(4) << "|" << setw(20) << "Отдел" << setw(4) << "|" << setw(16) << "Дата рождения" << setw(4) << "|" << setw(16) << "Дата заключения договора" << setw(4) << "|" << setw(16) << "Срок договора" << setw(4) << "|" << setw(16) << "Оклад" << setw(4) << "|" << endl;
    cout << "---------------------------------------------------------------------------------------------------------------------------------\n";
    for (p1 = p->begin(); p1 < p->end(); p1++) {
cout << "|" << setw(5) << p1->id << setw(10) << "|" << setw(10) << p1->name << setw(4) << "|" << setw(20) << p1->dept << setw(4) << "|" << setw(20) << p1->BirthYear << setw(4) << "|" <<  setw(16) << p1->AgreementConclusion << setw(4) << "|" << setw(16) << p1->ContractTerm << setw(4) << "|" << setw(16) << p1->salary << setw(4) << "|" << endl;
    }
cout << "---------------------------------------------------------------------------------------------------------------------------------\n" <<endl;
system("pause");
instanceMenu2.menuDataAdmin();
}
AuthHolder.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include "stdafx.h"
#include "AuthHolder.h"
using namespace std;
AuthHolder::AuthHolder()
{
    p = f.readFromAc(init.getCountOfAccounts());
}
AuthHolder::~AuthHolder()
{}
MenuHolder& instanceMenu = MenuHolder::Instance();
void AuthHolder::authMenu() {
        system("cls");
        char name[100];
        char password[100];
        cout << "Добро пожаловать!!" << endl;
        cout << "Введите логин" << endl;
        cin >> name;
        cout << endl;
        cout << "Введите пароль" << endl;
        cin >> password;
        cout << endl;
        vector<Account>::iterator p1;
        int k = 0;
        for (p1 = p.begin(); p1 < p.end(); p1++) {
            if (string(p1->name) == string(name) && string(p1->password) == string(password)) {
                if (p1->role == 1) instanceMenu.mainMenuAdmin();
                else instanceMenu.menuDataUser();
                k++;
            }
        }
        if (k == 0) cout << "В базе нет пользователя с такими данными" << endl;
        system("pause");
}
ConsoleApplication2.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "stdafx.h"
#include "ConsoleApplication2.h"
using namespace std;
int main()
{
    system("chcp 1251");
    setlocale(LC_ALL, "rus");
    while (true)
    {
        AuthHolder* a = new AuthHolder();
        a->authMenu();
        delete a;   
    }
    system("pause");
    return 0;
}
FileConnector.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#include "stdafx.h"
#include "FileConnector.h"
FileConnector::FileConnector()
{}
FileConnector::~FileConnector()
{}
void FileConnector:: writeIn(vector<Work>* WorkVector) {
    vector<Work>::iterator p;
    int i = 0;
    ofstream fout("cppstudio.txt");  
    for (p = WorkVector->begin(); p < WorkVector->end(); p++) {
        fout << "id:" << endl << p->id << endl;
        fout << "ФИО:" << endl << p->name << endl;
        fout << "Отдел:" << endl << p->dept << endl;
        fout << "Дата рождения:" << endl << p->BirthYear << endl;
        fout << "Дата заключения договора: " << endl << p->AgreementConclusion << endl;
        fout << "Срок договора: " << endl << p->ContractTerm << endl;
        fout << "Оклад: " << endl << p->salary << endl;
    }
    fout << "Конец";
    fout.close(); 
}
        vector<Work> FileConnector::readFrom(int countOfRecords) {
            char buff[50], name[100], var[100];
            vector<Work> WorkVector(countOfRecords);
            WorkVector.clear();
            Work p;
            int i = 0;
            string bufferString;
            ifstream fin("cppstudio.txt");
            cout << "Считанные данные" << endl;
            while (true)
            {   fin.getline(buff, 50);
                bufferString = string(buff);
                if (bufferString == "Конец") break;
                fin.getline(var, 100);
                bufferString = string(var);
                p.id = bufferString;
                fin.getline(buff, 50);
                fin.getline(var, 100);
                bufferString = string(var);
                strcpy_s(p.name, var);
                fin.getline(buff, 50);
                fin.getline(var, 100);
                bufferString = string(var);
                strcpy_s(p.dept, var);
                fin.getline(buff, 50);
                fin.getline(var, 100);
                bufferString = string(var);
                p.BirthYear = bufferString;
                fin.getline(buff, 50);
                fin.getline(var, 100);
                bufferString = string(var);
                p.AgreementConclusion = bufferString;
                fin.getline(buff, 50);
                fin.getline(var, 100);
                bufferString = string(var);
                fin >> p.ContractTerm;// = stoi(bufferString);
                fin.getline(buff, 50);
                fin.getline(var, 100);
                bufferString = string(var);
                fin >> p.salary; //= stoi(bufferString);
                fin.getline(buff, 50);
                fin.getline(var, 100);
                bufferString = string(var);
                WorkVector.push_back(p);
                i++;
            }
            fin.close();
            return WorkVector;
        }
        void FileConnector::writeInAc(vector<Account>* AccountVector) {         
            ofstream fout("accounts.txt");  
            vector<Account>::iterator p;
            for (p = AccountVector->begin(); p < AccountVector->end(); p++) {
                fout << "id учетной записи:" << endl << p->id << endl;
                fout << "Имя учетной записи:" << endl << p->name << endl;
                fout << "Пароль учетной записи:" << endl << p->password << endl;
                fout << "Роль учетной записи:" << endl << p->role << endl; // запись строки в файл
            }
            fout << "Конец";
            fout.close(); 
        }
        vector<Account> FileConnector::readFromAc(int countOfAccounts) {
            char buff[50], name[100], var[100];
            vector<Account> AccountVector(countOfAccounts);
            AccountVector.clear();
            Account p;
            int i = 0;
            string bufferString;
            ifstream fin("accounts.txt");
            cout << "Считанные данные" << endl;
            while (true)
            {   fin.getline(buff, 50);
                bufferString = string(buff);
                if (bufferString == "Конец") break;
                fin.getline(var, 100);
                bufferString = string(var);
                p.id = stoi(bufferString);
                cout << p.id << endl;
                fin.getline(buff, 50);
                cout << buff << endl;
                fin.getline(name, 100);
                bufferString = string(name);
                strcpy_s(p.name, name);
                cout << p.name << endl;
                cout << bufferString << endl;
                fin.getline(buff, 50);
                cout << buff << endl;
                fin.getline(var, 100);
                strcpy_s(p.password, var);
                cout << p.password << endl;
                fin.getline(buff, 50);
                cout << buff << endl;
                fin.getline(var, 100);
                bufferString = string(var);
                p.role = stoi(bufferString);
                cout << p.role << endl;
                AccountVector.push_back(p);
                i++;
            }
            fin.close();
            return AccountVector;
}
Initial.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include "stdafx.h"
#include "Initial.h"
Initial::Initial()
{}
Initial::~Initial()
{}
int Initial::getCountOfRecords() {
    int i = 0;
    ifstream fin("cppstudio.txt");
    while (true) {
        char buff[100];
        string bufferString;
        fin.getline(buff, 50);
        bufferString = string(buff);
        if (bufferString == "Конец" || bufferString == "") break;
        i++;
    }
    cout << "Количество записей " << i/14;
    fin.close();
    return i / 10;
}
int Initial::getCountOfAccounts() {
    int i = 0;
    ifstream fin("accounts.txt");
    while (true) {
        char buff[100];
        string bufferString;
        fin.getline(buff, 50);
        bufferString = string(buff);
        if (bufferString == "Конец" || bufferString == "") break;
        i++;
    }
    cout << "Количество аккаунтов " << i/8;
    fin.close();
    return i / 8;
}
0
0 / 0 / 0
Регистрация: 27.06.2017
Сообщений: 8
29.11.2017, 12:01  [ТС]
Продолжение

MenuHolder.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#include "stdafx.h"
#include "MenuHolder.h"
 
using namespace std;
Admin admin;
User user;
AccountManager manager;
MenuHolder::MenuHolder()
{
    p = f.readFrom(init.getCountOfRecords());
    a = f.readFromAc(init.getCountOfAccounts());
}
 
int inputDigits() {
    string buff;
    smatch m;
    regex e("\\d+");
    do {
        cin >> buff;
        if (!regex_search(buff, m, e)) cout << endl << "Неправильно введены данные" << endl << endl;
    } while (!regex_search(buff, m, e));
    return stoi(buff);
}
void MenuHolder:: mainMenuAdmin() {
    int k;
    system("cls");
    cout << "                                        ГЛАВНОЕ МЕНЮ АДМИНИСТРАТОРА                        " << endl;
    cout << "1.Управление учетными записями пользователей" << endl;
    cout << "2.Управление данными" << endl;
    cout << "3.Сохранить все изменения и выйти" << endl;
    k = inputDigits();
    cout << endl;
    switch (k)
    {
    case 1: {menuAccountsAdmin(); break; }
    case 2: {menuDataAdmin(); break; }
    case 3: {
        f.writeInAc(&a); 
        f.writeIn(&p); 
        p = f.readFrom(init.getCountOfRecords());
        a = f.readFromAc(init.getCountOfAccounts());
 
        break; }
    default:
        break;
    }
}
void    MenuHolder:: menuAccountsAdmin() {
        int k;
        system("cls");
        cout << "                                      МЕНЮ УПРАВЛЕНИЯ УЧЕТНЫМИ ЗАПИСЯМИ ПОЛЬЗОВАТЕЛЕЙ                          " << endl;
        cout << "1.Посмотреть все учетные записи" << endl;
        cout << "2.Добавить учетные записи" << endl;
        cout << "3.Отредактировать учетную запись" << endl;
        cout << "4.Удалить учетную запись" << endl;
        cout << "5.Назад" << endl;
        k = inputDigits();
        cout << endl;
        switch (k)
        {
        case 1: {manager.showAllAccounts(&a); break; }
        case 2: {manager.addAccount(&a); break; }
        case 3: {manager.editAccount(&a); break; }
        case 4: {manager.deleteAccount(&a); break; }
        case 5: {mainMenuAdmin(); break; }
        default:
            mainMenuAdmin(); break;
        }
    }
void    MenuHolder::  menuDataAdmin() {
    int k;
    
        system("cls");
        cout << "                                      МЕНЮ УПРАВЛЕНИЯ ДАННЫМИ                         " << endl;
        cout << "1.Просмотреть все данные" << endl;
        cout << "2.Добавить запись" << endl;
        cout << "3.Удалить запись" << endl;
        cout << "4.Редактировать запись" << endl;
        cout << "5.Назад" << endl;
        k = inputDigits();
        cout << endl;
        switch (k)
        {
        case 1: {admin.showAllWorks(&p); break; }
        case 2: {admin.addWork(&p); break; }
        case 3: {admin.deleteWork(&p); break; }
        case 4: {admin.editWork(&p); break; }
        case 5: {mainMenuAdmin(); break; }
        default:
            mainMenuAdmin(); break;
        }
    }
void    MenuHolder::menuDataUser() {
    p = f.readFrom(init.getCountOfRecords());
    int k;
    system("cls");
    cout << "                                      МЕНЮ УПРАВЛЕНИЯ ДАННЫМИ (ПОЛЬЗОВАТЕЛЬ)                        " << endl;
    cout << "1.Просмотреть все данные" << endl;
    cout << "2.Сортировать данные" << endl;
    cout << "3.Найти сотрудника(цу)" << endl;
    cout << "4.Выполнить индивидуальное задание" << endl;
    cout << "5.Выйти" << endl;
    k = inputDigits();
    cout << endl;
    switch (k)
    {
    case 1: {user.showAllWorks(&p); break; }
    case 2: {user.sortData(p); break; }
    case 3: {menuSearchUser(); break; }
    case 4: {user.doIndividualTask(p); break; }
    case 5: {f.writeIn(&p); break; }
    default:
        break;
    }
}
void    MenuHolder::menuSearchUser() {
    int k;
    system("cls");
    cout << "                                      МЕНЮ УПРАВЛЕНИЯ ДАННЫМИ (ПОЛЬЗОВАТЕЛЬ)                        " << endl;
    cout << "1.По id" << endl;
    cout << "2.По окладу" << endl;
    cout << "3.По ФИО" << endl;
    cout << "4.По отделу" << endl;
    cout << "5.Выход" << endl;
    k = inputDigits();
    cout << endl;
    switch (k)
    {
    case 1: { }
    case 2: { }
    case 3: {}
    case 4: {user.searchWork(&p,k); break; }
    case 5: {menuDataUser(); break; }
    default:
        break;
    }
}
Work.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include "stdafx.h"
#include "Work.h"
 
using namespace std;
Work::Work()
{}
Work::~Work()
{}
void Work::showWorkInfo() {
    cout << "ID " << id << endl;
    cout << "ФИО " << name << endl;
    cout << "Отдел " << dept << endl;
    cout << "Дата рождения " << BirthYear << endl;
    cout << "Дата заключения договора " << AgreementConclusion << endl;
    cout << "Срок договора " << ContractTerm << endl;
    cout << "Оклад " << salary << endl;
}
User.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
#include "stdafx.h"
#include "User.h"
using namespace std;
User::User()
{}
User::~User()
{}
string inputString1()
{
    string buff;
    cin >> buff;
    return buff;
}
MenuHolder& instanceMenu3 = MenuHolder::Instance();
int User::inputDigits() {
    string buff;
    smatch m;
    regex e("\\d+");
    do {
        cin >> buff;
        if (!regex_search(buff, m, e)) cout << endl << "Неправильно введены данные" << endl << endl;
    } while (!regex_search(buff, m, e));
    return stoi(buff);
}
void User::showAllWorks(vector<Work>* p) {
    vector<Work>::iterator p1;
    cout << endl;
    int i = 0;
    cout << "---------------------------------------------------------------------------------------------------------------------------------\n";
    cout << "|" << setw(5) << "ID" << setw(10) << "|" << setw(10) << "ФИО" << setw(4) << "|" << setw(20) << "Название" << setw(4) << "|" << setw(20) << "Отдел" << setw(4) << "|" << setw(16) << "Дата рождения" << setw(4) << "|" << setw(16) << "Дата заключения договора" << setw(4) << "|" << setw(16) << "Срок договора" << setw(4) << "|" << setw(16) << "Оклад" << setw(4) << "|" << endl;
    cout << "---------------------------------------------------------------------------------------------------------------------------------\n";
    for (p1 = p->begin(); p1 < p->end(); p1++) {
        cout << "|" << setw(5) << p1->id << setw(10) << "|" << setw(10) << p1->name << setw(4) << "|" << setw(20) << p1->dept << setw(4) << "|" << setw(20) << p1->BirthYear << setw(4) << "|" << setw(16) << p1->AgreementConclusion << setw(4) << "|" << setw(16) << p1->ContractTerm << setw(4) << "|" << setw(16) << p1->salary << setw(4) << "|" << endl;
    }
    cout << "---------------------------------------------------------------------------------------------------------------------------------\n" << endl;
    system("pause");
    instanceMenu3.menuDataUser();
}
void User::searchWork(vector<Work>* WorkVector, int key) {
    vector<Work>::iterator p;
    char name[100], dept[100];
    string id;
    int salary;
    int i = 0;;
    int k = -1;
    switch (key) {
    case 1: {
        cout << "Введите ID сотрудника(цы), которого(ую) нужно найти" << endl;
        id = inputString1();
        cout << endl;
        int i = 0;
        for (p = WorkVector->begin(); p < WorkVector->end(); p++) {
            if (p->id == id) {
                cout << "Сотрудник(ца) " << id << " найден(а)" << endl;
                k = i;
                p->showWorkInfo();
            }
        }
 
        if (k == -1) cout << "Не было найдено ни одного сотрудника(цы)";
        system("pause");
        instanceMenu3.menuDataUser(); break;
    }
    case 2: {
        cout << "Введите оклад, который хотите найти" << endl;
        salary = inputDigits();
        for (p = WorkVector->begin(); p < WorkVector->end(); p++) {
            if (p->salary == salary) {
                cout << "Сотрудник(ца) с окладом " << salary << " найден(а)" << endl;
                k = i;
                p->showWorkInfo();
            }
        }
 
        if (k == -1) cout << "Не было найдено ни одного(ой) сотдрудника(цы) с таким окладом";
        system("pause");
        instanceMenu3.menuDataUser(); break;
    }
    case 3: {
        cout << "Введите ФИО сотрудника(цы), которого(ую) хотите найти" << endl;
        cin.get();
        cin.getline(name, 255);
        cin.sync();
        for (p = WorkVector->begin(); p < WorkVector->end(); p++) {
            if (string(p->name) == string(name)) {
                cout << "товар, с именем  " << name << " найден" << endl;
                k = i;
                p->showWorkInfo();
            }
        }
 
        if (k == -1) cout << "Не было найдено ни одного(ой) сотрудника(цы) с таким ФИО";
        system("pause");
        instanceMenu3.menuDataUser(); break;
    }
    case 4: {
        cout << "Введите отдел, который хотите найти" << endl;
        cin.get();
        cin.getline(dept, 255);
        cin.sync();
        for (p = WorkVector->begin(); p < WorkVector->end(); p++) {
            if (string(p->dept) == string(dept)) {
                cout << "Отдел " << dept << " найден" << endl;
                k = i;
                p->showWorkInfo();
            }
        }
 
        if (k == -1) cout << "Не было найдено такого отдела";
        system("pause");
        instanceMenu3.menuDataUser(); break;
    }
    default: {system("pause"); instanceMenu3.menuDataUser(); break; }
    }
}
bool sortById(const Work &lhs, const Work &rhs) { return string(lhs.id) < string(rhs.id); }
bool sortByName(const Work &lhs, const Work &rhs) { return string(lhs.name) < string(rhs.name); }
bool sortByDept(const Work &lhs, const Work &rhs) { return string(lhs.dept) < string(rhs.dept); }
bool sortByBirthYear(const Work &lhs, const Work &rhs) { return string(lhs.BirthYear) < string(rhs.BirthYear); }
bool sortByAgreementConclusion(const Work &lhs, const Work &rhs) { return string(lhs.AgreementConclusion) < string(rhs.AgreementConclusion); }
bool sortByContractTerm(const Work &lhs, const Work &rhs) { return lhs.ContractTerm < rhs.ContractTerm; }
bool sortBySalary(const Work &lhs, const Work &rhs) { return lhs.salary < rhs.salary; }
 
void User::sortData(vector<Work> WorkVector) {
    system("cls");
    vector<Work>::iterator p;
    cout << "Вся сортировка производится по возрастанию, результаты сортировки не сохраняются и предназначены исключительно для просмотра" << endl;
    cout << "Если вы выберете неправильный вариант сортировки, то рабочие будут отображены в том порядке,в котором находятся в базе" << endl;
    cout << endl << "Выберите параметр для сортировки" << endl;
    cout << "1.ID" << endl;
    cout << "2.ФИО" << endl;
    cout << "3.Отдел" << endl;
    cout << "4.Дата рождения" << endl;
    cout << "5.Дата заключения договора";
    cout << "6.Срок договора" << endl;
    cout << "7.Оклад" << endl;
    int k;
    k = inputDigits();
    switch (k)
    {
    case 1: sort(WorkVector.begin(), WorkVector.end(), sortById); break;
    case 2: sort(WorkVector.begin(), WorkVector.end(), sortByName); break;
    case 3: sort(WorkVector.begin(), WorkVector.end(), sortByDept); break;
    case 4: sort(WorkVector.begin(), WorkVector.end(), sortByBirthYear); break;
    case 5: sort(WorkVector.begin(), WorkVector.end(), sortByAgreementConclusion); break;
    case 6: sort(WorkVector.begin(), WorkVector.end(), sortByContractTerm); break;
    case 7: sort(WorkVector.begin(), WorkVector.end(), sortBySalary); break;
    default:
        break;
    }
    showAllWorks(&WorkVector);
}   
void User::doIndividualTask(vector<Work> WorkVector) {
    system("cls");
    string id;
    vector<Work>::iterator p;
    cout << "Выполнение индивидуального задания" << endl;
    cout << "Вывести сотрудников пенсионного возраста: " << endl;
//ИЗ
        system("pause");
    instanceMenu3.menuDataUser();
}
Добавлено через 11 часов 58 минут
Попробовал использовать eclipse.
Немного изменив код собрал и по сути ничего не изменилось.
Однако стало известно, что оно выводит "Считанные данные 0Количество записей", т.е. скорее всего ошибка допущена в файлах Initial и FileConnector
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,536
Записей в блоге: 1
29.11.2017, 12:15
Цитата Сообщение от Tiera Посмотреть сообщение
C++
1
2
3
cout << "Количество записей " << i/14; 
fin.close(); 
return i / 10;
10!=14
0
0 / 0 / 0
Регистрация: 27.06.2017
Сообщений: 8
29.11.2017, 13:09  [ТС]
исправил ещё до вашего сообщения
не от этого всё...
Миниатюры
БД Сотрудников  
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,536
Записей в блоге: 1
29.11.2017, 13:12
Tiera, написано "количество записей 1" и ещё что-то рядом.
0
0 / 0 / 0
Регистрация: 27.06.2017
Сообщений: 8
29.11.2017, 13:30  [ТС]
Считанные данные 1 Количество записей
Однако как сделать так, чтобы в итоге всё сдвинулось с мёртвой точки?
0
0 / 0 / 0
Регистрация: 27.06.2017
Сообщений: 8
30.11.2017, 19:59  [ТС]
Нашёл ошибку сам.
Считывание данных из файла идёт не в том порядке.
в файле FileConnector.cpp нужно поменять порядок считывания и записи для того, чтобы код заработал
Тему можно закрывать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.11.2017, 19:59
Помогаю со студенческими работами здесь

Файлы: вычислить общую сумму выплат за месяц по отделу А, а также среднемесячный заработок сотрудников этого отдела
Создать файл, содержащий сведения о месячной заработной плате сотрудников отдела. Каждая запись...

Вывести список сотрудников, проработавших на предприятии более 20 лет.
8. Информация о сотрудниках предприятия содержит ФИО, номер отдела, должность, дату начала работы....

Ввести имена и телефоны сотрудников организации в массив записей и вывести их в виде таблицы.
Запись содержит несколько компонентов, или полей, которые могут иметь различные типы. ...

Напечатать список сотрудников, имеющих высшее образование.
В файл записать информацию о сотрудниках некоторого предприятия: фамилия, домашний адрес, телефон,...

Текстовый файл, который содержит номера телефонов сотрудников
A. Сформировать текстовый файл, который содержит номера телефонов сотрудников учреждения:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru