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

Поиск по структуре "Сотрудник" - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ строки и динамическая память http://www.cyberforum.ru/cpp-beginners/thread1115444.html
определить количество слов в строке, начинающихся с заданной пары символов. Строка размещается в динамической памяти
C++ Проверка на число которое находится в определленом адресе Привет всем, не буду много писать, сразу перейду к сути дела: Мне надо сделать так, чтобы программа проверяла число по определенному адресу ( там числа формата float ). Допустим в адресе число 56.01, мне надо чтобы была проверка допустим 56.0 >= 1000.0 . Проблема в том, что я не понимаю как сравнивать 1000.0 с адресом ( точнее число которое находится в этом адресе ). Надеюсь я нормально... http://www.cyberforum.ru/cpp-beginners/thread1115437.html
C++ Создать функцию, подсчитывающую по заданным сторонам треугольника величины его углов
Привет, помогите составить программу. Создать функцию, подсчитывающую по заданным сторонам треугольника величины его углов. Выведите значения полученных углов из главной функции.
Класс "Прямоугольник" с данными верхняя левая и правая нижняя точки C++
Помогите, пожалуйста решить задачу в С++ Задание. 1. Для задачи предыдущей лабораторной создать класс-потомок согласно заданию. В классе-потомке определить дополнительные свойства (согласно заданию) и методы (возможно переопределение методов класса-родителя) 2. Проверить работу всех функций в новом классе (как унаследованных, так и собственных). Задача. Класс "Прямоугольник" с...
C++ Присваивание http://www.cyberforum.ru/cpp-beginners/thread1115418.html
Помогите с оператором присваивания ) class Stack { private: myString *st; .... void operator=(myString); class myString
C++ Работа с циклами для вычисления выражения Дано такое выражение на фото http://i.pixs.ru/storage/5/2/2/fotoJPG_2594443_11179522.jpg У меня больше ничего не получается кроме этого: Заголовок: #include <iostream> #include <cmath> using namespace std; //функция вычисления факториала int fact(int num){ подробнее

Показать сообщение отдельно
о_О_Кто_здесь
11 / 11 / 1
Регистрация: 06.06.2011
Сообщений: 152
11.03.2014, 09:36     Поиск по структуре "Сотрудник"
Добрый день! Спасибо, что зашли!
Появились вопросы по структурам.

Задание:
Кликните здесь для просмотра всего текста

Струкутура:
Структура "Сотрудник":
- фамилия, имя, отчество;
- должность
- год рождения;
- заработная плата.
Удаление:
Удалить записи с указанной фамилией
Добавление:
Добавить K элементов в конец файла
Замена:
Заменить первые N записей на данные, введённые пользователем

Следующие задания требуется решить с привлечением двоичных файлов. Нужно:
1. Объявить структуру в соответствии с номером варианта
2. Написать функцию для заполнения вектора структурированными данными (данные получить с клавиатуры, для ввода полей структуры написать функцию Read() – без параметров, возвращающую структуру).
3. Написать функцию для создания двоичного файла со структурированными данными (параметры функции – вектор структур и имя файла).
4. Написать функцию для вывода содержимого двоичного файла на экран (параметр функции – имя файла)
5. Написать функцию для удаления из файла данных в соответствии с вариантом. Предусмотреть возможность записи удаляемых элементов в другой файл – текстовый. Для этого использовать функцию с параметрами по умолчанию: если указано имя файла, куда следует заносить удаляемую информацию, то удаляемые данные заносятся в указанный файл, в противном случае удалять бесследно. Значением функции является число удалённых элементов, параметрами – имена файлов.
6. Вывести измененный двоичный файл на экран.
7. Добавить в файл данные в соответствии с вариантом (написать соответствующую функцию).
8. Вывести измененный файл на экран.
9. Написать функцию, выполняющую замену указанной записи (в зависимости от варианта параметром является номер записи или признак записи, подлежащей замене)
10. Вывести измененный файл на экран.


Мой код:
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
163
164
165
166
167
168
169
170
171
172
173
#include<iostream>
#include <ctime>  
#include <stdlib.h> 
#include <string>
#include <vector>
#include <fstream>
using namespace std;
 
struct person
{
    string surname;
    string name;
    string patronymic;
    string position;
    int age;
    double wages;
};
vector <person> mas;
int razmer=0;//временно
 
    void Read()
{
    system("pause");
    system("cls");
 
    int n;
    cout << "Сколько карточек сотрудников будет создано? "; cin >> n;
    razmer = n; //для дисплея т.к. рне знаю как пока решить
    person temp;
    for (int i = 0; i<n; i++)
    {
        cout << "Вам нужно будет ввести данные: Фамили, имя, отчество, должность, год рождения, зарплату. " << endl;
        cout << "После заполнения последнего параметра, консоль очиститься и заполнение начнется заного. " << endl;
        cout << "Сотрудник № " << (i+1)<<endl;
        cout << "Введите Фамилию: ";    //ввод одного элемента типа person из стандартного потока cin
        cin >> temp.surname;
        cout << "Введите Имя: ";
        cin >> temp.name;
        cout << "Введите Отчество: ";
        cin >> temp.patronymic;
        cout << "Введите Должность: ";
        cin >> temp.position;
        cout << "Введите Дату рождения: ";
        cin >> temp.age;
        cout << "Введите зарплату: ";
        cin >> temp.wages;
        mas.push_back(temp);
        system("cls");
    }
 
}
 
void ToFail(vector<person> &mas, string &name)
{
    std::ofstream fs(name, std::ios::binary);
 
    if (!fs.is_open())
    {
        std::cout << "Файл " << name << "не был открыт для записи";
        return;
    }
 
 
    int size = mas.size();
    cout << "Кол-во Сотрудников: " << size << endl;
    if (size == 0)
    {
        cout << " Вектор пуст." << endl;
        return;
    }
    else
    for (int i = 0; i<size; i++)
    {
 
        fs << mas[i].surname << " "
            << mas[i].name << " "
            << mas[i].patronymic << " "
            << mas[i].position << " " << mas[i].age
            << " " << mas[i].wages << endl;
    }
 
    fs.close();
}
 
 
void Display(string &name, int&razmer)
{
    person tmp;
    ifstream fs(name, ios::binary);
    if (!fs.is_open())
    {
        std::cout << "Файл " << name << "не был открыт для чтения";
        return;
    }
    /*
    fs.seekg(0, fs.end);
    int size = fs.tellg() / 6;
    fs.seekg(0, fs.beg);
    cout << "размер : " << size << endl;
    //не пойму, как правельно в таких случаях опеределять размер двоичного файла
    */
    for (int i = 0; i < razmer; i++)
    {
        fs >> tmp.surname;
        fs >> tmp.name;
        fs >> tmp.patronymic;
        fs >> tmp.position;
        fs >> tmp.age;
        fs >> tmp.wages;
        cout << "===========================" << endl;
        cout << "Сотрудник №" << (i + 1) << endl << "Фамилия: " << tmp.surname << endl << " Имя: " << tmp.name << endl << " Отчество: " << tmp.patronymic << endl << " Должность: " << tmp.position << endl << " Дата рождения: " << tmp.age << endl << " Зарплата: " << tmp.wages << "\n";
        if (fs.eof())break;
    }
    fs.close();
}
 
void Delet(string &name, string name2,int&razmer) // поиск и удаление
{
    string fam;
    cout << "Введите Фамилию для удаления: "; cin>>fam; cout << endl;
    person tmp;
    ifstream fs(name, ios::binary);
    if (!fs.is_open())
    {
        std::cout << "Файл " << name << "не был открыт для чтения";
        return;
    }
    for (int i = 0; i < razmer; i++)
    {
        /*читаем элементы типа person из файлового потока f в переменную p*/
        fs >> tmp.surname;
        fs >> tmp.name;
        fs >> tmp.patronymic;
        fs >> tmp.position;
        fs >> tmp.age;
        fs >> tmp.wages;
        if (fs.eof())break;
    }   
    fs.close();
 
}
 
 
 
 
int main()
{
    srand((unsigned)time(NULL));
    setlocale(LC_ALL, "Russian");
    cout << " Задание: " << endl;
    cout << " Задание №1. Объявить структуру в соответствии с номером варианта " << endl;
    cout << " Задание №2. Написать функцию для заполнения вектора структурированными данными (данные получить с клавиатуры, для ввода полей структуры написать функцию Read() – без параметров, возвращающую структуру).  " << endl;
    cout << " Задание №3. Написать функцию для создания двоичного файла со структурированными данными (параметры функции – вектор структур и имя файла).  " << endl;
    cout << " Задание №4. Написать функцию для вывода содержимого двоичного файла на экран (параметр  функции – имя файла) " << endl;
    cout << " Задание №5. Написать функцию для удаления из файла данных в соответствии с вариантом. Предусмотреть возможность записи удаляемых элементов в другой файл – текстовый. Для этого использовать функцию с параметрами по умолчанию: если указано имя файла, куда следует заносить удаляемую информацию, то удаляемые данные заносятся в указанный файл, в противном случае удалять бесследно. Значением функции является число удалённых элементов, параметрами – имена файлов. " << endl;
    cout << " Задание №6. Вывести измененный двоичный файл на экран. " << endl;
    cout << " Задание №7. Добавить в файл данные в соответствии с вариантом (написать соответствующую функцию). " << endl;
    cout << " Задание №8. Вывести измененный файл на экран. " << endl;
    cout << " Задание №9. Написать функцию, выполняющую замену указанной записи (в зависимости от варианта параметром является номер записи или признак записи, подлежащей замене) " << endl;
    cout << " Задание №10.  Вывести измененный файл на экран. " << endl;
    cout << "\n********************************************************************************\n" << endl;
    ////////////////////////////шапка/////////////////////////////////////////////////////////////////////
    string name,name2, fam;
    Read(); //заполнение структуры 
    cout << "Введите название файла в который будет сохранена структура: "; cin >> name; cout << endl;
    ToFail(mas, name);
    Display(name,razmer);
    cout << "Введите название файла в который будет сохранена удаляемая информация: "; cin >> name; cout << endl;
    //Delet(name,name2,razmer);
 
    system("pause");
    return 0;
}
Помогите пожалуйста с поиском по фамилии.
Кликните здесь для просмотра всего текста
Написать функцию для удаления из файла данных в соответствии с вариантом. Предусмотреть возможность записи удаляемых элементов в другой файл – текстовый. Для этого использовать функцию с параметрами по умолчанию: если указано имя файла, куда следует заносить удаляемую информацию, то удаляемые данные заносятся в указанный файл, в противном случае удалять бесследно. Значением функции является число удалённых элементов, параметрами – имена файлов.


И хотелось бы совета, как правильно определить размер двоичного файла?
т.е. если я его как нибудь определю так:
C++
1
2
3
4
5
fs.seekg(0, fs.end);
    int size = fs.tellg() / 6;
    fs.seekg(0, fs.beg);
 
    cout << "размер : " << size << endl;
то выходит не то, что нужно. т.е. допустим, вводим 3 сотрудника. У каждого 6 параметров. 6*3=18, размер выходит. А мне нужно размер равный 3. Пытался делить на 6, но не получается. Как надо?

Добавлено через 17 часов 49 минут
никто не подскажет? (
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 06:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru