p align="left">} JOptionPane.showMessageDialog(null, newlec.getPath()); } } }); oplog.addActionListener(new ActionListener (){ public void actionPerformed(ActionEvent e) { JFrame slog = new JFrame ("Log"); JEditorPane je = new JEditorPane ("rtf;Content-Type = windows-1251", "<html><i><center>Подготовка к тестам</center>"); JScrollPane js = new JScrollPane (je); slog.add(js); je.setEditable(false); BufferedReader rd; try { rd = new BufferedReader(new FileReader(Consts.log)); je.read(rd, "rtf;Content-Type = windows-1251"); } catch (IOException ex) { Logger.getLogger(KMainWin.class.getName()).log(Level.SEVERE, null, ex); } slog.setSize (700, 400); slog.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); slog.setVisible (true); slog.setSize(300, 500); slog.setVisible(true); } }); contr.addActionListener(new ActionListener (){ public void actionPerformed(ActionEvent e) { JFrame frame = new JFrame ("Оценки"); JEditorPane je = new JEditorPane ("text/html;Content-Type = windows-1251", ""); JScrollPane js = new JScrollPane (je); frame.add(js); je.setEditable(false); BufferedReader rd; try { rd = new BufferedReader(new FileReader(Consts.marks)); je.read(rd, "text/html;Content-Type = windows-1251"); } catch (IOException ey) { Logger.getLogger(KMainWin.class.getName()).log(Level.SEVERE, null, ey); } frame.setSize (200, 400); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.setVisible (true); } }); button = new JPanel (); button.setLayout(new FlowLayout()); button.setPreferredSize(new Dimension (210, 180)); button.add (newl); button.add (newt); button.add (oplog); button.add (contr); button.add(time); button.add (logout); button.add (exit); add(button); setSize (470, 215); info = new JPanel(); info.setPreferredSize(new Dimension (230, 170)); } //who == 0 else { starttest = new JButton ("Начать тестирование"); starttest.setPreferredSize(bigsize); readl = new JButton ("Прочитать лекцию"); readl.setPreferredSize(bigsize); starttest.addActionListener(new ActionListener (){ public void actionPerformed(ActionEvent e) { try { KTestWin n = new KTestWin(login, password, f); bd.write(new Date().getHours() + ":" + new Date ().getMinutes() + " " + new Date ().getDay() + "/" + new Date ().getMonth() + "/" + new Date ().getYear() + "\n"); bd.write(login + " started test\n"); } catch (FileNotFoundException ex) { Logger.getLogger(KMainWin.class.getName()).log(Level.SEVERE, null, ex); } catch (IOException ex) { Logger.getLogger(KMainWin.class.getName()).log(Level.SEVERE, null, ex); } } }); readl.addActionListener(new ActionListener (){ public void actionPerformed(ActionEvent e) { try { new KLec(curlec, "Подготовка к тестам", false, login); bd.write(new Date().getHours() + ":" + new Date().getMinutes() + " " + new Date().getDay() + "/" + new Date().getMonth() + "/" + new Date().getYear() + " "); bd.write(login + " began read lec\n"); } catch (IOException ex) { Logger.getLogger(KMainWin.class.getName()).log(Level.SEVERE, null, ex); } } }); button = new JPanel (); button.setLayout(new FlowLayout()); button.setPreferredSize(new Dimension (210, 125)); button.add(starttest); button.add(readl); button.add(logout); button.add(exit); add(button); setSize (470, 170); info = new JPanel(); info.setPreferredSize(new Dimension (230, 120)); } name = new JLabel (); surnm = new JLabel (); email = new JLabel (); icq = new JLabel (); group = new JLabel (); mark = new JLabel(); try { BufferedReader rd = new BufferedReader(new FileReader(Consts.pprofiles + login)); name.setText(rd.readLine()); name.setPreferredSize(size); surnm.setText(rd.readLine()); surnm.setPreferredSize(size); email.setText(rd.readLine()); email.setPreferredSize(size); icq.setText(rd.readLine()); icq.setPreferredSize(size); group.setText(rd.readLine()); group.setPreferredSize(bigsize); rd.close (); BufferedReader rdm = new BufferedReader(new FileReader(Consts.pprofiles + login + ".mrk")); mark.setText("Оценка: " + rdm.readLine()); rdm.close(); mark.setPreferredSize(size); }catch (IOException et) { //BufferedWriter bw = new BufferedWriter(new FileWriter(Consts.pprofiles + login)); //bw.write("Имя : \nФамилия : \nE-Mail : \nICQ : \nГруппа : "); //bw.close(); } TitledBorder tb = new TitledBorder ("Info"); info.setLayout(new BoxLayout (info, BoxLayout.Y_AXIS)); info.add(name); info.add(surnm); info.add(email); info.add(icq); info.add(group); info.add(mark); info.setBorder(tb); add (info); this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); this.setResizable(false); //this.setIconImage(image); setVisible (true); } boolean transfer (String from, String to){ boolean result = false; try { FileChannel ic = new FileInputStream(from).getChannel(); FileChannel oc = new FileOutputStream(to).getChannel(); ic.transferTo(0, ic.size(), oc); ic.close(); oc.close(); result = true; } catch (FileNotFoundException ex) { Logger.getLogger(KMainWin.class.getName()).log(Level.SEVERE, null, ex); result = false; } catch (IOException ex) { Logger.getLogger(KMainWin.class.getName()).log(Level.SEVERE, null, ex); result = false; } return result; } } 1 Рис.3.3.2. «Интерфейс для администрирования» 1 Рис.3.3.3. Интерфейс программы для пользователя 4. Класс проверки знаний пользователя Задача этого класса - проведение тестирования пользователя, оценка знаний. Рис.3.4.1. Алгоритм тестирования Исходный код класса: package KursPackage; import java.util.*; import javax.swing.*; import javax.swing.Timer; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.border.TitledBorder; public class KTestWin extends JDialog/*JFrame*/{ KTestWin g; int numall;//всего вопросов int numtrue;//к-во правильных ответов на данной странице int num;//к-во правильных ответов студента int time;//время на выполнение теста int numproi; Date date; JLabel lttend;//время до окончания теста JLabel lrans;//к-во прав. ответов студента JLabel question; JButton bnext; JButton bstop; JCheckBox cb[] = new JCheckBox[4]; boolean ans[] = new boolean [4];//правильные ответы JPanel panel; long megotime; TitledBorder tv; KTestWin (final String login, String password, KMainWin d) throws FileNotFoundException, IOException{ super(d, "Тест", true); g = this; setLayout(new FlowLayout ()); date = new Date(); //узнаем время данное на выполнение теста BufferedReader tt = new BufferedReader(new FileReader(Consts.curtesttime)); time = Integer.parseInt(tt.readLine()); tt.close(); //узнали megotime = date.getTime() + time; panel = new JPanel (); panel.setLayout(new FlowLayout ()); //узнаем кво вопросов BufferedReader test = new BufferedReader(new FileReader(Consts.curtest)); if (test.ready()) { while (test.ready()){ if (test.readLine().equals("<q>")) numall++; } } else { JOptionPane.showMessageDialog(null, "Не найден файл \" " + Consts.curtest + " \""); dispose(); } test.close(); //узнали //------------------------------init------------------------------------ numproi = 1; num = 0; tv = new TitledBorder ("Вопрос"); lrans = new JLabel ("Количество правильных ответов: 0"); lttend = new JLabel ("Время осталось: " + String.valueOf((megotime - date.getTime())/1000) + " sec"); question = new JLabel(); bnext = new JButton ("Далее"); bstop = new JButton ("Стоп"); final BufferedReader tst = new BufferedReader(new FileReader(Consts.curtest)); add(lttend); add(lrans); panel.setLayout(new BoxLayout (panel, BoxLayout.Y_AXIS)); panel.setPreferredSize(new Dimension (580, 180)); tst.readLine(); question.setText(tst.readLine()); panel.add(question); for (int i = 0; i<4 ; i++){ cb[i] = new JCheckBox (tst.readLine(), false); ans[i] = Boolean.parseBoolean(tst.readLine()); panel.add(cb[i]); } if (numproi == numall) { bnext.hide(); } if (((megotime - date.getTime())/1000)<0){ bnext.hide(); } bnext.addActionListener(new ActionListener () { public void actionPerformed(ActionEvent e) { numtrue = 0; for (int i = 0; i < 4; i++){ if (cb[i].isSelected() == ans[i]){ numtrue++; } } if (numtrue == 4){ num++; } numproi++; lrans.setText("Количество правильных ответов: " + num); lttend.setText("Время осталось: " + String.valueOf((megotime - new Date().getTime())/1000) + " sec"); if (numproi == numall) { bnext.hide(); } try { tst.readLine(); question.setText(tst.readLine()); for (int i = 0; i<4 ; i++){ cb[i].setLabel(tst.readLine());
Страницы: 1, 2, 3, 4
|