
- •Введение
- •1. Определение предметной области
- •2. Объектно-ориентированное моделирование систем
- •2.1 Диаграмма вариантов использования
- •2.2 Диаграмма последовательности
- •2.3 Диаграмма состояний
- •2.4 Диаграмма классов
- •3. Разработка системы
- •3.1 Разработка базы данных
- •3.1.1 Создание er-модели
- •3.1.2 Выбор средств проектирования базы данных
- •3.1.3 Разработка физической модели
- •3.2 Создание регистрации на сайте
- •3.2.1 Отправка формыс данными
- •3.2.1 Создание страницы с выбором языка
- •3.2.2 Создание страницдобавления данных
- •3.3 Подключение к базе данных и вывод документов
- •Заключение
- •Список использованных источников
- •Приложение
- •Index.Css
- •Index.Php
Index.Css
* { margin:0; padding:0; }
html, body, #wrap {
height: 100%;
background: #d0ccbd;
}
body > #wrap {height: auto; min-height: 100%;}
#main { padding-bottom: 150px; } /* must be same height as the footer */
h1 {
font-size: 24px;
}
a {
text-decoration: none;
color: red;
}
a:hover {
font-style: bold;
text-decoration: underline;
color: black;
}
/*шапка*/
header {
text-align: center;
height: 150px;
background: url(images/header.png);
width: 100%;
border-radius: 10px;
}
ul {
text-align:center;
}
ul li {
display: inline-block;
padding-top:17px;
padding-left:32px;
margin:0;
}
/*кнокпа поиска*/
.search{
width: 150px; /*Ширина поля с кнопкой */
border: 1px solid #000; /* Параметры рамки */
min-height: 20px; /*Минимальная высота */
}
input[type="search"] {
border: none; /* Убираем рамку */
outline:none; /*Убираем свечение в Chrome и Safari */
-webkit-appearance: none; /* Убираем рамку в Chrome и Safari */
width: 120px; /*Ширина поля */
vertical-align:middle; /*Выравнивание по середине */
}
input[type="submit"] {
width: 20px; /*Ширина кнопки */
height: 20px; /*Высота кнопки */
border:none; /*Убираем рамку */
background: url(images/search.png) no-repeat 50% 50%; /* Параметры фона */
}
#navigation {
background-color: #FFF;
padding: 5px 10px 7px;
border-bottom-right-radius: 10px;
border-bottom-left-radius: 10px;
margin-bottom: 10px;
}
.info {
border: 1px solid black;
border-radius: 25px;
margin-left: auto;
margin-right: auto;
width: 900px;
background: white
}
.info p{
padding: 15px;
font-size: 15px;
line-height: 1.5;
color: #656575;
}
span {
font-weight: bold;
color: #656565;
}
.doctype {
border: 1px solid black;
margin-right: auto;
margin-left: auto;
margin-top: 30px;
margin-bottom: 5px;
width: 60%;
text-align: center;
}
/*прибитый к низу футер*/
#footer {
position: relative;
margin-top: -70px; /* negative value of footer height */
height: 65px;
text-align: center;
clear:both;
background: -moz-linear-gradient(center top , #9B9782, #726D59) repeat scroll 0% 0% transparent;
border-radius: 10px;
}
/* CLEAR FIX*/
.clearfix:after {content: ".";
display: block;
height: 0;
clear: both;
visibility: hidden;}
.clearfix {display: inline-block;}
/* Hides from IE-mac \*/
* html .clearfix { height: 1%;}
.clearfix {display: block;}
/* End hide from IE-mac */
Index.Php
<?php
session_start();// вся процедура работает на сессиях.Именно в ней хранятся данные пользователя,пока он находится на сайте.Очень важно запустить их в самом начале странички!!!
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Архив:Домашняя страница</title>
<link rel="stylesheet" type="text/css" href="index.css">
</head>
<body>
<div id="wrap">
<header></header>
<ul id="navigation">
<p>
<?php
// Проверяем,пусты ли переменные логина и idпользователя
if (empty($_SESSION['login']) or empty($_SESSION['id']))
{
// Если пусты,то мы не выводим ссылку
echo "<a href='reg.php'>Войдите или зарегистрируйтесь</a>";
}
else
{
// Если не пусты,то мы выводим ссылку
echo "Вы вошли на сайт,как ".$_SESSION['login']."(<a href='exit.php'>выход</a>)";
}
?>
</p>
<li><a href="index.php">Главная</a></li>
<li><a href="doc.php">Документы</a></li>
<li><a href="contact.php">Контакты</a></li>
<li><a href="adddoc.php">
<?php
// Проверяем,пусты ли переменные логина и idпользователя
if (empty($_SESSION['login']) or empty($_SESSION['id']))
{
// Если пусты,то мы не выводим ссылку
echo "";
}
else
{
// Если не пусты,то мы выводим ссылку
echo "Добавить документ";
}
?></a>
</li>
<li>
<form action="search.php">
<div class="search">
<input type="search" name="q">
<input type="submit" value="">
</div>
</form>
</li>
</ul>
<article class="info">
<p>
<span>С ноября 2011года</span>– Санкт-Петербургское государственное казенное учреждение «Центральный государственный архив Санкт-Петербурга» (ЦГА СПб)<br>
<span>2008 - 2011</span> - Санкт-Петербургское государственное учреждение «Центральный государственный архив Санкт-Петербурга» (ЦГА СПб)<br>
<span>1991 –2007</span> -Центральный государственный архив Санкт-Петербурга (ЦГА СПб)<br>
<span>1974–1991</span> -Центральный государственный архив Октябрьской революции и социалистического строительства Ленинграда (ЦГАОР Ленинграда)<br>
<span>1964–1974</span> -Ленинградский государственный архив Октябрьской революции и социалистического строительства (ЛГАОРСС)<br>
<span>1941–1964</span> -Государственный архив Октябрьской революции и социалистического строительства Ленинградской области (ГАОРСС ЛО)<br>
<span>1936–1941</span> -Ленинградский областной архив Октябрьской революции (ЛОАОР)<br>
<span>1927–1936</span> -Архив Октябрьской революции Ленинградской области (АОРЛО)<br>
<span>1925–1927</span> -Архив Октябрьской революции (АОР)<br>
</p>
<p>
Архив Октябрьской революции (АОР)был организован как структурное подразделение Ленинградского губернского архивного бюро
для хранения документов,начиная с 1917г.,организаций,предприятий,учреждений города и области (губернии),
а также фондов личного происхождения.В 1936г.он стал самостоятельным учреждением и получил название —
Ленинградский областной архив Октябрьской революции.В его состав вошла часть материалов секретного архива,
существовавшего с 1928г.при Областном архивном управлении.В 1941г.к архиву были присоединены областные фотоархив
и архив Красной Армии.В годы Великой Отечественной войны архив принял на хранение документы воинских частей Ленинградского
фронта,но в середине 1950-х гг.материалы военных организаций (за небольшим исключением)были переданы в специализированные
военные архивы.В 1966–1972гг.в результате разукрупнения архива были организованы 3самостоятельных городских архива:
кинофотофонодокументов (ЦГАКФФД СПб),литературы и искусства (ЦГАЛИ СПб),научно-технической документации (ЦГАНТД СПб),
в которые были переданы профильные фонды из ЛГАОРСС.Тогда некоторые фонды,в том числе фонды учреждений областного
подчинения,были перемещены в Ленинградский областной государственный архив в г.Выборге (ЛОГАВ),который с
1964 по 1969гг.являлся филиалом ЛГАОРСС.В 2006-2009годах производился обмен документами между ЦГА СПб и ЛОГАВ в соответствии с их профилем.
</p>
<p>
Постановлением Правительства Санкт-Петербурга от 08.10.2007№ 1272было создано Санкт-Петербургское
государственное учреждение «Центральный государственный архив Санкт-Петербурга» (ЦГА СПб)с целью формирования и
содержания государственного архивного фонда Санкт-Петербурга,
которое в ноябре 2011реорганизовано в казенное учреждение.</p>
<p>
Архив хранит фонды местных органов власти советского и постсоветского периодов— Петросовета,губернского,областного,городского,районных
(города),уездных и волостных Советов с момента их возникновения до ликвидации,районных администраций.Имеется ряд фондов организаций
Временного правительства — управы городской и районных дум,милиции.
</p>
<P>
В фондах органов Союза Коммун Северной области (СКСО)— Центрального (областного)исполкома,Совета комиссаров,Комиссариата внутренних дел
и др.— хранятся документы о политическом и экономическом положении Северо-Западного региона в 1918– 1919гг.События Гражданской войны
отражены в материалах военных секций советов,военкоматов,Комитета обороны Петрограда,чрезвычайных революционных троек.Первые годы
советской власти характеризуют материалы фондов Центральной и районных комендатур революционной охраны,Рабоче-крестьянской милиции,
уголовного розыска,административных отделов губисполкома,революционных трибуналов и судов.Репрессии начала 1930-х гг.отражены в
материалах комиссий по лишению избирательных прав.
</P>
<P>
История экономического и промышленного развития города освещена в фондах местных органов управления народным хозяйством — совнархозов,Северо-Западного областного промышленного бюро,плановых комиссий,финансовых и статистических организаций,трестов.Развитие промышленности города отражено также в фондах крупнейших заводов (Адмиралтейского,Балтийского,Ижорского,Кировского и др.)и фабрик («Большевичка»,«Рабочий»,«Советская звезда» и др.).В фондах строительных организаций,отделов коммунального хозяйства имеются сведения о национализации зданий,жилищном строительстве,городском благоустройстве,охране памятников старины,о разрушениях в дни блокады и послевоенном восстановлении города.
</P>
<P>
Документы фондов Ленметрополитена,управлений железных дорог Северо-Западного региона,Октябрьской железной дороги,Балтийского морского и Северо-Западного речного пароходств,торгового,лесного портов,автотранспортного,трамвайно-троллейбусного управлений,почтамта,телеграфа характеризуют состояние транспорта и связи.
<P>
В архиве хранятся документы,отражающие историю учреждений науки,культуры,народного образования,театрального искусства,музейного и библиотечного дела.Они сосредоточены в фондах Комиссариата просвещения СКСО,управления Уполномоченного Наркомпроса по делам вузов и рабфаков,отдела Главного управления научными и научно-художественными учреждениями,Комиссии по улучшению быта ученых (КУБУ).В архиве хранятся документы почти всех вузов города (в том числе Ленинградского государственного университета,Промышленной академии,Политехнического,Восточного,Археологического институтов),техникумов,Управления профтехобразования.
</P>
<P>
Документы отделов здравоохранения,санитарно-эпидемиологических станций,бюро санитарной статистики,аптечного и санаторно-курортного управлений характеризуют организацию и развитие системы здравоохранения.
<P>
Общественные организации представлены фондами Северо-Западного бюро ВЦСПС,областного совета профсоюзов,обкомами отраслевых профсоюзов,отделениями (комитетами)различных обществ,в том числе:бывших политкаторжан и ссыльнопоселенцев (1924–1935),городского комитета Всесоюзной ассоциации работников науки и техники для содействия социалистическому строительству,ДОСААФ,«Знание»,«Друг детей» и др.Религиозная жизнь города представлена в фондах уполномоченных Советов по делам Русской Православной Церкви и по делам других конфессий.
</P>
<P>
В архиве имеются документы,раскрывающие жизнь Ленинграда в период блокады.Это материалы штаба местной противовоздушной обороны,ряда комиссий (по установлению и расследованию злодеяний немецко-фашистских захватчиков и их сообщников,по трудовой повинности,эвакуационной),горкома обществ Красного Креста и Красного Полумесяца и др.
<P>
Документы личного происхождения представлены фондами участников революционного движения,таких как председателя Общества бывших политкаторжан и ссыльнопоселенцев Д.А.Трилиссер,ветерана Гражданской войны П.А.Смирнова,историков В.Г.Брюнина,Г.В.Ефимова,Н.А.Корнатовского,врачей Г.А.Ивашенцева,В.В.Смирнова и др.
</p>
<p>_____________________<br>
* Сведения на 01.01.2014
</p>
</article>
<div id="main" class="clearfix">
</div>
</div>
<div id="footer">
<p>ИСТ-24с,Ремизов Виктор</p>
<p>СПбГУТ</p>
<p>2014-<? echo date("Y")."<br/>";?></p>
</div>
</body>
</html>
reg.css
/*body*/
body {
background: #d0ccbd;
color: #656575;
min-height: 100%;
margin: 0;
}
/*форма регитсрации*/
#registration {
width: 273px;
height: 305px;
color: #5e7787;
text-align: center;
position: absolute;
left: 586px;
top: 300px;
}
/* decorations
------------------------------------*/
#registration>input {
display: none;
}
section {
width: 273px;
display: none;
background: #fff;
padding-bottom:10px;
border: 2px solid black;
padding: 7px 0 0 1;
}
label {
display: inline-block;
margin: 0 0px -2px 0;
padding: 6px 4px;
text-align: center;
font-size:18px;
color: black;
background: #CECECE;
}
label:hover {
color: #888;
cursor: pointer;
}
input:checked + label {
color: black;
border: 1px solid black;
border-radius: 4px;
border-bottom: 0px;
background: #fff;
padding: 6px 5px;
}
#tab1:checked ~ #content1,
#tab2:checked ~ #content2 {
display:block;
}
/**/
/*конпки и формы для регистрации*/
#E {
width:232px;
height:50px;
}
#T {width:232px;
height:50px;
}
#P {
width:232px;
height:50px;
}
#signbut {
width:232px;
height:50px;
background:red;
border: #FFFFFF;
border-radius: 4px;
background:#E9070B;
color:#FFFFFF;
}
reg.php
<?php
// вся процедура работает на сессиях.Именно в ней хранятся данные пользователя,пока он находится на сайте.Очень важно запустить их в самом начале странички!!!
session_start();
?>
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Архив: Авторизация</title>
<link rel="stylesheet" type="text/css" href="index.css">
<link rel="stylesheet" type="text/css" href="css/reg.css">
<link rel="stylesheet" type="text/css" href="reg.css">
</head>
<body>
<header>
</header>
<ul id="navigation">
<li><a href="index.php">Главная</a></li>
<li><a href="doc.php">Документы</a></li>
<li><a href="contact.php">Контакты</a></li>
<li>
<form action="search.php">
<div class="search">
<input type="search" name="q">
<input type="submit" value="">
</div>
</form>
</li>
</ul>
<article class="info">
<p>Для ппродолжения работы необходимо зарегистрироваться или выполнить вход</p>
<?php
// Проверяем,пусты ли переменные логина и idпользователя
if (empty($_SESSION['login']) or empty($_SESSION['id']))
{
// Если пусты,то мы не выводим ссылку
?>
<div id="page">
<div id="registration">
<input id="tab1" type="radio" name="tabs" checked>
<label for="tab1" title="Регистрация">Регистрация</label>
<input id="tab2" type="radio" name="tabs">
<label for="tab2" title="Вход">Вход</label>
<section id="content1" class="newnews">
<form action="save_user.php" method="post">
<p><input name="email" type="email" autofocus="autofocus" required="required" id="E" placeholder=" Email" tabindex="1" autocomplete="on"></p>
<p><input name="login" type="text" required id="T" placeholder=" Логин" tabindex="2" autocomplete="on" maxlength="30"></p>
<p><input name="password" type="password" required id="P" placeholder=" Пароль" tabindex="3" autocomplete="on" maxlength="8"></p>
<p><input name="submit" type="submit" id="signbut" tabindex="4" value="Зарегистрироваться" >
</form>
</section>
<section id="content2">
<form action="testreg.php" method="post">
<p><input name="login" type="text" autofocus required id="T" placeholder=" Логин или почта" tabindex="1" autocomplete="on" maxlength="30"></p>
<p><input name="password" type="password" required id="P" placeholder=" Пароль" tabindex="2" maxlength="8"></p>
<p><input name="submit" type="submit" id="signbut" tabindex="4" value="Войти" >
</form>
</section>
</div><!--конец registration-->
/<div>
<?
}
else
{
// Если не пусты,то мы выводим ссылку
echo "Вы уже авторизированы";
}
?>
</article>
</body>
</html>
save_user.php
<?php
if (isset($_POST['email'])) { $email = $_POST['email']; if ($email == '') { unset($email);} }
if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset($login);} } //заносим введенный пользователем логин в переменную $login,если он пустой,то уничтожаем переменную
if (isset($_POST['password'])) { $password=$_POST['password']; if ($password =='') { unset($password);} }
//заносим введенный пользователем пароль в переменную $password, если он пустой,то уничтожаем переменную
if(empty($login)orempty($password)) //если пользователь не ввел логин или пароль,то выдаем ошибку и останавливаем скрипт
{
exit ("Вы ввели не всю информацию,вернитесь назад и заполните все поля!");
}
//удаляем лишние пробелы
$email=trim($email);
$login = trim($login);
$password = trim($password);
// подключаемся к базе
include("bd.php");//файл bd.phpдолжен быть в той же папке,что и все остальные,если это не так,то просто измените путь
// проверка на существование пользователя с таким же логином
# проверям логин
if(!preg_match("/^[a-zA-Z0-9]+$/",$_POST['login']))
{
exit ("Логин может состоять только из букв английского алфавита и цифр");
}
if(strlen($_POST['login']) < 4 or strlen($_POST['login']) > 30)
{
exit ("Логин должен быть не меньше 4-х символов и не больше 30");
}
$result = mysql_query("SELECT id FROM users WHERE login='$login'",$db);
$myrow = mysql_fetch_array($result);
if(!empty($myrow['id'])) {
exit ("Извините,введённый вами логин уже зарегистрирован.Введите другой логин.");
}
$result = mysql_query("SELECT id FROM users WHERE email='$email'",$db);
$myrow = mysql_fetch_array($result);
if(!empty($myrow['id'])) {
exit ("Извините,введённая вами почта уже используется.Введите другую почту.");
}
$result2 = mysql_query ("INSERT INTO users (email,login,password) VALUES('$email','$login','$password')");
// Проверяем,есть ли ошибки
if($result2=='TRUE')
{
echo "Вы успешно зарегистрированы!Для продолжения <a href='http://localhost:8888/archive/reg.php'>войдите на сайт</a>";
}
else {
echo "Ошибка!Вы не зарегистрированы.";
}
?>
search.php
<?php
session_start();// вся процедура работает на сессиях.Именно в ней хранятся данные пользователя,пока он находится на сайте.Очень важно запустить их в самом начале странички!!!
?>
<!DOCTYPE html>
<html lang="en">
<head
<meta charset="UTF-8">
<title>Архив:Домашняя страница</title>
<link rel="stylesheet" type="text/css" href="index.css">
</head>
<body>
<div id="wrap">
<header></header>
<ul id="navigation">
<p>
<?php
// Проверяем,пусты ли переменные логина и idпользователя
if (empty($_SESSION['login']) or empty($_SESSION['id']))
{
// Если пусты,то мы не выводим ссылку
echo "<a href='reg.php'>Войдите или зарегистрируйтесь</a>";
}
else
{
// Если не пусты,то мы выводим ссылку
echo "Вы вошли на сайт,как ".$_SESSION['login']."(<a href='exit.php'>выход</a>)";
}
?>
</p>
<li><a href="index.php">Главная</a></li>
<li><a href="doc.php">Документы</a></li>
<li><a href="contact.php">Контакты</a></li>
<li><a href="adddoc.php">
<?php
// Проверяем,пусты ли переменные логина и idпользователя
if (empty($_SESSION['login']) or empty($_SESSION['id']))
{
// Если пусты,то мы не выводим ссылку
echo "";
}
else
{
// Если не пусты,то мы выводим ссылку
echo "Добавить документ";
}
?></a>
</li>
<li>
<form action="search.php">
<div class="search">
<input type="search" name="q">
<input type="submit" name="submit" value="">
</div>
</form>
</li>
</ul>
<article class="info">
<?
if (empty($_SESSION['login']) or empty($_SESSION['id']))
{
// Если пусты,то мы не выводим ссылку
echo "Извините,доступ разрешен только авторизованным пользователям. <a href='reg.php'>Войдите или зарегистрируйтесь</a>";
}
else
{
if(isset($_POST['q'])) { $doc_id= $_POST['q'];if($q== '') {unset($q);} }
include ('bd.php');
$strSQL = "SELECT * FROM doc where doc_id='1'";
//Выполнить запрос (набор записей $rsсодержит результат)
$rs = mysql_query($strSQL);
// Цикл по набору записей $rs
while($row = mysql_fetch_array($rs)) {?>
<table class="doctype">
<tr>
<th>Номер документа</th>
<th>Дело</th>
<th>Описание</th>
<th>Ссылка</th>
</tr>
</tr>
<td><? echo $row['doc_id'] ?></td>
<td><? echo $row['title'] ?></td>
<td><? echo $row['text'] ?></td>
<td><? echo $row['link'] ?></td>
</tr>
</table>;<?
}?>
<?
}
?>
</article>
<div id="main" class="clearfix">
</div>
</div>
<div id="footer">
<p>ИСТ-24с,Ремизов Виктор</p>
<p>СПбГУТ</p>
<p>2014-<? echo date("Y")."<br/>";?></p>
</div>
</body>
</html>
testreg.php
<?php
session_start();
if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset($login);} } //заносим введенный пользователем логин в переменную $login,если он пустой,то уничтожаем переменную
if (isset($_POST['password'])) { $password=$_POST['password']; if ($password =='') { unset($password);} }
//заносим введенный пользователем пароль в переменную $password, если он пустой,то уничтожаем переменную
if(empty($login)orempty($password)) //если пользователь не ввел логин или пароль,то выдаем ошибку и останавливаем скрипт
{
exit ("Вы ввели не всю информацию,вернитесь назад и заполните все поля!");
}
//удаляем лишние пробелы
$login = trim($login);
$password =trim($password);
// подключаемся к базе
include("bd.php");//файл bd.phpдолжен быть в той же папке,что и все остальные,если это не так,то просто измените путь
$result=mysql_query("SELECT*FROMusersWHERElogin='$login'",$db); //извлекаем из базы все данные о пользователе с введенным логином
$myrow = mysql_fetch_array($result);
if(empty($myrow['password']))
{
//если пользователя с введенным логином не существует
exit ("Извините,введённый вами loginили пароль неверный.");
}
else {
//если существует,то сверяем пароли
if($myrow['password']==$password) {
//если пароли совпадают,то запускаем пользователю сессию!Можете его поздравить,он вошел!
$_SESSION['login']=$myrow['login'];
$_SESSION['id']=$myrow['id'];//эти данные очень часто используются,вот их и будет "носить с собой"вошедший пользователь
echo "Вы успешно вошли на сайт!Добро пожаловать <a href='http://localhost:8888/archive/index.php'> в архив</a>";
}
else {
//если пароли не сошлись
exit ("Извините,введённый вами loginили пароль неверный.");
}
}
?>
Санкт-Петербург
2014