- •2012 Анотація
- •Завдання до курсової роботи
- •Клас Users
- •Призначення :
- •3.3 Загальна схема функціонування системи
- •4. Представлення учбового матеріалу, питань та відповідей. Набір №1 Учбовий матеріал
- •3 По типу какого доступа метод нельзя унаследовать
- •5. Бажаний інтерфейс користувача.
- •6. Використання програми Інструкція користувача та контрольний приклад
- •Інструкція для користувачу «Викладач»
- •Набір №1 Учбовий матеріал
- •1 Вид наследования
- •2 Оператор для наследования
- •Інструкція користувачу «Студент»
- •7. Вихідний код
- •Висновок
- •Список використаної літератури
Інструкція користувачу «Студент»
Для входу в систему студенту потрібно ввести логін та пароль, система автоматично перенаправить його на сторінку з темами для іспиту.
Студент повинен вибрати одну з тем.

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

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

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

7. Вихідний код
Клас для роботи з БД
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);
}
}
