Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
15) adminusersadd – добавление нового пользователя;
16) adminusersaddstat – статус добавления нового пользователя;
17) adminuserschange – изменение информации о пользователе;
18) adminuserschangestat – статус изменения информации о пользователе;
19) adminusersdel – удаление информации о пользователе;
20) adminorders – управление заказами;
21) adminorderex – изменение статуса выполнения заказа.
Некоторые из страниц нужны только для перехода между состояниями системы, поэтому опишу только самые главные.
3.2.1 index.jsp и login.jsp
Две эти страницы в совокупности образуют подсистему авторизации пользователя.
index.jsp отвечает за графическое отображение:

Рисунок 25 – Страница index.jsp
login.jsp отвечает за обработку данных после нажатия на кнопку «Вход». Код сервлета авторизации пользователя:
<%
Connection conn;
Properties connInfo = new Properties();
Class. forName("com. mysql. jdbc. Driver");
connInfo. put("user", "root");
connInfo. put("password", "");
connInfo. put("useUnicode", "true");
connInfo. put("characterEncoding", "KOI8_R");
conn = DriverManager. getConnection("jdbc:mysql://127.0.0.1/shop", connInfo);
Statement st = conn. createStatement();
String log = request. getParameter("log");
String pass = request. getParameter("pass");
ResultSet rs = st. executeQuery("SELECT root FROM users WHERE login ='" + log + "' AND pass ='" + pass + "'");
if (rs. next()) {
int root = rs. getInt(1);
PreparedStatement ps = conn. prepareStatement("UPDATE users SET online = '1' WHERE login ='" + log + "' AND pass ='" + pass + "'");
ps. executeUpdate();
if (root == 1) {
conn. close();
out.print("<h1>Добро пожаловать, администратор " + log + "</h1>");
out. print("<meta http-equiv='Refresh' content='2; url=adminpage. jsp'>");
} else {
conn. close();
out. print("<h1>Добро пожаловать, " + log + "</h1>");
out. print("<meta http-equiv='Refresh' content='2; url=shop. jsp'>");
}
} else {
out. print("<h1>Неверный логин и/или пароль</h1><meta http-equiv='Refresh' content='2; url=index. jsp'>");
}
conn.close();
%>
Сервлет авторизации выполняет проверку введенного логина и пароля и выполняет вход в систему с соответствующими правами доступа или возвращается на страницу входа, если введенные данные неверны. [5]
3.2.2 adminpage.jsp
Это главное окно приложения. Оно состоит из четырех фреймов:
1) верхний – отображает текущего пользователя
2) левый – работа с таблицей «Товары»
3) средний – работа с таблицей «Пользователи»
4) правый – работа с таблицей «Заказы»

Рисунок 26 – Главное окно ИСИМ
Фреймы управления таблицами являются соответственно веб-страницами adminshop.jsp, adminusers.jsp и adminorders.jsp.
3.2.3 adminshop.jsp
Эта страница позволяет работать с таблицей «Товары» в БД. Она связана с подчиненными страницами, которые реализуют функции добавления, изменения и удаление записей из соответствующей таблицы.

Рисунок 27 – Вид страницы adminshop. jsp

Рисунок 28 – Вид страницы adminshopadd.jsp

Рисунок 29 – Вид страницы adminshopchange.jsp
Приведу отрывок кода страницы adminshop.jsp, который реализует выборку данных из БД и занесение их в таблицу:
<table border="1">
<thead>
<tr>
<th>ID</th>
<th>Наименование</th>
<th>Цена</th>
<th>В наличии (кол-во)</th>
</tr>
</thead>
<%
ResultSet rs = st. executeQuery("SELECT * FROM goods ORDER BY id");
out. print("<tbody>");
while (rs. next()) {
out. print("<tr><td>" + rs. getString(1) + "</td>");
out. print("<td>" + rs. getString(2) + "</td>");
out. print("<td>" + rs. getString(3) + "</td>");
out. print("<td>" + rs. getString(4) + "</td>");
%>
<td><a href="adminshopdel. jsp? iddel=<%=rs. getString(1)%>">Удаление</a></td>
<td><a href="adminshopchange. jsp? idc=<%=rs. getString(1)%>">Изменение</a></td>
<%
}
out. print("</tr></tbody>");
st. close();
conn. close();
%>
</table>
3.2.4 adminusers.jsp
Эта страница позволяет работать с таблицей «Пользователи» в БД. Она связана с подчиненными страницами, которые реализуют функции добавления, изменения и удаление записей из соответствующей таблицы.

Рисунок 30 – Вид страницы adminusers.jsp

Рисунок 31 – Вид страницы adminusersadd. jsp

Рисунок 32 – Вид страницы adminuserschange.jsp
Приведу сервлет загрузки информации о пользователе для её изменения:
<%
String log = request. getParameter("idc");
Properties connInfo = new Properties();
Class. forName("com. mysql. jdbc. Driver");
connInfo. put("user", "root");
connInfo. put("password", "");
connInfo. put("useUnicode", "true");
connInfo. put("characterEncoding", "KOI8_R");
Connection conn = DriverManager. getConnection("jdbc:mysql://127.0.0.1/shop", connInfo);
Statement st = conn. createStatement();
ResultSet rs = st. executeQuery("SELECT * FROM users WHERE login ='" + log + "'");
rs. next();
rs. getString(1);
%>
<form name="Форма ввода информации" action="adminuserchangestat. jsp">
Изменение информации пользователя <input type="text" name="idc" value="<%=log%>" readonly="readonly"/>
<br><br>
Логин:<br><input type="text" name="newlogin" value="<%out. print(rs. getString(1));%>"/><br>
Пароль:<br><input type="text" name="newpass" value="<%out. print(rs. getString(2));%>"/><br>
Права администратора:<br><input type="text" name="newroot" value="<%out. print(rs. getString(3));%>"/><br>
<input type="submit" value="Изменить" name="change" />
<%conn. close();%>
Остальные страницы поэтому детально описывать их не буду, приведу только исходные коды.
3.2.5 adminorders. jsp

Рисунок 33 – Вид страницы adminorders.jsp
Исходный код страницы:
<%--
Document : adminorders
Created on : 05.01.2013, 16:16:56
Author : Руслан
--%>
<%@page import="java. util. Properties"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page import="java. sql.*"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="style. css">
<h2>Управление заказами</h2>
</head>
<body>
<br>
<%
Connection conn;
Properties connInfo = new Properties();
Class. forName("com. mysql. jdbc. Driver");
connInfo. put("user", "root");
connInfo. put("password", "");
connInfo. put("useUnicode", "true");
connInfo. put("characterEncoding", "KOI8_R");
conn = DriverManager. getConnection("jdbc:mysql://127.0.0.1/shop", connInfo);
Statement st = conn. createStatement();
%>
<table border="1">
<thead>
<tr>
<th>ID</th>
<th>Дата</th>
<th>Заказчик</th>
<th>Содержимое</th>
<th>Статус выполнения</th>
</tr>
</thead>
<%
ResultSet rs = st. executeQuery("SELECT * FROM orders ORDER BY id");
out. print("<tbody>");
while (rs. next()) {
out. print("<tr><td>" + rs. getString(1) + "</td>");
out. print("<td>" + rs. getString(2) + "</td>");
out. print("<td>" + rs. getString(3) + "</td>");
out. print("<td>" + rs. getString(4) + "</td>");
out. print("<td>" + rs. getString(5) + "</td>");
String or=rs. getString(5);
if(or. equals("N")){
out. print("<td><a href=\"adminorderex. jsp? idex="+rs. getString(1)+"\">Выполнить</a></td>");
}
}
out. print("</tr></tbody>");
st. close();
conn. close();
%>
</table>
</body>
</html>
3.2.6 register. jsp и regstat. jsp

Рисунок 34 – Вид страницы register.jsp
Исходный код страницы regstat.jsp – регистрации нового пользователя (покупателя):
<%--
Document : regstat
Created on : 03.01.2013, 16:10:54
Author : Руслан
--%>
<%@page import="java. util. Properties"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page import="java. sql.*"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="style. css">
<title>Статус регистрации</title>
</head>
<body>
<%
Connection conn;
Properties connInfo = new Properties();
Class. forName("com. mysql. jdbc. Driver");
connInfo. put("user", "root");
connInfo. put("password", "");
connInfo. put("useUnicode", "true");
connInfo. put("characterEncoding", "KOI8_R");
conn = DriverManager. getConnection("jdbc:mysql://127.0.0.1/shop", connInfo);
Statement st = conn. createStatement();
String login = request. getParameter("log");
String pass = request. getParameter("pass");
ResultSet rs = st. executeQuery("SELECT root FROM users WHERE login ='" + login + "'");
if (rs. next() == true) {
out. print("<h1>Такой пользователь уже существует!</h1>");
conn. close();
out. print("<meta http-equiv='Refresh' content='5; url=register. jsp'>");
} else {
PreparedStatement ps = conn. prepareStatement("INSERT INTO users VALUES ('" + login + "','" + pass + "','0','0')");
ps. executeUpdate();
ps. close();
conn. close();
out. print("<h1>Регистрация успешно завершена!</h1><meta http-equiv='Refresh' content='5; url=index. jsp'>");
}
%>
</body>
</html>
4 ТЕСТИРОВАНИЕ
4.1 Составление тестовых наборов данных
Тестовые наборы данных разработаны с помощью метода эквивалентного разбиения.
Таблица 1 – Классы эквивалентности тестовых наборов данных
Поле | Условие | Правильные наборы | Неправильные наборы |
Поле «Логин» на странице входа | Логин должен совпадать с логином пользователя, зарегистрированного в системе | L | (L,P) ÎU, где L - логин, Р – пароль, U – множество, зарегистрированных в системе пар (L,P) пользователей | L | (L,P) ÏU, где L - логин, Р – пароль, U – множество, зарегистрированных в системе пар (L,P) |
Поле «Пароль» на странице входа | Пароль должен соответствовать логину пользователя, зарегистрированного в системе | P | (L,P) ÎU, где L - логин, Р – пароль, U – множество, зарегистрированных в системе пар (L,P) пользователей | P | (L,P) ÏU, где L - логин, Р – пароль, U – множество, зарегистрированных в системе пар (L,P) |
Поле «Логин» на странице регистрации, странице добавления нового пользователя, изменения информации о пользователе | Строка не должна содержать недопустимых синтаксисом SQL символов | Строка, состоящая из букв, цифр и символа подчеркивания | Строка, содержащая символы / \ | ‘ и т. д. |
Поле «Пароль» на странице регистрации, странице добавления нового пользователя, изменения информации о пользователе | Строка не должна содержать недопустимых синтаксисом SQL символов | Строка, состоящая из букв, цифр и символа подчеркивания | Строка, содержащая символы / \ | ‘ и т. д. |
Поле «ID» на страницах добавления нового товара, изменения информации о товаре | Целое число, максимум 11 знаков. Не должно совпадать с уже имеющимся в таблице. | IDÎZ | 0<len≤11, где len – длина числа, ID – само число | Дробные, вещественные, иррациональные числа, текст |
Продолжение таблицы 1 – Классы эквивалентности тестовых наборов данных
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 |


