Министерство образования и науки Украины
ОДЕССКИЙ НАЦИОНАЛЬНЫЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
Курсовая работа
По дисциплине
“Объектно-ориентированное программирование”
Выполнил:
студент группы АС-071
Беспечный П. А.
Руководитель:
Кунгурцев А.Б
Общая оценка
Дата
Одесса 2009
Содержание
1. Задания на разработку
2. Список классов программы
3. Классы программы
4. Инструкция пользователя
Список Литературы
1 Задания
Вариант №1
Завдання №1.
Учбовий матеріал – елементарні конструкції мови С++.
Треба реалізувати наступні вимоги до програмних класів:1.1, 2.2, 3.2, 4.2, 5.1
Задания на разработку:
2. Составные части учебной программы
Учебная программа должна состоять из следующих классов.
Класс представления учебного материала.
Класс обязательно реализует следующие функции.
Чтение учебного материала из файла.
Предоставление студенту порции учебного материала.
Переход к следующей порции материала.
Класс дополнительно может реализовать следующие функции в соответствии с конкретного задания к курсовой работе.
1. Жесткая, заранее установленная схема подачи материала.
2. Класс контроля знаний студента.
Класс обязательно реализует следующие функции.
Чтение задания к контролю из файла.
Чтение эталонных ответов из файла.
Предоставление студенту задач до контроля знаний.
Оценка каждого ответа.
Класс дополнительно может реализовать следующие функции в соответствии с конкретного задания к курсовой работе.
Задания типа «отметить необходимое».
3. Класс регистрации студента и выдаче итогового документа.
Класс обязательно реализует следующие функции.
Принимает данные студента.
Выдает итоговый документ.
Класс дополнительно может реализовать следующие функции в соответствии с конкретного задания к курсовой работе.
Каждый студент должен пройти регистрацию сам. Он устанавливает себе пароль.
4. Класс введение учебного материала, контрольных заданий, эталонов ответов и другой информации.
Класс обязательно реализует следующие функции.
Введение учебного материала в формате, который задан другими пунктами задания.
Введение контрольных заданий в формате, который задан другими пунктами задания.
Ввод эталонов ответов в формате, который задан другими пунктами задания.
Класс дополнительно может реализовать следующие функции в соответствии с конкретного задания к курсовой работе.
Класс может принимать данные с другого носителя, который не входит в систему.
5. Класс контроля за ходом учебного процесса преподавателем.
Класс обязательно реализует следующие функции.
Просмотр результатов обучения для каждого студента.
Класс дополнительно может реализовать следующие функции в соответствии с конкретного задания к курсовой работе.
Получение данных относительно общего времени обучения студентов
2 Список классов программы:
1. Класс входа в систему – авторизация пользователя в системе.
2. Класс регистрации нового студента – по заданию:
Класс регистрации студента и выдаче итогового документа.
Класс обязательно реализует следующие функции.
Принимает данные студента.
Выдает итоговый документ.
Класс дополнительно может реализовать следующие функции в соответствии с конкретного задания к курсовой работе.
Каждый студент должен пройти регистрацию сам. Он устанавливает себе пароль.
3. Класс главного окна программы – реализует:
Класс введение учебного материала, контрольных заданий, эталонов ответов и другой информации.
Класс обязательно реализует следующие функции.
Введение учебного материала в формате, который задан другими пунктами задания.
Введение контрольных заданий в формате, который задан другими пунктами задания.
Ввод эталонов ответов в формате, который задан другими пунктами задания.
Класс дополнительно может реализовать следующие функции в соответствии с конкретного задания к курсовой работе.
Класс может принимать данные с другого носителя, который не входит в систему.
Класс контроля за ходом учебного процесса преподавателем.
Класс обязательно реализует следующие функции.
Просмотр результатов обучения для каждого студента.
Класс дополнительно может реализовать следующие функции в соответствии с конкретного задания к курсовой работе.
4. Класс проверки знаний пользователя – по заданию класс контроля знаний студента.
Класс обязательно реализует следующие функции.
Чтение задания к контролю из файла.
Чтение эталонных ответов из файла.
Предоставление студенту задач до контроля знаний.
Оценка каждого ответа.
Класс дополнительно может реализовать следующие функции в соответствии с конкретного задания к курсовой работе.
Задания типа «отметить необходимое».
5. Класс подготовки пользователя – по заданию класс представления учебного материала.
Класс обязательно реализует следующие функции.
Чтение учебного материала из файла.
Предоставление студенту порции учебного материала.
Переход к следующей порции материала.
Класс дополнительно может реализовать следующие функции в соответствии с конкретного задания к курсовой работе.
1. Жесткая, заранее установленная схема подачи материала.
Также реализуется пункт 5.1.
3 Классы программы
1. Класс входа в систему
Задачей данного класса является проверка логина и пароля пользователя системы, а также предоставление возможности регистрации нового пользователя в системе.
В системе присутствуют два уровня доступа каждый со своими функциями. Класс KLogin проверяет уровни доступа и передает их классу главного окна KMainWin.
Рис. 3.1.1 Алгоритм проверки пары логин и пароль
Исходный код класса:
package KursPackage;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;
public class KLogin extends JFrame implements Consts{
JTextField login;
JPasswordField pass;
JButton enter;
JButton cancel;
JButton reg;
JLabel llogin;
JLabel lpass;
boolean loged;
String ln;
String password;
KLogin () {
super ("Please log in");
JFrame.setDefaultLookAndFeelDecorated(true);
JDialog.setDefaultLookAndFeelDecorated(true);
this.setUndecorated(true);
this.getRootPane().setWindowDecorationStyle(JRootPane.FRAME);
this.setLayout(new FlowLayout ());
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
//--------------------INIT---------------------------------------------
loged = false;
ln = new String ();
password = new String ();
login = new JTextField ();
pass = new JPasswordField ();
llogin = new JLabel ("Логин");
lpass = new JLabel ("Пароль");
enter = new JButton ("Войти");
cancel = new JButton ("Отмена");
reg = new JButton ("Регистрация");
llogin.setPreferredSize(size);
lpass.setPreferredSize(size);
login.setPreferredSize(size);
pass.setPreferredSize(size);
enter.setPreferredSize(size);
cancel.setPreferredSize(size);
reg.setPreferredSize(bigsize);
//-------------------ACTIONLISTENERS-----------------------------------
enter.addActionListener(new ActionListener (){
public void actionPerformed(ActionEvent e) {
DataInputStream rd = null;
int who = 0;
try {
rd = new DataInputStream(new FileInputStream(Consts.pdatabase));
String buf;
if (rd.available() != 0) {
while (rd.available() != 0) {
buf = rd.readLine();
if (buf.equals(getPass())) {
loged = true;
who = Integer.parseInt(rd.readLine());
getPass();
}
}
if (!loged){
JOptionPane.showMessageDialog(null, "Неправильный логин или пароль");
}
else {
setVisible(false);
new KMainWin (who, ln, password);
}
} else {
JOptionPane.showMessageDialog(null, "Ошибка базы данных");
}
} catch (FileNotFoundException ex) {
Logger.getLogger(KLogin.class.getName()).log(Level.SEVERE, null, ex);
}catch (IOException ex) {
Logger.getLogger(KLogin.class.getName()).log(Level.SEVERE, null, ex);
}
finally {
try {
rd.close();
} catch (IOException ex) {
Logger.getLogger(KLogin.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
});
cancel.addActionListener(new ActionListener (){
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
reg.addActionListener(new ActionListener (){
public void actionPerformed(ActionEvent e) {
new KReg();
}
});
//-------------------ADD-----------------------------------------------
this.add(llogin);
this.add(login);
this.add(lpass);
this.add(pass);
this.add(enter);
this.add(cancel);
this.add(reg);
this.setSize(2 * size.width + 30, size.height * 4 + 58);
this.setResizable(false);
this.setVisible(true);
}
String getPass(){
ln = login.getText();
password = pass.getText();
return (login.getText() + " " + pass.getText());
}
}
Рис. 3.1.2. Окно входа в систему
2. Класс регистрации нового студента
Задача данного класса регистрация нового пользователя в системе. Такие данные о пользователе как имя, фамилия, группа, ICQ, записываются в файл профиля.
Рис. 3.2.1. Алгоритм регистрации нового профиля
Исходный код класса:
package KursPackage;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;
public class KReg extends JFrame implements Consts{
JTextField login;
JPasswordField pass;
JTextField name;
JTextField surname;
JTextField email;
JTextField icq;
JTextField group;
JLabel llogin;
JLabel lpass;
JLabel lname;
JLabel lsurnm;
JLabel lemail;
JLabel licq;
JLabel lgroup;
JButton cancel;
JButton reg;
JButton reset;
boolean flag;
KReg (){
super ("New student");
this.setLayout(new FlowLayout ());
//----------------INIT-------------------------------------------------
login = new JTextField ();
pass = new JPasswordField ();
name = new JTextField ();
surname = new JTextField ();
email = new JTextField ("@");
icq = new JTextField ();
group = new JTextField ();
llogin = new JLabel ("Логин: *");
lpass = new JLabel ("Пароль: *");
lname = new JLabel ("Имя: *");
lsurnm = new JLabel ("Фамилия: *");
lemail = new JLabel ("Ваш E-Mail: *");
licq = new JLabel ("Номер ICQ: ");
lgroup = new JLabel ("Группа: *");
cancel = new JButton ("Отмена");
reg = new JButton ("Регистрация");
reset = new JButton ("Сброс");
login.setPreferredSize(size);