0 / 0 / 0
Регистрация: 21.05.2013
Сообщений: 29
1

Работа с бинарным файлом

08.06.2015, 04:00. Показов 641. Ответов 5
Метки нет (Все метки)

Доброго времени суток всем.

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

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
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
#include <conio.h>
#include <iomanip>
 
using namespace std;
 
struct Students
{
    char lname[20];
    char fname[20];
    char displn[20];
    int mark;
};
 
class W_fl
{
    char filename[20];
    fstream * strm;
    int k;
 
public:
   W_fl(char * filename);   // конструктор
   ~W_fl();                 // деструктор
   int Open();              // открывает файл
   int Read(Students);  // проверка чтения фай
   void Add(Students);      // запись новых элементов в файл 
   void mF(Students);           
};
 
W_fl::W_fl(char * fname)
{
    strncpy (filename, fname, 20);
    strm = new fstream;
}
 
W_fl::~W_fl()
{
    strm -> close();
    delete strm;
}
 
ostream& operator << (ostream &out, W_fl &obj)
{
    Students S;
    out << "Last name " << setw(15) << "First name" << setw(15) << "Disipline" << setw(15) << "Mark: \n";
    while (obj.Read(S))
        out << S.lname << setw(15) << S.fname << setw(15) << S.displn << setw(15) << S.mark << "\n";
    return out;
 
}
 
istream& operator >> (istream &in,  W_fl &obj)
{
    Students S;
    char ch = 'y';
    do
    {
        cout << "Enter last name: ";
        in.getline(S.lname, sizeof(S.lname));
        cout << "Enter first name: ";
        in.getline(S.fname, sizeof(S.fname));
        cout << "Enter disipline: ";
        in.getline(S.displn, sizeof(S.displn));
        obj.Add(S);        
        cout << "Push 'Y' to enter next element.\n";
        in >> ch;
    } while (ch == 'y');
 
    return in;     
}
 
 
int W_fl::Open()
{
    strm -> open(filename,ios::in|ios::out|ios::binary|ios::trunc);
    if(!strm -> is_open()) return -1;
    return 0;
}
 
int W_fl::Read(Students st)
{
    if (!strm -> eof() && strm -> read(reinterpret_cast<char*>(&st), sizeof (Students)))
    return 1;
    strm -> clear();
    return 0;
}
 
void W_fl::Add(Students obj_st)
{
    strm -> seekp(0, ios_base::end);
    strm -> write(reinterpret_cast<char*>(&obj_st), sizeof(Students));
    strm -> flush();
}
 
void W_fl::mF(Students obj_st)
{
    
 
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    
    W_fl my("students.bin");
    Students obj_st;
    char ch = 'y';
 
    if (my.Open() == -1)
    {
        cout << "Can't open file\n";
        return -1;
    }
 
 
   cin >> my >> endl;
    cout << my << endl;
 
    getch();
 
}
Как сделать в коде проверку оценок и запись результатов в новых файл?
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.06.2015, 04:00
Ответы с готовыми решениями:

Работа с бинарным файлом
Всем привет! есть тестовый пример в котором я пытаюсь записать в бинарный файл три переменных, а...

Работа с бинарным файлом
почему программа не выводит 16-ричный дамп бинарного файла? int main () { streamoff lSize; ...

Работа с бинарным файлом
Можно ли из бинарного файла выписывать строки?

Работа со структурой и бинарным файлом
Что может быть за ошибка в case 2? struct sport_complex{//Структура struct trainers{ char...

5
43 / 40 / 48
Регистрация: 13.05.2015
Сообщений: 222
08.06.2015, 07:57 2
if else?
0
0 / 0 / 0
Регистрация: 21.05.2013
Сообщений: 29
08.06.2015, 08:02  [ТС] 3
что вы имеете ввиду?
0
43 / 40 / 48
Регистрация: 13.05.2015
Сообщений: 222
08.06.2015, 08:10 4
Логические операторы. В чём сложность? Вы не понимаете как работает алгоритм или как его реализовать?
0
0 / 0 / 0
Регистрация: 21.05.2013
Сообщений: 29
08.06.2015, 08:16  [ТС] 5
как его реализовать не понимаю
0
43 / 40 / 48
Регистрация: 13.05.2015
Сообщений: 222
08.06.2015, 08:23 6
1. Открываете поток для считывания;
2. Открываете поток для записи;
3. Запускаете цикл, где считываете данные -> если (оценка>=порог сдачи) записываете в файл.
4. Закрываете потоки.

Добавлено через 1 минуту
Сделайте его в качестве закрытого метода и будет Вам счастье
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.06.2015, 08:23
Помогаю со студенческими работами здесь

Работа с бинарным файлом и массив структур
Задание следующее: В компании одному номеру соответствует одно помещение, в помещении до 5...

Работа с бинарным файлом(Подсчет записей)
void open_bin(l_lib *l, int lines_count) // функция для открытия bin файла { fstream...

Выводится одна лишняя строка (работа с бинарным файлом)
Буду благодарен за помощь. #include&lt;iostream&gt; #include &lt;fstream&gt; #include &lt;algorithm&gt;...

Работа с бинарным файлом (Создать новый текстовый файл, в котором числа будут отсортированы в порядке возрастания.)
Аларм! Срочно прошу помощи! Есть задача: Записать бинарный файл с массивом целых чисел. Создать...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru