Об’єктно-орієнтоване програмування

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

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык украинский
Дата добавления 05.01.2014
Размер файла 2,2 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

КУРСОВА РОБОТА

“Об'єктно-орієнтоване програмування”

Вступ

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

Виконання роботи потребує -- студент має розробити навчаючу програму.

Навчаюча програма повинна виконувати наступні функції:

реєстрацію студента;

представлення матеріалу до навчання;

забезпечення контролю знань;

введення та корегування навчального матеріалу;

отримання інформації щодо успіхів студента.

Завдання передбачує використання класів та обертів з графічним інтерфейсом для користувачів (студента та викладача).

Учбовий матеріал - спадкування у мові С++.

Треба реалізувати наступні вимоги до програмних класів:

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

Підсумковий документ містить тільки загальну оцінку

Клас приймає дані тільки у діалоговому режимі.

Отримання даних щодо оцінок, які виставлено системою для конкретного студента.

програмний інтерфейс java

1. Складові частини навчальної програми

1. Клас представлення навчального матеріалу.

Клас обов'язково реалізує наступні функції.

Читання навчального матеріалу з файлу.

Надання студенту порції навчального матеріалу.

Перехід до наступної порції матеріалу.

Клас додатково може реалізувати наступні функції відповідно до конкретного завдання до курсової роботи.

1.4. Матеріал подається за схемою, що задається викладачем для кожного конкретного випадку.

2. Клас контролю знань студента.

Клас обов'язково реалізує наступні функції.

Читання завдання до контролю з БД.

Читання еталонних відповідей з БД.

Надання студенту завдань до контролю знань.

Оцінювання кожної відповіді.

Клас додатково може реалізувати наступні функції відповідно до конкретного завдання до курсової роботи.

2.10. Фіксується час підготовки відповіді.

3. Функція реєстрації студента та видачі підсумкового документу.

обов'язково реалізує наступні цілі.

Приймає дані щодо студента.

Видає підсумковий документ.

Додатково можна реалізувати наступні функції відповідно до конкретного завдання до курсової роботи.

3.1. Список студентів введено заздалегідь. Студент відшукує своє прізвище, читає пароль, після цього пароль не можна прочитати.

4.Клас введення учбового матеріалу, контрольних завдань, еталонів відповідей та іншої інформації.

Клас обов'язково реалізує наступні функції.

Введення учбового матеріалу у форматі, що задано іншими пунктами завдання.

Введення контрольних завдань у форматі, що задано іншими пунктами завдання.

Введення еталонів відповідей у форматі, що задано іншими пунктами завдання.

Клас додатково може реалізувати наступні функції відповідно до конкретного завдання до курсової роботи.

5.Клас контролю за ходом навчального процесу викладачем.

Клас обов'язково реалізує наступні функції.

Перегляд результатів навчання для кожного студента.

Клас додатково може реалізувати наступні функції відповідно до конкретного завдання до курсової роботи.

5.4. Отримання даних щодо тем, які успішно пройшов конкретний студент.

2. Постанова задачі

2.1 Уточнення вимог до програмного продукту

Метою курсової роботи є створення навчальної програми для студентів на тему «Наслідування С++». Подання матеріалу відбуватиметься порціями, зчитуючи порції з БД. Буде розроблена сторінка для викладача та студентів та входу їх в систему. Студенти запам'ятовують власний пароль для постійного користування. На прикінці кожного читання контролю будуть виведені питання для контролю знань.

Клас який представляє виведення матеріалу повинне за потребою викладача змінювати його зміст.

Курсова робота буде розроблена для того, щоб закріпити знання здобуті при вивченні дисципліни «Об'єктно-орієнтоване програмування» .

Студент має розробити навчаючу програму.

Навчаюча програма повинна виконувати наступні функції:

реєстрацію студента;

представлення матеріалу до навчання про наслідування у мові програмування С++;

забезпечення контролю знань;

введення та корегування навчального матеріалу;

отримання інформації щодо успіхів студента.

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

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

Керівник може переглянути список студентів, що зареєстровані в системі, рівень їх знань за виконаними контролями. Також викладач має змогу змінити навчальний матеріал.

2.2 Об'єктно-орієнтований аналіз, визначення класів та методів

Клас Users

Структура:

public class Users

{

public class Users {

private static String student;

private static String teacher;

private static String nouser;

private static String secretPass;

public static String getStudent()

public static String getTeacher()

public static String getNoUser()

public static boolean isStudent(int status)

public static boolean isTeacher(int status)

public static boolean RegisterIsTeacher(String secret)

}

Опис :

Класс users має поля для перевірки та запам'ятовування користувачів в системі на надання прав.

Призначення :

Зберігання інформації про користувачів та перевіряє їх.

Клас Mysql

Структура:

public class Mysql {

private Connection connect = null;

private ResultSet resultSet = null;

Properties properties = new Properties();

private String url = "jdbc:mysql://localhost:3306/";

private String dbName = "stud";

private String driver = "com.mysql.jdbc.Driver";

private String userName = "root";

private String password = "123";

public void SetURL(String URL)

public void SetDBName(String DBName)

public void SetDriver(String Driver)

public void SetUser(String user)

public void SetPass(String Pass)

public ResultSet QuerySelect(String query) throws SQLException

public boolean QueryInsert(String query) throws SQLException

public boolean PreparedQueryInsert(String query, String theory, String theme) throws SQLException

public String PreparedQueryInsertID(String query, String theory, String theme) throws SQLException

public void initConnection()

public static String MD5(String md5)

public void close()

}

Опис :

Поля urldb,Name,driver,username,password слугують для з'єднання з БД, до приєднуються get'ри і set'ри,метод QuerySelect - для виконання запиту вибірки з БД, QueryInsert(),PreparedQueryInsert(),PreparedQueryInsertID() - методи для виконання запиту вставки даних до БД,а також методи встановлення та закриття з'єднання з БД.

Призначення :

З'єднання,вибірка та вставка даних до БД.

В для виведення даних використовувались сервлети на мові Java.

Список сер влетів з описанням:

AddQuestions - виконує додавання нових запитань.

Addresults - зберігає результати тестування

AddThemes - виконує додавання тем.

AddTheorys - додавання нових порцій теорії.

Login- авторизація користувачів.

Logout- вихід користувача з системи.

Questions - виконує виведення тестування.

Register - реєстрація користувачів.

Results - виведення результатів.

Student_List - виводить список студентів.

Themes_List - виводить список тем.

Theory - слугує для виводу порцій теорії.

2.3 Загальна схема функціонування системи

Класи обробки дій користвача:

AddQuestions,Addresults,AddThemes,AddTheorys,Login,Logout,Questions,Register,Results,Student_List,Themes_List,Theory

Mysql, Users - класи для обробк даних та занесення даних до БД.

3. Представлення учбового матеріалу, питань та відповідей

Набір №1

Учбовий матеріал

Наследование С++

И вот, наконец, для класса, в C++ реализуется возможность наследования. Прежде всего, следует различать наследование и встраивание. Встраивание предполагает возможность объявления в классе отдельных членов класса на основе ранее объявленных классов. В классе можно объявлять как данные-члены основных типов, так и данные-члены ранее объявленных производных типов.

В случае же наследования новый класс в буквальном смысле создаётся на основе ранее объявленного класса, наследует, а возможно и модифицирует его данные и функции. Объявленный класс может служить основой для новых производных классов. Производный класс наследуют данные и функции своих базовых классов и добавляют собственные компоненты.

В C++ количество непосредственных "предков" производного класса не ограничено. Класс может быть порождён от одного или более классов. В последнем случае говорят о множественном наследовании. Наследование в C++ реализовано таким образом, что наследуемые компоненты не перемещаются в производный класс, а остаются в базовом классе. Производный класс может переопределять и доопределять функции-члены базовых классов. Но при всей сложности, наследование в C++ подчиняется формальным правилам. А это означает, что, во-первых, существует фиксированный набор алгоритмов, которые позволяют транслятору однозначно различать базовые и производные компоненты классов, а во-вторых, множество вариантов наследования ограничено.

Набір №1

Учбовий матеріал

Множественное наследование

C++ позволяет порождать класс из нескольких базовых классов. Когда ваш класс наследует характеристики нескольких классов, вы используете множественное наследование. Как вы узнаете из данного урока, C++ полностью поддерживает множественное наследование. К концу этого урока вы изучите следующие основные концепции:

Если вы порождаете класс из нескольких базовых классов, то получаете преимущества множественного наследования.

При множественном наследовании производный класс получает атрибуты двух или более классов.

При использовании множественного наследования для порождения класса конструктор производного класса должен вызвать конструкторы всех базовых классов.

При порождении класса из производного класса вы создаете иерархию наследования (иерархию классов).

Множественное наследование является мощным инструментом объектно-ориентированного программирования. Экспериментируйте с программами, представленными в этом уроке, и вы обнаружите, что построение класса из уже существующего значительно экономит усилия на программирование.

Тестування:

1 Вид наследования

Порядковое

Случайное

Многообразное

Множественное

2 Оператор для наследования

3 По типу какого доступа метод нельзя унаследовать

protected

public

private

null

4. Бажаний інтерфейс користувача

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

5. Використання програми

Інструкція користувача та контрольний приклад

Графічний інтерфейс для роботи з програмою виглядає досить просто. Коли користувач запускає браузер та прописує необхідну адресу перед ним з'являється сторінка «Вхід в систему», яке потрібне для входу в навчальну програму.

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

Інструкція для користувачу «Викладач»

Після того як викладач пройде авторизація, потрапляє на с торінку зі списком тем, можна додати нову тему натиснувши на конпку «Добавить тему». На сторінці можна редагувати порції теорії та питання для тестування.Для того, щоб відредагувати теорію треба перейти по посиланню «Теория», а для редагування питань тестування - «Вопросы»

Після на тисненненя посилання «Теория» користувач потрапляє на сторінку редагування порцій матеріалу, для редагування старого матеріалу треба клацнути двійним натисканням і з'явиться редактор.

Для додання матеріалу треба ввести новий матеріал і натиснути кнопку «Сохранить порцию».

Перейшовши по посиланню «Список студентів» можна потрапити на сторінку зі списком студентів для складання іспиту, тут можливо додавати нового студента, а також продивитися результати кожного.

Перейшовши по посиланню «Вопросы» потрапляємо на сторінку де потрібно додавати запитання для іспиту. Для вибору правильної відповіді треба натиснути на радіокнопку зліва.

Інструкція користувачу «Студент»

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

Студент повинен вибрати одну з тем.

Потім система перекине його на сторінку з теорією, яка виводить посторінково, якщо студент вже її знає може одразу натиснути «Начать тестирование»

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

Після натиснення «Тест окончен» студенту буде висвітлено скільки балів він набрав, на суільки запитань правильно відповів і кількість затраченого часу.

6. Вихідний код

Клас для роботи з БД

Mysql

package Model;

import java.sql.*;

import java.util.Properties;

/**

*

* @author dante

*/

public class Mysql {

private Connection connect = null;

//private Statement statement = null;

private ResultSet resultSet = null;

Properties properties = new Properties();

private String url = "jdbc:mysql://localhost:3306/";//адрес для связи с БД

private String dbName = "stud";

private String driver = "com.mysql.jdbc.Driver";

private String userName = "root";

private String password = "123";

public void SetURL(String URL) {

this.url = URL;

}

public void SetDBName(String DBName) {

this.dbName = DBName;

}

public void SetDriver(String Driver) {

this.driver = Driver;

}

public void SetUser(String user) {

this.userName = user;

}

public void SetPass(String Pass) {

this.password = Pass;

}

//Метод выполнения запроса на виборку

public ResultSet QuerySelect(String query) throws SQLException {

Statement s = connect.createStatement();

s.executeQuery("SET NAMES utf8");

s.executeQuery(query);

ResultSet rs = s.getResultSet();

return rs;

}

//Метод выполнения запроса на добавление

public boolean QueryInsert(String query) throws SQLException {

Statement s = connect.createStatement();

properties.setProperty("useUnicode", "true");

properties.setProperty("characterEncoding", "UTF-8");

s.executeQuery("SET NAMES utf8");

if (s.executeUpdate(query) != 0) {

return true;

} else {

return false;

}

}

//Метод выполения запроса с проверкой на символы

public boolean PreparedQueryInsert(String query, String theory, String theme) throws SQLException {

properties.setProperty("useUnicode", "true");

properties.setProperty("characterEncoding", "UTF-8");

PreparedStatement s = connect.prepareStatement(query);

s.setString(1, theory);

s.setString(2, theme);

// s.executeQuery("SET NAMES utf8");

if (s.executeUpdate() != 0) {

return true;

} else {

return false;

}

}

//Вставка по идентификационному номеру

public String PreparedQueryInsertID(String query, String theory, String theme) throws SQLException {

properties.setProperty("useUnicode", "true");

String key = "";

properties.setProperty("characterEncoding", "UTF-8");

Statement s = connect.createStatement();

PreparedStatement psmt = null;

psmt = connect.prepareStatement(query, psmt.RETURN_GENERATED_KEYS);

psmt.setString(1, theory);

psmt.setString(2, theme);

psmt.executeUpdate();

ResultSet keys = psmt.getGeneratedKeys();

keys.next();

key = keys.getString(1);

// s.executeQuery("SET NAMES utf8");

return key;

}

//Соедиение с БД

public void initConnection() {

//FIRST register and download driver

try {

DriverManager.registerDriver(new org.gjt.mm.mysql.Driver());

} catch (SQLException e) {

e.printStackTrace();

}

try {

Class.forName(driver);

} catch (ClassNotFoundException e) {

e.printStackTrace();

}

//SECOND Connect to database

try {

Properties prop = new Properties();

prop.setProperty("useUnicode", "false");

prop.setProperty("characterEncoding", "UTF8");

connect = DriverManager.getConnection(url + dbName + "?useUnicode=true&characterEncoding=UTF-8", userName, password);

} catch (SQLException e) {

e.printStackTrace();

}

}

//Хештрование строки

public static String MD5(String md5) {

try {

java.security.MessageDigest md = java.security.MessageDigest.getInstance("MD5");

byte[] array = md.digest(md5.getBytes());

StringBuffer sb = new StringBuffer();

for (int i = 0; i < array.length; ++i) {

sb.append(Integer.toHexString((array[i] & 0xFF) | 0x100).substring(1, 3));

}

return sb.toString();

} catch (java.security.NoSuchAlgorithmException e) {

}

return null;

//Закрытие с соединения с БД

public void close() {

try {

if (resultSet != null) {

resultSet.close();

}

if (connect != null) {

connect.close();

}

} catch (Exception e) {

}

}

}

Класс для роботи з користувачами

Users

public class Users {

private static String student = "2";

private static String teacher = "1";

private static String nouser = "0";

private static String secretPass = "teacher";

public static String getStudent() {

return student;

}

public static String getTeacher() {

return teacher;

}

public static String getNoUser() {

return nouser;

}

//Проверка на студента

public static boolean isStudent(int status) {

if (status == Integer.parseInt(student)) {

return true;

} else {

return false;

}

}

//Проверка на преподавателя

public static boolean isTeacher(int status) {

if (status == Integer.parseInt(teacher)) {

return true;

} else {

return false;

}

}

//Проверка на регистрацию преподавателя

public static boolean RegisterIsTeacher(String secret) {

if (secret.equals(secretPass)) {

return true;

} else {

return false;

}

}

}

Сервлет додавання питань:

AddQuestions

import Model.Mysql;

import com.mysql.jdbc.Connection;

import com.mysql.jdbc.PreparedStatement;

import java.io.IOException;

import java.io.PrintWriter;

import java.sql.ResultSet;

import java.util.Properties;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

/**

*

* @author dante

*/

public class AddQuestions extends HttpServlet {

protected void processRequest(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

response.setContentType("text/html;charset=UTF-8");

//указываем кодировку для данных полученых от клиента

request.setCharacterEncoding("UTF-8");

PrintWriter out = response.getWriter();

try {

String one = request.getParameter("one");

String two = request.getParameter("two");

String three = request.getParameter("three");

String four = request.getParameter("four");

String check = request.getParameter("check");

String question = request.getParameter("que");

String theme = request.getParameter("theme");

Mysql mysql = new Mysql();

mysql.initConnection();

String id_question = mysql.PreparedQueryInsertID("INSERT INTO questions (id_questions ,question ,id_theme) VALUES (NULL , ?, ?)", question, theme);// выполение запроса добавления вопроса

//Вставка ответов тестирования

if (check.equals("1")) {

mysql.PreparedQueryInsert("INSERT INTO answers (`answer`,`id_question` ,`right` ) VALUES ( ?, ?, '1')", one, id_question);

} else {

mysql.PreparedQueryInsert("INSERT INTO answers (`answer`,`id_question` ,`right` ) VALUES ( ?, ?, '0')", one, id_question);

}

if (check.equals("2")) {

mysql.PreparedQueryInsert("INSERT INTO answers (`answer`,`id_question` ,`right` ) VALUES ( ?, ?, '1')", two, id_question);

} else {

mysql.PreparedQueryInsert("INSERT INTO answers (`answer`,`id_question` ,`right` ) VALUES ( ?, ?, '0')", two, id_question);

}

if (check.equals("3")) {

mysql.PreparedQueryInsert("INSERT INTO answers (`answer`,`id_question` ,`right` ) VALUES ( ?, ?, '1')", three, id_question);

} else {

mysql.PreparedQueryInsert("INSERT INTO answers (`answer`,`id_question` ,`right` ) VALUES ( ?, ?, '0')", three, id_question);

}

if (check.equals("4")) {

mysql.PreparedQueryInsert("INSERT INTO answers (`answer`,`id_question` ,`right` ) VALUES ( ?, ?, '1')", four, id_question);

} else {

mysql.PreparedQueryInsert("INSERT INTO answers (`answer`,`id_question` ,`right` ) VALUES ( ?, ?, '0')", four, id_question);

}

mysql.close();

} catch (Exception e) {

e.printStackTrace();

}

}

Сервлет додавання питань

AddResults

import Model.Mysql;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

/**

*

* @author dante

*/

public class AddResults extends HttpServlet {

protected void processRequest(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

response.setContentType("text/html;charset=UTF-8");

//указываем кодировку для данных полученых от клиента

request.setCharacterEncoding("UTF-8");

PrintWriter out = response.getWriter();

String theme = request.getParameter("theme");

String id = request.getParameter("id");

String date = request.getParameter("date");

String timer =request.getParameter("timer");

String pri = request.getParameter("pri");

Mysql mysql = new Mysql();

try {

mysql.initConnection();

if (mysql.QueryInsert("INSERT INTO results (`id_user` ,`id_theme` ,`grade` ,`elapsed_time` ,"

+ "`time_end_of_test`)VALUES ('"+id+"','"+theme+"','"+pri+"','"+timer+"','"+date+"')")) {

//Вставка результатов тестирования с возвратом значения

out.print("1");

} else {

out.print("0");

}

mysql.close();

} catch (Exception e) {

e.printStackTrace();

}

}

Сервлет додавання тем:

AddThemes

import Model.Mysql;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

/**

*

* @author dante

*/

public class AddThemes extends HttpServlet {

protected void processRequest(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

response.setContentType("text/html;charset=UTF-8");

//указываем кодировку для данных полученых от клиента

request.setCharacterEncoding("UTF-8");

PrintWriter out = response.getWriter();

try {

String theme = request.getParameter("theme");

Mysql mysql = new Mysql();

mysql.initConnection();

if (mysql.QueryInsert("INSERT INTO themes (theme) VALUES ('" + theme + "')")) {

out.print("1");//Запрос вставки темы

} else {

out.print("0");

}

mysql.close();

} catch (Exception e) {

e.printStackTrace();

}

}

Сервлет додавання порцій теорії:

AddTheorys

import Model.Mysql;

import com.mysql.jdbc.PreparedStatement;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

/**

*

* @author dante

*/

public class AddTheorys extends HttpServlet {

protected void processRequest(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

response.setContentType("text/html;charset=UTF-8");

//указываем кодировку для данных полученых от клиента

request.setCharacterEncoding("UTF-8");

PreparedStatement updateSales = null;

PrintWriter out = response.getWriter();

try {

String theory = request.getParameter("data");

String id_theme = request.getParameter("id_theme");

String status = request.getParameter("status");

String id = request.getParameter("id");

Mysql mysql = new Mysql();

mysql.initConnection();

if (status.equals("1")) {

if (mysql.PreparedQueryInsert("INSERT INTO theorys (theory,id_theme) VALUES (?,?)", theory, id_theme)) {//Вставка порций теории

out.print("1");

} else {

out.print("0");

}

} else if (status.equals("0"))

{

if (mysql.PreparedQueryInsert("UPDATE theorys SET theory = ? WHERE id_theory= ?", theory, id)) {

out.print("1");

} else {

out.print("0");

}

}

mysql.close();

} catch (Exception e) {

e.printStackTrace();

}

}

Сервлет для виконання авторизації:

import java.io.IOException;

import java.io.PrintWriter;

import java.sql.ResultSet;

import java.sql.SQLException;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

import Model.Mysql;

import Model.Users;

/**

* Servlet implementation class Login

*/

@WebServlet("/login")

public class Login extends HttpServlet {

private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request,

HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

Mysql mysql = new Mysql();

response.setContentType("text/html;charset=UTF-8");

HttpSession session = request.getSession();

session.setAttribute("status", Users.getNoUser());

PrintWriter out = response.getWriter();

try {

mysql.initConnection();

response.setContentType("text/html;charset=UTF-8");

request.setCharacterEncoding("UTF-8");

String login = request.getParameter("login");

String pass = request.getParameter("pass");

ResultSet rs = mysql.QuerySelect("SELECT * FROM user WHERE login='"

+ login.trim() + "'" + "AND password='" + pass.trim() + "' LIMIT 1");//поиск пользователя в БД

while (rs.next()) {

response.setContentType("text/html;charset=UTF-8");

String name = rs.getString("name");

String last_name = rs.getString("last_name");

Integer status = rs.getInt("status");

if (Users.isTeacher(status)) {//Если преподаватель

session.setAttribute("name", name);

session.setAttribute("last_name", last_name);

session.setAttribute("id", rs.getString("id"));

session.setAttribute("status",

Mysql.MD5(Users.getTeacher()));

out.print(Users.getTeacher());

} else if (Users.isStudent(status)) {//Если студент

session.setAttribute("name", name);

session.setAttribute("last_name", last_name);

session.setAttribute("id", rs.getString("id"));

session.setAttribute("status",

Mysql.MD5(Users.getStudent()));

// response.sendRedirect("student/student.jsp");

out.print(Users.getStudent());

} else {

out.print(Users.getNoUser());

}

}

mysql.close();

System.out.println("Disconnected from database");

} catch (SQLException e) {

response.sendRedirect(request.getContextPath());

}

}

Сервлет виходу з системи:

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

import Model.Users;

/**

* Servlet implementation class Logout

*/

@WebServlet("/logout")

public class Logout extends HttpServlet {

private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

response.setContentType("text/html;charset=UTF-8");

HttpSession session = request.getSession(true);

PrintWriter out = response.getWriter();

session.setAttribute("status", Users.getNoUser());//Обнуление сессии пользователя

response.sendRedirect("index.jsp");

}

/**

* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse

* response)

*/

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

}

}

Сервлет виводу питань тестування:

import Model.Mysql;

import java.io.IOException;

import java.io.PrintWriter;

import java.sql.ResultSet;

import java.util.HashMap;

import java.util.Map;

import javax.servlet.RequestDispatcher;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

/**

*

* @author dante

*/

public class Questions extends HttpServlet {

protected void processRequest(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

response.setContentType("text/html;charset=UTF-8");

PrintWriter out = response.getWriter();

Mysql mysql = new Mysql();

String id_theme = request.getParameter("questions");

String page = "questions.jsp";

request.setAttribute("id_theme", id_theme);

RequestDispatcher dispatcher = request.getRequestDispatcher(page);//Передача параметров на страницу

if (dispatcher != null) {

dispatcher.forward(request, response);

}

}

Сервлет реєстрації:

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import Model.Mysql;

import Model.Users;

import java.sql.ResultSet;

@WebServlet("/register")

public class Register extends HttpServlet {

private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request,

HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

}

protected void doPost(HttpServletRequest request,

HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

response.setContentType("text/html;charset=UTF-8");

//указываем кодировку для данных полученых от клиента

request.setCharacterEncoding("UTF-8");

Mysql mysql = new Mysql();

PrintWriter out = response.getWriter();

try {

String login = request.getParameter("login");

String pass = request.getParameter("pass");

String name = request.getParameter("name");

String last_name = request.getParameter("last_name");

String secret = request.getParameter("secret");

mysql.initConnection();

ResultSet rs = mysql.QuerySelect("SELECT login FROM user WHERE login='" + login.trim() + "'");

if (!rs.next()) {

if (Users.RegisterIsTeacher(secret)) {//Втавка даннях если преподаватель

if (mysql.QueryInsert("INSERT INTO user (login,password,name,last_name,status)VALUES ('"

+ login.trim()

+ "','"

+ pass.trim()

+ "','"

+ name.trim()

+ "','"

+ last_name.trim()

+ "','"

+ Users.getTeacher()

+ "')")) {

out.print("1");

} else {

out.print("0");

}

} else {//Если стедент

if (mysql.QueryInsert("INSERT INTO user (login,password,name,last_name,status)VALUES ('"

+ login.trim()

+ "','"

+ pass.trim()

+ "','"

+ name.trim()

+ "','"

+ last_name.trim()

+ "', '"

+ Users.getStudent()

+ "')")) {

out.print("2");

} else {

out.print("0");

}

}

} else {

out.print("3");

}

mysql.close();

} catch (Exception e) {

out.print("gfh");

e.printStackTrace();

}

}

}

Сервлет виводу результатів:

import Model.Mysql;

import java.io.IOException;

import java.io.PrintWriter;

import java.sql.ResultSet;

import java.sql.SQLException;

import javax.servlet.RequestDispatcher;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class Results extends HttpServlet {

protected void processRequest(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

Mysql mysql = new Mysql();

response.setContentType("text/html;charset=UTF-8");

PrintWriter out = response.getWriter();

String id = request.getParameter("student");

//Setting JSP page

String page = "results.jsp";

try {

mysql.initConnection();

ResultSet rss = mysql.QuerySelect("SELECT themes.theme, results.grade, results.elapsed_time,results.time_end_of_test FROM "

+ "results INNER JOIN `user` ON user.id=results.id_user "

+ "INNER JOIN themes ON themes.id_theme=results.id_theme "

+ "WHERE user.id='"+id+"'");//Поиск нужных результатов по студенту

request.setAttribute("data", rss);

} catch (SQLException e) {

e.printStackTrace();

}

RequestDispatcher dispatcher = request.getRequestDispatcher(page);

if (dispatcher != null) {

dispatcher.forward(request, response);

}

}

Сервлет виводу списку студентів:

import Model.Mysql;

import java.io.IOException;

import java.io.PrintWriter;

import java.sql.ResultSet;

import java.sql.SQLException;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.util.*;

import javax.servlet.RequestDispatcher;

import javax.servlet.http.HttpSession;

public class Student_List extends HttpServlet {

protected void processRequest(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

Mysql mysql = new Mysql();

response.setContentType("text/html;charset=UTF-8");

PrintWriter out = response.getWriter();

//Setting JSP page

String page = "student_list.jsp";

try {

mysql.initConnection();

ResultSet rss = mysql.QuerySelect("SELECT * FROM user WHERE status='2' ORDER BY last_name"); //Поиск студентов в базе

request.setAttribute("data", rss);

} catch (SQLException e) {

e.printStackTrace();

}

RequestDispatcher dispatcher = request.getRequestDispatcher(page);

if (dispatcher != null) {

dispatcher.forward(request, response);

}

}

Сервлет виводу списку тем:

import Model.Mysql;

import java.io.IOException;

import java.io.PrintWriter;

import java.sql.ResultSet;

import java.sql.SQLException;

import javax.servlet.RequestDispatcher;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class Themes_list extends HttpServlet {

protected void processRequest(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

Mysql mysql = new Mysql();

response.setContentType("text/html;charset=UTF-8");

PrintWriter out = response.getWriter();

String page = "themes_list.jsp";

try {

mysql.initConnection();

ResultSet rss = mysql.QuerySelect("SELECT * FROM themes ORDER BY id_theme"); //Зпрос по выбору тем

request.setAttribute("data", rss);

} catch (SQLException e) {

e.printStackTrace();

}

RequestDispatcher dispatcher = request.getRequestDispatcher(page);//Передаем на страницу

if (dispatcher != null) {

dispatcher.forward(request, response);

}

}

Сервлет виводу списка порцій теорії:

import Model.Mysql;

import java.io.IOException;

import java.io.PrintWriter;

import java.sql.ResultSet;

import java.sql.SQLException;

import javax.servlet.RequestDispatcher;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class Theory extends HttpServlet {

protected void processRequest(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

response.setContentType("text/html;charset=UTF-8");

Mysql mysql = new Mysql();

response.setContentType("text/html;charset=UTF-8");

String id_theme = request.getParameter("theory");

PrintWriter out = response.getWriter();

//Setting JSP page

String page = "theory.jsp";

try {

mysql.initConnection();

ResultSet rss = mysql.QuerySelect("SELECT * FROM theorys WHERE id_theme='" + id_theme + "' ORDER BY id_theory");//Пошук порций теории в БД

request.setAttribute("data", rss);

request.setAttribute("id_theme", id_theme);

} catch (SQLException e) {

e.printStackTrace();

}

RequestDispatcher dispatcher = request.getRequestDispatcher(page);

if (dispatcher != null) {

dispatcher.forward(request, response);

}

}

Висновок

В процесі курсової роботи була створена універсальна програма для тестування і навчання студентів.

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

В ході курсової роботи був закріплений досвід роботи з мовою Java, закріплені навики роботи в середовищі розробки NetBeans.

Список використаної літератури

1. Кей Хорстманн «Java 2.Тонкости программирования. Том 2» Киев, 2008 г.

2. Патрик Ноутон «Java 2. Наиболее полное руководство» Киев, 2010 г.

3. С. Хорстманн, Гари Корнелл «Том 1. Основы Java» Киев, 2007 г.

4. С. Хорстманн, Гари Корнелл «Том 2. Основы Java» Киев, 2009 г.

Размещено на Allbest.ru

...

Подобные документы

  • Об’єктно-орієнтований аналіз, визначення класів та методів. Загальна схема функціонування системи. Представлення учбового матеріалу, питань та відповідей. Графічний інтерфейс користувача для роботи з програмою. Використання програми викладачами.

    курсовая работа [1,3 M], добавлен 09.01.2014

  • Концепції об'єктно-орієнтованого програмування. Методи створення класів. Доступ до методів базового класу. Структура даних, функції. Розробка додатку на основі діалогових вікон, програми меню. Засоби розробки програмного забезпечення мовами Java та С++.

    курсовая работа [502,5 K], добавлен 01.04.2016

  • Фундаментальні поняття об'єктно-орієнтованого програмування. Система лінійних нерівностей та опуклі багатогранники. Системи лінійних рівнянь лінійної алгебри як частковий випадок систем лінійних обмежень. Використання середовища програмування Delphi7.

    курсовая работа [222,7 K], добавлен 20.05.2015

  • Створення діаграм: варіантів використання, взаємодії, класів, станів та компонентів. Генерування коду на основі створених діаграм за допомогою StarUML на об'єктно-орієнтовній мові програмування Java. Головне вікно програми "Цифровий диктофон", лістинг.

    отчет по практике [1,9 M], добавлен 21.12.2015

  • Принципи об'єктно-орієнтованого підходу. Розробка програмного комплексу з використанням цього алгоритму і користувальницьких класів на мові програмування С++. Реалізація простого відкритого успадкування. Тестування працездатності системи класів.

    курсовая работа [98,0 K], добавлен 06.05.2014

  • Об’єктно-орієнтоване програмування мовою С++. Основні принципи об’єктно-орієнтованого програмування. Розробка класів з використанням технології візуального програмування. Розробка класу classProgressBar. Базовий клас font. Методи тестування програми.

    курсовая работа [211,3 K], добавлен 19.08.2010

  • Розробка логічної гри "Тетріс" у складі набору об’єктно-орієнтованих моделей, програмного коду з використанням об’єктно-орієнтованної мови Java. Проектування архітектури гри, аналіз вимог до неї, опис реалізації, кодування та тестування програми.

    курсовая работа [2,2 M], добавлен 24.10.2010

  • Особливості об'єктно-орієнтованого програмування. Розробка програми для елементарних математичних розрахунків, виведення результату на екран та запису у файлі. Сортування слів у рядку. Програма, яка реалізовує ходи шахових фігур. Програма-калькулятор.

    отчет по практике [2,0 M], добавлен 19.03.2015

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

    дипломная работа [3,3 M], добавлен 10.10.2013

  • Розроблення додатка за допомогою об'єктно-орієнтованого візуального проектування Delphi для виконання арифметичних операцій або з використанням меню. Створення інтерфейсу користувача з використанням компонентів SYSTEM і WIN32. Обробка двовимірного масиву.

    методичка [326,1 K], добавлен 13.01.2010

  • Особливості редагування за допомогою текстового редактора NotePad вхідного файлу. C++ як універсальна мова програмування, знайомство с функціями. Характеристика графічних засобів мови С. Аналіз основних понять об’єктно-орієнтованого програмування.

    курсовая работа [123,3 K], добавлен 14.03.2013

  • Аналіз сучасного стану технологій програмування. Засоби реалізації об'єктів в мові C++, структура даних і функцій. Розробка програмного продукту - гри "трикутники", з використовуванням моделей, класів і функцій об’єктно-орієнтованого програмування.

    курсовая работа [117,8 K], добавлен 14.03.2013

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

    курсовая работа [2,5 M], добавлен 24.12.2011

  • Концепції об'єктно-орієнтованого програмування. Конструктори та деструктори. Успадкування класів. Побудова об’єктної моделі. Визначення об'єктів та класів і зв’язків між ними. Реалізація програми в середовищі Visual Studio C++. Інтерфейс програми.

    курсовая работа [743,7 K], добавлен 25.01.2016

  • Модель в об’єктно-орієнтованих мовах програмування. Програмна модель створена на мові програмування С++, в середовищі програмування Borland С++ Builder 6.0. Вибір засобів реалізації програми. Види інструментів для об'єктно-орієнтованої розробки.

    курсовая работа [116,9 K], добавлен 06.06.2010

  • Прототип об'єктно-орієнтованого програмування. Управління процесом реалізації програми. Розвиток апаратних засобів. Об'єктно-орієнтовані мови програмування. Надійність і експлуатаційні якості програм. Візуальне об’єктна-орієнтовне проектування Delphi.

    контрольная работа [28,9 K], добавлен 18.05.2009

  • Розробка програми для моделювання роботи алгоритму Дейкстри мовою C# з використанням об’єктно-орієнтованих принципів програмування. Алгоритм побудови робочого поля. Програмування графічного інтерфейсу користувача. Тестування програмного забезпечення.

    курсовая работа [991,4 K], добавлен 06.08.2013

  • Реалізація, за допомогою технології Windows Forms, програми обліку даних про волонтерів та подій, на які вони зареєстровані. можливості об'єктно-орієнтованого програмування. Створення класів. Методи, властивості. Використання Multiple Document Interface.

    курсовая работа [1,5 M], добавлен 02.12.2015

  • Ключові поняття мови об’єктно-орієнтованого програмування C++: інкапсуляція, наслідування, абстракція, поліморфізм. Об’ява класів у мові С++. Графічні засоби. Пошук відстані між точками. Опис класів і об’єктів. Програма графічної задачі. Лістинги файлів.

    курсовая работа [144,3 K], добавлен 14.03.2013

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

    дипломная работа [1,2 M], добавлен 05.01.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.