Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Создание графического интерфейса




    Для оформления графического интерфейса программы используется библиотека «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

 сборщику просуммировать количество деталей, собранное им за неделю. Определить сборщика, собравшего наибольшее число изделий и день когда он достиг наивысшей производительности труда.

 


Исходные данные

 

Даны сведения о количестве изделий, собранных сборщиками цеха за неделю.

Составлена таблица исходных данных.

ФИО

ИЗДЕЛИЯ

Понедельник Вторник Среда Четверг Пятница Суббота
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

 

 

7.2 Выходные данные

 


По каждому сборщику просуммировать количество деталей, собранное им за неделю. Определить сборщика, собравшего наибольшее число изделий и день когда он достиг наивысшей производительности труда.

 

ФИО Общее количество деталей за неделю Определение сборщика и наибольших значений
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]  


9. Основная функция void main()

Использование void

По мете усложнения нашей программы мы должны разделить ее на небольшие легко управляемые части – функция. Функция – это простой набор операторов, выполняющих определенную задачу. Если наша программа использует функцию, функция выполняет свою задачу и затем возвращает результат программе.

Каждая функция в программе имеет уникальное имя, а каждая программа имеет по крайней мере одну функцию с именем main.

Программа использует слово void для указания того, что функция не возвращает значения или не имеет значений, передаваемых в нее. Большинство простых программ на С++, которые будут созданы вами в процессе изучения, не возвращают выходное значение статуса операционной системе. Поэтому мы должны размещать слово void перед main.

Каждая программа на С++ имеет один вход, с которого начинается выполнение программы, - главную программу. В программах С++ оператор void main(void) указывает стартовую точку вашей программы.

 В Си функция void main() – это самая главная функция, в ней программы всегда выполняется первой, а потом при необходимости из нее можно вызвать другие функции.

Моя программа включает в себя 4 подфункций:

       Функция ввода информации – int vvod()

       Функция чтение данных из файла – void ofile()

       Функция вывода информации по номеру телефона – int vd1()

       Функция вывода информации по году установки – int vd2()

 

 

9.1 Бл ок схема

 


 


 

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 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...