Створення навчальної програми по вивченню іноземної мови
Розробка кросплатформового інструменту електронного тестування учнів молодших та середніх класів по іноземній мові. Вибір середовища розробки та системи контролю версій. Опис мови програмування Java та лістинг програми. Апаратні та програмні вимоги.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | украинский |
Дата добавления | 26.10.2010 |
Размер файла | 608,3 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
3 -- кнопка відповіді та переходу до наступного тесту; аналогічну функцію виконує клавіша “Enter” на клавіатурі;
4 -- таймер зворотнього відліку у секундах; по закінченню відліку виконується функція, аналогічна натисненню кнопки 3;
5 -- переклад слова;
6 -- кнопка голосової (звукової) підказки; якщо звукового файлу не знайдено, кнопка не зображується;
7 -- порядковій номер тесту.
Розглянемо порядок роботи з текстом.
Дамо відповідь на перший тест (рис. 6). Натискаємо на клавіатурі клавіші “p” та “l” англійської розкладки, на українську розкладку клавіатури програма не реагує.
Рисунок 6 -- відповідь на перший тест
Натискаємо “Enter” або кнопку “Дати відповідь” і тестування переходить до другого тесту.
На другий тест навмисно відповімо невірно (рис. 7). Замість літери “A” запишемо “O”. Це нам потрібно для перевірки роботи алгоритму оцінювання.
Рисунок 7 -- Навмисно не вірна відповідь на тест 2
Далі відповідаємо вірно на тести від 3 до 10, всього в уроці “first” 10 тестових слів (тестів).
На третій тест правильна відповідь слово “DOG”, зображена на рисунку 8.
Рисунок 8 -- Відповідь на третій тест
У вікні тесту номер 4 відсутній таймер (рис. 8), також відсутній таймер в тесті 2. Це означає що тест буде очікувати відповіді доти, доки не буде натиснена кнопка “Дати відповідь” або клавіша “Enter” на клавіатурі. Це сталось завдяки тому, що в рядках файлу words.csv відсутнє або дорівнює 0 значення в 4-й колонці: cat;c_t;Кішка -- другий тест, та doll;d_ll;Лялька;0 -- четвертий тест.
Відповідь на тест номер 4 - “DOLL”.
Рисунок 9 -- відповідь на четвертий тест
Дамо відповіді на тести, що залишилися:
- відповідь на тест 5 “TREE”;
- відповідь на тест 6 “DOOR”;
- відповідь на тест 7 “CLOCK”;
- відповідь на тест 8 “BIRD”;
- відповідь на тест 9 “CLOUD”;
- відповідь на тест 10 “BEAR”.
По закінченню тестування на екран видається результат тестування, як показано на рисунку 10.
Рисунок 10 -- Результати тестування
У результати тестування входять такі пункти:
- прізвище та ім'я тестованого учня;
- назва уроку;
- загальне число балів, яке дорівнює кількості невідомих літер у всіх тестах, та кількість правильно названих літер у всіх тестах;
- процент успішності відповіді, який вираховується по формулі “100 ділити на кількість невідомих літер та помножити на кількість правильно названих літер” в методі,getProcent класу Words та округлюється до цілого за допомогою класу BigDecimal:
int getProcent() {
double pr;
pr = (100.00 / all) * all_clear;
BigDecimal x = new BigDecimal(pr);
return x.setScale(0, BigDecimal.ROUND_HALF_DOWN).intValue();
};
- оцінка в балах от 2 до 5, яка вираховується в залежності від проценту успішності в методі getBale() класу Words:
int getBale() {
float procent;
procent = getProcent();
if(procent<50){
return 2;
} else
if (procent<=75) {
return 3;
} else
if (procent<=95){
return 4;
} else
if (procent>95) {
return 5;
} else {
return -1;
}
}
При проценті менше 50% - оцінка 2, від 50% до 75% оцінка 3, від 75% до 95% оцінка 4, 95% і більше оцінка 5;
- виводиться таблиця, в якій перший стовпець це номер тесту, другий -- вірне слово, третій -- введене користувачем слово.
Також всі результати дописуються (без стирання попередніх результатів тестування інших учнів) в файл results.txt для наступного перегляду їх вчителем, в такому форматі:
Результати тестування Махно Марія (урок lessons/first/):
Загальне число балів 14 из 15.
Оцінка: 4 (93% успіху)
Тест №1 слово APPLE написано як APPLE
Тест №2 слово CAT написано як COT
Тест №3 слово DOG написано як DOG
Тест №4 слово DOLL написано як DOLL
Тест №5 слово TREE написано як TREE
Тест №6 слово DOOR написано як DOOR
Тест №7 слово CLOCK написано як CLOCK
Тест №8 слово BIRD написано як BIRD
Тест №9 слово CLOUD написано як CLOUD
Тест №10 слово BEAR написано як BEAR
Для завершення програми достатньо натиснути кнопку “Вихід”, або скористатись функціоналом операційної системи і закрити вікно.
3.4 З а х о д и п о о б с л у г о в у в а н н ю п р о г р а м и
Всі сирцеві коди та саму програму я розмістила в мережі Інтернет за адресою: http://code.google.com/p/smallenglish/, а тому, розробленна мною програма доступна всім зацікавленим.
Також можна скористатися системою контролю версій SVN (Subversion) і отримати зріз актуальної гілки розробки. Зробити це можна командою svn checkout http://smallenglish.googlecode.com/svn/trunk/ smallenglish-read-only або скориставшись одним із менеджерів роботи с SVN, наприклад qsvn.
Установка програми на операційній системі GNU\Linux (на прикладі openSUSE 11.0):
- установка java: sudo zypper install java-1_6_0-sun
- отримання архіву прогрими: wget http://smallenglish.googlecode.com/ files/SmallEnglish.tar.gz
- розкриття архіву: tar xvfz SmallEnglish.tar.gz
- запуск програми: cd SmallEnglish && sh run.sh
Структура вихідних кодів:
src
`-- mahno
`-- masha
`-- smallenglish
|-- Login.java
|-- Main.java
|-- Test.java
|-- Timer.java
|-- Wave.java
`-- Words.java
3.5 Л і с т і н г к о д у п р о г р а м и L o g i n. j a v a:
package mahno.masha.smallenglish;
import java.awt.BorderLayout;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
import java.awt.Dimension;
import java.awt.Point;
import java.io.File;
import javax.swing.JComboBox;
class Login {
private JFrame jFrame = null;
private JPanel jContentPane = null;
private JLabel jLabel = null;
private JButton jButton = null;
private JPanel jPanel = null;
private JTextField name = null;
private JPanel jPanel1 = null;
String l;
private JLabel jLabel2 = null;
private JComboBox Lesss = null;
/**
* This method initializes jFrame
*
* @return javax.swing.JFrame
*/
JFrame getJFrame() {
if (jFrame == null) {
jFrame = new JFrame();
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jFrame.setSize(300, 200);
jFrame.setLocation(new Point(0, 0));
jFrame.setResizable(false);
jFrame.setContentPane(getJContentPane());
jFrame.setTitle("Вхід");
}
return jFrame;
}
/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getJContentPane() {
if (jContentPane == null) {
jLabel = new JLabel();
jLabel.setText("Ввести прізвище та ім'я:");
jContentPane = new JPanel();
jContentPane.setLayout(new BorderLayout());
jContentPane.add(getJPanel1(), BorderLayout.SOUTH);
jContentPane.add(getJPanel(), BorderLayout.CENTER);
}
return jContentPane;
}
/**
* This method initializes jButton
*
* @return javax.swing.JButton
*/
private JButton getJButton() {
if (jButton == null) {
jButton = new JButton();
jButton.setText("Вхід");
jButton.setEnabled(false);
jButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
doLogin();
}
});
}
return jButton;
}
void doLogin(){
if(jButton.isEnabled()){
Main.setEnv(name.getText(),l);
jFrame.setVisible(false);
jFrame.dispose();
}
}
/**
* This method initializes jPanel
*
* @return javax.swing.JPanel
*/
private JPanel getJPanel() {
if (jPanel == null) {
GridBagConstraints gridBagConstraints12 = new GridBagConstraints();
gridBagConstraints12.fill = GridBagConstraints.VERTICAL;
gridBagConstraints12.gridy = 3;
gridBagConstraints12.weightx = 1.0;
gridBagConstraints12.gridx = 0;
GridBagConstraints gridBagConstraints11 = new GridBagConstraints();
gridBagConstraints11.gridx = 0;
gridBagConstraints11.gridy = 2;
jLabel2 = new JLabel();
jLabel2.setText("Урок");
GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
gridBagConstraints1.gridx = 0;
gridBagConstraints1.gridy = 0;
GridBagConstraints gridBagConstraints = new GridBagConstraints();
gridBagConstraints.fill = GridBagConstraints.VERTICAL;
gridBagConstraints.gridy = 1;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.gridx = 0;
jPanel = new JPanel();
jPanel.setLayout(new GridBagLayout());
jPanel.add(getName(), gridBagConstraints);
jPanel.add(jLabel, gridBagConstraints1);
jPanel.add(jLabel2, gridBagConstraints11);
jPanel.add(getLesss(), gridBagConstraints12);
}
return jPanel;
}
/**
* This method initializes name
*
* @return javax.swing.JTextField
*/
private JTextField getName() {
if (name == null) {
name = new JTextField();
name.setPreferredSize(new Dimension(250, 19));
name.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyTyped(java.awt.event.KeyEvent e) {
if(name.getText().length()>3 & l!=null){
jButton.setEnabled(true);
if(e.getKeyChar()=='\n'){
doLogin();
}
} else {
jButton.setEnabled(false);
}
}
});
}
return name;
}
/**
* This method initializes jPanel1
*
* @return javax.swing.JPanel
*/
private JPanel getJPanel1() {
if (jPanel1 == null) {
jPanel1 = new JPanel();
jPanel1.setLayout(new GridBagLayout());
jPanel1.add(getJButton(), new GridBagConstraints());
}
return jPanel1;
}
/**
* This method initializes Lesss
*
* @return javax.swing.JComboBox
*/
private JComboBox getLesss() {
if (Lesss == null) {
Lesss = new JComboBox();
Lesss.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent e) {
l=e.getItem().toString();
}
});
}
return Lesss;
}
public void Scan(String d){
File dir = new File(d);
String[] files = dir.list();
for(int i=0;i<files.length;i++){
if(new File(d+"/"+files[i].toString()+"/"+Main.ftxt).exists()) {
addL(files[i].toString());
}
}
}
void addL(String s){
Lesss.addItem(new String(s));
}
}
Лістинг Main.java:
package mahno.masha.smallenglish;
import javax.swing.SwingUtilities;
public class Main {
final static int max_length = 16;
static Test test = null;
static Login login = null;
static String name;
static String less;
static String workdir;
static Words words;
final static String ftxt = "words.csv";
final static String lessdir = "lessons/";
final static String iocharset = "UTF-8";
final static String helppage = "system/help.html";
public static void main(String[] args) {
workdir = System.getProperty("user.dir")+"/";
doLogin();
}
public static void setEnv(String n,String l){
name = n;
less = l;
login = null;
doTest();
}
static void doTest(){
test = new Test();
SwingUtilities.invokeLater(new Runnable() {
public void run() {
test.getJFrame().setVisible(true);
}
});
words = new Words(workdir,lessdir+less+"/",name,ftxt);
}
static void doLogin(){
login = new Login();
SwingUtilities.invokeLater(new Runnable() {
public void run() {
login.getJFrame().setVisible(true);
login.Scan(workdir+lessdir);
}
});
}
public static void nextTest(){
words.nextTest();
test.rePaint();
}
public static void showHelp() {
java.awt.Desktop desktop = java.awt.Desktop.getDesktop();
try {
java.net.URI uri = new java.net.URI( "file://"+workdir+helppage );
desktop.browse( uri );
}
catch ( Exception er ) {
// System.err.println( er.getMessage() );
}
}
}
Лістинг Test.java:
package mahno.masha.smallenglish;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.awt.BorderLayout;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;
import java.awt.Point;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JMenuItem;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JFrame;
import javax.swing.JDialog;
import javax.swing.Timer;
import java.awt.GridBagLayout;
import java.awt.Dimension;
import javax.swing.JButton;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridBagConstraints;
import java.awt.Color;
import java.awt.ComponentOrientation;
class Test {
final String question = "_"; // @jve:decl-index=0:
private JFrame jFrame = null; // @jve:decl-index=0:visual-constraint="10,10"
private JPanel jContentPane = null;
private JMenuBar jJMenuBar = null;
private JMenu fileMenu = null;
private JMenu helpMenu = null;
private JMenuItem exitMenuItem = null;
private JMenuItem aboutMenuItem = null;
private JDialog aboutDialog = null;
private JPanel aboutContentPane = null;
private JLabel aboutVersionLabel = null;
private JPanel top = null;
private JPanel bottom = null;
private JPanel left = null;
private JPanel right = null;
private JPanel screen = null;
private JButton button = null;
private JPanel pole = null;
private int lSize = 50;
private JPanel jPanel = null;
private Polekeys polekey[] = new Polekeys[Main.max_length]; // @jve:decl-index=0:
private Timer timer;
final Color bg = new Color(0x5B9DED);
final Color bn = new Color(0xE6F0FB);
boolean iskey = false;
boolean isend = false;
boolean cursor = true;
private JMenuItem instructionMenuItem = null;
public void rePaint() {
pole.repaint();
screen.repaint();
}
public void setFocus(){
pole.requestFocus();
}
/**
* This method initializes jFrame
*
* @return javax.swing.JFrame
*/
JFrame getJFrame() {
if (jFrame == null) {
jFrame = new JFrame();
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jFrame.setPreferredSize(new Dimension(820, 760));
jFrame.setResizable(false);
jFrame.setJMenuBar(getJJMenuBar());
jFrame.setSize(820, 760);
jFrame.setContentPane(getJContentPane());
jFrame.setTitle("SmallEnglish");
}
return jFrame;
}
/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(new BorderLayout());
jContentPane.setPreferredSize(new Dimension(20, 110));
jContentPane.add(getTop(), BorderLayout.NORTH);
jContentPane.add(getBottom(), BorderLayout.SOUTH);
jContentPane.add(getLeft(), BorderLayout.WEST);
jContentPane.add(getRight(), BorderLayout.EAST);
jContentPane.add(getScreen(), BorderLayout.CENTER);
jContentPane.setFocusable(false);
}
return jContentPane;
}
/**
* This method initializes jJMenuBar
*
* @return javax.swing.JMenuBar
*/
private JMenuBar getJJMenuBar() {
if (jJMenuBar == null) {
jJMenuBar = new JMenuBar();
jJMenuBar.add(getFileMenu());
jJMenuBar.add(getHelpMenu());
}
return jJMenuBar;
}
/**
* This method initializes jMenu
*
* @return javax.swing.JMenu
*/
private JMenu getFileMenu() {
if (fileMenu == null) {
fileMenu = new JMenu();
fileMenu.setText("Файл");
fileMenu.add(getExitMenuItem());
}
return fileMenu;
}
/**
* This method initializes jMenu
*
* @return javax.swing.JMenu
*/
private JMenu getHelpMenu() {
if (helpMenu == null) {
helpMenu = new JMenu();
helpMenu.setText("Допомога");
helpMenu.add(getInstructionMenuItem());
helpMenu.add(getAboutMenuItem());
}
return helpMenu;
}
/**
* This method initializes jMenuItem
*
* @return javax.swing.JMenuItem
*/
private JMenuItem getExitMenuItem() {
if (exitMenuItem == null) {
exitMenuItem = new JMenuItem();
exitMenuItem.setText("Вихід");
exitMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
}
return exitMenuItem;
}
/**
* This method initializes jMenuItem
*
* @return javax.swing.JMenuItem
*/
private JMenuItem getAboutMenuItem() {
if (aboutMenuItem == null) {
aboutMenuItem = new JMenuItem();
aboutMenuItem.setText("Про програму");
aboutMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JDialog aboutDialog = getAboutDialog();
aboutDialog.pack();
Point loc = getJFrame().getLocation();
loc.translate(20, 20);
aboutDialog.setLocation(loc);
aboutDialog.setVisible(true);
}
});
}
return aboutMenuItem;
}
/**
* This method initializes aboutDialog
*
* @return javax.swing.JDialog
*/
private JDialog getAboutDialog() {
if (aboutDialog == null) {
aboutDialog = new JDialog(getJFrame(), true);
aboutDialog.setTitle("Про програму");
aboutDialog.setContentPane(getAboutContentPane());
}
return aboutDialog;
}
/**
* This method initializes aboutContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getAboutContentPane() {
if (aboutContentPane == null) {
aboutContentPane = new JPanel();
aboutContentPane.setLayout(new BorderLayout());
aboutContentPane.add(getAboutVersionLabel(), BorderLayout.CENTER);
}
return aboutContentPane;
}
/**
* This method initializes aboutVersionLabel
*
* @return javax.swing.JLabel
*/
private JLabel getAboutVersionLabel() {
if (aboutVersionLabel == null) {
aboutVersionLabel = new JLabel();
aboutVersionLabel.setText("smallEnglish v.0.6\n by Masha\n mailto:masha.tar.gz@gmail.com");
aboutVersionLabel.setHorizontalAlignment(SwingConstants.CENTER);
}
return aboutVersionLabel;
}
/**
* This method initializes top
*
* @return javax.swing.JPanel
*/
private JPanel getTop() {
if (top == null) {
top = new JPanel();
top.setLayout(new GridBagLayout());
top.setPreferredSize(new Dimension(0, 10));
top.setBackground(bg);
top.setFocusable(false);
}
return top;
}
/**
* This method initializes bottom
*
* @return javax.swing.JPanel
*/
private JPanel getBottom() {
if (bottom == null) {
GridBagConstraints gridBagConstraints11 = new GridBagConstraints();
gridBagConstraints11.gridx = 0;
gridBagConstraints11.gridy = 1;
GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
gridBagConstraints1.fill = GridBagConstraints.VERTICAL;
gridBagConstraints1.gridy = 0;
gridBagConstraints1.weightx = 1.0;
gridBagConstraints1.gridx = 0;
bottom = new JPanel();
bottom.setLayout(new BorderLayout());
bottom.setPreferredSize(new Dimension(820, 110));
bottom.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);
bottom.setBackground(bg);
bottom.add(getPole(), BorderLayout.CENTER);
bottom.add(getJPanel(), BorderLayout.SOUTH);
bottom.setFocusable(false);
}
return bottom;
}
/**
* This method initializes left
*
* @return javax.swing.JPanel
*/
private JPanel getLeft() {
if (left == null) {
left = new JPanel();
left.setLayout(new GridBagLayout());
left.setPreferredSize(new Dimension(10, 0));
left.setBackground(bg);
left.setFocusable(false);
}
return left;
}
/**
* This method initializes right
*
* @return javax.swing.JPanel
*/
private JPanel getRight() {
if (right == null) {
right = new JPanel();
right.setLayout(new GridBagLayout());
right.setPreferredSize(new Dimension(10, 0));
right.setBackground(bg);
right.setFocusable(false);
}
return right;
}
/**
* This method initializes screen
*
* @return javax.swing.JPanel
*/
private JPanel getScreen() {
if (screen == null) {
screen = new JPanel(){
private static final long serialVersionUID = 1L;
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D gr = (Graphics2D) g;
gr.setColor(Color.GRAY);
gr.fillRect(0, 0, 800, 600);
Main.words.getImage(gr);
if(Main.words.isStarted()){
Main.words.sndIcon(gr);
gr.setColor(Color.gray);
gr.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 16));
gr.drawString("Тест №"+Main.words.getCur()+" з "+Main.words.getN(), 11,21 );
gr.setColor(Color.blue);
gr.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 16));
gr.drawString("Тест №"+Main.words.getCur()+" з "+Main.words.getN(), 10,20 );
}
/* if(iskey){
gr.setColor(Color.white);
//gr.fillOval(5, 210, 780, 150);
gr.fillRoundRect(20, 260, 750, 50, 10, 10);
gr.setColor(Color.BLACK);
gr.drawRoundRect(20, 260, 750, 50, 10, 10);
*/
Main.words.drawRus(gr);
if(isend){
// ffg nf
gr.setColor(Color.white);
gr.fillRect(0, 0, 800, 600);
Main.words.getSummaryG(gr);
}
};
};
screen.setLayout(new GridBagLayout());
screen.setBackground(bg);
screen.setPreferredSize(new Dimension(800, 600));
screen.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent e) {
if(e.getX()>660 && e.getX()<760 && e.getY()>460 && e.getY()<560 && Main.words.isWav()){
Main.words.Say();
}
}
});
screen.setFocusable(false);
//img = new BufferedImage(800,600,BufferedImage.TYPE_INT_RGB);
}
return screen;
}
/**
* This method initializes button
*
* @return javax.swing.JButton
*/
private JButton getButton() {
if (button == null) {
button = new JButton();
button.setText("Розпочати тест");
button.setPreferredSize(new Dimension(200, 30));
button.setBackground(bn);
button.setForeground(Color.black);
button.setFont(new Font("Dialog", Font.BOLD, 18));
button.setHorizontalAlignment(SwingConstants.CENTER);
button.setFocusable(false);
button.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
doClick();
}
});
}
return button;
}
public void Click(){
doClick();
}
private void doClick(){
if(!isend){
if(!Main.words.isStarted()){
button.setText("Дати підповідь");
} else {
doSumary();
}
Main.nextTest();
initPole();
if(!Main.words.isStarted()){
button.setText("Вийти");
isend = true;
Main.words.doEnding();
}
} else {
System.exit(0);
}
}
/**
* This method initializes pole
*
* @return javax.swing.JPanel
*/
private JPanel getPole() {
if (pole == null) {
pole = new JPanel(){
/**
*
*/
private static final long serialVersionUID = 1L;
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D gr = (Graphics2D) g;
gr.setColor(bg);
gr.fillRect(0, 0, 820, lSize*2);
if(Main.words.isStarted()){
doPaint(gr);
}
}
private void doPaint(Graphics2D gr) {
int x = 0;
int y = 0;
for(int i=0;i<Polekeys.length();i++){
x = (i * (lSize+5))+20;
y = 16;
gr.setFont(new Font(Font.SANS_SERIF, Font.BOLD, lSize));
polekey[i].x1=x;
polekey[i].x2=x+lSize;
if(!polekey[i].is){
gr.setColor(Color.LIGHT_GRAY);
gr.fillRect(x,y,lSize,lSize);
gr.setColor(Color.blue);
gr.drawRect(x,y,lSize,lSize);
gr.setColor(Color.black);
gr.drawString(polekey[i].getChr(), x+5, y+lSize-4);
} else
{
gr.setColor(Color.DARK_GRAY);
gr.setFont(new Font(Font.SERIF, Font.PLAIN, 12));
gr.drawString(Integer.toString(polekey[i].index+1), x+((int)(lSize/2))-2, 12);
gr.setColor(Color.white);
gr.fillRect(x,y,lSize,lSize);
gr.setColor(Color.blue);
gr.drawRect(x,y,lSize,lSize);
gr.setColor(Color.black);
gr.setFont(new Font(Font.SANS_SERIF, Font.BOLD, lSize));
if(Polekeys.cur==i && iskey){
if(cursor){gr.drawString("|", x+3, y+lSize-9);} else {
gr.drawString(polekey[i].ch, x+5, y+lSize-4);}
} else {
gr.drawString(polekey[i].ch, x+5, y+lSize-4);
}
}
}
};
};
pole.setLayout(new GridBagLayout());
pole.setPreferredSize(new Dimension(lSize, 800));
pole.setFocusable(true);
pole.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent e) {
for(int i=0;i<Polekeys.length();i++){
if(polekey[i].x1<e.getX() && polekey[i].x2>e.getX() && polekey[i].is){
setKey(true);
doLclick(i);
}
pole.requestFocus();
}
}
});
pole.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent e) {
String s = String.valueOf(e.getKeyChar()).toUpperCase();
if(e.getKeyCode()==KeyEvent.VK_ESCAPE){
setKey(false);
return;
}
if(e.getKeyChar()=='\n'){
setKey(false);
doClick();
return;
}
if(Main.words.isStarted()){
if(iskey && s.matches("[A-Z]")){
polekey[Polekeys.cur].ch = s;
//Polekeys.cur= -1;
//button.setEnabled(true);
if(Polekeys.curind<Polekeys.mindex) {
Polekeys.curind++;
} else {
setKey(false);
Polekeys.curind=0;
}
for(int j=0;j<Polekeys.length();j++){
if(polekey[j].index==Polekeys.curind){
doLclick(j);
return;
}
}
rePaint();
return;
}
if(s.matches("[1-9]")){
int i=Integer.parseInt(s);
for(int j=0;j<Polekeys.length();j++){
if(polekey[j].index==(i-1)){
setKey(true);
doLclick(j);
return;
}
}
}
if(e.getKeyCode()==KeyEvent.VK_RIGHT | e.getKeyCode()==KeyEvent.VK_TAB){
setKey(true);
if(Polekeys.curind<Polekeys.mindex) {
Polekeys.curind++;
} else {
Polekeys.curind=0;
}
//System.out.println(Polekeys.curind+" "+Polekeys.mindex);
for(int j=0;j<Polekeys.length();j++){
if(polekey[j].index==Polekeys.curind){
doLclick(j);
return;
}
}
}
if(e.getKeyCode()==KeyEvent.VK_LEFT | e.getKeyCode()==KeyEvent.VK_BACK_SPACE){
setKey(true);
if(Polekeys.curind>0) {
Polekeys.curind--;
} else {
Polekeys.curind=Polekeys.mindex;
}
//System.out.println(Polekeys.curind+" "+Polekeys.mindex);
for(int j=0;j<Polekeys.length();j++){
if(polekey[j].index==Polekeys.curind){
doLclick(j);
return;
}
}
}
}
}
});
}
timer =new Timer(500, new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
if(cursor) {
cursor=false;
} else {
cursor=true;
}
pole.repaint();
}
});
timer.stop();
return pole;
}
private void doLclick(int i){
Polekeys.cur=polekey[i].n;
// System.out.println(polekey[i].n);
//iskey=true;
//button.setEnabled(false);
rePaint();
}
private void initPole(){
if(Main.words.isStarted()){
int in = 0;
Polekeys.mindex=-1;
boolean fi = true;
Polekeys.c = Main.words.getCurword();
for(int i=0;i<Polekeys.length();i++){
polekey[i]=new Polekeys();
polekey[i].n=i;
if(!Polekeys.getIndexchr(i).matches(question)){
polekey[i].is=false;
} else {
polekey[i].is=true;
polekey[i].index=in;
if(fi) {
Polekeys.curind=in;
fi=false;
setKey(true);
Polekeys.cur=i;
}
Polekeys.mindex++;
in++;
}
}
}
}
/**
* This method initializes jPanel
*
* @return javax.swing.JPanel
*/
private JPanel getJPanel() {
if (jPanel == null) {
GridBagConstraints gridBagConstraints = new GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 0;
jPanel = new JPanel();
jPanel.setLayout(new GridBagLayout());
jPanel.setPreferredSize(new Dimension(820, 40));
jPanel.setBackground(bg);
jPanel.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGH);
jPanel.add(getButton(), gridBagConstraints);
}
return jPanel;
}
/**
* This method initializes instructionMenuItem
*
* @return javax.swing.JMenuItem
*/
private JMenuItem getInstructionMenuItem() {
if (instructionMenuItem == null) {
instructionMenuItem = new JMenuItem();
instructionMenuItem.setText("Інструкція");
instructionMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
Main.showHelp();
}
});
}
return instructionMenuItem;
}
/**
* Launches this application
*/
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
Test application = new Test();
application.getJFrame().setVisible(true);
}
});
}
void setKey(boolean b){
iskey=b;
if(b){
timer.start();
} else {
timer.stop();
}
pole.repaint();
}
void doSumary(){
int g = 0;
int b = 0;
String word = "";
for(int i=0;i<Polekeys.length();i++){
if(polekey[i].is){
word=word+polekey[i].ch;
if(polekey[i].ch.matches(Main.words.getOrigchr(i))){
g++;
}
b++;
} else {
word=word+Polekeys.getIndexchr(i);
}
}
Main.words.setShots(g, b);
Main.words.setDone(word);
}
}
class Polekeys {
static public int cur = -1;
static public String c;
static public int mindex = 0;
static public int curind;
public int x1;
public int x2;
public int n;
public boolean is = false;
public String ch = "?";
public int index = -1;
public String getChr(){
return getIndexchr(n);
}
static public String getIndexchr(int i){
return c.substring(i,i+1);
}
static int length(){
int l;
l=c.length();
if(l>Main.max_length) {
l=Main.max_length;
}
return l;
}
}
Лістинг Timer.java:
package mahno.masha.smallenglish;
class Timer extends Thread {
final static int sec=1000;
int ntimes = 0;
int curtime = 0;
int cur_test = -1;
Timer(int c,int n){
ntimes = n;
curtime = n;
cur_test = c;
setTime();
}
public void run() {
while(curtime>0 && Main.words.getCurent()==cur_test){
try {
Thread.sleep(sec);
Step();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(Main.words.getCurent()==cur_test) Done();
}
void setTime(){
Main.words.setTime(curtime);
}
void Step() {
curtime--;
setTime();
Main.test.rePaint();
}
void Done(){
Main.test.Click();
}
}
Лістинг Wave.java:
package mahno.masha.smallenglish;
import java.io.File;
import java.io.IOException;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.FloatControl;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.SourceDataLine;
import javax.sound.sampled.UnsupportedAudioFileException;
public class Wave extends Thread {
private String filename;
private Position curPosition;
private final int EXTERNAL_BUFFER_SIZE = 524288; // 128Kb
enum Position {
LEFT, RIGHT, NORMAL
};
public Wave(String wavfile) {
filename = wavfile;
curPosition = Position.NORMAL;
}
public Wave(String wavfile, Position p) {
filename = wavfile;
curPosition = p;
}
public void run() {
File soundFile = new File(filename);
if (!soundFile.exists()) {
System.err.println("Wave file not found: " + filename);
return;
}
AudioInputStream audioInputStream = null;
try {
audioInputStream = AudioSystem.getAudioInputStream(soundFile);
} catch (UnsupportedAudioFileException e1) {
e1.printStackTrace();
return;
} catch (IOException e1) {
e1.printStackTrace();
return;
}
AudioFormat format = audioInputStream.getFormat();
SourceDataLine auline = null;
DataLine.Info info = new DataLine.Info(SourceDataLine.class, format);
try {
auline = (SourceDataLine) AudioSystem.getLine(info);
auline.open(format);
} catch (LineUnavailableException e) {
e.printStackTrace();
return;
} catch (Exception e) {
e.printStackTrace();
return;
}
if (auline.isControlSupported(FloatControl.Type.PAN)) {
FloatControl pan = (FloatControl) auline
.getControl(FloatControl.Type.PAN);
if (curPosition == Position.RIGHT)
pan.setValue(1.0f);
else if (curPosition == Position.LEFT)
pan.setValue(-1.0f);
}
auline.start();
int nBytesRead = 0;
byte[] abData = new byte[EXTERNAL_BUFFER_SIZE];
try {
while (nBytesRead != -1) {
nBytesRead = audioInputStream.read(abData, 0, abData.length);
if (nBytesRead >= 0)
auline.write(abData, 0, nBytesRead);
}
} catch (IOException e) {
e.printStackTrace();
return;
} finally {
auline.drain();
auline.close();
}
}
}
Лістинг Words.java:
package mahno.masha.smallenglish;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.Image;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.math.BigDecimal;
import java.util.Date;
import javax.imageio.ImageIO;
class Words {
final static int max = 100;
final static String imgdir = "images/";
final static String snddir = "sounds/";
Timer timer;
static int n = 0;
static int orig;
static int cur_test = -1;
static String workdir;
static String ldir;
int all_clear = 0;
int all = 0;
String name;
String ftxt;
String[] word_rus = new String[max];
String[] word_orig = new String[max];
String[] word_test = new String[max];
String[] word_done = new String[max];
String[] image = new String[max];
String[] wav = new String[max];
int[] time = new int[max];
int[] clear_shots = new int[max];
int[] bad_shots = new int[max];
final static String defimg = "system/logo.jpg";
final static String defwav = "system/none.wav";
final static String lisimg = "system/listen.jpg";
boolean bwav=false;
int cur_time;
Image img;
Image listen;
Words(String f,String l,String n,String t){
workdir = f;
ldir = l;
ftxt=t;
name=n;
loadLImg();
readFiles();
loadImg(defimg);
}
public int getTime() {
return cur_time;
}
public void setTime(int t) {
cur_time=t;
}
public void setDone(String s){
word_done[cur_test]=s;
}
public void getImage(Graphics2D gr){
gr.drawImage(img, 0, 0, 800,600, null);
}
public void sndIcon(Graphics2D gr){
if(isWav()){
gr.setColor(Color.gray);
gr.fillRoundRect(664, 464, 100, 100, 5, 5);
gr.setColor(Color.white);
gr.fillRoundRect(660, 460, 100, 100, 5, 5);
gr.setColor(Color.black);
gr.drawRoundRect(660, 460, 100, 100, 5, 5);
gr.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 10));
gr.drawString("listen...",690,545 );
gr.drawImage(listen, 665, 465, 90,90, null);
}
}
public void drawRus(Graphics2D gr){
if(isStarted()){
gr.setColor(Color.gray);
gr.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 80));
gr.drawString(word_rus[cur_test], 28,543 );
gr.setColor(Color.black);
gr.drawString(word_rus[cur_test], 24,539 );
gr.drawString(word_rus[cur_test], 26,541 );
gr.setColor(Color.white);
gr.drawString(word_rus[cur_test], 25,540 );
if(time[cur_test]>0){
gr.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 20));
gr.setColor(Color.black);
gr.drawString(String.valueOf(cur_time)+" секунд", 651,31);
gr.setColor(Color.white);
gr.drawString(String.valueOf(cur_time)+" секунд", 649,29);
gr.setColor(Color.red);
gr.drawString(String.valueOf(cur_time)+" секунд", 650,30);
}
}
}
int getProcent() {
double pr;
pr = (100.00 / all) * all_clear;
BigDecimal x = new BigDecimal(pr);
return x.setScale(0, BigDecimal.ROUND_HALF_DOWN).intValue();
}
int getBale() {
float procent;
procent = getProcent();
if(procent<50){
return 2;
} else
if (procent<=75) {
return 3;
} else
if (procent<=95){
return 4;
} else
if (procent>95) {
return 5;
} else {
return -1;
}
}
public void getSummaryG(Graphics2D gr){
String s[]={"Результати тестування "+name+" (урок "+ldir+"):\n","Загальне число балів "+all_clear+" из "+all+".\n ","Оцінка: "+getBale()+" ("+getProcent()+"% успіху)\n"};
gr.setColor(Color.black);
gr.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 22));
gr.drawString(s[0], 20,25);
gr.setFont(new Font(Font.SANS_SERIF, 0, 25));
gr.drawString(s[1], 20,50);
gr.setColor(Color.red);
gr.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 25));
gr.drawString(s[2], 20,80);
int sizef=20;
gr.setColor(Color.black);
gr.setFont(new Font(Font.SERIF, Font.BOLD, sizef));
String th[]={"№","Вірне слово","Введене слово"};
gr.drawString(th[0],20,120);
gr.drawString(th[1],20+(sizef*2),120);
gr.drawString(th[2],20+(sizef*16),120);
gr.setColor(Color.gray);
gr.drawRect(18, (120-sizef)+1, (sizef*2)-2, sizef);
gr.drawRect(16+(sizef*2), (120-sizef)+1, (sizef*16)-(sizef*2), sizef);
gr.drawRect(16+(sizef*16), (120-sizef)+1, (sizef*16)+18, sizef);
for(int i=0;i<n;i++){
gr.setColor(Color.black);
gr.setFont(new Font(Font.SERIF, 0, sizef-2));
String td[]={Integer.toString(i+1),word_orig[i],word_done[i]};
gr.drawString(td[0],20,120+((i+1)*sizef)-1);
gr.drawString(td[1],20+(sizef*2),120+((i+1)*sizef)-1);
gr.drawString(td[2],20+(sizef*16),120+((i+1)*sizef)-1);
gr.setColor(Color.gray);
gr.drawRect(18, (i*sizef)+120+1, (sizef*2)-2, sizef);
gr.drawRect(16+(sizef*2), (i*sizef)+120+1, (sizef*16)-(sizef*2), sizef);
gr.drawRect(16+(sizef*16), (i*sizef)+120+1, (sizef*16)+18, sizef);
}
}
public void doEnding(){
writeFile(getSummary());
}
String getSummary(){
Date d = new Date();
String c = d.toString()+"\n";
String s[]={"Результати тестування "+name+" (урок "+ldir+"):\n","Загальне число балів "+all_clear+" из "+all+".\n ","Оцінка: "+getBale()+" ("+getProcent()+"% успіху)\n"};
c=s[0]+"\n"+s[1]+"\n"+s[2];
for(int i=0;i<n;i++){
c=c+"Тест №"+(i+1)+" слово "+word_orig[i]+" написано як "+word_done[i]+"\n";
}
c = c+"--------------------------------------\n";
return c;
}
public void setShots(int g, int b){
clear_shots[cur_test] = g;
bad_shots[cur_test] = b;
all_clear = all_clear + g;
all = all + b;
}
public int getCur(){
return cur_test+1;
}
public int getCurent(){
return cur_test;
}
public int getN(){
return n;
}
public boolean isStarted(){
if(cur_test>-1){
return true;
}
else {
return false;
}
}
public void nextTest(){
if(cur_test<0){
cur_test=0;
Next();
} else {
if(cur_test<n-1){
cur_test++;
Next();
} else {
cur_test=-1;
}
}
}
void Next() {
loadImgCur();
bwav=checkWav();
newTimer();
Main.test.setFocus();
}
void newTimer() {
if(time[cur_test]>0){
Timer timer = new Timer(cur_test,time[cur_test]);
timer.start();
}
}
void loadImg(String f){
try {
img = ImageIO.read(new File(workdir+f));
//img.getGraphics().
} catch (IOException e) {
// TODO Auto-generated catch block
//e.printStackTrace();
System.out.println("Can't load image "+workdir+f);
}
}
void loadLImg(){
try {
listen = ImageIO.read(new File(workdir+lisimg));
//img.getGraphics().
} catch (IOException e) {
// TODO Auto-generated catch block
//e.printStackTrace();
System.out.println("Can't load image "+workdir+lisimg);
}
}
void loadImgCur(){
loadImg(image[cur_test]);
}
public String getOrigchr(int i){
return word_orig[cur_test].substring(i,i+1);
}
public String getCurword(){
return word_test[cur_test];
}
void readFiles(){
File f= new File(workdir+ldir+ftxt);
String[] sbuff;
n=0;
try {
BufferedReader input = new BufferedReader(new InputStreamReader(new FileInputStream(f), Main.iocharset));
try {
String line = null;
while (( line = input.readLine()) != null){
sbuff = line.split("[ \";,\t]+");
// Слово з пропущеними літерами
try {
word_test[n] = sbuff[1].toUpperCase();
} catch(ArrayIndexOutOfBoundsException e){
word_test[n]=sbuff[0].toUpperCase();
}
// Переклад слова
try {
word_rus[n] = sbuff[2];
} catch(ArrayIndexOutOfBoundsException e){
word_rus[n]="";
}
// Картинка
try{
image[n] = ldir+imgdir+sbuff[0]+".jpg";
} catch(ArrayIndexOutOfBoundsException e){
image[n]=defimg;
}
// Звук (вимова)
try{
wav[n] = ldir+snddir+sbuff[0]+".wav";
} catch(ArrayIndexOutOfBoundsException e){
wav[n]=defwav;
}
// Час на тест
try{
time[n] = Integer.parseInt(sbuff[3]);
} catch(ArrayIndexOutOfBoundsException e){
time[n]= 0;
}
// Слово
try {
word_orig[n] = sbuff[0].toUpperCase();
} finally {
n++;
}
}
}
finally {
input.close();
}
}
catch (IOException ex){
ex.printStackTrace();
}
}
void writeFile(String s){
File f = new File(workdir+"results.txt");
PrintWriter writer = null;
try {
writer = new PrintWriter(new BufferedWriter(new FileWriter(f,true)));
writer.println(s);
} catch(IOException e){
}
finally {
if (writer!= null) writer.close();
}
}
String fixint(int n){
String s;
if(n<10){
s="0"+n;
} else {
s=""+n;
}
return s;
}
public void Say() {
if(isWav()){
playWav(workdir+wav[cur_test]);
}
}
boolean isWav() {
if(!isStarted()) return false;
return bwav;
}
boolean checkWav() {
if(new File(workdir+wav[cur_test]).exists()) {
return true;
} else
{
return false;
}
}
void playWav(String f) {
//if(!new File(f).exists()) f=workdir+defwav;
new Wave(f).start();
}
}
4 ОХОРОНА ПРАЦІ
4.1 Вимоги до виробничих приміщень для
експлуатації ПК
Охорона праці - це система організаційних, технічних, санітарно-гігієнічних та інших обов'язкових для виконання підприємствами (організаціями) і їх посадовими особами підприємств, які направлені на забезпечення прав робітників і службовців на здоров'я і безпеку умов праці. Право на здоров'я і безпечні умови праці є одним з основних трудових прав робочих і службовців, які затверджені в законодавчому порядку. Воно реалізується за допомогою різноманітних заходів, які передбачають покращення стану робочих місць, раціоналізацію технологічних процесів і герметизацію виробничих процесів, вентиляцію і освітлення робочих місць, вдосконалення засобів безпеки на підприємстві і забезпечення об'єктів засобами колективного захисту (огороджуючими, блокуючими і сигнальними засобами), забезпечення робочих засобами індивідуального захисту (спецодяг, протигаз і ін.) і особистої гігієни, контроль за виконанням технологічних режимів, забезпечення санітарно-гігієнічних умов праці, постачання на робочі місця гарячою їжею, медикаментами і засобами першої допомоги, медичне обслуговування робітників, періодичні медогляди, диспансеризацію, створення профілакторіїв, баз відпочинку, забезпечення лікувально-профілактичним харчуванням і ін.
Нагляд і контроль за охороною праці і виконанням трудового законодавства ведуть спеціальні державні органи контролю, технічна і правова інспекція праці профспілок і комісії профспілкових комітетів.
Об'ємно-планувальні рішення будівель та приміщень для роботи з ПК мають відповідати вимогам ДСанПіН 3.3.2.007-98.
Розміщення робочих місць з ПК у підвальних приміщеннях, на цокольних поверхах заборонено.
Площа на одне робоче місце оператора ЕОМ становить не менше ніж 6,0 м3, а об'єм - не менше ніж 20,0 м3.
Приміщення для роботи з ПК повинні мати природне та штучне освітлення відповідно до СНиП П-4-79/
Природне освітлення має здійснюватись через світлові прорізи, орієнтовані переважно на північ чи північний схід, і забезпечувати коефіцієнт природної освітленості (КПО) не нижче, ніж 1,5%.
Виробничі приміщення повинні обладнуватись шафами для зберігання документів, магнітних дисків, полицями, стелажами, тумбами тощо, з урахуванням вимог до площі приміщень.
У приміщеннях з ПК слід щоденно робити вологе прибирання.
Приміщення із ПК мають бути оснащені аптечками першої медичної допомоги.
При приміщеннях із ПК мають бути обладнані побутові приміщення для відпочинку під час роботи, кімната психологічного розвантаження. В кімнаті психологічного розвантаження слід передбачити встановлення пристроїв для приготування й роздачі тонізуючих напоїв, а також місця для занять фізичною культурою (СНиП 2.09.04. - 87).
У виробничих приміщеннях на робочих місця із ПК мають забезпечуватись оптимальні значення параметрів мікроклімату: температури, відносної вологості й рухливості повітря (ГОСТ 12.1.005-88, СН 4088-86).
Рівні позитивних і негативних іонів у повітрі приміщень з ПК мають відповідати санітарно-гігієнічним нормам №2152-80.
Штучне освітлення в приміщеннях із робочими місцями, обладнаними ПК має здійснюватись системою загального рівномірного освітлення. У виробничих та адміністративно-громадських приміщеннях, у разі переважної роботи з документами, допускається застосування системи комбінованого освітлення (крім системи загального освітлення, додатково встановлюються світильники місцевого освітлення).
Значення освітленості на поверхні робочого столу в зоні розміщення документів має становити 300-500 лк, Якщо це неможливо забезпечити системою загального освітлення, допускається використовувати місцеве освітлення. При цьому світильники місцевого освітлення слід встановлювати таким чином, щоб не створювати бліків на поверхні екрана, а освітленість екрана має не перевищувати 300 лк.
Як джерела світла для штучного освітлення мають застосовуватись переважно люмінесцентні лампи типу ЛБ. У разі влаштування відбитого освітлення у виробничих та адміністративно-громадських приміщеннях допускається застосування металогалогенних ламп потужністю 250 Вт. Допускається застосування ламп розжарювання у світильниках місцевого освітлення.
Рівні звукового тиску в октавних смугах частот, рівні звуку та еквівалентні рівні звуку на робочих місцях, обладнаних ПК, мають відповідати вимогам СН 3223-85, ГОСТ 12.1.003-83, ГР 2411-81.
Значення напруженості електростатичного поля на робочих місцях із ПК (як у зоні екрана дисплея, так і на поверхнях обладнання, клавіатури, друкувального пристрою) мають не перевищувати гранично допустимих за ГОСТ 12.1.045-84, СН 1757-77.Значення напруженості електромагнітних полів на робочих місцях із ПК мають відповідати нормативним значенням (ГДР №3206-85, ГДР N4131-86, СНК 5802-91, ГОСТ 12.1.006-84).
Інтенсивність потоків інфрачервоного випромінювання має не перевищувати допустимих значень, відповідно до ДСН 3.3.6.042-99.
Інтенсивність потоків ультрафіолетового випромінювання не повинна перевищувати допустимих значень, відповідно до СН 4557-88.
Потужність експозиційної дози рентгенівського випромінювання на відстані 0,05 м від екрана та корпуса відео термінала при будь-яких положеннях регулювальних пристроїв не повинна перевищувати ОД бер/год (100 мкР/год).
Обладнання й організація робочого місця із БДТ мають забезпечувати відповідність конструкції всіх елементів робочого місця та їх взаємного розташування ергономічним вимогам з урахуванням характеру й особливостей трудової діяльності (ГОСТ 12,2.032-78, ГОСТ22.269-76, ГОСТ 21.889-76).
Конструкція робочого місця користувача ПК має забезпечити підтримання оптимальної робочої пози.
Робочі місця із ПК слід так розташовувати відносно світлових прорізів, щоб природне світло падало збоку, переважно зліва.
При розміщенні робочих столів із ПК слід дотримуватись таких відстаней: між бічними поверхнями БДТ - 1,2 м; від тильної поверхні одного ПК до екрана іншого - 2,5 м.
Екран ПК має розташовуватися на оптимальній відстані тещ очей користувача, що становить 600…700 мм, але не ближче ніж за 600 мм з урахуванням розміру літерно-цифрових знаків і символів.
Розташування екрана ПК має забезпечувати зручність зорового спостереження у вертикальній площині під кутом +30* до нормальної лінії погляду працюючого.
Клавіатуру слід розташовувати на поверхні столу на відстані 100…300 мм від краю, звернутого до працюючого. У конструкції клавіатури має передбачатися опорний пристрій (виготовлений із матеріалу з високим коефіцієнтом тертя, що перешкоджає мимовільному її зсуву), який дає змогу змінювати кут нахилу поверхні клавіатури в межах 5… 15°.
Для забезпечення захисту і досягнення нормованих рівнів комп'ютерних випромінювань необхідно застосовувати при екранні фільтри, локальні світлофільтри (засоби індивідуального захисту очей) та інші засоби захисту, що пройшли випробування в акредитованих лабораторіях і мають щорічний гігієнічний сертифікат.
При оснащенні робочого місця із ВДТ лазерним принтером параметри лазерного випромінювання повинні відповідати вимогам ДСанПіН 3.3.2.007-98.
При організації праці, пов'язаної з використанням ПК, для збереження здоров'я працюючих, запобігання професійним захворюванням І підтримки працездатності передбачаються внутрішньо змінні регламентовані перерви для відпочинку.
Внутрішньо-змінні режими праці й відпочинку містять додаткові нетривалі перерви в періоди, що передують появі об'єктивних і суб'єктивних ознак стомлення й зниження працездатності.
При виконанні робіт, що належать до різних видів трудової діяльності, за основну роботу з ПК слід вважати таку, що займає не менше 50% робочого часу. Впродовж робочої зміни мають передбачатися:
- перерви для відпочинку і вживання їжі (обідні перерви);
- перерви для відпочинку й особистих потреб (згідно із трудовими нормами);
- додаткові перерви, що вводяться для окремих професій з урахуванням особливостей трудової діяльності.
Електробезпека -- це система організаційних та технічних заходів і засобів, що забезпечують захист людей від шкідливого та небезпечного впливу електричного струму, електричної дуги, електромагнітного поля і статичної електрики.
Основними причинами електротравматизму на виробництві є: випадкове доторкання до неізольованих струмопровідних частин електроустаткування; використання несправних ручних електроінструментів; застосування нестандартних або несправних переносних світильників напругою 220 чи 127 В; робота без надійних захисних засобів та запобіжних пристосувань; доторкання до незаземлених корпусів електроустаткування, що опинилися під напругою внаслідок пошкодження ізоляції; недотримання правил улаштування, технічної експлуатації та правил техніки безпеки при експлуатації електроустановок та ін.
Електротехнологічні працівники - працівники, посада або професія яких пов'язана з експлуатацією електротехнічної частини виробничого обладнання, обов'язки котрих не стосуються обслуговування його електроприводу.
Керівник підприємства зобов'язаний забезпечити утримання, експлуатацію і обслуговування електроустановок відповідно до вимог чинних нормативних документів.
Для цього він повинен:
- призначити відповідального за справний стан і безпечну експлуатацію електрогосподарства з числа інженерно-технічних працівників, які мають електротехнічну підготовку і пройшли перевірку знань у встановленому порядку (далі - особа, відповідальна за електрогосподарство), та особу, яка буде її заміщувати у разі відсутності. Особу, відповідальну за електрогосподарство, та особу, яка буде її заміщати, призначають з числа спеціалістів, кваліфікація яких відповідає вимогам Правил та які пройшли навчання з питань технічної експлуатації електроустановок, правил пожежної безпеки та охорони праці;
- забезпечити достатню кількість електротехнічних працівників;
- затвердити Положення про енергетичну службу підприємства, а також посадові інструкції і інструкції з охорони праці;
Працівники, що обслуговують електроустановки, зобов'язані знати ці Правила відповідно до займаної посади чи роботи, яку вони виконують, і мати відповідну групу з електробезпеки згідно з такими вимогами:
- для одержання групи I, незалежно від посади і фаху, необхідно пройти інструктаж з електробезпеки під час роботи в даній електроустановці з оформленням в журналі реєстрації інструктажів з питань охорони праці.
Інструктаж з електробезпеки на І групу має провадити особа відповідальна за електрогосподарство, або, за її письмовим розпорядженням, - особа зі складу електротехнічних працівників з групою III.
Мінімальний стаж роботи в електроустановках і видання посвідчень працівникам з групою I не вимагаються;
- особам молодшим за 18 років не дозволяється присвоювати групу вище II;
Електротехнологічні працівники виробничих цехів і дільниць, які здійснюють експлуатацію електротехнологічних установок, повинні мати групу з електробезпеки II і вище.
Посвідчення про перевірку знань працівника є документом, який засвідчує право на самостійну роботу в електроустановках на зазначеній посаді за фахом.
Посвідчення про перевірку знань видається працівникові комісією з перевірки знань підприємства, організації після перевірки знань і є дійсним тільки після внесення відповідних записів.
Під час виконання службових обов'язків працівник повинен мати з собою посвідчення про перевірку знань. За відсутності посвідчення, або за наявності посвідчення з простроченими термінами перевірки знань, працівник до роботи не допускається.
Пожежна безпека - стан об'єкта, при якому з регламентованою імовірністю виключається можливість виникнення та розвиток пожежі і впливу на людей її небезпечних факторів, а також забезпечується захист матеріальних цінностей.
Протипожежний захист у галузі -- комплекс інженерно-технічних заходів, спрямованих на створення пожежної безпеки об'єктів і споруд.
Відповідно до вимог і норм пожежної безпеки, всі виробничі, адміністративні, складські та інші приміщення і споруди виробництв і організацій обладнуються засобами автоматичної системи пожежної сигналізації, первинними засобами пожежогасіння, вогнегасниками, ящиками з піском, установками пожежогасіння, автоматикою для виявлення і запобігання пожежам.
При виникненні пожежі або загоранні на будь-якій ділянці підприємства негайно оголошується пожежна тривога та сповіщається пожежна охорона. Найчастіше для цього використовується телефон. Про пожежу доповідають чітко, називаючи адресу підприємства та прізвище того, хто робить
повідомлення.
Одночасно з повідомленням про пожежу працівники вживають заходів щодо її ліквідації та евакуації людей з приміщення, а також заходів щодо посилення охорони об'єкта. Для гасіння пожежі використовують первинні засоби пожежогасіння, що є на підприємстві.
Під час проходження виробничої практики на території підприємства, в цехах і на дільницях учні повинні керуватися правилами пожежної безпеки, чинними для цих виробничих підрозділів. Відповідальність за виконання правил пожежної безпеки і збереження життя та здоров'я учнів і студентів покладено на осіб, які керують практикою.
Правила пожежної безпеки передбачають:
- спеціальні заходи для окремих процесів виробництва, невиконання яких може призвести до пожежі;
- визначення місця для паління та місць, де використання відкритого вогню заборонено;
- встановлення порядку і норм зберігання пожежо- і вибухонебезпечних речовин та матеріалів;
- визначення обов'язків працівників і порядку дій у разі виникнення пожежі.
У приміщеннях цехів та дільниць усі проходи, евакуаційні виходи, коридори, тамбури, підходи до обладнання, засобів пожежогасіння, засобів зв'язку повинні бути вільними.
Подобные документы
Широкі можливості по використанню комп'ютерних навчальних систем. Розробка навчальної системи мультимедійного посібника з дисципліни "Інформатика і ОТ" на тему "Особливості мови програмування С++. Вказівники". Вимоги до розробки навчальної програми.
курсовая работа [2,9 M], добавлен 23.11.2010Аналіз особливостей мови програмування Java та середовища Android Studio. Розробка програмного забезпечення для якісного та ефективного вивчення іноземних слів. Побудова базових алгоритмів і структури даних. Вибір мови програмування, реалізація програми.
курсовая работа [335,3 K], добавлен 11.01.2015Розрахунок собівартості інструментальної системи створення електронних підручників. Вибір технології та мови програмування. Загальна характеристика програми і принцип роботи. Вибір мови програмування. Опис тегів, які підтримуються HTML-редактором.
дипломная работа [112,7 K], добавлен 04.06.2010Розробка та схема алгоритму проектованої гри. Особливості мови програмування та середовища "Microsoft Visual Studio C++ 2008 Express Edition". Лістинг програми та загальний опис її роботи, аналіз отриманих результатів та оцінка практичної ефективності.
курсовая работа [762,8 K], добавлен 03.05.2015Проектування бази даних (БД). Проектування логічної моделі БД. Реалізація БД та створення таблиць. Встановлення зв’язків, вибір мови та середовища програмування. Опис функціональних елементів та реалізація програми. Опис та тестовий приклад програми.
дипломная работа [1,6 M], добавлен 07.01.2017Огляд існуючих методів розробки компіляторів, детальний опис мови. Характеристика та специфіка процесу розробки програми компілятора на рівні блок-схем і тексту програми. Подання тексту компілятора, а також результатів тестування розробленої програми.
курсовая работа [510,2 K], добавлен 03.06.2011Розробка програми на мові програмування С++ з використанням об'єктно-орієнтованого програмування. Робота з файлами, графікою, класами, обробка числової інформації. Графічні засоби мови програмування. Алгоритм задачі та допоміжні програмні засоби.
курсовая работа [102,5 K], добавлен 14.03.2013Дослідження середовища візуального програмування Delphi. Вивчення процесу створення навчальної програми "Електронний словник". Опис графічного інтерфейсу. Характеристика структури та основних процедур даної програми. Аналіз роботи з програмним кодом.
курсовая работа [831,2 K], добавлен 01.03.2014Проектування архітектури гри "Тетріс". Аналіз вимог до неї. Вивчення особливостей реалізації, кодування та тестування програми. Алгоритм побудови робочого поля. Вибір мови програмування. Розробка і налагодження тексту програми. Інструкції з експлуатації.
курсовая работа [460,9 K], добавлен 04.03.2014Аналіз технічного забезпечення, вибір інструментального програмного забезпечення та середовища розробки програм. Створення класів для реалізації необхідних функцій для роботи програмного засобу. Розробка інтерфейсу для користувача та лістинг програми.
курсовая работа [343,9 K], добавлен 24.08.2012