1 / 1 / 0
Регистрация: 23.09.2014
Сообщений: 81
|
|
1
|
Как реализовать вывод за последний месяц?
30.11.2015, 21:47. Показов 772. Ответов 0
Подскажите, как реализовать вывод информации о выпущенной продукции за последний месяц?
Задание:
На заводе выпускается несколько наименований деталей. Сведение о деталях включают код детали, количество выпущенных деталей, номер, месяца выпуска. Вывести информацию о продукции, выпущенной заданным цехом за последний месяц.
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
| #define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
using namespace std;
FILE *fl;
typedef struct
{
char naimen[30];
unsigned char kolvo;
unsigned char mesiac;
} TCeh;
TCeh ch[30];
char name[20]; // Имя файла
int nst = 0; // Число введенных структур
int Menu(); // Создание меню
void Nnf(); // Ввод имени файла
void Newf(); // Создание нового файла
void Spisok(); // Формирование файла
void Opf(); // Открытие файла
void Resc(); // Вывод результата на экран
void Resf();
int main()
{
while (true)
{
switch (Menu())
{
case 1: Nnf(); break;
case 2: Newf(); break;
case 3: Spisok(); break;
case 4: Opf(); break;
case 5: Resc(); break;
case 6: Resf(); break;
case 7: return 0;
default: puts("Viberite pravilno!");
}
puts("Press any key to continue");
getchar(); // Ожидание нажатия любой клавиши
system("cls"); // Очистка экрана
}
}
int Menu() // Меню
{
cout << "VIBERITE:" << endl;
cout << "1. Vvod imeni faila" << endl;
cout << "2. Noviy fail" << endl;
cout << "3. Vvesti spisok" << endl;
cout << "4. Otcrit fail" << endl;
cout << "5. Vivesti resultat" << endl;
cout << "6. Vivesti v fail" << endl;
cout << "7. Vyhod" << endl;
int i;
cin >> i; // Ввод выбранного пункта меню
return i;
}
void Nnf() // Ввод имени файла
{
cout << "Vvedite file name" << endl;
cin >> name;
}
void Newf() // Создание нового файла
{
if ((fl = fopen(name, "wb")) == NULL)
{
cout << "Oshibka pri sozdanii" << endl;
exit(1);
}
cout << "OK" << endl;
fclose(fl);
}
void Spisok() // Ввод данных в файла
{
if ((fl = fopen(name, "rb+")) == NULL)
{
cout << "Oshibka pri sozdanii" << endl;
exit(1);
}
cout << "Vvedite chislo studentov" << endl;
cin >> nst;
for (int i = 0; i<nst; i++)
{
cout << "Vvedite naimenovanye produkcii: ";
cin >> ch[i].naimen;
cout << "Vvedite kolichestvo produkcii: ";
cin >> ch[i].kolvo;
cout << "Vvedite nomer mesyaca vypuska: ";
cin >> ch[i].mesiac;
fwrite(&ch[i], sizeof(TCeh), 1, fl);
}
fclose(fl);
}
void Opf() // Открытие бинарного файла
{
if ((fl = fopen(name, "rb")) == NULL)
{
cout << "Oshibka pri otkritii" << endl;
exit(1);
}
nst = 0;
TCeh std;
while (true)
{
int nwrt = fread(&std, sizeof(TCeh), 1, fl);
if (nwrt != 1) break;
ch[nst] = std;
cout << ch[nst].naimen << " " << ch[nst].naimen << " "
<< ch[nst].mesiac << endl;
nst++;
}
fclose(fl);
}
void Resc() // Вывод результата на экран
{
for (int i = 0; i<nst; i++)
if (ch[i].mesiac == '9')
cout << ch[i].naimen << endl;
}
void Resf() // Вывод результата в текстовый файл
{
char namet[30];
FILE *ft;
cout << "Vvedite imya faila" << endl;
cin >> namet;
if ((ft = fopen(namet, "w")) == NULL)
{
cout << "Oshibka pri sozdanii" << endl;
exit(1);
}
char s[80];
for (int i = 0; i<nst; i++)
if (ch[i].mesiac == '9')
{
strcpy(s, ch[i].naimen);
strcat(s, "\n"); // Добавление разделителя строк
fputs(s, ft);
}
fclose(ft);
} |
|
0
|