gotoxy(2,6);
cout<<"ESC - выход из программы";
}
//отображение всех записей
void OutAllData(){
window(1,1,80,50);
textbackground(1);
clrscr();
textbackground(3);
window(10,5,70,45);
clrscr();
textcolor(0);
gotoxy(2,2); cout<<"№";
gotoxy(5,2); cout<<"Фамилия";
gotoxy(25,2); cout<<"Пн.";
gotoxy(30,2); cout<<"Вт.";
gotoxy(35,2); cout<<"Ср.";
gotoxy(40,2); cout<<"Чт.";
gotoxy(45,2); cout<<"Пт.";
gotoxy(50,2); cout<<"Сб.";
for(int i=0;i<=Recs;i++){
gotoxy(2,2+2+i); cout<<i+1;
gotoxy(5,2+2+i); cout<<Izdelie[i].f;
gotoxy(25,2+2+i); cout<<Izdelie[i].izd[0];
gotoxy(30,2+2+i); cout<<Izdelie[i].izd[1];
gotoxy(35,2+2+i); cout<<Izdelie[i].izd[2];
gotoxy(40,2+2+i); cout<<Izdelie[i].izd[3];
gotoxy(45,2+2+i); cout<<Izdelie[i].izd[4];
gotoxy(50,2+2+i); cout<<Izdelie[i].izd[5];
}
gotoxy(2,2+2+1+i);
cout<<"Для возврата в основное меню нажмите любую клавишу.";
getch();
}
//Общее количество деталей за неделю
void sumIzdelies(){
window(1,1,80,50);
textbackground(1);
clrscr();
textbackground(3);window(10,5,70,45);
clrscr();
textcolor(0);
gotoxy(2,2); cout<<"№";
gotoxy(5,2); cout<<"Фамилия";
gotoxy(25,2); cout<<"Общее количество деталей за неделю";
for(int i=0;i<=Recs;i++){
gotoxy(2,2+2+i); cout<<i+1;
gotoxy(5,2+2+i); cout<<Izdelie[i].f;
int sum=0;
for (int j=0;j<6;j++){
sum+=Izdelie[i].izd[j];
}
gotoxy(25,2+2+i); cout<<sum;
}
gotoxy(2,2+2+1+i);
cout<<"Для возврата в основное меню нажмите любую клавишу.";
getch();
}
//Определение сбощика и наибольших значений
void Sborshik(){
window(1,1,80,50);
textbackground(1);
clrscr();
textbackground(3);
window(10,10,70,40);
clrscr();
textcolor(0);
//наибольшее количество изделий
unsigned int max1=0; unsigned int max2=0;
for(int i=0;i<=Recs;i++){
int sum=0;
for (int j=0;j<6;j++){
sum+=Izdelie[i].izd[j];
}
if (sum>max1) max1 = sum;
}
//в какой день наибольшее количество изделий
for(i=0;i<=Recs;i++){
int sum=0;
for (int j=0;j<6;j++){
sum+=Izdelie[i].izd[j];
}
if (sum == max1){
max2 = Izdelie[i].izd[0];
for (int j=1;j<6;j++)
if (Izdelie[i].izd[j]>max2) max2=Izdelie[i].izd[j];
}}
//отображение найденых значений
int c=0;
for(i=0;i<=Recs;i++){
int sum=0;
for (int j=0;j<6;j++){
sum+=Izdelie[i].izd[j];
}
if (sum == max1){
gotoxy(2,2+c);
cout<<"Наиболшее число изделий у: "<<Izdelie[i].f;
gotoxy(32,2+c);
cout<<"День: ";
int d=0;
for (int j=0;j<6;j++)
if (Izdelie[i].izd[j] == max2){
gotoxy(38+d*4,2+c);
if (j==0){
cout<<"Пн.";
++d;
}else if (j==1){
cout<<"Вт.";
++d;
}else if (j==2){
cout<<"Ср.";
++d;
}else if (j==3){
cout<<"Чт.";
++d;
}else if (j==4){
cout<<"Пт.";
++d;
}else if (j==5){
cout<<"Сб.";
++d;
}
}
++c;
}
}
gotoxy(2,2+1+c);
cout<<"Для возврата в основное меню нажмите любую клавишу.";
getch();
}
//код основной программы
void main(){
clrscr();//очистка экрана
textmode(64);// задание тектового режима 80x50 (ширина х высота)
OutMenu();//вывод основного меню
Recs = rData("izdeliya.dat");//чтение данных из файла если таковой имеется
while((ch=getch())!=0x1B){
switch(ch){
case '1': AddRec(Iz);Izdelie[Recs] = Iz;
break;
case '2': OutAllData();
break;
case '3': sumIzdelies();
break;
case '4': Sborshik();
break;
}
clrscr();
OutMenu();
}
wData("izdeliya.dat"); //запись данных в файл
}
1.Вывод меню.
2.Ввод записей.
3.Отображение всех записей.4.Общее количество деталей за неделю
5.Определение сборщика и наибольших значенийЗак
лючение.В результате проделанной работы была разработана программа задач о сборщиках и сборщика собравшего наибольшее число изделий за неделю. Программа состоит из двух модулей, которые обеспечивают создание файла, его считывание, обработку файла по условию, вывод данных на экран. Программное средство разработано в среде программирования С++. В процессе написания программы я более подробно изучил раздел программирования на С++ и получил дополнительные навыки.
1.Франка П. С++: учебный курс, Питер,2001-528 с.
2. Герберт Шилдт. Самоучитель С++, 3-е издание. Санкт-Петербург 1998-688 с.
3. И.Г. Семакин: Основы программирования: Учебник-Мастерство, 2002 г-432 с.
4. Бондарев В.М. Программирование на С++. 2-е изд. -Харьков: “Компания СМИТ”,2005.-284 с.
5.С/С++.Программирование на языке высокого уровня /Т.А.Павловская .- СПб.:Питер,2003.-461 с.: ил.
Листинг программы:
#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 - наибольшее количество изделий";
gotoxy(2,6);
cout<<"ESC - выход из программы";
}
//отображение всех записей
void OutAllData(){
window(1,1,80,50);
textbackground(1);
clrscr();
textbackground(3);
window(10,5,70,45);
clrscr();
textcolor(0);
gotoxy(2,2); cout<<"№";
gotoxy(5,2); cout<<"Фамилия";
gotoxy(25,2); cout<<"Пн.";
gotoxy(30,2); cout<<"Вт.";
gotoxy(35,2); cout<<"Ср.";
gotoxy(40,2); cout<<"Чт.";
gotoxy(45,2); cout<<"Пт.";
gotoxy(50,2); cout<<"Сб.";
for(int i=0;i<=Recs;i++){
gotoxy(2,2+2+i); cout<<i+1;
gotoxy(5,2+2+i); cout<<Izdelie[i].f;
gotoxy(25,2+2+i); cout<<Izdelie[i].izd[0];
gotoxy(30,2+2+i); cout<<Izdelie[i].izd[1];
gotoxy(35,2+2+i); cout<<Izdelie[i].izd[2];
gotoxy(40,2+2+i); cout<<Izdelie[i].izd[3];
gotoxy(45,2+2+i); cout<<Izdelie[i].izd[4];
gotoxy(50,2+2+i); cout<<Izdelie[i].izd[5];
}
gotoxy(2,2+2+1+i);
cout<<"Для возврата в основное меню нажмите любую клавишу.";
getch();
}
//Общее количество деталей за неделю
void sumIzdelies(){
window(1,1,80,50);
textbackground(1);
clrscr();
textbackground(3);
window(10,5,70,45);
clrscr();
textcolor(0);
gotoxy(2,2); cout<<"№";
gotoxy(5,2); cout<<"Фамилия";
gotoxy(25,2); cout<<"Общее количество деталей за неделю";
for(int i=0;i<=Recs;i++){
gotoxy(2,2+2+i); cout<<i+1;
gotoxy(5,2+2+i); cout<<Izdelie[i].f;
int sum=0;
for (int j=0;j<6;j++){
sum+=Izdelie[i].izd[j];
}
gotoxy(25,2+2+i); cout<<sum;
}
gotoxy(2,2+2+1+i);
cout<<"Для возврата в основное меню нажмите любую клавишу.";
getch();
}
//Определение сбощика и наибольших значений
void Sborshik(){
window(1,1,80,50);
textbackground(1);
clrscr();textbackground(3);
window(10,10,70,40);
clrscr();
textcolor(0);
//наибольшее количество изделий
unsigned int max1=0; unsigned int max2=0;
for(int i=0;i<=Recs;i++){
int sum=0;
for (int j=0;j<6;j++){
sum+=Izdelie[i].izd[j];
}
if (sum>max1) max1 = sum;
}
//в какой день наибольшее количество изделий
for(i=0;i<=Recs;i++){
int sum=0;
for (int j=0;j<6;j++){
sum+=Izdelie[i].izd[j];
}
if (sum == max1){