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

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

Восстановить пароль Регистрация
 
starkiller123
0 / 0 / 0
Регистрация: 27.11.2012
Сообщений: 11
19.05.2013, 12:41     программа "отдел кадров" #1
Подскажите как сделать чтобы массив структур заполнялся из текстового файла (пока запись производится только с клавиатуры, а нужно чтобы в массиве уже была записана информация о нескольких сотрудниках) и чтобы можно было добавлять новые записи а так же удалять их.
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++ Программа, заменяющая "-" на "_"
C++ Заменитье буквы "a" и "o" в слове на "A" и "O".
Описать структуру: Отдел кадров C++
что дальше? (программа вводит информацию из ведомости и печатает фамилии студентов, учащихся на "4". "5" и их процентное соотношение с другими) C++
Программа "Аэрофлот", тема "Структура" C++
C++ Написать программу "Отдел кадров", используя классы
C++ Переменные "емкость", "Галлон", "Бензин"

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
henecs
 Аватар для henecs
16 / 16 / 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
Сообщений: 11
19.05.2013, 14:21  [ТС]     программа "отдел кадров" #3
компилирует норм, без ошибок, а когда пробую вывести структуру считанную с файла ничего не высвечивается, то же самое и когда записываю нового сотрудника, в файле ничего не добавляется=(
Yandex
Объявления
19.05.2013, 14:21     программа "отдел кадров"
Ответ Создать тему
Опции темы

Текущее время: 09:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru