Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
inovarka
0 / 0 / 0
Регистрация: 01.04.2017
Сообщений: 7
1

Чтение и запись с .dat файла

10.05.2017, 11:19. Просмотров 243. Ответов 1

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

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
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
#include <iostream>
#include <string.h>
#include <stdio.h>
#include <iomanip>
using namespace std;
struct chamber      //палата
{
 
        int count; // количество больных
    char doctor[20];
    int billday;
};
struct date
{
    unsigned int year;
    unsigned int month;
    unsigned int day;
};
struct diagnos
{
    int category;
    char name[25];
    int bill;           //счёт за лечение
};
struct patient
{
    char firstname[15];
    char lastname[20];
    chamber hospital;  //палата
    diagnos man;       //диагноз
    date birth;
    date inflow;
    date outflow;
};
 
 
void drawmenu()
{
    cout << char(218);
    for (int i = 0; i < 59; i++)
        cout << char(196);
    cout << char(191);
    cout << endl;
    cout << char(179) << "1. Filling the database "<<setw(36)<<char(179)<<endl;
    cout << char(179) << "2. Review data of all patients " << setw(29) << char(179) <<endl;
    cout << char(179) << "3. Add new patient " << setw(41) << char(179)<<endl;
    cout << char(179) << "4. Remove patient " << setw(42) << char(179) << endl;
    cout << char(179) << "5. Organize the fields: diagnosis." << setw(26) << char(179) << endl;
    cout << char(179) << "6. Search: All information about patient XX." << setw(16) << char(179) << endl;
    cout << char(179) << "7. Search: Information about patients by day and diagnos." << setw(3) << char(179) << endl;
    cout << char(179) << "8. The number of patients in the chamber. " << setw(18) << char(179) << endl;
    cout << char(179) << "9. Total cost of treating the pacient " << setw(22) << char(179) << endl;
    cout << char(179) << "10.Deleting data about patients discharged last year. " << setw(6) << char(179) << endl;
    cout << char(179) << "11.Tabular Report: list of patients grouped in chambers. " << setw(3) << char(179) << endl;
    cout << char(179) << "12.Bill for treatment " << setw(38) << char(179) << endl;
    cout << char(192);
    for (int i = 0; i < 59; i++)
        cout << char(196);
    cout << char(217);
    cout << endl;
 
 
}                                                           //+                                                                 //
void birthDate(date &k, char *s)                                //заполнение даты рождения
{
    char c;
    do
    {
        cout << " Enter date " << s << " in DD.MM.YYYY: ";
        cin >> k.day >> c >> k.month >> c >> k.year;
    } while (k.month > 12 || k.day > 31);
}
void inflowDate(date &k, char *s)                               //заполнение даты поступления
{
    char c;
    do
    {
        cout << " Enter date " << s << " in DD.MM.YYYY: ";
        cin >> k.day >> c >> k.month >> c >> k.year;
    } while (k.month > 12 || k.day > 31);
}
 
void outflowDate(date &k, char *s)                              //заполнение даты выписки
{
    char c;
    do
    {
        cout << " Enter date " << s << " in DD.MM.YYYY: ";
        cin >> k.day >> c >> k.month >> c >> k.year;
    } while (k.month > 12 || k.day > 31);
}
void inputChamber(chamber &k, chamber pal[])                                    //заполнение палаты
{
    do
    {
        cout << " Enter number of chamber(1-4): ";
        cin >> k.number;
        pal[k.number].count++;
    } while (k.number > 4 || k.number < 1);
}
void inputDiagnos(diagnos &k)
{
    cin.get();
    cout << " Choose category of disease: \n 1.Head 2.Body 3.Legs 4.Internal: ";
    cin >> k.category;
    cin.get();
    cout << " Enter name of disease: ";
    cin.getline(k.name, 25);
}
void inputPatient(patient&p, chamber pal[])                                 //заполнение даных о пациенте
{
 
    cout << " Enter firstname: ";
    cin.get();
    cin.getline(p.firstname, 15);
    cout << " Enter lastname: ";
    cin.getline(p.lastname, 20);
    inputChamber(p.hospital, pal);
    birthDate(p.birth, "of birth");
    inflowDate(p.inflow, "of inflow");
    outflowDate(p.inflow, "of outflow");
    inputDiagnos(p.man);
 
}
void outputDate(date &k, char *s)                               // виводка даты
{
    cout << " |Date "  << s << ": ";
    cout <<  setw(6)<< k.day << "." << k.month << "." << k.year;
}
void outputChamber(patient k)                                   // виводка палаты
{
    cout << " |Chamber: #" << k.hospital.number;
}
void outputDiagnos(patient k)
{
    cout << " |Category: " << k.man.category;
    cout << "\n  ";
    cout << " |Disease: " << k.man.name;
    cout << "\n  ";
    cout << " |Bill: " << k.man.bill;
}
void outPatient(patient&p)                                      // виводка даных про пациэнта
{
    cout << p.firstname << " " << p.lastname;
    cout << "\n  ";
    outputChamber(p);
    cout << "\n  ";
    outputDate(p.birth, "of birth");
    cout << "\n  ";
    outputDate(p.inflow, "of inflow");
    cout << "\n  ";
    outputDate(p.inflow, "of outflow");
    cout << "\n  ";
    outputDiagnos(p);
    cout << endl;
}
void lastnameSearch(patient p[], int n, char*lastname)          //поиск по фамилии
    for (int i = 0; i < n; i++)
    {
        if (strcmp(p[i].lastname, lastname) == 0)
        {
            cout << "Patient: " << " : ";
            outPatient(p[i]);
        }
    }
}
void diagnosSearch(patient p[], int n, char *diagnos, date a)                       //поиск по диагнозу
{
 
}
int main()
{
    FILE *f = fopen("D://hospital.dat", "wb");
    if (f == NULL)
    {
        cout << "Can't create the file";
        return 1;
    }
 
    int n;
    const int q = 4;
    chamber palati[q];
    for (int i = 0; i < q; i++)
    {
        palati[i].count = 0;
    }
 
    drawmenu();
 
    cout << " Enter number of patients: ";
    cin >> n;
 
    patient*patients = new patient[n];
    for (int i = 0; i < n; i++)
    {
        inputPatient(patients[i], palati);
    }
    for (int i = 0; i < n; i++)
    {
        outPatient(patients[i]);
    }
    //outPatient(patients[0]);
 
    for (int i = 0; i < q; i++)
    {
        cout << "In chamber: " << i << palati[i].count << endl;
    }
 
 
 
 
    fclose(f);
    return 0;
}

2.У меня есть структура палаты и там есть поле count. Я создал масив типа палаты для count размера 4. Это для подсчета больных в каждой палате(палат есть 4) . Но как мне передавать этот массив в функции или еще как-то...
C++
1
2
3
4
5
6
7
8
9
void inputChamber(chamber &k, chamber pal[])                                    //заполнение палаты
{
    do
    {
        cout << " Enter number of chamber(1-4): ";
        cin >> k.number;
        pal[k.number].count++; //вот где должны больные по палатам, но я не знаю как передать
    } while (k.number > 4 || k.number < 1);
}
Сама функция inputChamber вызываеться в inputPatient, а inputPatient в мэйне. И туда этот масив.
3. Также укажите на мои ошибки. Ошибки в составлении структур, по коду и т.д
P.S огромное спасибо

Добавлено через 11 часов 53 минуты
Апдейт
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.05.2017, 11:19
Ответы с готовыми решениями:

Запись и чтение файла dat
Данная программа ищет файлы с расширением *.txt и выводит их имена и даты...

Запись и чтение из файла
как записать в файл вывод массива OutputArray(), количество нулевых элементов...

Чтение из файла и запись
Доброго времени суток. Передо мной стоит следующая задача - имеется файл и...

Чтение и запись файла
Странная ситуация читаю файл в вектор. Провожу над ним эксперимент, возвращаю...

Запись и чтение из файла
Не знаю как подойти. Список товаров, имеющихся на складе, включает в себя...

1
nmcf
6276 / 5578 / 2538
Регистрация: 14.04.2014
Сообщений: 23,468
10.05.2017, 11:27 2
По типу списка должно быть. Либо chamber содержит указатели на patient, либо каждый patient имеет указатель на соответствующий chamber.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.05.2017, 11:27

Запись и чтение с файла
Есть названия машин, их цена и производитель. Нужно сделать программу, которая...

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

Запись и чтение с файла
Подскажите пожалуйста как правильно записать массив в файл и считать его оттуда...


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

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

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