Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

10.05.2017, 11:19. Просмотров 169. Ответов 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 файла (C++):

Запись и чтение файла dat - C++
Данная программа ищет файлы с расширением *.txt и выводит их имена и даты создания, и создаёт каталог FIND и файл find.dat. Как сделать что...

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

Запись и чтение с файла - C++
Здравствуйте,помогите пожалуйста ..есть две структуры, но каждая записывается и считывается с разных файлов, не посоветует как можно...

Запись и чтение из файла - C++
Доброго время суток! Так от балди решыл набросать прогу которая создаёт файл записывает туда 11 рандомных чисел,потом з помощю ifstream я...

запись\чтение из файла - C++
У меня несколько вопросов по поводу запись\чтение из файла Как это вообще работает?) Чтобы потом читать из файла надо забивать каждое...

Запись и чтение из файла - C++
Здравствуйте, написал программу которая реализует следующее, пользователь создает исходный текстовый файл, в который заносит текст,...

1
nmcf
5754 / 5065 / 1732
Регистрация: 14.04.2014
Сообщений: 20,749
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
Привет! Вот еще темы с ответами:

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

Запись и чтение из файла - C++
Всем добрый вечер, как можно записать данные в файл? Например записать в txt файл список паролей. На одном сайте нашел информацию по...

Чтение/запись файла - C++
Помогите написать 2 функции. 1-создает файл 2-Записывает в файл

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


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

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

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