Читайте данную работу прямо на сайте или скачайте

Скачайте в формате документа WORD


Разработка ПО "Правила Дорожного Движения"

ВВЕДЕНИЕ

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

Но качественный скачек произошел в конце сороковых годов в результате изобретения электронно-вычислительных машин-компьютеров. Сейчас в некоторых развитых странах в сфере компьютерной обработки информации занято около половины трудоспособного населения. Известным примером применения компьютерной обработки информации является система СИРЕНАФ для резервирования мест на авиарейсы. Она обеспечивает хранение большого объема данных о свободных и занятых местах на различные рейсы, быстрый поиск необходимой пользователю информации, обмен информацией между компьютером и значительным количеством даленных стройств ввода-вывода, становленных на рабочих местах кассиров-операторов. В настоящее время компьютерная индустрия проникает во все области нашей жизни. Компьютер становится нашим повседневным помощником. Области применения ЭВМ непрерывно расширяются, все более захватывая и такие стороны человеческой деятельности, которые, как казалось, не приемлют каких либо вычислений. Сюда можно отнести медицину, биологию, игру в шахматы, сочинение стихов и музыки, моделирование одежды и т.д. Применение ЭВМ в системах обработки информации и правления, для научно-технических расчетов и моделирования стало вполне естественным.

До сих пор продолжают говорить, что ЭВМ- думает, ЭВМ рассчитывает, ЭВМ вычисляет. При этом создается мнение, что достаточно приобрести компьютер, как он станета за кого-то думать, рассчитывать и правлять. На самом деле это не так. ЭВМ - лишь, инструмент, реализующий алгоритм, разработанный человеком. Алгоритм - точное предписание, выполнение которого приводит к решению задач.

Многое из того, что мы видим и слышима по телевизору (рекламные ролики, заставки, фильмы, музыкальные клипы) сделано с помощью компьютера. Использование компьютера дает возможность освободиться от большого количества бумажной информации (например: всевозможные бланки, справки). С помощью компьютера, используя компьютерные сети, можно посылать друг другу письма, не выходя из дома, получать все мировые новости, общаться с коллегами из зарубежных стран. Компьютер поможет сделать покупки, не выходя из дома, разработать чертежи. На современных компьютерах создают мультфильмы (Транс-формеры, Король Лев.), художественные фильмы (Звездные войны, Терминатор 1-2, Парк Юрского периода, Маска.). ЭВМ используют для обучения и игр, которых создано великое множество. Использование компьютеров позволяет автоматизировать производство (примеры автоматизации: станки с ЧПУ, автоматизированные линии сборки, роботы-манипуляторы). Использование компьютера дома позволяет подготавливать и хранить всевозможныеа рукописи, письма. Можно спроектировать обстановку в вашей квартире, не переставляя мебель в реальности. Компьютер может стать вашим секретарем. В компьютере вы можете хранить всевозможные картотеки, музыкальные клипы, живое видео и многое другое. На ЭВМ можно смоделировать сложные химические и физические процессы, для которых раньше требовались специальные приборы.

Но есть у компьютеров и негативные стороны. Например, сидя долго за компьютером вы ведете малоподвижный образ жизни, это сказывается на вашем физическом состоянии.

Одна из областей применения компьютерова это обучение вождению автомобилем. В настоящее время большое количество людей стремится получить водительское удостоверение. Но многие не могут поступить на учебу из-за ограниченного количества человек в группе. А группы ограничены по размерам из-за пропускной способности экзаменатора, который не может физически и морально принять экзамен у большого количества людей. Нижеописанная программа способна величить пропускную способность экзаменатора, сняв с него большую нагрузку. Программа способна принять сама экзамен и дать беспристрастную оценку ответам экзаменуемого. В программе предусмотрен режим обучения, позволяющий экзаменуемому предварительно ознакомиться с правильными ответами. Общедоступный формат билетов позволяета оперативно изменять вопросы с четом существующих в настоящее время правил. Программу можно полностью перепрофилировать на прием экзаменов по другим предметам. Использование этой программы поможет начинающему ближе знать компьютер и его возможности. Используя компьютер, человек открывает дорогу в мир информации.


1 ОБЩАЯ ЧАСТЬ

1.1. КРАТКОЕ ОПИСАНИЕ

Описываемая программа состоит из трех основных подпрограмм(Меню, Контроль, Обучение).Эти подпрограммы могут работать не зависимо, что позволяет использовать их в других программах. Рассмотрим алгоритмы работы этих подпрограмм и всей программы в целом. При загрузке программы выводится заставка, кратко описывающая назначение программы, затем на экране отображается меню. В меню программы вы можете выбрать один из трех пунктов меню: Выход, Контроль, или Обучение.

Выход: осуществляется выход в операционную систему ( например: MS-DOS X.X, WINDOWS 3.X, WINDOWS 95, DR-DOS и.т.д. ).

Обучение: позволяет экзаменуемому выбрать любой билет с вопросами по экзамену и просмотреть правильные ответы на заданный билет.

Контроль: режим приема экзамена у экзаменуемого. В этом режиме программа случайным образом выбирает номер билета. Далее экзаменуемый отвечает на вопросы выводимые на экран, в течении времени отведенного для ответа на билет. После того, как экзаменуемый ответит на все вопросы данного билета, программа автоматически выставляет оценку и записывает данные о экзаменуемом и результаты экзамена в файл.

Рассмотрим подробнее работу программы. При первом запуске программа делает привязку к конкретному компьютеру, т.е. при попытке запустить незарегистрированную копию программы на другом компьютере, программа не будет работать. Это один из ровней защиты программы. При последующих запусках программа тестирует среду запуска( объем свободной памяти, тип процессора, объем свободного пространства на жестком диске).Если тесты показали пригодность среды запуска то программа продолжает работать, иначе происходит выход в вызываемую среду с сообщением о причине выхода. При продолжении работы выполняется сохранение параметров вызываемой среды (вектора прерываний, настройки скорости срабатывания клавиатуры и т.д. ). Далее выводится заставка отображающая назначение программы.Затем экран обновляется и появляется меню.В меню вы можете, используя клавиши курсора или мыши,выбрать один из трех пунктов меню. Рассмотрим каждый пункт меню подробно:

1. Выход. При выборе этого пункта программа переспросит вас, действительно ли вы хотите выйти. Если вы ответите НЕТ вы вернетесь в меню программы. Если вы ответите ДА программа восстановит среду вызова (освободит занимаемую память, восстановит содержимое переменных-а адреса векторов прерываний, содержимое регистров, закроет все, открытые ею файлы),сохраненную при запуске программы. После произойдет реальный выход. точнение насчет выхода нужно для того, чтобы пользователь при случайном выборе данного пункта не вышел из программы.

2 Обучение. Выбрав этот пункт вама будет предложено выбрать номер билета, на который вы хотите знать ответы. Затем программа проверяет, введенный номер на предмет выхода за допустимые границы. Если произошла ошибка, вам будет предложено заново ввести номер билета.

При корректном вводе номера билета программа сделает попытку загрузить файл с данным билетом. При невозможности загрузить файл( отсутствие файла ) будет выведено сообщение об ошибке и программа выйдет в вызываемую среду. После спешной загрузки файла с билетом программа выведет первый вопрос с отмеченным правильным ответом. Далее программа проверяет счетчик вопросов т.е. был ли это последний вопрос в билете. Если это был последний вопрос то программа предложит выбрать новый билет или вернуться в основное меню. Иначе программа величивает счетчик вопросов и обновив экран выводит новый вопрос. Цикл повторяется пока не кончатся вопросы в билете. Затем происходит выход в основное меню.

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

Программа записывает результат опроса и данные экзаменуемого в файл. Этот файл потом может быть объединен с другими такими же файлами для составления списка спеваемости группы. После записи данных происходита выход в основное меню.

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

Программа написана на языке C++. На нем реализованы все основные подпрограммы. Использованию этого языка его такие особенности, как лаконичность, мощность, гибкость, мобильность. Для компиляции программы использовался компилятор фирмы Watcom Systems Inc. Также использовался язык ассемблера для выполнения наиболее критичных ко времени частков кода. Язык ассемблера, это символьное представление машинного языка, как известно все критичные ко времени процедуры т.е.,которые должны выполняться в течении короткого промежутка времени, пишутся на машинном языке. Программа реализована для компьютера IBM PC, а скомпилирована для процессора IntelЩ 386 и выше. Выбор компьютер не случаен.Этот компьютер наиболее распространен н рынке настольных компьютеров и обладает достаточной вычислительной мощностью. Выбор типа процессора также не случаен так, как на более медленных процессорах (i80286, i80186, i8086) программа может притормаживать т.е. очень медленно работать. Особенностью процессоров IntelЩ аявляется преемственность на ровне команд: программы написанные для младших моделей процессоров, без всяких изменений могут быть выполнены на более старших моделях. Также нужен монитор и видеоадаптер поддерживающие режим алVGA. Для добства работы в программу введена поддержка манипулятор типа мышь. А сейчас рассмотрим подробнее алгоритм наиболее важной подпрограммы, которая распознает формат файла билета и интерпретирует команды содержащиеся в этом файле.

1.2 ОПИСАИе АЛГОРИТМА ПОДПРОГРАММЫ

В подпрограмму передается несколько параметров, а именно казатель- позиция текущего считываемого символа в массиве, сам массив, и его размер.

В самой подпрограмме в организуется цикл с словием -а пока не встретится символ окончания вопроса или билета или указатель не станет больше размера массива. В первом случае программой сохраняется текущая позиция казателя в массиве и программа переходит для обработки результата ответа пользователя, в зависимости от режима работы- контроль или обучение. Во втором случае подпрограмма рисует заставку об информирующую об окончании билета и выходит в основной модуль для окончательной обработки результата. Модуль рисования распознает несколько команд лпримитивов, именно: рисование линии по заданным начальным и конечным координатам с заданным цветом, рисование прямоугольников ( закрашенных и не закрашенных ) заданного цвета, рисование окружности, рисование прямых от текущей координаты к казанныма закрашивание области одним цветом, включение файла с описанными выше командами в определенную позицию на экране и включение файла с заданным коэффициентом масштабирования.

Рассмотрим подробнее реализацию рисования примитивов. Сначала подпрограммойа распознается, что считываемый графический файл имеет правильный формат. Затема же в самом цикле происходит интерпретация команд. Рассмотрим наиболее сложную команду: рисование прямых от текущей точки до указанных координат.

Если встречается символ рисования такой прямой то подпрограмма распознает начальные координаты откуда будут рисоваться прямые и их цвет. Затем организуется цикл с условием - пока не встретится символ окончания рисования. Внутри цикла происходит распознавание координат и их калькуляция в соответствии с коэффициентом масштабирования. После этого же вычерчивается линия на экране. Ниже приведена формат файла рисования.

В файле используются несколько команд: C,F,L,M,P,PL,T,W,V.В начале файла должен стоять значок л*, означающий, что этот файл является файлом графики. Ниже приведена таблица содержащая имя команды, ее описание, формат записи и пример.

Команда

Описание

Формат записи

Пример

С

рисование окружности с координатами x,y, радиусом r и цветом color

С x,y,r,color


C 120,50,40,3

Команда

Описание

Формат записи

Пример

F

рисование финальной заставки из файла filename

F filename

F exit.bil

L

рисование линии (прямоугольника закрашенного и не закрашенного по заданным координатам x1,y1,x2,y2 c цветом color

Lа x1,y1,x2,y2,color,command

command может принимать значения L,F и B

L- линия, F- закрашенный прямоугольник, B- не закрашенный прямоугольник

L 10,10,20,20,7,L 10,10,20,20,1,B 10,10,20,20,2,F

М

указывает количество вариантов ответов в вопросе N, правильный ответ (color=1), и координаты вывода рамки-курсора на экран x1,y1,x2,y2... xn, yn, xn, yn,

M N x1,y1,x2,y2,color......... xn ,yn, xn, yn, color

M

2 а81,127,185, 147, 2

81,152,185,172, 1

P

закрашивает область цветом color1, до границ цвета color начиная с точки x, y

P x,y,color,color1

P 30,26,3,2

PL

рисует прямые с казанными конечными координатами xn, yn ,цветом color , с начальными координатами x1,y1,x2,y2, PL,0- служит признаком конца рисования

PL x1,y1,x2,y2,color xn, yn

PL,0

PL 120,120,130,130,3 140,132 23,51 PL,0

Команда

Описание

Формат записи

Пример

T

вывод строки text в заданные координаты x1,y1, цветом color, XOR- служит признаком конца текста и, означает метод наложения текста на графику

T x1,x2,color,text, XOR

T 5,5,3,пример,XOR

W

включает иза файла filename графику и выводит ее в позицию x1,x2 т.е. x1,x2 - это новые координаты отсчета

W filename x1,x2

W zastavka 90,90

включает иза файла filename графику и выводит ее в позицию x1,x2 с коэффициентом масштабирования m

filename x1,y1,m

avto_100 100,100,300

Примечание: коэффициент подсчитывается по формуле -aspect = maxx/(m-x1) ; где maxx- максимальное разрешение графического режима в пикселях.

Глубин вложения файлов равна единице т.е. вы не можете использовать команды W и V в же включаемом файле. Это сделано для меньшения требований к ресурсама компьютера и для уменьшения путаницы во включаемых файлах. Для составления билетов можно использовать любой текстовый редактор.


2 РАСЧЕТНАЯ ЧАСТЬ

2.1 Листинг программы

Программа была написана с использованием языка Watcom С++, поэтому в ней используется специфический синтаксис этого языка. Ниже приведен листинг описываемой программы.


char *massiv,*massiv1,*temp,*buff_image,command,mode='c',key;

unsigned char f_mask[ 8 ] = { 255, 255, 255, 255,255, 255, 255, 255 };

unsigned char name[20],subname[20],massiv2[45];

char fon_buff[10];

int color=0,color1=0,punkt=1,m_x,m_y,m_k=0,row=20,maxx=640;

float x=0,y=0,x1=0,y_1=0,radius=0,xs=0, ys=0,ratio=1.,asp=640,aspxs=1;

#defineа ENTER 0x0d

#defineа PGDW 0x51

#defineа PGUP 0x49

#defineа UP 0x48

#defineа DOWN 0x50

#defineа ESC 0x1b

#defineа SPACE 0x20

#include "graph.h"

#include "pgchart.h"

#include "stdarg.h"

#include "stdio.h"

#include "iostream.h"

#include "fstream.h"

#include "conio.h"

#include "stdlib.h"

#include "math.h"

#include "string.h"

#include "dos.h"

oid mouse (int on_off_xy, int *m_x,int *m_y,int *m_k) ;

oid virusprot (void);

oidа grinit (void) ;

oid outmenu (void);

oid outcursormenu(int punkt);

oid choise_cont_educ(char file[]);

oidа education(int index,int quest_num);

oid outresult(int mark,char mode) ;

oid getout(void );

oid any_key(void);

oid calcxy(void);

oid clrbuff(void);

oid draw_win(int x,int y,char msg[]) ;

oid goodbye(void);

oid inp_data(unsigned char data[]);

oid inputfio(void);

oid mouse (int on_off_xy, int *m_x,int *m_y,int *m_k);

oid timeout () ;

oid savefio (int mark ) ;

int picture (int count, char massiv[], int index);

int choisebil(void);

int choiserandombil(void) ;

int control(int index,int quest_num,int mark,int minute,int *timeout);

int fileop (char file[],char massiv[] ) ;

int msv_tmp(int count,char massiv[]) ;

oid main() {

if (!(massiv =new char [2])){cout<<"Íåõâàòàåò ïàìÿòè";exit(1);}

if (!(buff_image=new char [4а ])){cout<<"Íåõâàòàåò ïàìÿòè";exit(1);}

if (!(massiv1 =new char [2])){cout<<"Íåõâàòàåò ïàìÿòè";exit(1);}

if (!(temp =new char [100 ])){cout<<"Íåõâàòàåò ïàìÿòè";exit(1);}

grinit();

virusprot();

while(1) {

int bilnum=1;

char file[13];

outmenu();

label1:

punkt=menu();

if (punkt==1) {mode='c'; bilnum=choiserandombil();}

if (punkt==2) {mode='e';bilnum=choisebil();}

if (punkt==3) {getout();goto label1;}

sprintf( file, "%d.bil", bilnum );

choise_cont_educ(file);а

}

}

oidа grinit (void) {

int mode, n;

mode = _ERESCOLOR;

struct videoconfig vc;

if( _setvideomode( mode ) == 0 ) {

puts( "Cannot initialize video mode" );

}

n = _registerfonts( "*.fon" );

sprintf( fon_buff, "n%d", 1 );

_getvideoconfig (&vc);

maxx=vc.numxpixels;

_setfillmask(f_mask);

mouse (0,&m_x,&m_y,&m_k);

}

oid outmenu (void) {

mouse (2,&m_x,&m_y,&m_k);

mouse (1,&m_x,&m_y,&m_k);

clrbuff();

_clearscreen(_GCLEARSCREEN);

_setcolor(9);

_floodfill(20,20,1);

int count=fileop("zastavka.prg",massiv);

picture (count,massiv,0);

_setcolor(0);

_rectangle(_GFILLINTERIOR,130,55,530,245);

_setcolor(7);

_rectangle(_GFILLINTERIOR,120,50,520,240);

_setcolor(0);

_setcharsize(16,16);

_setfont( fon_buff );

_setcharsize(50,40);

for (int i=1;i<3;i++){

_grtext(170+i,50," Êîíòðîëü");

_grtext(140+i,115," Îáó÷åíèå ");

_grtext(180+i,182," Âûõîä ") ;

}

_setfont( fon_buff );

_setcharsize(8,9);

_grtext(420,340,"CopyRigth by Andy (C) 1996");

_setcharsize(50,40);

_setfont( fon_buff );

}

int picture (int count, char massiv[], int index){

int i=index;

while (i<count){

switch(massiv[i]){

case 'C':{

i=msv_tmp(i,massiv);

sscanf(temp,"%f,%f,%f,%d",&x,&y,&radius,&color);

_setcolor(color);

float r_ratio=ratio;

double asp_radius=sqrt(radius*radius+radius*radius);

calcxy();

if (radius==12) r_ratio=int (ratio);

if (radius==40) r_ratio=1.0259;

radius=radius/r_ratio;

_ellipse(_GBORDER,x-radius,y-radius/1.4,x+radius,y+radius/1.4);

break;

}

case 'L': {

i=msv_tmp(i,massiv);

sscanf (temp," %f, %f, %f, %f, d,%s",&x,&y,&x1,&y_1,&color,&command);

calcxy();

_setcolor(color);

switch(command){

case 'B': {

_rectangle(_GBORDER,x,y,x1,y_1);

break;

}

case 'F':а {

_rectangle(_GFILLINTERIOR,x,y,x1,y_1);

break;

}

case 'L':а {

_moveto(x1,y_1);

_lineto(x,y);

break;

}

}

break;

}

case 'M': return (i);

case 'F':а {

int count1=fileop("exit.bil",massiv);

picture(count1,massiv,0);

return(0);

}

case 'P': {

char cmd='p';

if (massiv[i+1]=='L'){i=i+1;cmd='l';}

i=msv_tmp(i,massiv);

if (cmd=='p') {

sscanf(temp,"%f,%f,%d,%d",&x,&y,&color,&color1);

calcxy();

_setcolor(color);

_floodfill(x,y,color1);

break;

}

else {

sscanf(temp,"%f,%f,%f,%f,%d",&x,&y,&x1,&y_1,&color);

calcxy();

_setcolor(color);

_moveto(x1,y_1);

_lineto(x,y);

_moveto(x1,y_1);

i=i++;

while (!(int(massiv[i])=='P') &&а i<count) {

i=i-2;

i=msv_tmp(i,massiv);

sscanf (temp,"%f,%f",&x,&y);

calcxy();

_lineto(x,y);

i=i++;

}

i=i+2;

break;

}

}

case 'T': {

i=i+2;

int schet=0,len=0,q=0;

char txtmassiv[80];

while (!(schet ==3) && i<count){

if (int(massiv[i]==',')) schet=schet++;

temp[q]=massiv[i];i++;q++;

}

sscanf(temp,"%f,%f,%d",&x,&y,&color);

while (!(int (massiv[i])==',')) {

txtmassiv[len]=massiv[i];i++;len++;

}

txtmassiv[len]=0;

_setcharsize(16,16);

аcolor1=_getpixel(x+1,y+1);

_setcolor (color|color1);

_moveto(x+xs,y+ys);

_outtext(txtmassiv);

break;

}

case 'V': {

i=msv_tmp(i,massiv);

int count1=fileop(temp,massiv1);

i=i--;

i=msv_tmp(i,massiv);

sscanf(temp,"%f,%f,%f",&xs,&ys,&asp);

aspxs=(asp-xs);

if ((aspxs)==0) {

goodbye();

cout<<" íå äîïóñòèìîå äåëåíèå íà íîëü"<<endl;

exit(1);

}

ratio=(maxx+0)/(aspxs);

if ((aspxs)>320 && (aspxs)<400)а ratio=(639-2)/(aspxs);

if ((aspxs)>270 && (aspxs)<280)а ratio=(639-3)/(aspxs);

if ((aspxs)>210 && (aspxs)<260)а ratio=(639+2.5)/(aspxs);

if ((aspxs)>280 && (aspxs)<300)а ratio=(639+4)/(aspxs);

if ((aspxs)>400 && (aspxs)<411)а ratio=(639-3)/(aspxs);

if ((aspxs)>480) ratio=(639)/(aspxs);

if ((aspxs)>420 && (aspxs)<430)а ratio=(639+2)/(aspxs);

if ((aspxs)>260 && (aspxs)<270)а ratio=(639-2)/(asp-xs);

if ((aspxs)<150 && (aspxs)>140)а ratio=4.1;

if ((aspxs)<110 && (aspxs)>100){

ratio=4.1;

xs=xs-3;

ys=ys-6;

}

if ((aspxs)>100 && (aspxs)<120){

ratio=4.0;

xs=xs-17;

ys=ys-10;

}

if ((aspxs)>121 && (aspxs)<130){

ratio=5.3;

xs=xs+3;

ys=ys+6;

}

if ((aspxs)<160 && (aspxs)>150) ratio=4.11;

if ((aspxs)==160) {

ratio=4.11;

xs=xs+3;

ys=ys+2;

}

if ((aspxs)>170 && (aspxs)<180){

ratio=(639-40)/(aspxs);

xs=xs-5;

ys=ys-3;

}

if ((aspxs)>161 && (aspxs)<170){

ratio=(639-40)/(aspxs);

xs=xs-4;

ys=ys+5;

}

if ((aspxs)<200 && (aspxs)>190) ratio=3.2950;

if ((aspxs)<100 && (aspxs)>95)а {

ratio=5.7;

ys=ys-3;

xs=xs-4;

}

if ((aspxs)<95 && (aspxs)>50) {

ratio=5.9;

ys=ys-3;

xs=xs-6;

}

if ((aspxs)<-215 && (aspxs)>-250){

ratio=2.909;

ys=ys-90;

xs=xs-162;

}

if ((aspxs)<-230 && (aspxs)>-290){

ratio=2.2;

ys=ys-93;

xs=xs-163;

}

if ((aspxs)>300 && (aspxs)<310)а ratio=2.0;

if ((aspxs)==165) {

ratio=3.9;

xs=xs+4;

ys=ys-4;

}

if ((aspxs)==166) {

ratio=3.6;

xs=xs-4;

ys=ys-8;

}

if ((aspxs)==306) ratio=2.0915;

if ((aspxs)==130) {

ratio=4.7;

xs=xs-2;

ys=ys-0;

}

if ((aspxs)==441) ratio=(639+2)/(asp-xs) if ((aspxs)==145) ratio=4.3;

if ((aspxs)==77) {

ratio=7.0;

xs=xs++;

ys=ys++;

}

picture(count1,massiv1,0);

xs=0;ys=0;ratio=1.;

break;

}

case 'W': {

i=msv_tmp(i,massiv);

int count1=fileop(temp,massiv1);

i=i--;

i=msv_tmp(i,massiv);

sscanf(temp,"%f,%f",&xs,&ys);

picture(count1,massiv1,0);

xs=0;ys=0;ratio=1.;

break;

}

}

i++;

}

return (0);

}

oid outcursormenu(int punkt) {

_setfont( fon_buff );

_setcharsize(50,40);

switch (punkt){

case 1:_setcolor (15);

_grtext(170,50,"Êîíòðîëü");

_setcolor (8);

_grtext(140,115,"Îáó÷åíèå");

_grtext(180,182," Âûõîä");

break;

case 2:_setcolor (8);

_grtext(170,50,"Êîíòðîëü");

_setcolor (15);

_grtext(140,115,"Îáó÷åíèå");

_setcolor (8);

_grtext(180,182," Âûõîä ");

break;

case 3:_setcolor (8);

_grtext(170,50,"Êîíòðîëü");

_grtext(140,115,"Îáó÷åíèå");

_setcolor (15);

_grtext(180,182," Âûõîä");

break;

а}

}

int choisebil(void){

draw_win (270,285,"Âûáåðè áèëåò");

int bilnum=1;

while(1){

if (bilnum>88) bilnum=88;

if (bilnum<1)а bilnum=1;

_settextposition(row,40);

cout<<bilnum;

if (bilnum<10) {

_settextposition(row,40);

cout<<bilnum<<" ";

}

key=getch();

if (key==UP) bilnum++;

if (key==PGDW) bilnum=bilnum-10;

if (key==PGUP) bilnum=bilnum+10;

if (key==DOWN) bilnum--;

if (key==ENTER) break;

}

return(bilnum);

}

int choiserandombil(void) {

int bilnum=1,count_key=0,flag=0;

draw_win(270,285,"Âûáåðåì áèëåò");

while (1) {

bilnum++;

if (bilnum>88) bilnum=1;

_settextposition(row,40);

cout<<bilnum;

mouse (3,&m_x,&m_y,&m_k);

if (m_k==0 && flag==0) {count_key++;flag=1;}

if (m_k==1 && flag==1) {count_key++;flag=0;}

if (count_key>2) break;

if (kbhit()) {

if (!(getch()))getch();

break;

}

}

any_key();

return(bilnum);

}

oid choise_cont_educ(char file[]) {

struct dostime_t time;

_dos_gettime(&time);

int count=fileop(file,massiv);

int i=0,quest_num=30,minute=time.minute,time_out=0,mark=0;

if (minute>45 && minute<50) {

time.minute=44;

_dos_settime(&time);

minute=44;

}

if (minute>49 && minute<59) {

time.minute=0;

_dos_settime(&time);

minute=0;

}

if (mode=='c') inputfio();

_clearscreen(_GCLEARSCREEN);

do {

i=i++;

i=picture(count,massiv,i);

mouse (4,&m_x,&m_y,&m_k);

mouse (1,&m_x,&m_y,&m_k);

if (i==0) break;

if (mode=='e') {

education(i,quest_num);

}

if (mode=='c') {

mark=control(i,quest_num,mark,minute,&time_out);

if (time_out==1) {

timeout();break;

}

}

quest_num=quest_num+50;

} while (i>0);

outresult(mark,mode);

}

int control(int index,int quest_num,int mark,int minute,int *timeout) {

intа count=index,count1,color,*tm_out=timeout,flag=1,position=1;

int count_key=0;

int flag_m=0;

struct dostime_t time1;

count=msv_tmp(count,massiv);

sscanf(temp,"%d",&count1);

clrbuff();

color=outcursor (position,count1,count);

while(flag>0) {

_dos_gettime(&time1);

_setcolor (32);

_settextposition(row,69);

printf("%02d:%02d:%02d",time1.hour,time1.minute,time1.second);

if ((time1.minute-minute)==15)а { *tm_out=1;return (1);}

mousecmp (&position,count1,count,&flag,&count_key,&flag_m);

if (kbhit()){

key=getch();

if (key==UP) position--;

if (key==DOWN)а position++;

if (key==SPACE || key==ENTER)а flag=0;

clrbuff();

if (position>count1) position=count1;

if (position<1) position=1;

mouse (2,&m_x,&m_y,&m_k);

color=outcursor (position,count1,count);

mouse (1,&m_x,&m_y,&m_k);

}

}

color=outcursor (position,count1,count);

_setcolor(4);

if (color==1) {

_setcolor(2);

mark++;

}

_floodfill(quest_num,320,0);

return(mark);

}

oidа education(int index, int quest_num){

int count=index,count1;

count=msv_tmp(count,massiv);

sscanf(temp,"%d",&count1);

for (int i=0;i<count1;i++) {

count--;

count=msv_tmp(count,massiv);

sscanf(temp,"%f,%f,%f,%f,%d",&x,&y,&x1,&y_1,&color);

if (color==1) {

_setcolor(13);

_moveto(x,y_1);

_lineto(x,y);

_moveto(x1,y_1);

_lineto(x,y_1);

_moveto(x1,y_1);

_lineto(x1,y);

_moveto(x1,y);

_lineto(x,y);

mouse (2,&m_x,&m_y,&m_k);

any_key();

_setcolor(2);

_floodfill(quest_num,320,0);

break;

}

}

}

oid outresult(int mark,char mode) {

mouse (2,&m_x,&m_y,&m_k);

_setcolor(15);

_rectangle(_GFILLINTERIOR,543,303,613,320);

if (mode=='e') mark=10;

_setcolor(2);

if (mark<9 && mode=='c') {

_setcolor (2);

_grtext(546,301," Ýêçàìåí");

_grtext(552,315,"íå ñäàí");

}

else if (mode=='c') {

_setcolor (4);

_grtext(546,301," Ýêçàìåí");

_grtext(554,315,"а ñäàí ");

}

if ( mode=='e') {

_setcolor (14);

_grtext(546,301,"а Íàæìèòå");

_grtext(548,315," ïðîáåë");

а}

_floodfill(600,250,0);

if (mode=='c')а savefio(mark);

any_key();

}

oid getout(void ){

mouse (2,&m_x,&m_y,&m_k);

_getimage (255,280,380,335,buff_image);

_setcolor(0);

_rectangle(_GFILLINTERIOR,260,285,380,335);

_setcolor(7);

_rectangle(_GFILLINTERIOR,255,280,375,330);

_setcolor (0);

_setcharsize(16,16);

_setfont( fon_buff );

_setcharsize(16,8);

_grtext(270,285,"Âû óâåðåíû");

_grtext(270,310," (Y/N)а ");

while(1){

key=getch();

аif (key=='y' || key=='Y') {

goodbye();

cout<<"Good bye !!!";

exit(0);

}

if (key=='n' || key=='N') break;

}

_putimage(255,280,buff_image,_GPSET);

_setcharsize(8,9);

_setfont( fon_buff );

mouse (4,&m_x,&m_y,&m_k);

mouse (1,&m_x,&m_y,&m_k);

}

oid any_key(void) {

int count_key=0,flag=0;

while (1) {

аmouse (3,&m_x,&m_y,&m_k);

аif (m_k==0 && flag==0) {count_key++;flag=1;}

аif (m_k==1 && flag==1) {count_key++;flag=0;}

аif (count_key>2) break;

аif (kbhit()){

key=getch();

if (!key) getch();

break;

}

}

}

oid calcxy(void) {

xа = (x/ratio+xs);

yа = (y/ratio+ys);

y_1= (y_1/ratio+ys);

x1 = (x1/ratio+xs);

}

oid clrbuff(void) {

#pragma aux clrbuff = \

" push ds" \

" push ax" \

" xor ax,ax" \

" mov ds,ax" \

" mov ax,ds:[0x41a]"\

" mov ds:[0x41c],ax"\

" pop ax"\

" pop ds";

}

oid draw_win(int x,int y,char msg[]) {

_setcolor(0);

_rectangle(_GFILLINTERIOR,240,285,415,335);

_setcolor(7);

_rectangle(_GFILLINTERIOR,235,280,410,330);

_setcolor (0);

_setcharsize(16,16);

_setfont( fon_buff );

_moveto(x,y);

_outgtext(msg);

_setcolor(15);

_rectangle(_GFILLINTERIOR,245,303,395,324);

_settextposition(row,32);

_setcolor (16);

cout<<" ";

}

intа fileop (char file[],char massiv[] ) {

char sym;intа count=0;ifstream f1 (&file[0]);

if (!f1) {

goodbye();

cout<<"Íå ìîãó îêòðûòü ôàéë-";

for (int i=0;i<12;i++) cout<<file[i];

cout<<endl;exit (1);

}

while(f1.get(sym)){massiv[count]=sym;count=count+1;}

return (count);

}

oid goodbye(void) {

union REGPACK regs;

_setvideomode( _DEFAULTMODE );

regs.w.ax=0x0305;

regs.w.bx=0x0201;

intr ( 0x16,&regs);

}

oid inp_data(unsigned char data[]) {

for (int i=0;i<20;i++) data[i]=' ';

_settextposition(row,32);

int count=0,key;

а while (1) {

m01: key=getch();

if (!key) {getch();goto m01;}

if (key==ENTER) break;

if (key==8) {

count--;data[count]=' ';

count--;goto m02;

}

if (key<32) goto m01;

data[count]=key;

m02: _settextposition(row,32);

for (int i=0;i<18;i++){cout<<data[i];}

count++;

if (count>17|| count<0) {

count=0;

for (i=0;i<20;i++){data[i]=' ';}

}

}

for (i=count;i<18;i++) data[i]='_';

}

oid inputfio(void)а {

draw_win(256,285,"Ââåäèòå Âàøå èìÿ");

inp_data(name);

draw_win(246,285,"Ââåäèòå Âàøó ôàìèëèþ");

inp_data(subname);

}

oid mouse (int on_off_xy, int *m_x,int *m_y,int *m_k) {

union REGPACK regs;

int mx,my,mk;

int mouse_on_off=on_off_xy;

if (mouse_on_off==0 )

{

regs.w.ax=0;

intr (0x33,&regs);

}

if (mouse_on_off==1 )

{

regs.w.ax=1;

intr (0x33,&regs);

}

if (mouse_on_off==2 )

{

regs.w.ax=2;

intr (0x33,&regs);

}

if (mouse_on_off==4 )

{

regs.w.dx=1;

regs.w.cx=1;

regs.w.ax=4;

intr (0x33,&regs);

}

if (mouse_on_off==3 )

{

regs.w.ax=3;

intr (0x33,&regs);

mx=regs.w.cx;

my=regs.w.dx;

mk=regs.w.bx;

*m_x=mx;

*m_y=my;

*m_k=mk;

}

}

int menu() {

int key,punkt=1;m_k=0;

outcursormenu (punkt);

mouse (4,&m_x,&m_y,&m_k);

mouse (1,&m_x,&m_y,&m_k);

while (1) {

mouse (3,&m_x,&m_y,&m_k);

if (m_k==1) {

if (m_x>190 && m_y>60 && m_x<450 && m_y<100)

{punkt=1;break;}

if (m_x>180 && m_y>120 && m_x<450 && m_y<170)

{punkt=2;break;}

if (m_x>210 && m_y>190 && m_x<390 && m_y<230)

{punkt=3;break;}

}

if (kbhit()) {

if (punkt==0) punkt=1;

if (punkt==4) punkt=3;

key=getch();

if (key==UP) punkt--;

if (key==DOWN) punkt++;

if (key==ENTER || key==SPACE)а reak;

if (key==ESC) getout();

outcursormenu (punkt);

}

}

mouse (2,&m_x,&m_y,&m_k);

outcursormenu (punkt);

return(punkt);

}

oid mousecmp(int *position,int c1,int c,int*flag,int *count_key,int *flag_m) {

int count=c;

mouse (3,&m_x,&m_y,&m_k);

if (m_k==0 && *flag_m==0) {*count_key=*count_key+1;*flag_m=1;}

if (m_k==1 && *flag_m==1) { *count_key=*count_key+1;*flag_m=0;}

if (*count_key>1) {

for (int i=1;i<c1+1;i++) {

count--;

count=msv_tmp(count,massiv);

sscanf(temp,"%f,%f,%f,%f,%d",&x,&y,&x1,&y_1,&color);

if (m_x>x && m_y>y && m_x<x1 && m_y<y_1) {

*position=i;

*flag=0;

mouse (2,&m_x,&m_y,&m_k);

}

elseа *count_key=0;

}

}

}

int msv_tmp(int count,char massiv[]) {

int q=0,i=count+2;

for(int z=0;z<100;z++) temp[z]=0;

while (!(massiv[i]==10)) {

аtemp[q]=massiv[i];

i++;

q++;

}

temp[q]=0;

return(i);

}

oid timeout () {

mouse (2,&m_x,&m_y,&m_k);

ratio=1.0,xs=0,ys=0,y_1=0,y=0,x=0,x1=0,aspxs=1;

int count=fileop("exit.bil",massiv);

picture(count,massiv,0);

}

oid savefio (int mark ) {

int i=0,u=0;

char massmark[2];

_settextposition(1,1);

while (name[i] !=13 && i<19) {

massiv2[i]=name[i];

i++;

}

massiv2[i]=13;

i++;

while (subname[u] !=13 && u<19) {

massiv2[i]=subname[u];

u++;

i++;

}

massiv2[i]=13;

i++;

sprintf( massmark,"%d",mark);

massiv2[i]=massmark[0];

i++;

massiv2[i]=13;

ofstream f1 ("data.rec");

if (!f1) {

goodbye();

cout<<"Íå ìîãó îòêðûòü ôàéë-";

cout<<"data.rec"<<endl;

exit (1);

}

i=0;

while(massiv2[i]){

f1.put(massiv2[i]);

i++;

}

}

}


3 ОРГАНИЗАЦИОННАЯ ЧАСТЬ

3.1 Необходимое оборудование

Для работы программы требуется компьютер совместимый с IBM PC и процессором Intel 386. Также требуется видеоадаптер VGA или любой другой поддерживающий разрешение 640X480 c 256 цветами. Память один мегабайт. Необходимо не менее полутора мегабайт свободного места на диске. MS-DOS аверсии не ниже 5.0 или любая другая ОС поддерживающая интерфейса данной версии.

Желателен 486 компьютер с математическим сопроцессором. 2 мегабайта оперативной памяти. Остальные требования без изменений.

3.2 Руководство по инсталляции

Чтобы становить программу на жесткий диск становите инсталляционную дискету в дисковод и запустите файл install.exe. Программой инсталляции вам будет предложено выбрать директорию в которую вы хотите становить программу. В случае затруднения можно нажать клавишу F1 и получить справку.

Для того, чтобы запустить программу в командной строке напишите pdd.exe и нажмите клавишу Enter.

Данные о последнем экзаменуемом содержаться в файле data.rec.В нем содержится фамилия и имя экзаменуемого, также количество правильных ответов.

Примечание:

В случае если какой-либо текст в программе будет отображаться неправильно, то следует запустить программу keyrus.com.


4 ЭКОНОМИЧЕСКАЯ ЧАСТЬ

4.1 Расчет экономической выгоды

Существует несколько источников повышения эффективности. Кратко рассмотрим несколько основных источников.

Прямые источники - лежат "на поверхности", непосредственно влияют на затраты трудовых и денежных ресурсов в процессе обучения ППД (например- инструктор обучал 20 человек за день обучая по 5 пунктам ПДД, после внедрения программы ППД - 40 человек за день по 10 пунктам ). Обычно именно они учитываются в Технико-экономическом Обосновании( далее ТЭО).

Косвенные источники - влияют на затраты опосредованно и обычно с трудом формализуются и поддаются чету. По части параметров тесно связаны с прямыми источниками (например - производительность труда инструктора связана с сокращением сроков обучения). Часто их доля в конечной эффективности системы бывает сравнима с прямыми источниками или даже превышает ее, однако из- за сложноти чета в расчете ТЭО косвенные источники фигурируют редко.

Скрытые источники - суть скрытых источников заключается в экстраполировании ситуации в сторону "ЕСЛИ НЕ": что будет если попытаться достичь тех же целей и показателей без применения компьютерной программы ( например - объема выпуска новых водителейа за счет найма дополнительных инструкторов ). Степень влияния скрытых источников на реальную эффективность системы бывает самой большой (именно поэтому у нас в стране повсеместно внедряются компьютеры несмотря на дешевый труд инструктор и дорогую вычислительную технику), однако в расчете ТЭО они почти никогда не фигурируют.

Рассмотрим методику расчета Скрытыха источников.

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

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

- цель расчета - показать возможность окупаемости системы;

- основные источники эффективности - скрытые.

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

Покажем расчет экономии средств за счет условного не найма дополнительных инструкторов.

Для расчета был выбран источник скрытой эффективности за счет словного не найма дополнительных инструкторов , так как имеется достаточно количество данных по нему.

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

- планируется минимальное повышение производительности труда инструктора в полтора раза;

- общее количество инструкторов в городе примерно 50 человек. Будем считать исходя из этого что число словно не нанятых специалистов составит:

50х1.5-50=25 чел.

кроме того, словимся, что данное количество инструкторов вполне может быть загружено работой (такую веренность нам дает проведенное обследование школ обучения вождению города). Для вышеуказанного количества сотрудников необходимо:

- выделить фонд заработной платы;

- выделить классы для обучения;

- оборудовать рабочие места;

- обеспечить средства связи и коммуникации;

- выделить жилой фонд;

- выделить расходные материалы.

По данным премьер-министра правительства России Черномырдина средняя заработная плата составляет в пересчете 110 долларов США. Сумма налогов на фонд заработной платы колеблется в зависимости от местных тарифов: но в среднем составляет 68 копеек на 1 рубль. Таким образом фонд заработной платы 25 инструкторов с четом налогообложения эа год будет следующим :

100х25х1.68х12=50400 дол-США в год

Для размещения дополнительных инструкторов требуется производственное помещение. Норма площади для одного инструктора по требованиям охраны труда и техники безопасности составляет 3 квадратных метра. Кроме этого на каждого человека требуется порядка 2 квадратных метров

вспомогательных площадей (проходы, коридоры, площадки и т.д.).Преподавание идет два раза в день. Из этого следует что число преподавателей, обучающих в один день в два раза меньше. Еще нужно учитывать, что они не могут преподавать в одном классе одновременно, средняя площадь класса равна примерно 60 квадратных метров. Общая площадь на 25 человек:

12*(3+2)+12*60=780 кв.м

По данным Госкомстата в октябре 1996 года средняя стоимость оффисных и отапливаемых производственных помещений была более 150 долларов США за квадратный метр. Соответсвенно размещение 25 человек обойдется:

150*780=117 дол. США

Кроме этого, предприятия будут постоянно нести расходы по коммунальному обслуживанию этих помещений. Эти расходы по сведениям Госкомстата ва 1996 года были не примерно 0.2 доллара США за квадратный метра Следовательно за год коммунальные расходы составят:

0.2х780х12=1872 дол-США в год

Каждое рабочее место инструктора необходимо оборудовать. Ориентировочно состав необходимого оборудования следующий:

1 стул на одного человека стоимостью 10 долларов США

1 стол на одного человека стоимостью 100 долларов США

1 телефон на десять человек стоимостью 20 долларов США

1 шкаф на 15 человек 100 долларов США

Расходы на оборудование :

(10+100)*12+(100+20)*12=2760 дол. США

Кроме оборудования для работы инструктору необходимы расходные материалы - бумага, карандаши, ручки, ластики и т.д.)- Затраты на них составляют в среднем за месяц в расчете на одного работника 1 доллар США. В год стоимость расходных материалов получится:

1*25*12=300 дол. США в год

Вновь нанимаемых сотрудников необходимо обеспечить жильем. Средний состав семьи для молодых специалистов в возрасте 22 - 35 лет по данным статистики составляет 2 человека. Для семьи из двух человек по существующим нормам полагается однокомнатная квартира. Средняя полная площадь таких квартир - 30 кв-метров. Минимальная стоимость жилья составляет 200 долларов США за один квадратный метр общей площади. То есть жилье для 25 новых конструкторов будет стоить:

200*30*25= 15 дол. США

Таким образом наем 25 инструкторов для величения объема выпуска курсантов в полтора раза приведет к единовременным затратам в сумме:

15+2760+117@ 269760 дол. США

Кроме этого ежегодные расходы на содержание данного штата в сумме будут равны:

50400+1872+300@ 52572 дол. США в год

Сумма расходов на составляет примерно 156
дол. США (расходы на покупку компьютеров для 10 школ по 30 компьютеров в каждую школу ценойа 500 долларов =15 долларов США, покупка программы для каждого компьютера ценой 20 долларов =6 дол. США ). Компьютеры можно использовать и для обучения по другим программам, что дает дополнительную прибыль. Таким образом повышение производительности труда путем внедрения программы ПДД сэкономит за первый год эксплуатации системы:

(269760+52572)-156@ 166332 дол США

то есть программа полностью окупает себя же на первом году эксплуатации.


Приведенные выше цифры бедительно показывают эффективность решения задачи повышения производительности и качества обучения за счет внедрения программы ПДД.


5 ОХРАНА ТРУДА И ОКРУЖАЮЩЕЙ СРЕДЫ

5.1.Техника безопасности при работе за компьютером

5.1.1. В лаборатории вычислительной техники (ЛВТ) становлена дорогостоящая сложная и требующая осторожного и аккуратного обращения аппаратура - компьютеры (ПЭВМ), так же другие технические средства. Поэтому :

5.1.1.1. Бережно обращайтесь с этой техникой;

5.1.1.2. Не входите в лабораторию в верхней одежде;

5.1.1.3. Войдя в лабораторию спокойно занимайте свои места.

5.1.2. На вашем рабочем месте размещены составные части ПЭВМ - системный блок, клавиатура и монитор (дисплей).Во время работы лучевая трубка монитора (дисплея) работает под высоким напряжением.

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

5.1.2.1.Трогать разъемы соединительных кабелей;

5.1.2.2.Прикасаться к экрану и к тыльной стороне монитора, клавиатуры;

5.1.2.3.Прикасаться к питающим проводам и стройствам заземления;

5.1.2.4.Включать и выключать аппаратуру без казания преподавателя;

5.1.2.5.Класть дискеты, книги тетради на монитор и клавиатуру;

5.1.2.6.Работать во влажной одежде и влажными руками;

5.1.2.7.Использовать в работе дискеты не зарегистрированные в вТ.

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

Перед началом работы :

5.1.3.1.Убедитесь в отсутствии видимых повреждений аппаратуры и соединительных кабелей на вашем рабочем месте;

5.1.3.2.Сядьте так, чтобы линия взора приходилась в центр экрана, что дает возможность не наклоняясь пользоваться клавиатурой и воспринимать, передаваемую на экран монитора, информацию;

5.1.3.3.Хорошо разберитесь в особенностяха применяемых в работе устройств;

5.1.3.4.В случае необходимости обращайтесь к преподавателю или лаборанту;

5.1.3.5.Запишите в журнал регистрации время начала и окончания работы на ПЭВМ;

5.1.3.6.Начинайте работу только по казанию преподавателя.

5.1.4.Во время работы ПЭВМ лучевая трубка монитора является источником электромагнитного излучения, неблагоприятно воздействующего на зрение при работе вблизи экрана. Поэтому следует соблюдать расстояние между вашими глазами и экраном монитора равное 60-70 см., допустимое расстояние не менее 30 см.

5.1.5.Следите за осанкой, не допускайте искривления позвоночника.

5.1.6. Во время работы:

5.1.6.1.Строго выполняйте все казанные выше правила, также текущие казания преподавателей;

5.1.6.2. Следите за исправностью аппаратуры и немедленно прекращайте работу при появлении необычного звука или самопроизвольного выключения аппаратуры. Немедленно сообщайте об этом преподавателю или лаборанту.

5.1.6.3. Плавно нажимайте на клавиши, не допускайте резких даров;

5.1.6.4. Работайте на клавиатуре чистыми руками;

5.1.6.5. Никогда не пытайтесь самостоятельно странить неисправность в работе аппаратуры.

5.1.7. По окончании работы:

5.1.7.1.Подготовьте компьютер к выключению (завершите все работающие программы.), чтобы не потерять не сохраненные данные;

5.1.7.2.Отключите тумблер СЕТЬ;

5.1.7.3. Запишите в журнале регистрации время окончания работы.