Разработка программы задачи методом объектно-ориентированного программирования, страница 5

Создание                                Создание

Просмотр                               Просмотр

Удаление                                Удаление

Замена                                     Замена

Выход                                      Выход

upr.cpp

#include "itog.hpp"

char imf_post[13];  // для хранения файла данных Справочник поставщиков

char imf_potr[13];  //для хранения данных Справочник потребностей

itog obj(imf_post,imf_potr);    // объявление объекта класса ved

void podmenu(int n,int x)   ) // функция подменю реализует две формы

//подменю и вызывает элемет-функции sozdanie и correct классов

//akt и cena, n – номер подменю (0 – akt, 1 – cena), x – номер

//колонки вывода подменю

{

char ch;

char*m[]={"Ввод    ",

"Поиск   ",

"Замена  ",

"Просмотр”;

"Удаление",

"Выход   "};

int pos[6];

_setcursortype(_NOCURSOR);

gotoxy(1,23);

clreol();

cputs("Выберете пункт меню и нажмите <Enter>");

for (int k=0;k<6;k++)

{

if (k==0)

textattr(0+(2<<4));

else

textattr(0+(7<<4));

gotoxy(x,3+k);

pos[k]=wherey();

cputs(m[k]);

}

k=0;

for(;;)

{

ch=getch();

if (ch==13) break;

if (ch==0)

{

ch=getch();

switch (ch)

{

case 80: if (k==5) continue;

gotoxy (x,pos[k]);

textattr (0+(7<<4));

cputs(m[k]);

k++;

gotoxy (x,pos[k]);

textattr(0+(2<<4));

cputs(m[k]);

textattr (15+(0<<4));

break;

case 72: if (k==0) continue;

gotoxy (x,pos[k]);

textattr(0+(7<<4));

cputs(m[k]);

k--;

gotoxy(x,pos[k]);

textattr(0+(2<<4));

cputs(m[k]);

textattr(15+(0<<4));

break;}

}

   }

textattr(15+(0<<4));

_setcursortype(_NORMALCURSOR);

switch(k)

{

case 0:if (n==0) obj.post::sozdanie();  // Вызов функции класса post

if (n==1) obj.potr::sozdanie();   //вызов функции класса potr

break;

case 1:

case 2:

case 3:if (n==0) obj.post::correct(k);

if (n==1) obj.potr::correct(k);

case 4:if (n==0) obj.post::prosmotr();

if (n==1) obj.potr::prosmotr();

case 5:break;

}

if (k!=5) podmenu(n,x);  //Рекурсивный вызов функции

}

void menu()   // функция menu вызывает функцию podmenu и элемент-

//функцию  sozdanie класса itog

{

char ch;

char*m[]={"Справочник поставщиков ",

"Справочник потребностей ",

"Расчет ",

"Выход"};

int pos[4];

clrscr();

_setcursortype(_NOCURSOR);

gotoxy(1,23);

cputs("Выберете пункт меню с помощью(-> и <-) и нажмите <Enter>");

gotoxy(16,1);

for (int k=0;k<4;k++)

{

if (k==0)

textattr(0+(2<<4));

else

textattr(0+(7<<4));

pos[k]=wherex();

cputs(m[k]);

}

k=0;

for(;;)

{

ch=getch();

if (ch==13) break;

if (ch==0 && kbhit())

{

ch=getch();

switch (ch)

{

case 77:if (k==3) continue;

gotoxy (pos[k],1);

textattr (0+(7<<4));

cputs (m[k]);

k++;

gotoxy (pos[k],1);

textattr(0+(2<<4));

cputs(m[k]);

textatt r(15+(0<<4));

break;

case 75:if (k==0) continue;

gotoxy (pos[k],1);

textatt r (0+(7<<4));

cputs(m[k]);

k--;

gotoxy (pos[k],1);

textattr (0+(2<<4));

cputs(m[k]);

textattr (15+(0<<4));

break;}

}

  }

textattr(15+(0<<4));

_setcursortype(_NORMALCURSOR);

switch (k)

{

case 0:

case 1:podmenu(k,pos[k]);   // вызов внешней функции

break;

case 2:obj.sozdanie();  // вызов элемент-функции класса itog

break;

case 3: break;

}

if (k!=3) menu();

return;

}

void ramka(int x1,int y1,int x2, int y2, int vid)

{

const int m[2][6]={218,191,192,217,196,179,201,187,200,188,205,186};

gotoxy(x1,y1);

putch(m[vid][0]);

for (int x=x1+1; x<x2; x++)

putch(m[vid][4]);

putch(m[vid][1]);

gotoxy(x1,y2);

putch(m[vid][2]);

for (x=x1+1; x<x2; x++)

putch(m[vid][4]);

putch(m[vid][3]);

for (int y=y1+1; y<y2; y++)

{

gotoxy(x1,y);

putch(m[vid][5]);

gotoxy(x2,y);

putch(m[vid][5]);

}

gotoxy(30,7);

cout<<"Курсовая работа ";

gotoxy(31,9);

cout<<"по дисциплине";

gotoxy(14,11);

cout<<"\"Основы алгоритмизации и языки программирования"";

gotoxy(33,13);

cout<<"на тему";

gotoxy(20,15);

cout<<"\"Расчет потребностей потребителей\"";

gotoxy(50,17);

cout<<"Выполнила: Герасимова Л.А.";

gotoxy(50,19);

cout<<"Проверил: Павлов Ф.Ф.";

gotoxy(30,23);

cout<<"Нажмите <Enter>";

return;

}

void zadacha()

{

clrscr();

gotoxy(30,9);

cout<<"УСЛОВИЕ ЗАДАЧИ";

gotoxy(15,12);

cout<<"Имеются данные о поставщиках: наименование";

gotoxy(15,13);

cout<<"поставщика, код изделия, мощность поставщика.";

gotoxy(15,14);

cout<<"Имеется справочник потребности: код изделия,";

gotoxy(15,15);

cout<<"наименование изделия, потребность потребителя.";

gotoxy(15,16);

cout<<"Определить изделия по которым потребность";

gotoxy(20,17);

cout<<"превышает мощность";

gotoxy(30,20);

cout<<"Нажмите <Enter>";

return;

}

main()   // функция main вызывает элементы-функции init классов post и potr и

//функцию menu

{

char ch;

clrscr();

do

{

ramka(5,5,75,21,1);

ch=getch();

zadacha();

ch=getch();

}

while (ch!=13);

clrscr();gotoxy(2,23);

cout<<"Введите имя файла Справочник поставщиков: ";

cin>>imf_post;

gotoxy(2,23);

clreol();

cout<<"Введите имя файла Справочник потребностей: ";

cin>>imf_potr;

obj.post::init();   // вызов элемент-функции класса post

оbj.potr::init();   // вызов элемент-функции класса potr

menu();   // вызов внешней функции

}