Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
starkiller123
0 / 0 / 0
Регистрация: 27.11.2012
Сообщений: 13
#1

программа "отдел кадров" - C++

19.05.2013, 12:41. Просмотров 1039. Ответов 2
Метки нет (Все метки)

Подскажите как сделать чтобы массив структур заполнялся из текстового файла (пока запись производится только с клавиатуры, а нужно чтобы в массиве уже была записана информация о нескольких сотрудниках) и чтобы можно было добавлять новые записи а так же удалять их.
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
#include <iostream>
#include <conio.h>
#include <cctype>
#include <cstring>
#include <cstdlib>
#include <locale>
 
using namespace std;
 
const int SIZE = 10;
 
struct worker {
    char name [40];
    char initials[40];
    int gdate;
    char obr[40];
    char spec[40];
    int pdate;
    int ndate;
} worker [SIZE];
 
void enter (), init_list (), display ();
void update (), input (int i);
int menu ();
 
int main ()
{
    setlocale (LC_ALL, "RUSSIAN");
 
    char choice;
 
    init_list ();
 
    for (;;) {
        choice = menu ();
        switch (choice) {
        case 'e': enter ();
            break;
        case 'd': display ();
            break;
        case 'u': update ();
            break;
        case 'q': return 0;
        }
    }
    
    _getch();
    return 0;
}
 
void init_list ()
{
    int t;
 
    for (t=0; t<SIZE; t++) *worker [t].name = '\0';
 
}
 
int menu () 
{   system ("cls");
    char ch;
 
    cout << '\n';
    do {
        cout << "(E)Ввод данных нового сотрудника\n";
        cout << "(D)Показ списка всех сотрудников\n";
        cout << "(U)Изменить информацию о сотруднике\n";
        cout << "(Q)Выход\n";
        cout << "Выберите команду: ";
        cin >> ch;
    } while (!strchr ("eduq", tolower(ch)));
 
    return tolower (ch);
 
}
 
void enter ()
{    system ("cls");
    int i;
 
    for (i=0; i<SIZE; i++)
        if (!*worker[i].name) break;
    if (i==SIZE) {
        cout << "Список полон!\n";
        return;
    }
 
    input (i);
}
 
void input (int i)
{    system ("cls");
    cout << "Фамилия: ";
    cin >> worker[i].name;
 
    cout << "Инициалы: ";
    cin >> worker[i].initials;
 
    cout << "год рождения: ";
    cin >> worker[i].gdate;
 
    cout << "Образование: ";
    cin >> worker[i].obr;
 
    cout << "Специальность: ";
    cin >> worker[i].spec;
    
    cout << "Дата поступления в фирму(ЧЧ:ММ:ГГГГ): ";
    cin >> worker[i].pdate;
    
    cout << "Дата последнего назначения(ЧЧ:ММ:ГГГГ): ";
    cin >> worker[i].ndate;
 
}
 
void update () 
{    system ("cls");
    int i;
    char name [80];
 
    cout << "Введите фамилию сотрудника: ";
    cin >> name;
 
    for (i=0; i<SIZE; i++)
        if (!strcmp(name, worker[i].name)) break;
 
    if (i==SIZE) {
        cout << "Сотрудник не найден\n";
        return;
    }
    
    cout << "Введите новую информацию.\n";
    input (i);
 
}
 
void display ()
{    system ("cls");
    int t;
 
    for (t=0; t<SIZE; t++) {
        if (*worker[t].name) {
            cout <<"\n\nФамилия: "<< worker[t].name << '\n';
            cout << "Инициалы: " << worker[t].initials;
            cout << "\nГод рождения: ";
            cout << worker[t].gdate << '\n';
            cout << "Образование: " << worker[t].obr;
            cout << "\nСпециальность: ";
            cout << worker[t].spec ;
            cout << "\nДата поступления на фирму(ЧЧ:ММ:ГГГГ): ";
            cout << worker[t].pdate ;
            cout << "\nДата последнего назначения(ЧЧ:ММ:ГГГГ): ";
            cout << worker[t].ndate<<endl ;
        }
    }
    system ("PAUSE");
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.05.2013, 12:41
Здравствуйте! Я подобрал для вас темы с ответами на вопрос программа "отдел кадров" (C++):

Написать программу "Отдел кадров", используя классы - C++
Написать программу &quot;Отдел кадров&quot;, используя классы. В public указать имя, год рождения и оклад сотрудника, в private город, адрес, пол....

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно" - C++
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить погоду &quot;тепло&quot;, &quot;жарко&quot;, &quot;холодно&quot;, &quot;очень холодно&quot;. Я так...

Сортировка посредством пирамиды структуры "Отдел" по заданному полю - C++
Нужно отсортировать структуру по году. Год то сортируется, но никак не сохраняется другая информация соответственно ему. Что-то незнаю...

Реализовать классы "Воин", "Пехотинец", "Винтовка", "Матрос", "Кортик" (наследование) - C++
Разработать программу с использованием наследования классов, реализующую классы: − воин; − пехотинец(винтовка); − матрос(кортик). ...

Описать структуру: Отдел кадров - C++
Описать структуру: Отдел кадров Фамилия Инициалы Год рожд Оклад Иванов И.И. 1975 517.50 Петренко П.П. 1956 ...

Что означает "Программа "[4872] laba!.exe: Машинный код" завершилась с кодом 3 (0x3)."? - C++
при запуске кода компилятор пишет &quot;Программа &quot; laba!!!!!!.exe: Машинный код&quot; завершилась с кодом 3 (0x3).&quot; и появляется окошечко с ошибкой....

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
henecs
17 / 17 / 0
Регистрация: 19.05.2013
Сообщений: 135
19.05.2013, 13:09 #2
как то так запись и чтение, но могу ошибаться
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <fstream.h>
 
void struct_read()
{
   FILE *f;
   f = fopen("file.txt","r");// где file.txt имя файла "r" метод открытия файла
   int n=0; // счетчик количества считаных элементов ммассива
   while (!feof(f))
      {
         fread(&worker[n],sizeof(worker),1,f);
         n++;
      }
   n--;
};
 
void struct_write()
{
   FILE *f;
   f=fopen("file.txt","w+");
   for (int i=0; i<n; i++)
      fwrite(&worker[n],sizeof(worker),1,f);
   fclose(f);
}
C++
1
2
size_t fread(void *буфер, size_t колич_байт, size_t счетчик, FILE *уф);
size_t fwrite(const void *буфер, size_t колич_байт, size_t счетчик, FILE *уф);
Для fread() буфер — это указатель на область памяти, в которую будут прочитаны данные из файла. А для fwrite() буфер — это указатель на данные, которые будут записаны в файл. Значение счетчик определяет, сколько считывается или записывается элементов данных, причем длина каждого элемента в байтах равна колич_байт. (Вспомните, что тип size_t определяется как одна из разновидностей целого типа без знака.) И, наконец, уф — это указатель файла, то есть на уже открытый поток.
starkiller123
0 / 0 / 0
Регистрация: 27.11.2012
Сообщений: 13
19.05.2013, 14:21  [ТС] #3
компилирует норм, без ошибок, а когда пробую вывести структуру считанную с файла ничего не высвечивается, то же самое и когда записываю нового сотрудника, в файле ничего не добавляется=(
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.05.2013, 14:21
Привет! Вот еще темы с ответами:

Как сделать, так чтобы i и j можно было вводить самому "i" И "j" в цикле, есть программа - C++
#include &lt;iostream&gt; using namespace std; int main() {int a=0,b=0; int i=0; cout&lt;&lt;&quot;Vvedite i=&quot;&lt;&lt;endl; cin&gt;&gt;i; ...

что дальше? (программа вводит информацию из ведомости и печатает фамилии студентов, учащихся на "4". "5" и их процентное соотношение с другими) - C++
Ведомость о результатах зимней сессии содержит информацию: фамилия и инициалы студента, номер группы, оценки с 3-х предметов: а)...

Создать абстрактный класс "Издание" и производные классы "Книга", "Статья", "Электронный ресурс" - C++
1. Создать абстрактный класс Издание с методами, позволяющими вывести на экран информацию об издании, а также определить является ли данное...

Создать класс "Вентилятор" содержащий в себе классы: "Двигатель", "Контроллер", "Пульт управления" - C++
Помогите с кодом написания задачи, не понимаю как написать классы в классе. Нужно создать класс &quot;вентилятор&quot; содержащий в себе классы:...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru