p align="left">cb[i].setSelected(false); ans[i] = Boolean.parseBoolean(tst.readLine()); } } catch (IOException ex) { Logger.getLogger(KTestWin.class.getName()).log(Level.SEVERE, null, ex); } if (((megotime - date.getTime())/1000)<0){ bnext.hide(); } } }); final ActionListener listener = 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++; } bstop.hide(); JButton close = new JButton ("Close"); numproi++; tv.setTitle("Статистика"); lrans.hide(); lttend.hide(); bnext.hide(); question.setText("Количество правильных ответов: " + num); panel.add(new JLabel("Запись результатов в файл...")); try{ String buf[] = new String [3]; BufferedWriter mrk = new BufferedWriter(new FileWriter(Consts.pprofiles + login + ".mrk")); mrk.write(num + "/" + numall); mrk.close(); BufferedWriter marks = new BufferedWriter(new FileWriter(Consts.marks)); BufferedReader prof = new BufferedReader (new FileReader (Consts.pprofiles + login)); buf[0] = prof.readLine(); buf[1] = prof.readLine(); prof.readLine(); prof.readLine(); buf[2] = prof.readLine(); marks.write(buf[0] + " " + buf[1] + " " + buf[2] + " has " + num + "/" + numall + "\n"); prof.close(); marks.close(); }catch(Exception ey){ System.out.print(ey); } panel.add(new JLabel("Запись успешно завершена")); for (int i = 0; i<4 ; i++) cb[i].hide(); try { tst.close(); } catch (IOException ex) { Logger.getLogger(KTestWin.class.getName()).log(Level.SEVERE, null, ex); } close.addActionListener(new ActionListener (){ public void actionPerformed(ActionEvent e) { dispose(); } }); g.setSize (600, 255); add(close); g.repaint(); } }; Timer timer = new Timer(time, listener); timer.setRepeats(false); timer.start(); bstop.addActionListener(listener); panel.setBorder(tv); add(panel); add(new JLabel ("Всего вопросов : " + numall)); add(bnext); add(bstop); setSize (600, 280); setVisible(true); } } 1 Рис.3.4.2. Начало теста 1 Рис3.4.3. Окончание теста: 5. Класс подготовки пользователя Задача класса - подготовка пользователя к тестированию. Рис. 3.5.1. Алгоритм записи времени чтения Исходный код класса: package KursPackage; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; 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.Date; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.*; public class KLec extends JFrame { JEditorPane je; JScrollPane js; long time; long curtime; KLec (String lec, String title, boolean iseditable, final String login) throws IOException{ super (title); je = new JEditorPane ("text/html;Content-Type = windows-1251", "<html><i><center>Подготовка к тестам</center>"); js = new JScrollPane (je); je.setEditable(iseditable); if (title.equals("Подготовка к тестам")){ BufferedReader tt = new BufferedReader(new FileReader(Consts.pprofiles + login + ".tme")); time = Long.parseLong(tt.readLine()); curtime = new Date().getTime(); tt.close(); } BufferedReader rd = new BufferedReader(new FileReader(lec)); je.read(rd, "text/html;Content-Type = windows-1251"); rd.close(); setSize (700, 400); add(js); this.addWindowListener(new WindowListener (){ public void windowClosing(WindowEvent e) { BufferedWriter tm = null; try { BufferedWriter ctt; ctt = new BufferedWriter(new FileWriter(Consts.pprofiles + login + ".tme")); curtime = new Date().getTime() - curtime; time += curtime; ctt.write(time + ""); ctt.close(); String[] buf = new String[3]; tm = new BufferedWriter(new FileWriter(Consts.time)); BufferedReader prof = new BufferedReader(new FileReader(Consts.pprofiles + login)); buf[0] = prof.readLine(); buf[1] = prof.readLine(); prof.readLine(); prof.readLine(); buf[2] = prof.readLine(); tm.write("общее время обучения " + buf[0] + " " + buf[1] + " " + buf[2] + " : " + time + "\n"); prof.close(); tm.close(); dispose(); } catch (IOException ex) { Logger.getLogger(KLec.class.getName()).log(Level.SEVERE, null, ex); } finally { try { tm.close(); } catch (IOException ex) { Logger.getLogger(KLec.class.getName()).log(Level.SEVERE, null, ex); } } } public void windowClosed(WindowEvent e) {} public void windowIconified(WindowEvent e) {} public void windowDeiconified(WindowEvent e) {} public void windowActivated(WindowEvent e) {} public void windowDeactivated(WindowEvent e) {} public void windowOpened(WindowEvent e) {} }); setVisible (true); } } 1 Рис.3.5.2. Интерфейс окна чтения лекции 6. Интерфейс констант Интерфейс содержит константы. package KursPackage; import java.awt.Dimension; import java.awt.Image; import java.awt.Toolkit; public interface Consts { public String pdatabase = new String ("d:\\database.dat");//путь к базе данных public String pprofiles = new String ("d:\\profiles\\");//путь к профайлам public String prevlec = new String ("d:\\lec\\prev.dat");//путь к пред. лекции public String curlec = new String ("d:\\lec\\cur.dat");//путь к текущей лекции public String curtest = new String ("d:\\tests\\cur.dat");//путь к текущим тестам public String prevtest = new String ("d:\\tests\\prev.dat");//путь к пред. тестам public String curtesttime = new String ("d:\\tests\\cur.conf");//путь к файлу времени пров. тек. теста public String prevtesttime = new String ("d:\\tests\\prev.conf");//путь к файлу времени пров. пред. теста public String marks = new String ("d:\\marks.dat");//путь к файлу оценок public String log = new String ("d:\\log.log");//путь к логу public String time = new String ("d:\\time.dat");//путь к логу времени public Dimension size = new Dimension (100, 23); public Dimension bigsize = new Dimension(size.width * 2 + 5, size.height); public Image image = Toolkit.getDefaultToolkit().getImage("d:\\icon.jpg"); } 4 Инструкция пользователя После запуска программы появляется окно (рис. 4.1) где нужно ввести логин и пароль и нажать на кнопку «Войти». 1 Рис.4.1. Окно входа в систему Если Вы еще не зарегистрированы в системе, то Вам нужно пройти регистрацию. Чтобы зарегистрироваться необходимо в окне входа в систему (рис.4.1) нажать на кнопку «Регистрация». После этого появится окно регистрации нового пользователя системы (рис. 4.2). В этом окне Вам будет предложено ввести регистрационные данные. После заполнения всех полей нажмите на кнопку «Регистрация». 1 Рис.4.2. Регистрация нового пользователя Если регистрация в системе прошла успешно, то появится уведомление об успешном окончании регистрации (рис.4.3). 1 Рис.4.3. Успешное окончание регистрации После регистрации Вы можете войти в систему(рис.4.4.). 1 Рис.4.4. Окно входа в систему под логином login и паролем password. После нажатия на кнопку «Войти» Вы войдете в систему как login с правами пользователя. После входа в систему появится главное окно программы (рис. 4.5.). 1 Рис. 4.5. Главное окно системы пользователя При нажатии на кнопку «Начать тестирование» появится окно тестирования (рис.4.6)где Вам будет дан вопрос и варианты ответа. На выполение теста будет дано определенное преподавателем. 1 Рис.4.6. Окно тестирования пользователя После окончания теста Вам будет выдана оценка(рис.4.7.) 1 Рис.4.7. Статистика прохождения тестов. Также в главном окне(рис.4.5) можно получить доступ к лекциям с помощью кнопки «Прочитать лекцию». После нажатия на эту кнопку появится окно (рис.4.8) с лекцией. 1 Рис.4.8. «Подготовка к тестам» При авторизации в системе с правами администратора или с правами преподавателя появляется окно со следующим интерфейсом (рис.4.9.). 1 Рис.4.9. Главное окно системы пользователя с правами администратора При нажатии на кнопку «Новая лекция» появится окно выбора файла лекции(рис.4.10.) 1 Рис. 4.10. Выбор файла лекции При нажатии на кнопку «Новый тест» появляется окно выбора файла (рис.4.11) 1 Рис.4.11. Окно выбора файла теста. При нажатии на кнопку «Открыть лог-файл» откроется окно просмотра лог-файла(рис.4.12.) 1 Рис.4.12. Просмотр лог-файла. При нажатии на кнопку «Оценки» появляется окно с результатами тестирования пользователей(рис.4.13.) 1 Рис.4.13. Окно просмотра результатов тестирования При нажатии на кнопку «Время обучения» появляется окно просмотра общего времени обучения пользователей в миллисекундах (рис.4.14.). 1 Рис.4.14. Окно просмотра общего времени обучения пользователя. При нажатии на кнопку «Выход» программа завершает свою работу. Список литературы 1.Давыдов В.И. Кунгурцев А.Б. Объектно-ориентированное программирование. Одесса: Автограф, 2003. - 124с. 2.Кунгурцев О.Б. Основы программирования на языке Java.Середовище Net Beans. Одесса. : ВМВ, 2006. -182с. 2.Грады Буч. Объектно-ориентированный анализ и проектирование с программа приложений на С + +. СПБ: БИНОМ, 2000. 560 с. 3.Дейтел Х. М., Дейтел П. Дж. БСантары С.И. Технология программирования на Java 2. Кн. 1. Как программировать на С + +. М.: БИНОМ, 2003. 560 с. 4.Грегоры К. Использование Visual C + + 6. М-СПБ: Дом «Вильямс», 2001. 864 с. 5.Дейтел Х. М., Дейтел П. Дж. Как программировать на С + +. М.: БИНОМ, 2001. 1152с.
Страницы: 1, 2, 3, 4
|