404

Разработка программы реализирующей цветное движущееся изображение

Курсовая

Информатика, кибернетика и программирование

написание программы для DOS и Windows, отображающую рисование дворников автомобиля. Предусмотрение возможности задания скорости исполнения и приостановки/возобновления выполнения по нажатию клавиши на клавиатуре или мыши (для версии под Windows).

Русский

2013-01-06

97 KB

21 чел.

Министерство образования РФ

Южно-Уральский государственный университет

Кафедра ЭВМ

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

к курсовой работе

по компьютерной графике

Выполнил:

студент группы ПС-479

Горра О.С.

 «8»января 2002

Проверила:

Ярош Е.С.

       «    »                        .

Челябинск

2012


ЮУрГУ

Факультет ПС

Кафедра ЭВМ

Задание

по курсовой работе

студенту группы ПС-479 Горра О.С.

1. Тема работы: разработать программу, реализующую цветное движущееся изображение.

2. Срок сдачи работы ___________.

3. Исходные данные к работе: написать программу для DOS и Windows, отображающую рисование дворников автомобиля. Предусмотреть возможность задания скорости исполнения  и приостановки/возобновления выполнения по нажатию клавиши на клавиатуре или мыши (для версии под Windows).

4. Содержание расчётно - пояснительной записки должно соответствовать ГОСТам ЕСПД.

5. Дата выдачи задания ___________.

Руководитель Ярош Е.С.

Задание принял к исполнению ___________

Подпись студента __________

СОДЕРЖАНИЕ

Общие сведения и функциональное назначение 4

Описание логической структуры 4

Используемые технические средства 5

Вызов и загрузка 5

Входные и выходные данные 5

Системные  требования  5

ПРИЛОЖЕНИЕ 1. Текст программы для Windows 7

ПРИЛОЖЕНИЕ 2. Текст программы для DOS 8


Общие сведения и функциональное назначение

 Версия программы для DOS содержится в файле dvor_dos.exe и представляет собой независимый модуль, запускаемый из DOS. Он требует присутствия в текущем каталоге файла egavga.bgi. Параметры вводятся в командной строке, при пустой командной строке подставляются значения по умолчанию. Программа написана на языке C в среде Borland C++ 5.02.

Версия для MS Windows содержится в файле dvor_win.exe и запускается из среды Windows. Здесь параметры вводтся в форме задания значений. Программа написана на языке С++ в среде Borland C++ 5.02.

После запуска программы на экране рисуются дворники очищающие стекло от дождя. Скорость анимации можно изменять в соответствии с желанием пользователя и возможностями аппаратуры. В процессе работы анимация может быть остановлена по нажатию клавиши на клавиатуре (и мыши в версии для Windows).

Описание логической структуры 

Текст программы для Windows содержится в Приложении 1, для DOS - в Приложении 2.

Главной частью программы под Windows является цикл обработки сообщений. В нем обрабатываются сообщения:

WM_CREATE - производится инициализация переменных начальными значениями и запускается таймер;

WM_DESTROY – позволяет закрыть окно, освободив все системные ресурсы;

WM_CHAR - интерпретирует нажатие клавиши на клавиатуре: если нажата клавиша “-”, то пауза между перерисовками уменьшается на 1мс; “+” - увеличивается на 1мс. При нажатии любой другой клавиши рост диаграммы приостанавливается до следующего нажатия;

WM_LBUTTONDOWN - срабатывает на нажатие левой клавиши мыши. Рост диаграмм останавливается до следующего нажатия;

WM_TIMER - приходит, когда таймер отсчитывает заданный промежуток времени. По приходу этого сообщения дворник перемещается на одно деление.   

В версии программы для DOS главной процедурой является DrawD.

Эта процедура отображает работу дворников  с заданной скоростью, а так же осуществляет прорисовку. Движение дворника может быть приостановлено/возобновлено нажатием любой клавиши на клавиатуре.

Используемые технические средства

Для работы DOS-версии требуется наличие EGA адаптера или лучше.

Для работы Windows-версии нужен видеоадаптер, совместимый с Windows.

Вызов и загрузка 

Для запуска DOS-версии необходимо запустить файл dvor_dos.exe из командной строки или любой файловой оболочки.

Windows-версия начинает работать после запуска файла dvor_win.exe.

Входные и выходные данные

Для DOS и Windows-версии значение задержки при запуске программы устанавливается равным 100 мс, и пользователь может менять его в процессе работы программы.

Результат работы программ одинаков - последовательность кадров. Вид экрана на заключительном этапе работы программ показан на рис. 1 (DOS), и рис. 2 (Windows).

Системные  требования

 Для  программы  dvor_dos.exe  (DOS).

-  Операционная  система . . DOS 4.0  и  выше;

-  Процессор . . . . Intel 386 и совместимые.

 Для  программы  dvor_win.exe  (Windows).

-  Операционная  система . . Windows 3.1 и выше;

-  Процессор . . . . Intel 386 и совместимые.


Рис. 1. Фрагмент работы программы dvor_dos.exe.

Рис. 2. Фрагмент работы программы diag_win.exe.


ПРИЛОЖЕНИЕ 1. Текст программы для Windows

#define STRICT

#include <windows.h>

#include <windowsx.h>

#include <mem.h>

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <math.h>

#include <geometry.h>

#include "menu.hpp"

// Прототипы функций

BOOL InitApp(HINSTANCE);

LRESULT CALLBACK _export WndProc(HWND, UINT, WPARAM, LPARAM);

BOOL CALLBACK _export DlgProc(HWND, UINT, WPARAM, LPARAM);

HINSTANCE hInstance;

const int maxx=400;

const int maxy=380;

const int dx=200;

const int dy=200;

int speed=5;

int stop=0;

int j=0;

int dir;

HDC hdc, hMemDC;

HBITMAP memBM,  hMemOldBitmap;

#pragma argsused

void line(HDC hdc,int x1, int y1, int x2, int y2){

MoveToEx(hdc,x1,y1,NULL);

  LineTo(hdc,x2,y2);

}

#pragma argsused

//==================================

//функция рисования вывода времени

//==================================

void DrawTime (HDC hdc)

{

char str[10];

itoa(19-speed,str,10);

SetBkMode(hdc, TRANSPARENT);

TextOut(hdc,0,0,"Current speed :",15);

TextOut(hdc,120,0,str,lstrlen(str));

}

//=================

//функция рисования

//=================

void DrawHammer(HDC hdc, int h)

{

HBRUSH HammerBrush1, HammerBrush2, OldBrush;

HPEN OldPen, HammerPen1, HammerPen2;

  HammerBrush1=CreateSolidBrush(RGB(255,0,0));

HammerBrush2=CreateSolidBrush(RGB(255,255,255));

HammerPen1=CreatePen(PS_SOLID,3,RGB(0,0,0));

  HammerPen2=CreatePen(PS_SOLID,3,RGB(255,255,255));

  OldPen=SelectPen(hdc,HammerPen2);

SelectObject(hdc,HammerBrush2);

  if (stop==0) {

  if (h!=0){

  Pie(hdc,40,120,240,320,220+220*cos(h*0.008),260-260*sin(h*0.008),180+180*cos(h*0.008),220-220*sin(h*0.008));

  Pie(hdc,145,120,345,320,345+345*cos(h*0.008),260-260*sin(h*0.008),280+280*cos(h*0.008),220-220*sin(h*0.008));}

  SelectPen(hdc,HammerPen1);

  line(hdc,140,220,140+100*cos(h*0.007),220-100*sin(h*0.007));

  line(hdc,245,220,245+100*cos(h*0.007),220-100*sin(h*0.007));

   if (dir==0) {line(hdc,140,220,140+100,220);}

  AngleArc(hdc,140,340,100,5,5);

  if (dir>0) h-=20;

  else h+=20;

 SelectPen(hdc,HammerPen2);

  line(hdc,140,220,140+100*cos(h*0.007),220-100*sin(h*0.007));

  line(hdc,245,220,245+100*cos(h*0.007),220-100*sin(h*0.007));

  if (dir>0) h+=20;

  else h-=20;

  for (int qw=0;qw<30;qw++) SetPixel(hMemDC,80+random(350),100+random(200),RGB(0,0,255));

}else line(hdc,140,220,140+100,220);

  SelectObject(hdc,OldBrush);

SelectObject(hdc,OldPen);

DeleteObject(HammerBrush1);

DeleteObject(HammerBrush2);

DeleteObject(HammerPen1);

  DeleteObject(HammerPen2);

}

//-----------------------

//функция очистки битмэпа

//-----------------------

void Clear(HDC hdc, int x1, int y1, int x2, int y2)

{

HBRUSH WhiteBrush, OldBrush;

HPEN OldPen, WhitePen;

WhiteBrush=CreateSolidBrush(RGB(255,255,255));

WhitePen=CreatePen(PS_SOLID,1,RGB(255,255,255));

OldBrush=(HBRUSH)SelectObject(hdc,WhiteBrush);

OldPen=SelectPen(hdc,WhitePen);

Rectangle(hdc,x1, y1, x2, y2);

SelectObject(hdc,OldBrush);

SelectObject(hdc,OldPen);

DeleteObject(WhiteBrush);

DeleteObject(WhitePen);

}

// Имя класса окна

char const szClassName[]   = "MenuClass";

// Заголовок окна

char const szWindowTitle[] = "Дворники";

// =====================================

// Функция WinMain

// =====================================

#pragma argsused

int PASCAL

WinMain(HINSTANCE hInstance,

HINSTANCE hPrevInstance,

LPSTR     lpszCmdLine,

int       nCmdShow)

{

 MSG  msg;   // структура для работы с сообщениями

 HWND hwnd;  // идентификатор главного окна приложения

::hInstance = hInstance;

 // Инициализируем приложение

 if(!InitApp(hInstance))

 return FALSE;

 // После успешной инициализации приложения создаем

 // главное окно приложения

 hwnd = CreateWindow(

 szClassName,         // имя класса окна

 szWindowTitle,       // заголовок окна

 WS_OVERLAPPED | WS_SYSMENU, // стиль окна

 CW_USEDEFAULT,       // задаем размеры и расположение

 CW_USEDEFAULT,       // окна, принятые по умолчанию

 maxx,maxy,

 0,                   // идентификатор родительского окна

 0,                   // идентификатор меню

 hInstance,           // идентификатор приложения

 NULL);               // указатель на дополнительные

        // параметры

 // Если создать окно не удалось, завершаем приложение

 if(!hwnd)

 return FALSE;

 // Рисуем главное окно

 ShowWindow(hwnd, nCmdShow);

 UpdateWindow(hwnd);

     Clear(hMemDC,0,0,400,350);

 // Запускаем цикл обработки сообщений

 while(GetMessage(&msg, 0, 0, 0))

 {

 DispatchMessage(&msg);

 }

 return msg.wParam;

}

// =====================================

// Функция InitApp

// Выполняет регистрацию класса окна

// =====================================

BOOL

InitApp(HINSTANCE hInstance)

{

 ATOM aWndClass; // атом для кода возврата

 WNDCLASS wc;    // структура для регистрации

     // класса окна

 // Записываем во все поля структуры нулевые значения

 memset(&wc, 0, sizeof(wc));

 // Подключаем меню

 wc.lpszMenuName  = "APP_MENU";

 wc.style         = 0;

 wc.lpfnWndProc   = (WNDPROC) WndProc;

 wc.cbClsExtra    = 0;

 wc.cbWndExtra    = 0;

 wc.hInstance     = hInstance;

//  wc.hIcon         = LoadIcon(NULL, IDI_APPLICATION);

 wc.hIcon         = LoadIcon(NULL, "a_jb");

 wc.hCursor       = LoadCursor(NULL, IDC_ARROW);

//  wc.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);

 wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);

//  wc.hbrBackground = (HBRUSH)(COLOR_APPWORKSPACE + 1);

 wc.lpszClassName = (LPSTR)szClassName;

 // Регистрация класса

 aWndClass = RegisterClass(&wc);

 return (aWndClass != 0);

}

// =====================================

// Функция WndProc

// =====================================

#pragma argsused

LRESULT CALLBACK _export

WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)

{

/*  PAINTSTRUCT ps;

 HDC hdc, hMemDC;

 HBITMAP memBM,  hMemOldBitmap;*/

 switch (msg)

 {

 case WM_CREATE:

 {

 hdc = GetDC(hwnd);

 hMemDC = CreateCompatibleDC(hdc);

 //выбираем битовое изображение в контексте памяти

 memBM = CreateCompatibleBitmap ( hdc,400,350 );

 //установаем его в конкест памяти:

 hMemOldBitmap=(HBITMAP)SelectObject ( hMemDC, memBM );

 SetTimer(hwnd,NULL,speed*25,NULL);

 return 0;

 }

 case WM_TIMER:

 {

     Clear(hMemDC,0,0,200,50);

 DrawHammer(hMemDC,j);

 DrawTime(hMemDC);

 if (j>=300) {dir=-20;}

 else

 {if (j<=0)

   {

  dir=20;

   }

 }

 if (!stop) j+=dir;

 BitBlt(hdc,0,0,400,350,hMemDC,0,0,SRCCOPY);

 return 0;

 }

   case WM_LBUTTONDOWN: // Нажали левую клавишу мыши

   {

     stop = !stop;  //нажата кнопка мыши - приостанавливаем

   return 0;

   }

 case WM_KEYDOWN:

 {

 if (wParam==0x6b){ //- - увеличение скорости

  KillTimer(hwnd,NULL);

  speed--; if (speed < 0) speed = 0;

  SetTimer(hwnd,NULL,speed*20,NULL);

  return 0;};

 if (wParam==0x6d){//+ - уменьшение скорости

  KillTimer(hwnd,NULL);

  speed++; if (speed>19) speed = 19;

  SetTimer(hwnd,NULL,speed*20,NULL);

  return 0;};

 stop = !stop; //если не + и не - приостанавливаем

 return 0;

 }

 case WM_COMMAND:

 {

 switch (wParam)

 {

   // Сообщения от меню

   case CM_HELPINDEX:

   {

   // На сообщение от любой строки меню кроме

   // завершающей работу программы реагируем

   // выводом сообщения об ошибке

   MessageBox(hwnd, "Функция не реализована",NULL, MB_OK);

   return 0;

   }

  case CM_HELPABOUT:

    {

   MessageBox(hwnd, "Дворники","About...", MB_OK);

    return 0;

    }

   // Завершаем работу приложения

   case CM_FILEEXIT:

   {

   KillTimer(hwnd,NULL);

   DestroyWindow(hwnd);

   return 0;

   }

   default:

   return 0;

 }

 }

 case WM_DESTROY:

 {

 SelectObject(hMemDC,hMemOldBitmap);

 //удаляем кисти и перья

 DeleteObject(memBM);//удаляем битмэп

 DeleteDC(hMemDC);//удаляем контекст памяти

 ReleaseDC(hwnd,hdc);

 PostQuitMessage(0);

 return 0;

 }

 default:

 break;

 }

 return DefWindowProc(hwnd, msg, wParam, lParam);

}


ПРИЛОЖЕНИЕ
2. Текст программы для DOS

#include <graphics.h>

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include <dos.h>

#include <math.h>

void main()

{  int i,j,k,l,g,a,flag;

  int driver = EGA;

  int mode   = EGAHI;

  int   res;

// ----- Инициализируем графический режим

 initgraph (&driver,&mode,"" );

if ((res=graphresult())!=grOk) {printf("\nGraphics error: %s\n",grapherrormsg(res));exit(1);}

  settextjustify(CENTER_TEXT, CENTER_TEXT);

  setcolor(15);

  getch();

  j=250;

  k=30;

  a=0;

  g=0;

  flag=0;

  setfillstyle(6,0);

circle(150,280,10);

line(160,280,165,280);

outtextxy(140,250,"Speed of wiper");

outtextxy(150,260,"max");

outtextxy(150,300,"min");

outtextxy(340,260,"Idle time");

outtextxy(325,290,"min");

outtextxy(325,300,"max");

circle(350,280,10);

line(360,280,365,280);

  do {

  for(i=0;i<=30;)

   {setcolor(15);

   line(200,230,200+100*cos(i*0.07),230-100*sin(i*0.07));

   line(305,230,305+100*cos(i*0.07),230-100*sin(i*0.07));

   putpixel(100+random(400),130+random(100),12);

   delay(k);

   if (kbhit())l=getch();

   switch (l)

   {

    case 27:{exit(0);break;}

    case 42:{

    if ((k>=20)&(k<=50))

    { setcolor(16);

     line(150+10*cos(g*0.8),280-10*sin(g*0.8),150+15*cos(g*0.8),280-15*sin(g*0.8));

     k=k-10;

     g++;

     setcolor(15);

     line(150+10*cos(g*0.8),280-10*sin(g*0.8),150+15*cos(g*0.8),280-15*sin(g*0.8));

     }

    //if(j>=50) j=j-40;printf("j=%dk=%d",j,k);

    l=0;

    break;}

    case 45:{

    if(j>=50)

    //j=j-50;printf("j=%d",j);

    {

      setcolor(16);

     line(350+10*cos(a*0.8),280-10*sin(a*0.8),350+15*cos(a*0.8),280-15*sin(a*0.8));

     j=j-50;

     a++;

     setcolor(15);

     line(350+10*cos(a*0.8),280-10*sin(a*0.8),350+15*cos(a*0.8),280-15*sin(a*0.8));

      }

    l=0;break;}

    case 43:{

    //j=j+50;printf("j=%d",j);

    if(j<=350)

     {

      setcolor(16);

     line(350+10*cos(a*0.8),280-10*sin(a*0.8),350+15*cos(a*0.8),280-15*sin(a*0.8));

     j=j+50;

     a--;

     setcolor(15);

     line(350+10*cos(a*0.8),280-10*sin(a*0.8),350+15*cos(a*0.8),280-15*sin(a*0.8));

      }

    l=0;break;}

    case 47:{

    //k=k+10;

    if ((k>=10)&(k<50))

    { setcolor(16);

     line(150+10*cos(g*0.8),280-10*sin(g*0.8),150+15*cos(g*0.8),280-15*sin(g*0.8));

     k=k+10;

     g--;

     setcolor(15);

     line(150+10*cos(g*0.8),280-10*sin(g*0.8),150+15*cos(g*0.8),280-15*sin(g*0.8));

     }

    l=0;break;}

  case 13:

case 32:{ if (flag==0) while(!kbhit()); flag=1-flag; l=getch(); l=0; break;}

    default :break;

    }

   setcolor(16);

   sector(200,230,i*3.0,i*4.0+5,100,100);

   sector(305,230,i*3.0,i*4.0+5,100,100);

   line(200,230,200+100*cos(i*0.07),230-100*sin(i*0.07));

   line(305,230,305+100*cos(i*0.07),230-100*sin(i*0.07));

   i++;

   }

  for(i=30;i>=0;)

  {setcolor(15);

  line(200,230,200+100*cos(i*0.07),230-100*sin(i*0.07));

  line(305,230,305+100*cos(i*0.07),230-100*sin(i*0.07));

  putpixel(100+random(400),130+random(100),12);

  delay(k);

  if (kbhit())l=getch();

   switch (l)

   {

    case 27:{exit(0);break;}

    case 42:{

    //if (k>=20) k=k-10;

      if ((k>=20)&(k<=50))

    { setcolor(16);

     line(150+10*cos(g*0.8),280-10*sin(g*0.8),150+15*cos(g*0.8),280-15*sin(g*0.8));

     k=k-10;

     g++;

     setcolor(15);

     line(150+10*cos(g*0.8),280-10*sin(g*0.8),150+15*cos(g*0.8),280-15*sin(g*0.8));

     }

     //if (j>=50) j=j-40;printf("%d",j);

     l=0;break;}

    case 45:{

    if(j>=50)

    //j=j-50;

     {

      setcolor(16);

     line(350+10*cos(a*0.8),280-10*sin(a*0.8),350+15*cos(a*0.8),280-15*sin(a*0.8));

     j=j-50;

     a++;

     setcolor(15);

     line(350+10*cos(a*0.8),280-10*sin(a*0.8),350+15*cos(a*0.8),280-15*sin(a*0.8));

      }

    l=0;break;}

    case 43:{

    //j=j+50;

      if(j<=350)

     {

      setcolor(16);

     line(350+10*cos(a*0.8),280-10*sin(a*0.8),350+15*cos(a*0.8),280-15*sin(a*0.8));

     j=j+50;

     a--;

     setcolor(15);

     line(350+10*cos(a*0.8),280-10*sin(a*0.8),350+15*cos(a*0.8),280-15*sin(a*0.8));

      }

    l=0;break;}

    case 47:{

    //k=k+10;

         if ((k>=10)&(k<50))

    { setcolor(16);

     line(150+10*cos(g*0.8),280-10*sin(g*0.8),150+15*cos(g*0.8),280-15*sin(g*0.8));

     k=k+10;

     g--;

     setcolor(15);

     line(150+10*cos(g*0.8),280-10*sin(g*0.8),150+15*cos(g*0.8),280-15*sin(g*0.8));

     }

    l=0;break;}

  case 13:

case 32:{

  if (flag==0) while(!kbhit());

  flag=1-flag;

  l=getch();

  l=0;

  break;}

    default :  break;

    }

  setcolor(16);

  sector(200,230,i*3.0,i*4.0+5,100,100);

  sector(305,230,i*3.0,i*4.0+5,100,100);

  line(200,230,200+100*cos(i*0.07),230-100*sin(i*0.07));

  line(305,230,305+100*cos(i*0.07),230-100*sin(i*0.07));

  i--;

  }

     //Esc is 27

     //+ is wait 43 speed work 42

     // - is     45            47

setcolor(15);line(200,230,300,230);

line(305,230,405,230);

delay(j);

  } while (l!=27);

closegraph();

}


 

А также другие работы, которые могут Вас заинтересовать

47181. Принципы государственного управления в сфере охраны окружающей среды и природопользования 75.34 KB
  Правовая охрана земель Неоценимое значение земли для существования биосферы и жизнедеятельности человека предполагает необходимость ее всесторонней охраны. Правовая охрана земель это система закрепленных законом мер направленных на обеспечение рационального использования земель сохранение и повышение их плодородия защиту от истощения и разрушения. Охрана земель осуществляется на основе комплексного подхода к земельным угодьям как к сложным природным образованиям и ставит следующие цели: предотвратить деградацию и разрушение...
47182. Ответственность за экологические преступления 75.39 KB
  Право собственности на природные объекты: понятие виды объекты субъекты основания возникновения. Земля и другие природные ресурсы могут находиться в частной государственной муниципальной и иных формах собственности. Земли которые не находятся в собственности граждан юридических лиц или муниципальных образований представляют собой государственную собственность. Право собственности на природные ресурсы возможность владения пользования и распоряжения данными природными ресурсами.
47183. Явление электромагнитной индукции. Закон Фарадея-Ленца. Генератор переменного тока.Токи Фуко 76 KB
  Генератор переменного тока.Токи Фуко Явление электромагнитной индукции состоит в том что при изменении магнитного потока через поверхность ограниченную проводящим контуром в последнем возбуждается электродвижущая сила εͥͥͥͥͥͥͥ. Согласно закону Ленца индукционный ток всегда имеет такое направление что его магнитное поле противодействует изменению внешнего магнитного потока. Величина εͥͥͥͥͥͥͥ определяется законом ФарадеяЛенца и не зависит от способа которым осуществляется изменение потока.
47185. Внесок у розвиток теорії мотиваційного менеджменту українських вчених 83.5 KB
  ; колективні ті що спільно задовольняються у трудовому колективі підвищення кваліфікаційного рівня працівників будівництво спільних баз і будиночків відпочинку колективне управління виробництвом та ін; суспільні це потреби у забезпеченні громадського порядку захисті навколишнього середовища тощо. Роль стимулів і стимулювання в мотивації працівників У загальному вигляді стимулювання це процес використання конкретних стимулів на користь людині й організації. Розходження економічних і неекономічних методів мотивації працівників Суть...
47186. Розробка методичних матеріалів для вивчення курсу ООП 1.36 MB
  Шаблони проектування можуть пришвидшити процес розробки, надаючи протестовані та доведені розробницькі парадигми. Ефективне проектування програмного забезпечення вимагає розгляду ряду питань
47187. Розробка системи роботи з електронним щоденником 2.34 MB
  Розроблена система, яка забезпечує мінімальний набір функцій, необхідний для роботи користувача зі своїм електронним щоденником
47188. Облік, аналіз і аудит фінансових результатів суб’єктів малого підприємництва (на прикладі ТОВ «Софіт») 353.19 KB
  Протягом довгого історичного періоду економісти, історики й політичні діячі всіляко применшували роль малого бізнесу (МБ) в економіці.
47189. Учет и анализ расчетов с подотчетными лицами ОАО «Брестхлебопродукт» 533 KB
  В процессе финансово хозяйственной деятельности у предприятия возникает потребность использовать наличные денежные средства для расчетов с работниками по командировкам выдачи им средств на представительские цели для покупки за наличный расчет товаров в других организациях или у физических лиц для оплаты выполненных работ оказания услуг а также на иные хозяйственно операционные цели. Правильная организация учета расчетов с подотчетными лицами с одной стороны обеспечивает действенный контроль за использованием на предприятии денежных...