Программа должна выполнять в общем три задачи:
1.Создание файла.
2.Чтение данных из файла.
3.Вывод данных на экран дисплея.
4.Обработка данных по заданию Б.
Все полученные результаты отобразить на экране.
Задание
А. Создать файл содержащий сведения о количестве изделий, собранных сборщиками цеха за неделю. Каждая запись содержит поля – фамилия сборщика, количество изделий, собранных им ежедневно в течение шестидневной недели ( понедельник, вторник, среда, четверг, пятница, суббота) Количество записей –более 25
сборщику просуммировать количество деталей, собранное им за неделю. Определить сборщика, собравшего наибольшее число изделий и день когда он достиг наивысшей производительности труда.
Даны сведения о количестве изделий, собранных сборщиками цеха за неделю.
Составлена таблица исходных данных.
ФИО | ИЗДЕЛИЯ | |||||
Понедельник | Вторник | Среда | Четверг | Пятница | Суббота | |
1.Авраченков | 40 | 40 | 40 | 50 | 50 | 50 |
2.Агонян | 40 | 40 | 50 | 50 | 50 | 30 |
3.Андреев | 40 | 40 | 40 | 40 | 40 | 40 |
4.Анюков | 50 | 50 | 50 | 50 | 40 | 40 |
5.Большаков | 40 | 30 | 30 | 40 | 40 | 30 |
6.Брянцев | 30 | 30 | 40 | 40 | 30 | 40 |
7.Быстров | 40 | 40 | 40 | 40 | 40 | 40 |
8.Валерьев | 50 | 50 | 50 | 50 | 30 | 30 |
9.Васнецов | 20 | 40 | 40 | 50 | 50 | 40 |
10.Гагарин | 50 | 50 | 30 | 30 | 40 | 20 |
11.Гарын | 40 | 40 | 40 | 40 | 40 | 40 |
12.Грибов | 50 | 40 | 50 | 50 | 50 | 50 |
13.Григорьев | 40 | 40 | 40 | 50 | 50 | 50 |
14.Герасимов | 30 | 20 | 30 | 40 | 40 | 50 |
15.Дакур | 40 | 30 | 30 | 50 | 50 | 40 |
16.Денисов | 20 | 30 | 40 | 50 | 60 | 40 |
17.Дынин | 30 | 30 | 30 | 30 | 30 | 30 |
18.Евсеев | 50 | 50 | 50 | 40 | 40 | 30 |
19.Рыбин | 40 | 30 | 40 | 40 | 40 | 40 |
20.Тимощук | 40 | 50 | 60 | 50 | 30 | 40 |
21.Титов | 70 | 50 | 60 | 60 | 50 | 40 |
22.Никитов | 20 | 20 | 30 | 40 | 40 | 50 |
23.Мандрыкин | 40 | 50 | 50 | 50 | 40 | 30 |
24.Чентофальски | 30 | 30 | 30 | 40 | 40 | 50 |
25.Перов | 50 | 40 | 30 | 40 | 30 | 30 |
По каждому сборщику просуммировать количество деталей, собранное им за неделю. Определить сборщика, собравшего наибольшее число изделий и день когда он достиг наивысшей производительности труда.
ФИО | Общее количество деталей за неделю | Определение сборщика и наибольших значений |
1.Авраченков | 270 | |
2.Агонян | 260 | |
3.Андреев | 240 | |
4.Анюков | 280 | |
5.Большаков | 210 | |
6.Брянцев | 210 | |
7.Быстров | 240 | |
8.Валерьев | 260 | |
9.Васнецов | 240 | |
10.Гагарин | 220 | |
11.Гарын | 240 | |
12.Грибов | 290 | |
13.Григорьев | 270 | |
14.Герасимов | 210 | |
15.Дакур | 240 | |
16.Денисов | 240 | |
17.Дынин | 180 | |
18.Евсеев | 260 | |
19.Рыбин | 230 | |
20.Тимощук | 270 | |
21.Титов | 330 | Среда |
22.Никитов | 200 | |
23.Мандрыкин | 260 | |
24.Чентофальски | 220 | |
25.Перов | 220 |
№ | имя поля | название | тип данных | размер (байт) |
1 | Фамилия | Фамилия | F | 1 |
2 | Понедельник | изделия | izd[0] | |
3 | вторник | изделия | izd[1] | |
4 | среда | изделия | izd[2] | |
5 | четверг | изделия | izd[3] | |
6 | пятница | изделия | izd[4] | |
7 | суббота | изделия | izd[5] |
Использование void
По мете усложнения нашей программы мы должны разделить ее на небольшие легко управляемые части – функция. Функция – это простой набор операторов, выполняющих определенную задачу. Если наша программа использует функцию, функция выполняет свою задачу и затем возвращает результат программе.
Каждая функция в программе имеет уникальное имя, а каждая программа имеет по крайней мере одну функцию с именем main.
Программа использует слово void для указания того, что функция не возвращает значения или не имеет значений, передаваемых в нее. Большинство простых программ на С++, которые будут созданы вами в процессе изучения, не возвращают выходное значение статуса операционной системе. Поэтому мы должны размещать слово void перед main.
Каждая программа на С++ имеет один вход, с которого начинается выполнение программы, - главную программу. В программах С++ оператор void main(void) указывает стартовую точку вашей программы.
В Си функция void main() – это самая главная функция, в ней программы всегда выполняется первой, а потом при необходимости из нее можно вызвать другие функции.
Моя программа включает в себя 4 подфункций:
Функция ввода информации – int vvod()
Функция чтение данных из файла – void ofile()
Функция вывода информации по номеру телефона – int vd1()
Функция вывода информации по году установки – int vd2()
9.2 Текст программы
#include <iostream.h>
#include <conio.h>
#include <stdio.h>#include <string.h>
const N = 30; //максимальное количество возможных записей
//запись
struct TIzdelie{
char f[30]; //фамилия
unsigned int izd[6];//количество изделий собраных ежидневно
} Iz,Izdelie[N];
char ch; //анализируемый символ
int Recs; //последняя введенная запись
//чтение данных из файл fname, возврщает количество считанных данных
int rData(char *fname){
FILE *f;
int i=-1;
if ((f=fopen(fname,"r"))!=NULL){
i=0;
while(!feof(f)){
fscanf(f,"%15s",Izdelie[i].f);
fscanf(f,"%6d",&Izdelie[i].izd[0]);
fscanf(f,"%6d",&Izdelie[i].izd[1]);
fscanf(f,"%6d",&Izdelie[i].izd[2]);
fscanf(f,"%6d",&Izdelie[i].izd[3]);
fscanf(f,"%6d",&Izdelie[i].izd[4]);
fscanf(f,"%6d",&Izdelie[i].izd[5]);
fscanf(f,"\n");
++i;
}
--i;
fclose(f);
}
return i;
}
//запись данных в файл fname
void wData(char *fname){
FILE *f;
if (Recs>=0){
f = fopen(fname,"w");
for(int i=0;i<=Recs;i++){
fprintf(f,"%15s",Izdelie[i].f);
fprintf(f,"%6d",Izdelie[i].izd[0]);
fprintf(f,"%6d",Izdelie[i].izd[1]);
fprintf(f,"%6d",Izdelie[i].izd[2]);
fprintf(f,"%6d",Izdelie[i].izd[3]);
fprintf(f,"%6d",Izdelie[i].izd[4]);
fprintf(f,"%6d",Izdelie[i].izd[5]);
fprintf(f,"\n");
}
fclose(f);
}
}
//добавление записи
void AddRec(TIzdelie &r){
window(1,1,80,50);
textbackground(1);
clrscr();
textbackground(3);
window(10,20,70,30);
clrscr();
textcolor(0);
if(Recs == N-1){
gotoxy(2,2);
cout<<"Вы ввели максимальное количество записей.";
gotoxy(2,3);
cout<<"Для возврата в основное меню нажмите любую клавишу.";
getch();
} else {
gotoxy(2,2);
cout<<"Фамилия: "; cin>>r.f;
gotoxy(2,3);
cout<<"Количество изделий за понедельник: "; cin>>r.izd[0];
gotoxy(2,4);
cout<<"Количество изделий за вторник: "; cin>>r.izd[1];
gotoxy(2,5);
cout<<"Количество изделий за среду: "; cin>>r.izd[2];
gotoxy(2,6);
cout<<"Количество изделий за четверг: "; cin>>r.izd[3];
gotoxy(2,7);
cout<<"Количество изделий за пятницу: "; cin>>r.izd[4];
gotoxy(2,8);
cout<<"Количество изделий за субботу: "; cin>>r.izd[5];
gotoxy(2,10);
cout<<"Для возврата в основное меню нажмите любую клавишу.";
getch();
++Recs;
}
}//вывод меню
void OutMenu(){
window(1,1,80,50);
textbackground(1);
clrscr();
textbackground(3);window(20,20,60,30);
clrscr();
textcolor(0);
gotoxy(2,2);
cout<<"1 - ввод данных";
gotoxy(2,3);
cout<<"2 - отображение всех данных";
gotoxy(2,4);
cout<<"3 - общее колличество изделий на неделю";
gotoxy(2,5);
cout<<"4 - наибольшее количество изделий";