- •Аннотация
- •Содержание
- •1 Аналитический раздел
- •1.1 Анализ предметной области
- •1.2 Организационно-производственная структура
- •1.3 Анализ существующих программных продуктов
- •1.4 Выбор математического аппарата
- •1.5 Постановка задачи
- •1.5.1 Назначение программного продукта
- •1.5.2 Требования к программному средству и техническому оборудованию
- •2 Проектный раздел
- •2.1 Инструментальные средства
- •2.1.1 Выбор языка программирования
- •2.1.2 Технология клиент/сервер. Принцип работы Java Web-приложения
- •2.1.3 Архитектура платформы Tandem
- •2.1.4 Выбор субд
- •2.1.5 Структурированный язык запросов sql
- •2.2 Разработка базы данных проектируемого программного средства
- •2.2.1 Формализованное описание предметной области
- •2.2.2 Разработка инфологической модели бд
- •2.2.3 Разработка даталогической модели бд
- •2.2.4 Нормализация отношений
- •2.2.5 Физическая модель бд
- •2.2.5.1 Техническое описание объектов бд
- •2.2.5.2 Реализация ограничений целостности бд
- •2.3 Разработка программного средства автоматизации обслуживания заявок
- •3 Технико-эксплуатационный раздел
- •3.1 Руководство для пользователей
- •3.2 Руководство для серверной части
- •3.3 Руководство администратора
- •3.4 Руководство программиста
- •4 Обоснование экономической эффективности проекта
- •4.1 Расчет трудоемкости разработки программного продукта
- •4.2 Расчет себестоимости программного продукта
- •4.3 Расчет экономического эффекта от внедрения программного продукта
- •5 Безопасность труда
- •5.1 Анализ условий труда
- •5.2 Расчет искусственного освещения
- •5.3 Возможные чрезвычайные ситуации
- •5.3.1 Расчет зоны заражения
- •5.3.2 Расчет времени эвакуации
- •Заключение
- •Список использованных источников
- •Приложение а
- •Приложение б
Приложение а
(обязательное)
Организационная структура
Приложение б
(обязательное)
Листинг программных модулей
//Модуль идентификации и аутентификации login.java
package avk;
import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.http.*;
public class login extends HttpServlet {
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
ArrayList<String> ar = null;
String login = req.getParameter("login");
String pas = req.getParameter("pas");
if(validLoginPas(login, pas))
{
ar = getDate(login, pas);
if(ar != null)
{
autorization(ar, req.getSession(true));
resp.sendRedirect("menu.html");
}
else resp.sendRedirect("info.html");
}
else resp.sendRedirect("info1.html");
}
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req,resp);
}
private boolean validLoginPas(String login, String pas)
{
if(login == null || pas == null )return false;
if(login.length() == 0 || pas.length() == 0 )return false;
return true;
}
private void autorization(ArrayList<String> ar, HttpSession ses)
{
ses.setAttribute("id", ar.get(0));
ses.setAttribute("typeUser", ar.get(7));
ses.setAttribute("shortName", ar.get(6));
}
private ArrayList<String> getDate(String login, String pas)
{
ArrayList<String> ar = null;
try
{
DAOusers dao = new DAOusers();
ar = dao.getUserDate(login, pas);
}
catch(SQLException e)
{
}
catch(ClassNotFoundException e)
{
}
return ar;
}
}
//Модуль регистрации reg.java
package avk;
import java.io.IOException;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.http.*;
public class reg extends HttpServlet {
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String login, pas, Surname, Name, FName;
req.setCharacterEncoding("utf8");
login = req.getParameter("login");
pas = req.getParameter("pas");
Surname = req.getParameter("Surname");
Name = req.getParameter("Name");
FName = req.getParameter("FName");
if(validUserData(login, pas, Surname, Name, FName))
{
try
{
DAOusers dao = new DAOusers();
if(dao.InsUserDate(login, pas, Surname, Name, FName))resp.sendRedirect("sacsFulReg.html");
else resp.sendRedirect("error.html?Insert_failed");
}
catch(SQLException e)
{
resp.sendRedirect("error.html?User_was_not_added");
}
catch(ClassNotFoundException e)
{
}
}
else resp.sendRedirect("erReg.html");
}
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req,resp);
}
private boolean validUserData(String login, String pas, String Surname, String Name, String FName)
{
if(login == null || pas == null || Surname == null || Name == null || FName == null )return false;
if(login.length() == 0 || pas.length() == 0 || Surname.length() == 0 || Name.length() == 0 || FName.length() == 0 )return false;
return true;
}
}
//Модуль доступа к БД DAODemands.java
package avk;
import java.sql.*;
import java.util.*;
import java.util.Date;
public class DAOdemands {
private Connection connect = null;
private PreparedStatement pst = null;
//private Statement st = null;
//private String sql;
private ResultSet result = null;
private ResultSetMetaData resMet;
public DAOdemands() throws ClassNotFoundException, SQLException
{
this.connect = getConnection();
}
public Connection getConnection() throws ClassNotFoundException, SQLException {
try
{
Class.forName("org.postgresql.Driver");
}
catch(ClassNotFoundException e)
{
//return null;
throw e;
}
String url, user, password;
url = "jdbc:postgresql://127.0.0.1/zit";
user = "postgres";
password = "xmmGQAKq";
try
{
return DriverManager.getConnection(url, user, password);
}
catch(SQLException e)
{
throw e;
}
}
public boolean addDemand(String forName, String name, String tarqetDate, int tarqetTimeH, int tarqetTimeM, int tarqetAud, String targetMulti) throws SQLException {
String sql = "INSERT INTO \"demands\"(\"forName\", \"name\", \"dateTime\", \"tarqetAud\", \"targetMulti\", "+
"\"requestAccepted\", \"requestDoned\", \"dateTimeRegistration\")VALUES(?, ?, ?, ?, ?, ?, ?, ?);";
try
{
pst = connect.prepareStatement(sql);
pst.setString(1, forName);
pst.setString(2, name);
pst.setTimestamp(3, getTimestamp(tarqetDate,((Integer)tarqetTimeH).toString(),((Integer)tarqetTimeM).toString()));
pst.setInt(4, tarqetAud);
pst.setString(5, targetMulti);
pst.setBoolean(6, false);
pst.setBoolean(7, false);
Timestamp timestamp = new Timestamp((new Date()).getTime());
pst.setTimestamp(8, timestamp);
pst.executeUpdate();
}
catch(SQLException e)
{
throw e;
}
/* finally
{
try{
pst.close();
connect.close();
}
catch(SQLException e)
{
throw e;
}
}*/
return true;
}
private ArrayList<ArrayList<String>> commonRequest(String sqlSuffics) throws SQLException
{
String sql = "SELECT \"idRequest\", \"forName\", \"name\", \"dateTime\","+
"\"tarqetAud\", \"targetMulti\", \"requestAccepted\","+
"\"requestDoned\", \"dateTimeRegistration\" FROM public.requests "+sqlSuffics +" ORDER BY \"dateTime\";";
pst = connect.prepareStatement(sql);
result = pst.executeQuery();
resMet = result.getMetaData();
int colCount = resMet.getColumnCount();
GregorianCalendar cal = new GregorianCalendar(Locale.getDefault());
Formatter frm;
ArrayList<ArrayList<String>> selectRequest = new ArrayList<ArrayList<String>>();
for(int i = 1; i <= colCount; i++)
while(result.next())
{
ArrayList<String> arRow = new ArrayList<String>(colCount);
for(int j = 1; j <= colCount; j++)
{
arRow.add(((Integer)result.getInt(1)).toString());
arRow.add(result.getString(2));
arRow.add(result.getString(3));
cal.setTimeInMillis(result.getTimestamp(4).getTime());
frm = new Formatter();
frm.format("%td.%tm.%tY %tk:%tM", cal,cal,cal,cal,cal);
arRow.add(frm.toString());
frm.close();
arRow.add(((Integer)result.getInt(5)).toString());
arRow.add(result.getString(6));
arRow.add(result.getBoolean(7) ? "ДА" : "НЕТ");
arRow.add(result.getBoolean(8) ? "ДА" : "НЕТ");
cal.setTimeInMillis(result.getTimestamp(9).getTime());
frm = new Formatter();
frm.format("%td.%tm.%tY %tk:%tM:%tS", cal,cal,cal,cal,cal,cal);
arRow.add(frm.toString());
frm.close();
}
selectRequest.add(arRow);
}
pst.close();
connect.close();
return selectRequest;
}
private String getTime(int shiftYear, int shiftMonth, int shiftDay)
{
GregorianCalendar cal = new GregorianCalendar();
cal.set(GregorianCalendar.HOUR_OF_DAY, 0);
cal.set(GregorianCalendar.DAY_OF_MONTH, cal.get(GregorianCalendar.DAY_OF_MONTH)+shiftDay);
cal.set(GregorianCalendar.MONTH, cal.get(GregorianCalendar.MONTH)+shiftMonth);
cal.set(GregorianCalendar.YEAR, cal.get(GregorianCalendar.YEAR)+shiftYear);
Formatter frm = new Formatter();
frm.format("%td.%tm.%tY", cal,cal,cal);
return frm.toString();
}
private String getSqlSuffics(String date, String date1)
{
return
"WHERE requests.\"dateTime\" >= \'"+date+"\' AND requests.\"dateTime\" <= \'"+date1+"\'";
}
private ArrayList<ArrayList<String>> callSel(int shiftYear, int shiftMonth, int shiftDay,int shiftYear1, int shiftMonth1, int shiftDay1) throws SQLException
{
try
{
return commonRequest(getSqlSuffics(getTime(shiftYear, shiftMonth, shiftDay), getTime(shiftYear1, shiftMonth1, shiftDay1)));
}
catch(SQLException e)
{
throw e;
}
}
public Timestamp getTimestamp(String date, String h, String m)
{
int year, month, dayOfMonth, hours = Integer.valueOf(h), minutes = Integer.valueOf(m);
StringTokenizer strTok = new StringTokenizer(date, ".");
dayOfMonth = Integer.valueOf(strTok.nextToken());
month = Integer.valueOf(strTok.nextToken());
year = Integer.valueOf(strTok.nextToken());
GregorianCalendar cal = new GregorianCalendar(year, month-1, dayOfMonth, hours, minutes);
Timestamp timeStamp = new Timestamp(cal.getTime().getTime());
return timeStamp;
}
}
// Модуль добавления заявки на компьютерную оргтехнику addDemand.java
package avk;
import java.io.IOException;
import java.sql.SQLException;
import javax.servlet.*;
import javax.servlet.http.*;
public class AddDemand extends HttpServlet {
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String name, forName, tarqetDate, tarqetTimeH, tarqetTimeM, tarqetAud, targetMulti;
req.setCharacterEncoding("utf8");
name = req.getParameter("name");
forName = req.getParameter("forName");
tarqetDate = req.getParameter("tarqetDate");
tarqetTimeH = req.getParameter("tarqetTimeH");
tarqetTimeM = req.getParameter("tarqetTimeM");
tarqetAud = req.getParameter("tarqetAud");
targetMulti = req.getParameter("targetMulti");
try
{
DAOdemands dao = new DAOdemands();
if(dao.addDemand(forName, forName, tarqetDate, Integer.parseInt(tarqetTimeH), Integer.parseInt(tarqetTimeM), Integer.parseInt(tarqetAud), targetMulti))
resp.sendRedirect("sacsFulAdReq.html");
}
catch(SQLException e)
{
resp.sendRedirect("error.html?errorAddRequest");
}
catch(ClassNotFoundException e)
{
resp.sendRedirect("error.html?errorAddRequest");
}
}
}
//Модуль создания интерфейса формы создания заявки SubmitDemand.jsp
<?xml version="1.0" encoding="utf8" ?>
<%@page import="avk.DAOdemands"%>
<%@page import="avk.DAOusers"%>
<%@page import="avk.DAODeviceClasses"%>
<%@page import="avk.DAODeviceType"%>
<%@page import="avk.DAODevices"%>
<%@page import="avk.DAORooms"%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.Formatter"%>
<%@page import="java.util.GregorianCalendar"%>
<%@ page language="java" contentType="text/html; charset=utf8"
pageEncoding="utf8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf8" />
<title>Заявки</title>
</head>
<body>
<div style="text-align: center; font-weight: bold;"><big><big><big><big>Оформление
заявки<br>
<br>
</big></big></big></big>
<form action="addDemand" method="post">
<div style="text-align: center;"></div>
<table style="text-align: left; height: 180px; width: 922px;" align="center" border="1" cellpadding="2" cellspacing="2">
<tbody>
<tr>
<td style="font-weight: bold; text-align: left; width: 343px;"><big><big><big><small>Заявка
от:</small><br>
</big></big></big></td>
<td style="text-align: left; width: 470px;"><big><big>
<%= session.getAttribute("shortName") %>
</big></big></td>
</tr>
<tr>
<td style="text-align: left; font-weight: bold; width: 343px;"><big><big>Заявка на:</big></big></td>
<td style="text-align: left; width: 470px;"><big><big>
<select name="class">
<%
DAODeviceClasses dao = new DAODeviceClasses();
ArrayList<ArrayList<String>> selAllDevClass = dao.selAllDevClass();
for(ArrayList<String> deviceData : selAllDevClass)
{
%><option value="<%= deviceData.get(0)%>"><%= deviceData.get(1) %></option>
<%;} %>
</select>
<br>
</big></big></td>
</tr>
<tr>
<td style="text-align: left; font-weight: bold; width: 343px;"><big><big>Тип оборудования:</big></big></td>
<td style="text-align: left; width: 470px;"><big><big>
<select name="device">
<%
DAODeviceType daot = new DAODeviceType();
ArrayList<ArrayList<String>> selAllDevType = daot.selAllDevType();
for(ArrayList<String> deviceType : selAllDevType)
{
%><option value="<%= deviceType.get(0)%>"><%= deviceType.get(1) %></option>
<%;} %>
</select>
<br>
</big></big></td>
</tr>
<tr>
<td style="text-align: left; font-weight: bold; width: 343px;"><big><big>Аудитория/кабинет, номер</big></big></td>
<td style="width: 470px;">
<select name="name">
<% DAORooms daor = new DAORooms();
ArrayList<ArrayList<String>> selAllRooms = daor.selAllRooms();
String id=null;
for(ArrayList<String> rooms : selAllRooms)
{
%><option value="<%= id=rooms.get(0)%>"><%= rooms.get(1) %></option>
<%;} %>
</select>
<span style="font-weight: bold;">Этаж</span>
<select name="storey">
<%for(ArrayList<String> rooms : selAllRooms)
{
%>
<option value="<%=id %>"><%= rooms.get(3) %></option><%;} %>
</select>
<span style="font-weight: bold;">№</span>
<select name="number">
<%for(ArrayList<String> rooms : selAllRooms)
{
%><option><%= rooms.get(2) %></option><%;} %>
</select>
</td>
</tr>
<tr>
<td style="text-align: left; font-weight: bold; width: 343px;"><big><big>Данные об оборудовании</big></big></td>
<td style="text-align: left; width: 470px;"><big><big>
<select name="device">
<%
DAODevices daod = new DAODevices();
ArrayList<ArrayList<String>> selAllDev = daod.selAllDev();
for(ArrayList<String> device : selAllDev)
{
%><option value="<%= device.get(0)%>"><%= device.get(1) %></option>
<%;} %>
</select>
<br>
</big></big></td>
</tr>
<tr>
<td style="text-align: left; font-weight: bold; width: 343px;"><big><big>Что необходимо сделать:</big></big></td>
<td style="width: 470px;"><big><big><textarea cols="30" rows="3" name="description"></textarea></big></big></td>
</tr>
<tr>
<td style="width: 343px;" colspan="1" rowspan="1"><big><big><a href="menu.html" name="index"><big><big>На
главную</big></big></a></big></big></td>
<td style="width: 470px;"><big><big><button value="Отправить заявку" name="AddRequest"><big><big>Отправить
заявку</big></big></button></big></big></td>
</tr>
</tbody>
</table>
</form>
</div>
</body>
</html>
//Модуль доступа к таблице классов устройств БД DAODeviceClasses.java
package avk;
import java.sql.*;
import java.util.*;
import java.util.Date;
public class DAODeviceClasses {
private Connection connect = null;
private PreparedStatement pst = null;
//private Statement st = null;
//private String sql;
private ResultSet result = null;
private ResultSetMetaData resMet;
public DAODeviceClasses() throws ClassNotFoundException, SQLException
{
this.connect = getConnection();
}
public Connection getConnection() throws ClassNotFoundException, SQLException {
try
{
Class.forName("org.postgresql.Driver");
}
catch(ClassNotFoundException e)
{
//return null;
throw e;
}
String url, user, password;
url = "jdbc:postgresql://127.0.0.1/zit";
user = "postgres";
password = "xmmGQAKq";
try
{
return DriverManager.getConnection(url, user, password);
}
catch(SQLException e)
{
throw e;
}
}
public ArrayList<ArrayList<String>> selAllDevClass() throws SQLException
{
String sql = "SELECT \"idclass\", \"class\" FROM public.\"DeviceClasses\";";
ArrayList<ArrayList<String>> selAllDevClass = null;
try
{
pst = connect.prepareStatement(sql);
result = pst.executeQuery();
resMet = result.getMetaData();
int colCount = resMet.getColumnCount();
selAllDevClass = new ArrayList<ArrayList<String>>();
while(result.next())
{
ArrayList<String> arRow = new ArrayList<String>(colCount);
arRow.add(result.getString(1));
arRow.add(result.getString(2));
selAllDevClass.add(arRow);
}
pst.close();
connect.close();
}
catch(SQLException e)
{
throw e;
}
return selAllDevClass;
}
}
//Модуль доступа к таблице типов устройств БД DAODeviceTypes.java
package avk;
import java.sql.*;
import java.util.*;
import java.util.Date;
public class DAODeviceType {
private Connection connect = null;
private PreparedStatement pst = null;
//private Statement st = null;
//private String sql;
private ResultSet result = null;
private ResultSetMetaData resMet;
public DAODeviceType() throws ClassNotFoundException, SQLException
{
this.connect = getConnection();
}
public Connection getConnection() throws ClassNotFoundException, SQLException {
try
{
Class.forName("org.postgresql.Driver");
}
catch(ClassNotFoundException e)
{
//return null;
throw e;
}
String url, user, password;
url = "jdbc:postgresql://127.0.0.1/zit";
user = "postgres";
password = "xmmGQAKq";
try
{
return DriverManager.getConnection(url, user, password);
}
catch(SQLException e)
{
throw e;
}
}
public ArrayList<ArrayList<String>> selAllDevType() throws SQLException
{
String sql = "SELECT \"idtype\", \"device\", \"idclass\" FROM public.\"DeviceTypes\";";
ArrayList<ArrayList<String>> selAllDevType = null;
try
{
pst = connect.prepareStatement(sql);
result = pst.executeQuery();
resMet = result.getMetaData();
int colCount = resMet.getColumnCount();
selAllDevType = new ArrayList<ArrayList<String>>();
while(result.next())
{
ArrayList<String> arRow = new ArrayList<String>(colCount);
arRow.add(result.getString(1));
arRow.add(result.getString(2));
arRow.add(result.getString(3));
selAllDevType.add(arRow);
}
pst.close();
connect.close();
}
catch(SQLException e)
{
throw e;
}
return selAllDevType;
}
}
//Модуль доступа к таблице устройств БД DAODevices.java
package avk;
import java.sql.*;
import java.util.*;
import java.util.Date;
public class DAODevices {
private Connection connect = null;
private PreparedStatement pst = null;
//private Statement st = null;
//private String sql;
private ResultSet result = null;
private ResultSetMetaData resMet;
public DAODevices() throws ClassNotFoundException, SQLException
{
this.connect = getConnection();
}
public Connection getConnection() throws ClassNotFoundException, SQLException {
try
{
Class.forName("org.postgresql.Driver");
}
catch(ClassNotFoundException e)
{
//return null;
throw e;
}
String url, user, password;
url = "jdbc:postgresql://127.0.0.1/zit";
user = "postgres";
password = "xmmGQAKq";
try
{
return DriverManager.getConnection(url, user, password);
}
catch(SQLException e)
{
throw e;
}
}
public ArrayList<ArrayList<String>> selAllDev() throws SQLException
{
String sql = "SELECT \"iddevice\", \"nameDevice\" FROM public.\"devices\";";
ArrayList<ArrayList<String>> selAllDev = null;
try
{
pst = connect.prepareStatement(sql);
result = pst.executeQuery();
resMet = result.getMetaData();
int colCount = resMet.getColumnCount();
selAllDev = new ArrayList<ArrayList<String>>();
while(result.next())
{
ArrayList<String> arRow = new ArrayList<String>(colCount);
arRow.add(result.getString(1));
arRow.add(result.getString(2));
selAllDev.add(arRow);
}
pst.close();
connect.close();
}
catch(SQLException e)
{
throw e;
}
return selAllDev;
}
}
//Модуль доступа к таблице типов помещений БД DAORoomTypes.java
package avk;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
public class DAORoomTypes {
private Connection connect = null;
private PreparedStatement pst = null;
//private Statement st = null;
//private String sql;
private ResultSet result = null;
private ResultSetMetaData resMet;
public DAORoomTypes() throws ClassNotFoundException, SQLException
{
this.connect = getConnection();
}
public Connection getConnection() throws ClassNotFoundException, SQLException {
try
{
Class.forName("org.postgresql.Driver");
}
catch(ClassNotFoundException e)
{
//return null;
throw e;
}
String url, user, password;
url = "jdbc:postgresql://127.0.0.1/zit";
user = "postgres";
password = "xmmGQAKq";
try
{
return DriverManager.getConnection(url, user, password);
}
catch(SQLException e)
{
throw e;
}
}
public ArrayList<ArrayList<String>> selAllRoomTypes() throws SQLException
{
String sql = "SELECT \"idtype\", \"type\" FROM public.\"RoomTypes\";";
ArrayList<ArrayList<String>> selAllRoomTypes = null;
try
{
pst = connect.prepareStatement(sql);
result = pst.executeQuery();
resMet = result.getMetaData();
int colCount = resMet.getColumnCount();
selAllRoomTypes = new ArrayList<ArrayList<String>>();
while(result.next())
{
ArrayList<String> arRow = new ArrayList<String>(colCount);
arRow.add(result.getString(1));
arRow.add(result.getString(2));
selAllRoomTypes.add(arRow);
}
pst.close();
connect.close();
}
catch(SQLException e)
{
throw e;
}
return selAllRoomTypes;
}
}
//Модуль доступа к таблице пользователей БД DAOUsers.java
package avk;
import java.sql.*;
import java.util.*;
import java.util.Date;
public class DAOusers {
private Connection connect = null;
private PreparedStatement pst = null;
//private Statement st = null;
//private String sql;
private ResultSet result = null;
private ResultSetMetaData resMet;
public DAOusers() throws ClassNotFoundException, SQLException
{
this.connect = getConnection();
}
public Connection getConnection() throws ClassNotFoundException, SQLException {
try
{
Class.forName("org.postgresql.Driver");
}
catch(ClassNotFoundException e)
{
//return null;
throw e;
}
String url, user, password;
url = "jdbc:postgresql://127.0.0.1/zit";
user = "postgres";
password = "xmmGQAKq";
try
{
return DriverManager.getConnection(url, user, password);
}
catch(SQLException e)
{
throw e;
}
}
public ArrayList<String> getUserDate(String login, String pas) throws SQLException
{
String sql = "SELECT \"id\",\"login\", \"pas\",\"Surname\",\"Name\",\"FName\",\"shortName\",\"typeUser\" FROM public.\"Users\" WHERE \"Users\".\"login\" =? AND \"Users\".pas = ?;";
ArrayList ar = null;
try
{
pst = connect.prepareStatement(sql);
pst.setString(1, login);
pst.setString(2, pas);
result = pst.executeQuery();
if(result.next())
{
ar = new ArrayList(8);
ar.add(result.getString(1));
ar.add(result.getString(2));
ar.add(result.getString(3));
ar.add(result.getString(4));
ar.add(result.getString(5));
ar.add(result.getString(6));
ar.add(result.getString(7));
Integer i;
ar.add((i = result.getInt(8)).toString());
}
else return null;
if(result.wasNull())return null;
pst.close();
connect.close();
}
catch(SQLException e)
{
return null;
//throw e;
}
return ar;
}
public ArrayList<ArrayList<String>> selAllUserDate() throws SQLException
{
String sql = "SELECT \"id\", \"shortName\", \"typeUser\" FROM public.\"Users\";";
ArrayList<ArrayList<String>> selAllUser = null;
try
{
pst = connect.prepareStatement(sql);
result = pst.executeQuery();
resMet = result.getMetaData();
int colCount = resMet.getColumnCount();
selAllUser = new ArrayList<ArrayList<String>>();
while(result.next())
{
ArrayList<String> arRow = new ArrayList<String>(colCount);
arRow.add(result.getString(1));
arRow.add(result.getString(2));
arRow.add(result.getString(3));
selAllUser.add(arRow);
}
pst.close();
connect.close();
}
catch(SQLException e)
{
throw e;
}
return selAllUser;
}
public boolean admAccept(String flag, String id)
{
String sql = "UPDATE \"Users\" SET \"typeUser\"=? WHERE id = ?;";
try
{
pst = connect.prepareStatement(sql);
pst.setInt(1, Integer.parseInt(flag));
pst.setInt(2, Integer.parseInt(id));
pst.executeUpdate();
pst.close();
connect.close();
}
catch(SQLException e)
{
return false;
}
return true;
}
public boolean InsUserDate(String login, String pas, String Surname, String Name, String FName) throws SQLException
{
int typeUser = 0;
String shortName = Surname+" "+Name.substring(0, 1) + "."+FName.substring(0, 1) + ".";
String sql = "INSERT INTO \"Users\"(\"login\", \"pas\",\"Surname\", \"Name\", \"FName\", \"shortName\", \"typeUser\")VALUES (?, ?, ?, ?, ?, ?, ?);";
try
{
pst = connect.prepareStatement(sql);
pst.setString(1, login);
pst.setString(2, pas);
pst.setString(3, Surname);
pst.setString(4, Name);
pst.setString(5, FName);
pst.setString(6, shortName);
pst.setInt(7, typeUser);
pst.executeUpdate();
pst.close();
connect.close();
}
catch(SQLException e)
{
//return false;
throw e;
}
return true;
}
}
// Модуль, открывающий доступ к странице редактирования прав пользователей AdmAccept.java
package avk;
import java.io.IOException;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.http.*;
public class AdmAccept extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String flag, id;
id = req.getParameter("id");
flag = req.getParameter("flag");
try
{
DAOusers dao = new DAOusers();
if(dao.admAccept(flag.equals("0") ? "1" : "0", id))resp.sendRedirect("admUser.jsp");
else resp.sendRedirect("error.html?errorAdd");
}
catch(SQLException e)
{
resp.sendRedirect("error.html?errorDB");
}
catch(ClassNotFoundException e)
{
resp.sendRedirect("error.html?errorCNotF");
}
}
}
//Модуль создания интерфейса страницы редактирования прав пользователей admUser.jsp
<?xml version="1.0" encoding="utf8" ?>
<%@page import="java.sql.SQLException"%>
<%@page import="java.util.ArrayList"%>
<%@page import="avk.DAOusers"%>
<%@ page language="java" contentType="text/html; charset=utf8"
pageEncoding="utf8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf8" />
<title>Заявки</title>
</head>
<body>
<div style="text-align: center;"><big><big><big><big><big><span
style="font-weight: bold;">Управление пользователями(<%= session.getAttribute("shortName") %>)<br><br>
</span></big></big></big></big></big>
<table style="text-align: left; width: 340px; height: 60px;"
align="center" border="1" cellpadding="2"
cellspacing="2">
<tbody>
<tr>
<td style="width: 149px; text-align: right;"><span
style="font-weight: bold;">Пользователь</span></td>
<td style="width: 171px; text-align: center;"><span
style="font-weight: bold;">Администратор</span></td>
</tr>
<%
ArrayList<ArrayList<String>> arSel=null;
HttpSession ses = request.getSession(false);
String atr;
if(ses==null) {%>
<big><big><big><big><big>ses==null</big></big></big></big>
<jsp:forward page="info2.html"/>
<%;} else
{
atr = (String)ses.getAttribute("typeUser");
if(atr.equals("1"))
{
try
{
DAOusers dao = new DAOusers();
arSel = dao.selAllUserDate();
}
catch(SQLException e)
{%>
<jsp:forward page="error.html"/>
<%;}
String str = null;
for(ArrayList<String> ar : arSel)
{ str = ar.get(2).equals("0") ? "НЕТ" : "ДА";%>
<tr>
<td style="width: 149px; text-align: right;"><%= ar.get(1) %>
</td>
<td
style="width: 171px; text-align: center; font-weight: bold;"><big><big><a
name="Users" href="AdmAccept?id=<%= ar.get(0) %>&flag=<%=ar.get(2)%>"> <%= str%>
</a></big></big></td>
</tr>
<%;}
if(arSel.isEmpty())
{
%>
<tr align="center">
<td colspan="2" rowspan="1"><span
style="font-weight: bold;">Пользователи отсутствуют</span></td>
</tr>
<%;}} if(atr.equals("0")){%>
<jsp:forward page="info2.html"/>
<% ;}}%>
</tbody>
</table>
<big><big><big><big>
<br>
<a href="menu.html" name="menu">Главная</a></span></big></big></big></big></div>
</div>
</body>
</html>
//Модуль доступа к таблице заявок на мультимедиа оборудование БД //DAORequest.java
package avk;
import java.sql.*;
import java.util.*;
import java.util.Date;
public class DAORequest implements IDAORequest {
private Connection connect = null;
private PreparedStatement pst = null;
//private Statement st = null;
//private String sql;
private ResultSet result = null;
private ResultSetMetaData resMet;
public DAORequest() throws ClassNotFoundException, SQLException
{
this.connect = getConnection();
}
public Connection getConnection() throws ClassNotFoundException, SQLException {
try
{
Class.forName("org.postgresql.Driver");
}
catch(ClassNotFoundException e)
{
//return null;
throw e;
}
String url, user, password;
url = "jdbc:postgresql://127.0.0.1/request";
user = "postgres";
password = "xmmGQAKq";
try
{
return DriverManager.getConnection(url, user, password);
}
catch(SQLException e)
{
throw e;
}
}
public boolean addRequest(String forName, String name, String tarqetDate, int tarqetTimeH, int tarqetTimeM, int tarqetAud, String targetMulti) throws SQLException {
String sql = "INSERT INTO \"requests\"(\"forName\", \"name\", \"dateTime\", \"tarqetAud\", \"targetMulti\", "+
"\"requestAccepted\", \"requestDoned\", \"dateTimeRegistration\")VALUES(?, ?, ?, ?, ?, ?, ?, ?);";
try
{
pst = connect.prepareStatement(sql);
pst.setString(1, forName);
pst.setString(2, name);
pst.setTimestamp(3, getTimestamp(tarqetDate,((Integer)tarqetTimeH).toString(),((Integer)tarqetTimeM).toString()));
pst.setInt(4, tarqetAud);
pst.setString(5, targetMulti);
pst.setBoolean(6, false);
pst.setBoolean(7, false);
Timestamp timestamp = new Timestamp((new Date()).getTime());
pst.setTimestamp(8, timestamp);
pst.executeUpdate();
}
catch(SQLException e)
{
throw e;
}
/* finally
{
try{
pst.close();
connect.close();
}
catch(SQLException e)
{
throw e;
}
}*/
return true;
}
public ArrayList<ArrayList<String>> todayRequest() throws SQLException {
return callSel(0, 0, 0, 0, 0, 1);
}
public ArrayList<ArrayList<String>> tomorrowRequest() throws SQLException {
return callSel(0, 0, 1, 0, 0, 2);
}
public ArrayList<ArrayList<String>> endWeekRequest() throws SQLException {
GregorianCalendar cal = new GregorianCalendar();
int curentDayOfWeek = cal.get(GregorianCalendar.DAY_OF_WEEK);
if (curentDayOfWeek == 1) curentDayOfWeek = 8;
int shift = 8 - curentDayOfWeek + 1;
return callSel(0, 0, 0, 0, 0, shift);
}
public ArrayList<ArrayList<String>> weekendRequest() throws SQLException {
GregorianCalendar cal = new GregorianCalendar();
int curentDayOfWeek = cal.get(GregorianCalendar.DAY_OF_WEEK);
if (curentDayOfWeek == 1) curentDayOfWeek = 8;
int shift = 8 - curentDayOfWeek + 1;
return callSel(0, 0, shift-2, 0, 0, shift);
}
public ArrayList<ArrayList<String>> timeIntervalRequest() throws SQLException {
return callSel(0, 0, 1, 0, 0, 2);
}
public boolean acceptingRequest(String id, String bool){
String sql = "UPDATE requests SET \"requestAccepted\"=? WHERE \"idRequest\"=?;";
try
{
pst = connect.prepareStatement(sql);
pst.setBoolean(1, new Boolean(bool));
pst.setInt(2, Integer.parseInt(id));
pst.executeUpdate();
pst.close();
connect.close();
}
catch(SQLException e)
{
return false;
}
return true;
}
public boolean donedRequest(String id, String bool){
String sql = "UPDATE requests SET \"requestDoned\"=? WHERE \"idRequest\"=?;";
try
{
pst = connect.prepareStatement(sql);
pst.setBoolean(1, new Boolean(bool));
pst.setInt(2, Integer.parseInt(id));
pst.executeUpdate();
pst.close();
connect.close();
}
catch(SQLException e)
{
return false;
}
return true;
}
public ArrayList<String> getUserDate(String login, String pas) throws SQLException
{
String sql = "SELECT \"id\", \"fName\", \"lName\", \"mName\", \"shortName\", \"login\", \"pas\", \"typeUser\" FROM public.\"user\" WHERE \"user\".\"login\" =? AND \"user\".pas = ?;";
ArrayList ar = null;
try
{
pst = connect.prepareStatement(sql);
pst.setString(1, login);
pst.setString(2, pas);
result = pst.executeQuery();
if(result.next())
{
ar = new ArrayList(8);
ar.add(result.getString(1));
ar.add(result.getString(2));
ar.add(result.getString(3));
ar.add(result.getString(4));
ar.add(result.getString(5));
ar.add(result.getString(6));
ar.add(result.getString(7));
Integer i;
ar.add((i = result.getInt(8)).toString());
}
else return null;
if(result.wasNull())return null;
pst.close();
connect.close();
}
catch(SQLException e)
{
return null;
//throw e;
}
return ar;
}
public ArrayList<ArrayList<String>> selAllUserDate() throws SQLException
{
String sql = "SELECT \"id\", \"shortName\", \"typeUser\" FROM public.\"user\";";
ArrayList<ArrayList<String>> selAllUser = null;
try
{
pst = connect.prepareStatement(sql);
result = pst.executeQuery();
resMet = result.getMetaData();
int colCount = resMet.getColumnCount();
selAllUser = new ArrayList<ArrayList<String>>();
while(result.next())
{
ArrayList<String> arRow = new ArrayList<String>(colCount);
arRow.add(result.getString(1));
arRow.add(result.getString(2));
arRow.add(result.getString(3));
selAllUser.add(arRow);
}
pst.close();
connect.close();
}
catch(SQLException e)
{
throw e;
}
return selAllUser;
}
public boolean admAccept(String flag, String id)
{
String sql = "UPDATE \"user\" SET \"typeUser\"=? WHERE id = ?;";
try
{
pst = connect.prepareStatement(sql);
pst.setInt(1, Integer.parseInt(flag));
pst.setInt(2, Integer.parseInt(id));
pst.executeUpdate();
pst.close();
connect.close();
}
catch(SQLException e)
{
return false;
}
return true;
}
public boolean InsUserDate(String login, String pas, String fName, String lName, String mName) throws SQLException
{
int typeUser = 0;
String shortName = lName+" "+fName.substring(0, 1) + "."+mName.substring(0, 1) + ".";
String sql = "INSERT INTO \"user\"(\"fName\", \"lName\", \"mName\", \"shortName\", \"login\", \"pas\", \"typeUser\")VALUES (?, ?, ?, ?, ?, ?, ?);";
try
{
pst = connect.prepareStatement(sql);
pst.setString(1, fName);
pst.setString(2, lName);
pst.setString(3, mName);
pst.setString(4, shortName);
pst.setString(5, login);
pst.setString(6, pas);
pst.setInt(7, typeUser);
pst.executeUpdate();
pst.close();
connect.close();
}
catch(SQLException e)
{
//return false;
throw e;
}
return true;
}
private ArrayList<ArrayList<String>> commonRequest(String sqlSuffics) throws SQLException
{
String sql = "SELECT \"idRequest\", \"forName\", \"name\", \"dateTime\","+
"\"tarqetAud\", \"targetMulti\", \"requestAccepted\","+
"\"requestDoned\", \"dateTimeRegistration\" FROM public.requests "+sqlSuffics +" ORDER BY \"dateTime\";";
pst = connect.prepareStatement(sql);
result = pst.executeQuery();
resMet = result.getMetaData();
int colCount = resMet.getColumnCount();
GregorianCalendar cal = new GregorianCalendar(Locale.getDefault());
Formatter frm;
ArrayList<ArrayList<String>> selectRequest = new ArrayList<ArrayList<String>>();
for(int i = 1; i <= colCount; i++)
while(result.next())
{
ArrayList<String> arRow = new ArrayList<String>(colCount);
for(int j = 1; j <= colCount; j++)
{
arRow.add(((Integer)result.getInt(1)).toString());
arRow.add(result.getString(2));
arRow.add(result.getString(3));
cal.setTimeInMillis(result.getTimestamp(4).getTime());
frm = new Formatter();
frm.format("%td.%tm.%tY %tk:%tM", cal,cal,cal,cal,cal);
arRow.add(frm.toString());
frm.close();
arRow.add(((Integer)result.getInt(5)).toString());
arRow.add(result.getString(6));
arRow.add(result.getBoolean(7) ? "ДА" : "НЕТ");
arRow.add(result.getBoolean(8) ? "ДА" : "НЕТ");
cal.setTimeInMillis(result.getTimestamp(9).getTime());
frm = new Formatter();
frm.format("%td.%tm.%tY %tk:%tM:%tS", cal,cal,cal,cal,cal,cal);
arRow.add(frm.toString());
frm.close();
}
selectRequest.add(arRow);
}
pst.close();
connect.close();
return selectRequest;
}
private String getTime(int shiftYear, int shiftMonth, int shiftDay)
{
GregorianCalendar cal = new GregorianCalendar();
cal.set(GregorianCalendar.HOUR_OF_DAY, 0);
cal.set(GregorianCalendar.DAY_OF_MONTH, cal.get(GregorianCalendar.DAY_OF_MONTH)+shiftDay);
cal.set(GregorianCalendar.MONTH, cal.get(GregorianCalendar.MONTH)+shiftMonth);
cal.set(GregorianCalendar.YEAR, cal.get(GregorianCalendar.YEAR)+shiftYear);
Formatter frm = new Formatter();
frm.format("%td.%tm.%tY", cal,cal,cal);
return frm.toString();
}
private String getSqlSuffics(String date, String date1)
{
return
"WHERE requests.\"dateTime\" >= \'"+date+"\' AND requests.\"dateTime\" <= \'"+date1+"\'";
}
private ArrayList<ArrayList<String>> callSel(int shiftYear, int shiftMonth, int shiftDay,int shiftYear1, int shiftMonth1, int shiftDay1) throws SQLException
{
try
{
return commonRequest(getSqlSuffics(getTime(shiftYear, shiftMonth, shiftDay), getTime(shiftYear1, shiftMonth1, shiftDay1)));
}
catch(SQLException e)
{
throw e;
}
}
public Timestamp getTimestamp(String date, String h, String m)
{
int year, month, dayOfMonth, hours = Integer.valueOf(h), minutes = Integer.valueOf(m);
StringTokenizer strTok = new StringTokenizer(date, ".");
dayOfMonth = Integer.valueOf(strTok.nextToken());
month = Integer.valueOf(strTok.nextToken());
year = Integer.valueOf(strTok.nextToken());
GregorianCalendar cal = new GregorianCalendar(year, month-1, dayOfMonth, hours, minutes);
Timestamp timeStamp = new Timestamp(cal.getTime().getTime());
return timeStamp;
}
}
//Модуль выборки заявок по определенным периодам SelRequest.java
import java.io.*;
import java.sql.SQLException;
import java.util.*;
import javax.servlet.ServletException;
import javax.servlet.http.*;
public class SelRequests extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
//String sel1 = req.getParameter("sel");
if(secureTested())
{
/* HttpSession session = req.getSession();
String sel = null;
if(session.getAttribute("sel") == null)
{
sel = req.getParameter("sel");
session.setAttribute("sel", sel);
}else sel = (String)session.getAttribute("sel");*/
String sel = req.getParameter("sel");
/*if(sel == null)*/
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/html");
PrintWriter out = resp.getWriter();
ArrayList<ArrayList<String>> arSel = null;
String info = null;
try
{
DAORequest dao = new DAORequest();
switch(Integer.parseInt(sel))
{
case 0: {arSel=dao.todayRequest(); info = "На сегодня"; break;}
case 1: {arSel=dao.tomorrowRequest(); info = "На завтра"; break;}
case 2: {arSel=dao.endWeekRequest(); info = "До конца недели"; break;}
case 3: {arSel=dao.weekendRequest(); info = "На выходные"; break;}
}
}
catch(SQLException e)
{
}
catch(ClassNotFoundException e)
{
}
out.println("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<html>");
out.println("<head>");
out.println("<meta content=\"text/html; charset=utf-8\"");
out.println("http-equiv=\"content-type\">");
out.println("<title>Заявки</title>");
out.println("</head>");
out.println("<body>");
out.println("<div style=\"text-align: center; font-weight: bold;\"><big><big><big><big>Заявки " + info);
out.println("<br>");
out.println("<br>");
out.println("</big></big></big></big>");
out.println("<div style=\"text-align: center;\"></div>");
out.println("<table style=\"text-align: left; width: 100%;\" align=\"center\"");
out.println("border=\"1\" cellpadding=\"2\" cellspacing=\"2\">");
out.println("<tbody>");
out.println("<tr>");
out.println("<td style=\"text-align: center; width: 102px;\"><big><big><small><small>Запросил(а)</small></small><br>");
out.println("</big></big></td>");
out.println("<td style=\"text-align: center; width: 101px;\"><big><big><small><small>Оформил(а)</small></small></big></big></td>");
out.println("<td style=\"text-align: center; width: 88px;\">Время<br>");
out.println("выполнения</td>");
out.println("<td style=\"text-align: center; width: 21px;\">№<br>");
out.println("ауд.</td>");
out.println("<td style=\"text-align: center; width: 311px;\">Средство");
out.println("мультимедиа</td>");
out.println("<td style=\"text-align: center; width: 50px;\">Приня-<br>");
out.println("та<br>");
out.println("</td>");
out.println("<td style=\"text-align: center; width: 46px;\">Выпол-<br>");
out.println("нена");
out.println("</td>");
out.println("<td style=\"text-align: center; width: 87px;\">Время");
out.println("регистрации</td>");
out.println("</tr>");
for(ArrayList<String> ar : arSel)
{
out.println("<tr>");//Boolean bol = new
out.println("<td style=\"text-align: center; width: 102px;\"><small>"+ar.get(1)+"</small></td>");
out.println("<td style=\"text-align: center; width: 101px;\"><small>"+ar.get(2)+"</small></td>");
out.println("<td style=\"text-align: center; width: 88px;\"><small>"+ar.get(3)+"</small></td>");
out.println("<td style=\"text-align: center; width: 21px;\"><small>"+ar.get(4)+"</small></td>");
out.println("<td style=\"text-align: center; width: 311px;\"><small>"+ar.get(5)+"</small></td>");
out.println("<td style=\"text-align: center; width: 50px;\"><big><big>");
String strForA = "?sel=%s&id=%s&flag=%s&field=%s";
Formatter frm = new Formatter();
frm.format(strForA, sel, ar.get(0), ar.get(6).equals("ДА") ? "true":"false","0");
HttpSession sesion;
sesion = req.getSession(true);
String admUser = (String)sesion.getAttribute("typeUser");
boolean bol = (admUser.equals("1") ? true : false);
String h = frm.toString();
frm = new Formatter();
frm.format(strForA, sel, ar.get(0), ar.get(7).equals("ДА") ? "true":"false","1");
String h1 = frm.toString();
if(bol)
{
out.println("<a href=\"DoneingAccepting"+h+"\" name=\"submitRequest\">"+ar.get(6)+"</a></big></big></td>");
out.println("<td style=\"text-align: center; width: 46px;\"><big><big><a");
out.println("href=\"DoneingAccepting"+h1+"\" name=\"showRequest\">"+ar.get(7)+"</a></big></big></td>");
}
else
{
out.println(ar.get(6)+"</big></big></td>");
out.println("<td style=\"text-align: center; width: 46px;\"><big><big>"+ar.get(7)+"</big></big></td>");
}
out.println("<td style=\"text-align: center; width: 87px;\"><small>"+ar.get(8)+"</small></td>");
out.println("</tr>");
}
out.println("<tr align=\"center\">");
out.println("<td colspan=\"8\" rowspan=\"1\"><big><big><big><big><a");
out.println("href=\"showRequest.html\" name=\"index\">Посмотреть еще</a></big></big></big></big></td>");
out.println(" </tr>");
out.println("</tbody></table></div></body></html>");
}
//resp.sendRedirect("/");
}
private boolean secureTested()
{
return true;
}
}
