Рефераты
 

Створення навчальної програми по вивченню іноземної мови

p align="left"> * @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)", 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 і вище.

Посвідчення про перевірку знань працівника є документом, який засвідчує право на самостійну роботу в електроустановках на зазначеній посаді за фахом.

Посвідчення про перевірку знань видається працівникові комісією з перевірки знань підприємства, організації після перевірки знань і є дійсним тільки після внесення відповідних записів.

Під час виконання службових обов'язків працівник повинен мати з собою посвідчення про перевірку знань. За відсутності посвідчення, або за наявності посвідчення з простроченими термінами перевірки знань, працівник до роботи не допускається.

Пожежна безпека - стан об'єкта, при якому з регламентованою імовірністю виключається можливість виникнення та розвиток пожежі і впливу на людей її небезпечних факторів, а також забезпечується захист матеріальних цінностей.

Протипожежний захист у галузі -- комплекс інженерно-технічних заходів, спрямованих на створення пожежної безпеки об'єктів і споруд.

Відповідно до вимог і норм пожежної безпеки, всі виробничі, адміністративні, складські та інші приміщення і споруди виробництв і організацій обладнуються засобами автоматичної системи пожежної сигналізації, первинними засобами пожежогасіння, вогнегасниками, ящиками з піском, установками пожежогасіння, автоматикою для виявлення і запобігання пожежам.

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

повідомлення.

Одночасно з повідомленням про пожежу працівники вживають заходів щодо її ліквідації та евакуації людей з приміщення, а також заходів щодо посилення охорони об'єкта. Для гасіння пожежі використовують первинні засоби пожежогасіння, що є на підприємстві.

Під час проходження виробничої практики на території підприємства, в цехах і на дільницях учні повинні керуватися правилами пожежної безпеки, чинними для цих виробничих підрозділів. Відповідальність за виконання правил пожежної безпеки і збереження життя та здоров'я учнів і студентів покладено на осіб, які керують практикою.

Правила пожежної безпеки передбачають:

- спеціальні заходи для окремих процесів виробництва, невиконання яких може призвести до пожежі;

- визначення місця для паління та місць, де використання відкритого вогню заборонено;

- встановлення порядку і норм зберігання пожежо- і вибухонебезпечних речовин та матеріалів;

- визначення обов'язків працівників і порядку дій у разі виникнення пожежі.

У приміщеннях цехів та дільниць усі проходи, евакуаційні виходи, коридори, тамбури, підходи до обладнання, засобів пожежогасіння, засобів зв'язку повинні бути вільними.

Технологічне обладнання за нормальних умов праці має бути пожежобезпечним. Забороняється працювати на несправному обладнанні. Не можна допускати контакту речовин і матеріалів, взаємодія яких призводить до горіння, вибуху або утворення горючих чи токсичних газів. Приміщення цеху може обігріватися лише приладами центрального або повітряного опалення.

На підприємствах, в установах, згідно з Положенням «Про добровільні пожежні дружини (команди)», для проведення заходів щодо запобігання пожежам та організації їх гасіння створюється пожежна служба.

Працюючі з ПК підлягають обов'язковим медичним оглядам: попереднім - при влаштуванні на роботу і періодичним - протягом трудової діяльності, відповідно до наказу МЗ України N45 від 31.03.94 р.

Періодичні методичні огляди мають проводитися раз на два роки комісією в складі терапевта, невропатолога та офтальмолога.

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

Основними критеріями оцінки придатності до роботи з ПК мають бути показники стану органів зору: гострота зору, показники рефракції, акомодації, стану бінокулярного апарату ока тощо. При цьому необхідно враховувати також стан організму в цілому.

Жінки, що працюють з ВДТ, обов'язково оглядаються акушером-гінекологом один раз на два роки.

Жінки з часу встановлення вагітності та в період годування дитини грудьми до виконання всіх робіт, пов'язаних з використанням ПК, не допускаються.

Виконання вимог, наведених в Правилах, в комплексі з практичним здійсненням первинних та спеціальних заходів повинно стати нормою діяльності всіх фахівців, безпосередньо пов'язаних з навчальними та виробничими колективами.

ВИСНОВОК

Актуальність моєї програми полягає в тому, що вона буде ліцензована GNU General Public License. Це означає що кожний користувач зможе скачати вхідні коди, модифікувати їх по своєму бажанню і під свої потреби. Всі зміни в коді програми, які будуть зроблені третіми особами повинні бути викладенні в публічний доступ. Це також може сприяти подальшому удосконаленню програми.

У ході виконання задач, поставлених в дипломній роботі була написана програма на мові програмування Java для тестування учнів шкіл по іноземній мові.

Плюси даного рішення:

- відкритість;

- кросплатформеність;

- зручність у користуванні та розробці нових уроків;

- зручність у модернізації;

- розширюваність;

- адаптивність.

Мінуси даного рішення:

- для запуску програми потрібне встановлене виконавче середовище Java.

Список джерел інформації

1. Эккель Брюс. Философия Java. Библиотека программиста. 4-е изд. 2010 год, 640 стр.

2.Тимоти Р. Фишер. Java. Карманный справочник. 2008 г. 224 стр.

3.Эд Барнет. Eclipse IDE. Карманный справочник. 2006 г. , 160 стр.

4.Скотт Мюллер. Модернизация и ремонт ПК. - М.: Бином, 1998. - 944с.

5.Томас Х. Кормен, Чарльз И. Лейзерсон, Рональд Л. Ривест, Клиффорд Штайн.Алгоритмы: построение и анализ 2-е издание. 2009 г. 1296 стр.

6.Азаренкова Г.М., Журавель Т.М., Михайленко Р.М. Фінанси підприємств: Навч. Посіб. Для самост. Вивчення дисципліни. - 2-ге вид., випр. і доп. - К.: Знання- Прес, 2006. - 287с.

7.Економіка підприємства: Підручник За заг. ред. С.Ф. Покропивного. - Вид. 2-ге, перероб. та доп. - К.: КНЕУ, 2001. - 528с.

8.Петрович Й. М., Кіт А.Ф., Кулішов В.В. та ін., Економіка підприємства: Підручник-За загальною редакцією Й.М. Петровича. - Львів: "Магнолія плюс", - 2004. - 680 с.

9.Шваб Л.І. Економіка підприємства: Навчальний посібник для студентів вищих навчальних закладів. 2-е вид. - К.: Каравела, 2005. - 508 с.

10.Жидецкий В.Ц., Джигирей В.С., Мельников А.В. Основы охраны труда. Учебник. - Изд. 2-е, дополненное. - Львов: Афиша, 2000. - 351 с.

11.Жидецький В. Ц. Охорона праці користувачів комп'ютерів - Львів: Афіша, 2000. - 174 c.

ПЕРЕЛІК ПРИЙНЯТИХ СКОРОЧЕНЬ, ОДИНИЦЬ, СИМВОЛІВ ТА ТЕРМІНІВ

ПК -- персональний комп'ютер

ОЗП -- оперативно запам'ятовуючий пристрій

Мб -- мегабайт

GNU GPL -- GNU General Public License, универсальная общественная лицензия

Страницы: 1, 2, 3


© 2010 BANKS OF РЕФЕРАТ