Создание графического интерфейса
Для оформления графического интерфейса программы используется библиотека «CONIO.H». Она позволяет установить текст в нужном месте, поменять цвет, сделать рамки, и т.д. Conio.h (от англ. Console input-output – консольный ввод-вывод) - заголовочный файл, используемый в старых компиляторах, работающих в операционных системах MS-DOS, для создания текстового интерфейса пользователя. Тем не менее, он не является частью языка программирования Си, стандартной библиотеки языка Си. Функции для работы библиотеке Conio.h int kbhit(void); Определяет, было ли нажатие клавиш клавиатуры/ int getch(void); Считывает с имвол напрямую из консоли без использования буфера и echo-вывода void window(int left, int top, int right, int bottom); Устанавливает текущее окно консоли по указанным координатам void clreol(void); очищает текущую строку окна от позиции курсора до конца void gotoxy(int x, int y); помещает курсор в указанные столбец и строку окна void textbackground(int newcolor); устанавливает фоновый цвет окна. void textcolor(int newcolor); Устанавливает указанный цвет вывода текста в окне. Постановка задачи Задача: разработать программу модульной структуры, для создание и обработки внешнего файла и соответствие с вариантом задания. Программа должна выполнять в общем три задачи: 1.Создание файла. 2.Чтение данных из файла. 3.Вывод данных на экран дисплея. 4.Обработка данных по заданию Б. Все полученные результаты отобразить на экране. Задание А. Создать файл содержащий сведения о количестве изделий, собранных сборщиками цеха за неделю. Каждая запись содержит поля – фамилия сборщика, количество изделий, собранных им ежедневно в течение шестидневной недели (понедельник, вторник, среда, четверг, пятница, суббота) Количество записей –более 25
сборщику просуммировать количество деталей, собранное им за неделю. Определить сборщика, собравшего наибольшее число изделий и день когда он достиг наивысшей производительности труда.
Исходные данные
Даны сведения о количестве изделий, собранных сборщиками цеха за неделю. Составлена таблица исходных данных.
По каждому сборщику просуммировать количество деталей, собранное им за неделю. Определить сборщика, собравшего наибольшее число изделий и день когда он достиг наивысшей производительности труда.
Таблица значения переменных.
Использование 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 - наибольшее количество изделий"; 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"); //запись данных в файл } Тестирование программы
Вывод меню.
Ввод записей. 3.Отображение всех записей.
Воспользуйтесь поиском по сайту: ©2015 - 2025 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|