Автоматизированная информационная система "Библиотека колледжа"

Общие сведения об автоматизированных информационных системах библиотек. Разработка графического макета, интерфейса и дизайна информационной системы. Требования к функциональной части системы. Создание программных модулей. Алгоритмы обработки данных.

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

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

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

- count - количество экземпляров на руках у читателя | int(10)

- crated | datetime

- modifided | datetime

8. Таблица с контентом для главног меню(pages):

- id - ключевое автоинкрементное поле | int (11);

- alias - заголовок статьи | varchar (255);

- title - текст статьи | text;

- body - текст статьи | text;

- date - дата | date.

9. Таблица пользователей (uses)

- id - ключевое автоинкрементное поле | int (11);

- username | varchar;

- password | varchar;

- role | varchar;

- created | datetime;

- modified |datetime.

В рамках реляционной модели данных существует несколько нормальных форм отношений (нормальные формы ограничивают определенный тип функциональной зависимости и устраняют аномалии при выполнении операций над отношениями):

Первая нормальная форма - если все атрибуты отношения являются атомарными (неделимыми). Понятие атомарности является условным. Считается, что атрибут является атомарным, если его значение не используется по частям;

Вторая нормальная форма - если отношения находятся в первой нормальной форме и каждый не ключевой атрибут функционально полно зависит от составного ключа;

Третья нормальная форма - если отношения находятся во второй нормальной форме и в них отсутствуют транзитивные зависимости не ключевых атрибутов от ключа.

Существуют и другие виды нормальных форм отношений, но, чаще всего, для сохранения целостности данных достаточно третьей нормальной формы.

Произведенный анализ схемы отношений, показавший отсутствие многозначных зависимостей в существующей инфологической модели, позволяет сделать вывод о том, что отношения находятся в третьей нормальной форме.

2.6 Разработка структуры программных модулей информационной системы

Поскольку система создавалась на основе фреймворка CakePHP, то структура программных модулей уже определена после установки фреймворка. Структура системы изображена на рисунке 4.

Рисунок 4. Структура программных системы «Библиотека колледжа»

Само приложения находится в папке app. Папки lib,plugin, vendors- папки ядра CakePHP. Структура папки app предопределена при установке фреймворка.

В папке Controllers находятся файлы контроллеров с программным кодом классов контроллера. Класс контроллеров включает в себя методы, так называемы action, имена которых тоже имеют определенные имена (index, add, delete, edit, display, search).

В папке model находятся файлы с моделями, каждая модель соответствует таблицы базы данных. В файлах моделей находятся классы, описывающие таблицы.

В папке view находятся папки видов, файлы имеющими расширение ctp.

В папке werboot, находятся паки с файлами css, js и рисунками, которые отображаются на страницах системы.

В папке config находятся файлы с настройками системы, роутерами.

По соглашению об именовании, имена контроллеров, моделей и видов совпадают с именами таблиц базы данных. страницах.

Система запускается путем ввода в адресной строке браузера адреса сервера колледжа и имени приложения - 192.168.01.8/library.

Структура информационной системы, проектируемая в виде веб-приложения, не регулируется никакими правилами и, иногда разработка ее - процесс трудоемкий. Поэтому, используя фрэймворки, можно сэкономить время на разработку всей системы в целом.

2.7 Разработка графического макета и дизайна информационной системы

Графический макет

Дизайн макета - это образ приложения. Он демонстрирует, как будет выглядеть страницы приложения после создания и наполнения информацией.

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

Для начала разрабатывается макет ресурса с учетом принципов удобства восприятия -юзабилити. Рассмотрим структурные составляющие интерфейса на схематическом примере.

Как видно из представленной на рисунке 5 схемы, свое начало страницы берет с шапки. Шапка представляет собой верхнюю основу сайта, которая неизменная на большинстве страниц ресурса. На ней располагаются эмблема электронного учебника или простой рисунок, связанный с темой, наименование, блок с формой входа и регистрацией. Шапка занимает всю ширину страницы.

Рисунок 5. Графический макет

Сразу, ниже располагается главное меню с кнопками навигации по страницам системы. Меню, также, как и шапка занимает всю ширину страницы и отображается на всех основных станицах сайта. При смене ширина окна браузера оба эти структурные элементы сжимаются до определенных размеров для сохранения эстетического внешнего вида. Также стоит отметить, что их высота на странице всегда остается неизменной, независимо от окна браузера [17].

Ниже начинается основная часть каждой страницы информационной системы. Для примера, главная страница разделена на 2 блока. Справа располагается основной блок с содержимым страницы, в данном случае здесь будет формуляры книг. Левая колонка содержит разделы библиотеки.

Дизайн

Дизайн интерфейса информационной системы - это совокупность графических элементов, шрифтов и цветов, реализованных на страничке.

Основная задача дизайна интерфейса информационной системы - объединение всех информационных блоков и формирование у пользователя приятного впечатления. Дизайн задаёт общий стиль системы. Грамотно разработанный дизайн является одним из важнейших факторов, определяющих восприятия информационной системы [10].

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

Ресурс должен выглядеть аккуратно и привлекательно, но при этом не быть перегруженным графическими и анимационными элементами [17].

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

2.6 Структура интерфейса информационной системы

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

В первую очередь, на главной странице пользователь должен видеть перед собой всю информацию, которая ему необходима, в частности это разделы библиотеки и информация о книгах. Каталог разделов библиотеки спроектирован в виде многоуровневого меню. Меню разделов является основным функциональным элементом, который отвечает за навигацию по библиотечному фонду. На главной странице выводится информация о новых поступлениях литературы в библиотечный фонд. Так же предусмотрена возможность поиска по названию книги.

Рисунок 6. Главная страница информационной системы

Главное меню ресурса содержит ссылки на страницы ресурса, имеющих справочную и информационную нагрузку, на этих страницах можно прочитать о библиотеке и правилах пользования библиотекой. На этих же страницах можно помещать различные объявления.

Дизайн и функциональные элементы администраторской части такие, как и у пользователя. Администратору для входа в администраторскую часть необходимо авторизоваться, заполнив поля формы авторизации (рисунок 7).

Рисунок 7. Форма авторизации для администратора

После успешной авторизации на странице появляется меню администратора.

Страница администраторской части изображена на рисунке 8.

Рисунок 8. Страница администратора информационной системы

Интерфейс пользовательской и администраторской части информационной системы имеет небольшие отличия, необходимые для выполнения функций администратора или пользователя.

2.7 Система для администратора библиотеки

Системой администрирования реализуются следующие функции: добавление, удаление, изменение содержимого базы данных прием и выдача книг читателям, комплектование книг по специальностям. На рисунках 9 - 14 изображены скриншоты, показывающие работу в системе администрирования. Листинги программ - в приложении 8.

Рисунок 9. Меню администратора

Рисунок 10. Списки читателей по группам

Рисунок 11. Добавление книги

Рисунок 12. Редактирование книги

Рисунок 13 Добавление книги читателю

Рисунок 14. Карточка читателя

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

2.8 Алгоритмы обработки данных

Алгоритм- формально описанная последовательность действий‚ которые необходимо выполнить для получения требуемого результата [10].

Основные особенности алгоритма:

- Конечность (алгоритм всегда должен заканчиваться после выполнения конечного числа шагов);

- Определенность (каждый шаг алгоритма должен быть точно определен);

- Ввод (алгоритм имеет некоторое‚ возможно равное нулю‚ число входных данных‚ то есть величин‚ которые задаются до начала его работы или определяются динамически во время его работы);

- Вывод (у алгоритма есть одно или несколько выходных данных‚ т.е. величин‚ которые имеют вполне определенную связь с входными данными);

- Эффективность (алгоритм обычно считается эффективным‚ если все его операторы достаточно просты для того‚ чтобы их можно было выполнить в течение конечного промежутка времени с помощью карандаша и бумаги).

Алгоритмы работы программы являются стандартными алгоритмами работы с базой данных. В основном все алгоритмы работы связаны с вводом данных от пользователя, проверке введенной информации на предмет нарушения целостности данных и занесение введенной информации в саму базу, если введенные сведения не нарушают целостности.

2.9 Создание программных модулей

Фрэймворк CakePHP использует в своей основе парадигму объектно-ориентированного программирования. То есть в распоряжение программиста данный фрэмворк предоставляет широкий выбор классов для решения различных задач. Контроллеры, модели и виды в нашем приложении являются расширениями уже готовых классов ядра фрэймворка. Дополняя их своими методами, функциями, мы и решаем конкретные задачи, стоящие перед программистом. Кроме того в распоряжении программиста CakePHP предоставляет широкий набор функционально разнообразных компонентов, например для кэширования, редиректа, аутодентификации, использования сессий и других. Все это сокращает время написания кода.

В приложениях приведены скрипты контроллеров согласно паттерну MVC (модель, вид, контроллер).

Приложение А - скрипты контроллеров CategoriesController, BooksController.php, ReadersController.php,ProfessionsController.php, TypebooksController.php, UsersController.php, PagesController.php, GroupsController .php, BooksReadersController, BooksReadersController.

Приложение Б - скрипты моделей таблиц Category.php, Book.php, Reader.php, Profession.php, Group.php, Typebook.php, User.php, BookReader.php.

Скрипты, название которых имеет префикс admin выполняются только в режиме администратора.

ЗАКЛЮЧЕНИЕ

Автоматизированная информационная система является совокупностью технических и программных средств, реализующих идеи и методы автоматизации. Современные системы АИС позволяют интегрировать вокруг себя различное программное обеспечение, формируя единую информационную систему.

Благодаря внедрению автоматизированных информационных систем в различных областях деятельности, способствуют эффективности трудовой деятельности, увеличению пропускной способности систем, снижению ошибочных действий.

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

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

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

Так же система предоставит возможность получать оперативную информацию о наличии необходимой литературы в фонде библиотеки всем студентам и преподавателям.

В ходе выполнения выпускной квалифицированной работы были выполнены следующие задачи:

1. Проведена характеристика и анализ объекта исследования;

2. Произведена характеристика и анализ объекта исследования;

3. Разработаны требования к обучающему электронному ресурсу;

4. Разработана структура автоматизированной системы;

5. Разработан графический макет и дизайн системы;

6. Разработана база данных;

7. Разработаны программные модули системы;

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

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

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1. Конституция Российской Федерации (принята всенародным голосованием 12.12.1993) (с учетом поправок, внесенных Законами РФ о поправках к Конституции РФ от 30.12.2008 № 6-ФКЗ, от 30.12.2008 № 7 - ФКЗ, от 05.02.2014 № 2 - ФКЗ) // Собрание законодательства РФ, 14.04.2014. № 15. - ст. 1691.

2. Федеральный закон от 27 июля 2006 г. N 149-ФЗ «Об информации, информационных технологиях и о защите информации» (с изменениями и дополнениями).

3. ГОСТ 34.601-90. Автоматизированные системы. Стадии создания. - М.: Госстандарт России, 1992. - 8с.

4. ГОСТ 34.602-89 Комплекс стандартов на автоматизированные системы. Техническое задание на создание автоматизированной системы. - М.: Госстандарт ССР, 1990. - 7.

5. ГОСТ 34.602-89. Информационная технология. Комплекс стандартов на автоматизированные системы. - М.: Госстандарт СССР, 1990. - 11с.

6. ГОСТ Р 50922-96. Защита информации. Основные термины и определения. - М.: Госстандарт России, 1996. - 5с.

7. ГОСТ Р 51583-2000. Порядок создания автоматизированных систем в защищенном исполнении. - М.: Госстандарт России, 2000. - 11с.

8. Бейли, Л., Моррисон, М. Изучение PHP и MySQL. - Эксмо, 2011. - 151 с.

9. Вигерс Карл. Разработка требований к программному обеспечению. /Пер, с англ. - М.: Издательско-торговый дом «Русская Редакция», 2011. - 576с.

10. Гвоздева В.А., Лаврентьева И.Ю. - Основы построения автоматизированных информационных систем: учебник - М.;ИД «ФОРУМ»:ИНФРА-М,2009. - 320с.: ил.- (Профессиональное образование).

11. Кузнецов, М.В. Практика создания Web-сайтов, 2 изд. - СПб.: БХВ-Петербург, 2012г. - 1264с.

12. Кузнецов, М., Симдянов, И. Самоучитель MySQL. - БУВ-Петербург, 2014. - 144 с.

13. Мезенцев К. Н. - Автоматизированные информационные системы : учебник для студ. учреждений сред. проф. Образования - 4-е изд., стер. - М.: Издательский центр «Академия», 2013. - 176 с.

14. Мельников, П.П. Технология разработки HTML-документов: учеб. пособие. Информатика и образование, 2010. - 15-18 с.

15. Суэринг С., Конверс Т., Парк Дж. - PHP и MySQL. Библия программиста, 2-е изд.: пер. с англ. - М.:ООО «И.Д. Вильямс», 2010. - 912с.

16. Суэринг, С., Конверс, Т., Парк Д. PHP и MySQL. Библиотека программиста. 2-е издание. - Диалектика, 2011. - 198 с.

17. Христочевский, С.А., Вихрев, В.В., Федосеев, А.А., Филинов, Е.Н. Информационные технологии. М.: АРКТИ, 2001. - 200 с.

18. Шварц, Б., Зайцев. П., Ткаченко, В. MySQL. Оптимизация производительности. - Символ-Плюс, 2012. - 227 с.

ПРИЛОЖЕНИЕ А

Контроллеры CategoriesController, BooksController.php, ReadersController.php,ProfessionsController.php, TypebooksController.php, UsersController.php, PagesController.php, GroupsController .php, BooksReadersController, BooksReadersController

<?php

class CategoriesController extends AppController{

public $uses=array('Category','Book','Profession','Typebook');

public $components=array('Paginator','Session');

public $helpers=array('Paginator'); // можно не подключать (авто с компонентом)

public function index($cat_id=NULL){

if( is_null($cat_id) ){

//выбранывсекнигираздела

$tit=$this->Category->findById($cat_id);

$title=$tit['Category']['title'];

$this->Paginator->settings=array(

'recursive'=>1,

'limit'=>3

);

$books=$this->Paginator->paginate('Book');

return $this->set(compact('books','cat_id','title'));

}

if (!(int)$cat_id || !$this->Category->exists($cat_id)){

throw new NotFoundException('такойстраницынет');

}

$cats=$this->Category->find('all');

$tit=$this->Category->findById($cat_id);

$title=$tit['Category']['title'];

$ids=$this->_catsId($cats,$cat_id);

$ids=!$ids ? $cat_id : $ids.$cat_id;

$ids=explode(',',$ids);

$this->Paginator->settings=array(

'conditions'=>array("Book.category_id"=>$ids),

'recursive'=>1,

'limit'=>3);

$books=$this->Paginator->paginate('Book');

return $this->set(compact('books','cat_id','title'));

}

public function add(){

if($this->request->is('post')){

$this->Category->create();

$this->Category->save($this->request->data);

if($this->Category->save($this->request->data)){

$this->Session->setFlash('Разделдобавлен', 'default', array('class' => 'good'));

return $this->redirect($this->referer());

}else

{

$this->Session->setFlash('Ошибка!', 'default', array('class' => 'bad'));

// debug($this->request->data);

}

}

$cats=$this->Category->find('threaded');

$categories=$this->_catsSelect($cats,0); //формирование списка разделов в виде дерева

$this->set(compact('categories'));

}

public function edit($cat_id=null){

if( is_null($cat_id) || !(int)$cat_id ){

throw new NotFoundException('Такогоразделанет...');

}

$category = $this->Category->findById($cat_id);

if( !$category ){

throw new NotFoundException('Такогоразделанет...');

}

if($this->request->is(array('post', 'put'))){

$this->Category->id = $cat_id;

if ($this->request->data['Category']['parent_id']!=$cat_id){

// есливыбранразделизсписка

if($this->Category->save($this->request->data)){

//debug($this->request->data);

$this->Session->setFlash('Сохранено','default', array('class' => 'good'));

return $this->redirect($this->referer());

}

}else{

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

if($this->Category->saveField('title', $this->request->data['Category']['title'], true)){

$this->Session->setFlash('Сохранено', 'default', array('class' => 'good'));

return $this->redirect($this->referer());

}

}

$this->Session->setFlash('Ошибка!', 'default', array('class' => 'bad'));

}

$this->request->data = $category;

$cats=$this->Category->find('threaded');

$categories=$this->_catsSelect($cats,$cat_id); //формирование списка катепщрий в виде дерева

$this->set(compact('categories'));

}

public function delete($category_id){

if ($this->request->is('get')) {

throw new MethodNotAllowedException();

}

if( is_null($category_id) || !(int)$category_id ){

throw new NotFoundException('Такойстраницынет...');

}

$cats = $this->Category->find('first', array(

'conditions' => array('parent_id' => $category_id)

));

if($cats){

$this->Session->setFlash('Ошибка! Нельзя удалить раздел в котором есть подраздел', 'default', array('class' => 'bad'));

return $this->redirect($this->referer());

}

$products = $this->Book->find('first', array(

'conditions' => array('category_id' => $category_id)

));

if($products){

$this->Session->setFlash('Ошибка! Нельзя удалить раздел в котором есть книги', 'default', array('class' => 'bad'));

return $this->redirect($this->referer());

}

if($this->Category->delete($category_id)){

$this->Session->setFlash('Разделудален', 'default', array('class' => 'good'));

return $this->redirect('/categories/');

}else{

$this->Session->setFlash('Ошибка', 'default', array('class' => 'bad'));

}

}

protected function _catsId($cats,$cat_id){

$data='';

foreach($cats as $item){

if($item['Category']['parent_id']==$cat_id){

$data.= $item['Category']['id'].',';

$data.=$this->_catsId($cats,$item['Category']['id']);

}

}

return $data;

}

protected function _catsSelect($cats,$cat_id,$tab=''){

$string='';

foreach ($cats as $item){

$string.=$this->_catsSelectTemplate($item,$cat_id,$tab);

}

return $string;

}

protected function _catsSelectTemplate($category,$cat_id,$tab){

ob_start(); // функция для буферизации вывода

include APP."View\Elements\cats_select_tpl.ctp"; // подключаемшаблондляменю

return ob_get_clean(); // возвращает из буфера с его очищением

}

protected function _catsMenuSidebar($cats, $cat_id){

$data = array();

foreach($cats as $item){

if($item['Category']['id'] == $cat_id){

$data[$cat_id][$cat_id] = $item['Category']['title']; }

if($item['Category']['parent_id'] == $cat_id){

$data[$cat_id]['Children'][$item['Category']['id']] = $item['Category']['title']; }}

return $data;}}

?>

<?php

class BooksController extends AppController {

public $uses=array('Category','Book','Profession','Typebook');

public $components=array('Paginator');

public $helpers=array('Paginator');

public function index ($book_id=null){

if( is_null($book_id) || !(int)$book_id || !$this->Book->exists(book_id) ){

throw new NotFoundException('Такойкнигинет...');

}

$book = $this->Book->find('first', array(

'conditions' => array('Book.id' => $book_id)));

$this->set(compact('book'));

}

public function add($cat_id=null){

if($this->request->is('post')){

$this->Book->create();

if($this->Book->save($this->request->data)){

$this->Session->setFlash('Книгадобавлена','default', array('class' => 'good'));

return $this->redirect($this->referer());

}else

{

$this->Session->setFlash('Ошибка!', 'default', array('class' => 'error')); }}

$tit=$this->Category->findById($cat_id);

$title=$tit['Category']['title'];

// debug($title);

$cats=$this->Category->find('threaded');

$categories=$this->_catsSelect($cats,$cat_id); //формирование списка катепщрий в виде дерева

$typebooks=$this->Book->Typebook->find('list');

$professions=$this->Book->Profession->find('list',array('fields'=>array('Profession.id','Profession.body')));

$this->set(compact('categories','typebooks','professions','title'));

}

public function edit($book_id=null){

if( is_null($book_id) || !(int)$book_id ){

throw new NotFoundException('Такойкнигинет...');

}

$book = $this->Book->findById($book_id);

if( !$book ){

throw new NotFoundException('Такойкнигинет...');

}

if($this->request->is(array('post', 'put'))){

$this->Book->id = $book_id;

if($this->Book->save($this->request->data)){

//debug($this->request->data);

$this->Session->setFlash('Сохранено','default', array('class' => 'good'));

return $this->redirect($this->referer());

}else{

$this->Session->setFlash('Ошибка!', 'default', array('class' => 'bad'));

}

}

if(!$this->request->data){

$this->request->data = $book;

// $categories = $this->Book->Category->find('list');

$cats=$this->Category->find('threaded');

$categories=$this->_catsSelect($cats,$book['Category']['id']);

$typebooks=$this->Book->Typebook->find('list',array('fields'=>array('Typebook.id','Typebook.title')));

$professions=$this->Book->Profession->find('list',array('fields'=>array('Profession.id','Profession.body')));

}

$this->set(compact('book', 'categories','typebooks','professions'));

}

public function delete($id){

if ($this->request->is('get')) {

throw new MethodNotAllowedException(); }

if ($this->Book->delete($id)) {

$this->Session->setFlash('Удалена','default', array('class' => 'good'));

} else {

$this->Session->setFlash('Ошибка!', 'default', array('class' => 'bad')); }

return $this->redirect($this->referer());}

public function search(){

//debug($_GET['q']);

$search=!empty($_GET['q']) ? $_GET['q'] : null;

if (is_null($search)){

return $this->set('search_res', 'Введитепоисковыйзапрос');

}

$this->Paginator->settings=array(

'conditions'=>array('Book.body LIKE'=>'%'.$search.'%'),

'recursive'=>1,

'limit'=>3 );

$search_res=$this->Paginator->paginate('Book');

return $this->set(compact('search_res')); }

protected function _catsSelect($cats,$cat_id,$tab=''){

$string='';

foreach ($cats as $item){

$string.=$this->_catsSelectTemplate($item,$cat_id,$tab);}

return $string; }

protected function _catsSelectTemplate($category,$cat_id,$tab){

ob_start(); // функция для буферизации вывода

include APP."View\Elements\cats_select_tpl.ctp"; // подключаемшаблондляменю

return ob_get_clean(); // возвращает из буфера с его очищением

}}

?>

<?php

class ReadersController extends AppController {

public function index($group_id=NULL){

if( is_null($group_id) || !(int)$group_id ){

throw new NotFoundException('Такойгруппынет...'); }

$this->Paginator->settings=array(

'conditions' => array('Reader.group_id' => $group_id),

'recursive'=>0,

'limit'=>15

);

$readers=$this->Paginator->paginate('Reader');

$group=$this->Group->findById($group_id);

// $group_title=$group['Group']['title'];

// debug($readers);

$this->set(compact('readers','group')); }

public function add(){

if($this->request->is('post')){

$this->Reader->create();

if($this->Reader->save($this->request->data)){

$this->Session->setFlash('Читательдобавлен','default', array('class' => 'good'));

return $this->redirect($this->referer());

}else {

$this->Session->setFlash('Ошибка!', 'default', array('class' => 'error')); }}

$this->set('groups',$this->Reader->Group->find('list'));}

public function edit($reader_id=null){

if( is_null($reader_id) || !(int)$reader_id ){

throw new NotFoundException('Такогочитателянет...');

}

$reader = $this->Reader->findById($reader_id);

if( !$reader ){

throw new NotFoundException('Такогочитателянет...');

}

if($this->request->is(array('post', 'put'))){

$this->Reader->id = $reader_id;

if($this->Reader->save($this->request->data)){

//debug($this->request->data);

$this->Session->setFlash('Сохранено','default', array('class' => 'good'));

return $this->redirect($this->referer());

}else{

$this->Session->setFlash('Ошибка!', 'default', array('class' => 'bad'));

}

}

if(!$this->request->data){

$this->request->data = $reader; }

$groups=$this->Reader->Group->find('list');

$this->set(compact('reader', 'groups'));}

public function delete($reader_id){

if ($this->request->is('get')) {

throw new MethodNotAllowedException(); }

if ($this->Reader->delete($reader_id)) {

$this->Session->setFlash('Удалена','default', array('class' => 'good'));

} else {

$this->Session->setFlash('Ошибка!', 'default', array('class' => 'bad')); }

return $this->redirect($this->referer());}}

?>

<?php

class ProfessionsController extends AppController {

public function admin_index(){

$this->Paginator->settings=array(

'recursive'=>0,

'limit'=>15

);

$profes=$this->Paginator->paginate('Profession');

// debug($profes);

return $this->set(compact('profes'));

}

public function admin_add($prof_id=null){

if($this->request->is('post')){

$this->Profession->create();

if($this->Profession->save($this->request->data)){

$this->Session->setFlash('Специальность добавлена','default', array('class' => 'good'));

//return $this->redirect($this->referer());

return $this->redirect(array('action' => 'index'));

}else

{

$this->Session->setFlash('Ошибка!', 'default', array('class' => 'error'));

}

}

}

public function admin_edit($prof_id){

if( is_null($prof_id) || !(int)$prof_id ){

throw new NotFoundException('Такой специальности нет...');

}

$prof = $this->Profession->findById($prof_id);

if( !$prof ){

throw new NotFoundException('Такой специальности нет...');

}

if($this->request->is(array('post', 'put'))){

$this->Profession->id = $prof_id;

if($this->Profession->save($this->request->data)){

//debug($this->request->data);

$this->Session->setFlash('Сохранено','default', array('class' => 'good'));

return $this->redirect(array('action' => 'index'));

//return $this->redirect($this->referer());

}else{

$this->Session->setFlash('Ошибка!', 'default', array('class' => 'bad'));

}

}

if(!$this->request->data){

$this->request->data = $prof;

}

$this->set(compact('prof'));

}

public function admin_delete($id){

if ($this->request->is('get')) {

throw new MethodNotAllowedException();

}

if ($this->Profession->delete($id)) {

$this->Session->setFlash('Удалена','default', array('class' => 'good'));

} else {

$this->Session->setFlash('Ошибка!', 'default', array('class' => 'bad'));

}

return $this->redirect(array('action' => 'index'));

}

}

?>

<?php

class TypebooksController extends AppController {

public function admin_index(){

$tbooks=$this->Typebook->find('all', array('recursive'=>0));

return $this->set(compact('tbooks'));

}

public function admin_add($type_id=null){

if($this->request->is('post')){

$this->Typebook->create();

if($this->Typebook->save($this->request->data)){

$this->Session->setFlash('Тип добавлен','default', array('class' => 'good'));

//return $this->redirect($this->referer());

return $this->redirect(array('action' => 'index'));

}else

{

$this->Session->setFlash('Ошибка!', 'default', array('class' => 'error'));

}

}

}

public function admin_edit($type_id){

if( is_null($type_id) || !(int)$type_id ){

throw new NotFoundException('Такого типа нет...');

}

$type = $this->Typebook->findById($type_id);

if( !$type ){

throw new NotFoundException('Такого типа нет...');

}

if($this->request->is(array('post', 'put'))){

$this->Typebook->id = $type_id;

if($this->Typebook->save($this->request->data)){

//debug($this->request->data);

$this->Session->setFlash('Сохранено','default', array('class' => 'good'));

return $this->redirect(array('action' => 'index'));

//return $this->redirect($this->referer());

}else{

$this->Session->setFlash('Ошибка!', 'default', array('class' => 'bad'));

}

}

if(!$this->request->data){

$this->request->data = $type;

}

$this->set(compact('type'));

}

public function admin_delete($id){

if ($this->request->is('get')) {

throw new MethodNotAllowedException();

}

if ($this->Typebook->delete($id)) {

$this->Session->setFlash('Удалена','default', array('class' => 'good'));

} else {

$this->Session->setFlash('Ошибка!', 'default', array('class' => 'bad'));

}

return $this->redirect(array('action' => 'index'));

}

}

?>

<?php

class BooksReadersController extends AppController {

public function admin_index($reader_id=NULL){

if( is_null($reader_id) || !(int)$reader_id ){

throw new NotFoundException('Такого читателя нет...');

}

$kard=$this->BookReader->find('all', array(

'conditions'=>array('BookReader.reader_id'=>$reader_id),

));

$reader=$this->Reader->findById($reader_id);

$this->set(compact('kard','reader'));

}

public function admin_add($book_id=null){

if($this->request->is('post')){

$this->BookReader->create();

if($this->BookReader->save($this->request->data)){

$this->Session->setFlash('Книга добавлена','default', array('class' => 'good'));

return $this->redirect($this->referer());

}else

{

$this->Session->setFlash('Ошибка!', 'default', array('class' => 'error'));

}

}

$book=$this->Book->findById($book_id);

$readers=$this->BookReader->Reader->find('list',array('fields'=>array('Reader.body')));

$this->set(compact('readers','book'));

}

public function admin_edit($bookreader_id=null){

if( is_null($bookreader_id) || !(int)$bookreader_id ){

throw new NotFoundException('Такой книги нет...');

}

$bookreader = $this->BookReader->findById($bookreader_id);

if( !$bookreader ){

throw new NotFoundException('Такой книги нет...');

}

if($this->request->is(array('post', 'put'))){

$this->BookReader->id = $bookreader_id;

if($this->BookReader->save($this->request->data)){

//debug($this->request->data);

$this->Session->setFlash('Сохранено','default', array('class' => 'good'));

return $this->redirect($this->referer());

}else{

$this->Session->setFlash('Ошибка!', 'default', array('class' => 'bad'));

}

}

if(!$this->request->data){

$this->request->data = $bookreader;

}

//debug ($bookreader);

$this->set(compact('bookreader'));

}

public function admin_delete($bookreader_id){

if ($this->request->is('get')) {

throw new MethodNotAllowedException();

}

if ($this->BookReader->delete($bookreader_id)) {

$this->Session->setFlash('Удалена','default', array('class' => 'good'));

} else {

$this->Session->setFlash('Ошибка!', 'default', array('class' => 'bad'));

}

return $this->redirect($this->referer());

}

}

?>

<?php

class GroupsController extends AppController {

public function admin_index(){

$groups=$this->Group->find('all', array('recursive'=>1));

return $this->set(compact('groups'));

}

public function admin_add($group_id=null){

if($this->request->is('post')){

$this->Group->create();

if($this->Group->save($this->request->data)){

$this->Session->setFlash('Группа добавлена','default', array('class' => 'good'));

//return $this->redirect($this->referer());

return $this->redirect(array('action' => 'index'));

}else

{

$this->Session->setFlash('Ошибка!', 'default', array('class' => 'error'));

}

}

}

public function admin_edit($group_id){

if( is_null($group_id) || !(int)$group_id ){

throw new NotFoundException('Такой группы нет...');

}

$group = $this->Group->findById($group_id);

if( !$group){

throw new NotFoundException('Такой группы нет...');

}

if($this->request->is(array('post', 'put'))){

$this->Group->id = $group_id;

if($this->Group->save($this->request->data)){

//debug($this->request->data);

$this->Session->setFlash('Сохранено','default', array('class' => 'good'));

return $this->redirect(array('action' => 'index'));

//return $this->redirect($this->referer());

}else{

$this->Session->setFlash('Ошибка!', 'default', array('class' => 'bad'));

}

}

if(!$this->request->data){

$this->request->data = $group;

}

$this->set(compact('group'));

}

public function admin_delete($id){

if ($this->request->is('get')) {

throw new MethodNotAllowedException();

}

if ($this->Group->delete($id)) {

$this->Session->setFlash('Удалена','default', array('class' => 'good'));

} else {

$this->Session->setFlash('Ошибка!', 'default', array('class' => 'bad'));

}

return $this->redirect(array('action' => 'index'));

}

}

?>

<?php

class UsersController extends AppController {

public function beforeFilter(){

parent::beforeFilter();

$this->Auth->allow('admin_add', 'logout');

}

public function admin_index(){

$this->set('users', $this->User->find('all'));

}

public function admin_add(){

if($this->request->is('post')){

$this->User->create();

if($this->User->save($this->request->data)){

$this->Session->setFlash('Пользователь добавлен', 'default',array('class'=>'good'));

$this->redirect(array('action' => 'index'));

}else{

$this->Session->setFlash('Ошибка регистрации!', 'default', array('class' => 'bad'));

}

}

}

public function admin_edit($id = null) {

$this->User->id = $id;

if (!$this->User->exists()) {

throw new NotFoundException('Нет такого пользователя...');

}

if ($this->request->is('post') || $this->request->is('put')) {

if ($this->User->save($this->request->data)) {

$this->Session->setFlash('Пользователь отредактирован', 'default',array('class'=>'good'));

return $this->redirect($this->referer());

}

$this->Session->setFlash('Ошибка!', 'default', array('class' => 'bad'));

} else {

$this->request->data = $this->User->findById($id);

unset($this->request->data['User']['password']);

}

$this->set('users',$this->request->data);

}

public function admin_delete($id){

if ($this->request->is('get')) {

throw new MethodNotAllowedException();

}

if ($this->User->delete($id)) {

$this->Session->setFlash('Удалена','default', array('class' => 'good'));

} else {

$this->Session->setFlash('Ошибка!', 'default', array('class' => 'bad'));

}

return $this->redirect($this->referer());

}

public function login() {

//debug($this->request);

if ($this->request->is('post')) {

if ($this->Auth->login()) {

return $this->redirect($this->Auth->redirectUrl());

}

$this->Session->setFlash('Неверный логин/пароль!', 'default', array('class' => 'bad'));

}

}

public function logout() {

return $this->redirect($this->Auth->logout());

}

?>

<?php

class PagesController extends AppController {

public function admin_index(){

$pages = $this->Page->find('all',

array('fields' => array('id', 'title'))

);

$this->set(compact('pages'));

}

public function admin_add(){

if($this->request->is('post')){

$this->Page->create();

if($this->Page->save($this->request->data)){

$this->Session->setFlash('Страница добавлена', 'default', array('class' => 'ok'));

return $this->redirect($this->referer());

}else{

$this->Session->setFlash('Ошибка!', 'default', array('class' => 'error'));

}

}

}

public function admin_edit($page_id = null){

if( is_null($page_id) || !(int)$page_id ){

throw new NotFoundException('Такой странцы нет...');

}

$page = $this->Page->findById($page_id);

if( !$page ){

throw new NotFoundException('Такой странцы нет...');

}

if($this->request->is(array('post', 'put'))){

$this->Page->id = $page_id;

if($this->Page->save($this->request->data)){

$this->Session->setFlash('Сохранено', 'default', array('class' => 'ok'));

return $this->redirect($this->referer());

}else{

$this->Session->setFlash('Ошибка!', 'default', array('class' => 'error'));

}

}

if(!$this->request->data){

$this->request->data = $page;

}

$this->set(compact('page'));

}

public function admin_delete($id){

if ($this->request->is('get')) {

throw new MethodNotAllowedException();

}

if($this->Page->delete($id)){

$this->Session->setFlash('Страница удалена', 'default', array('class' => 'ok'));

}else{

$this->Session->setFlash('Ошибка', 'default', array('class' => 'error'));

}

return $this->redirect($this->referer());

}

public function index($page_alias = null){

if( is_null($page_alias) ){

throw new NotFoundException('Такой страницы нет...');

}

$page = $this->Page->findByAlias($page_alias);

$title_for_layout = $page['Page']['title'];

$meta['keywords'] = $page['Page']['keywords'];

$meta['description'] = $page['Page']['description'];

if( !$page ){

throw new NotFoundException('Такой страницы нет...');

}

$this->set(compact('page_alias', 'page', 'meta', 'title_for_layout'));

}

public function sendmail(){

if( !empty($this->request->data) ){

$email = new CakeEmail();

// $email->config('default');

$email->from(array('admin@cake.loc' => 'Administration of cake.loc'));

$email->to('test@mail.com');

$email->subject($this->request->data['Page']['subject']);

$text = "E-mail: {$this->request->data['Page']['email']}/n";

$text .= "Сообщение: {$this->request->data['Page']['text']}";

if( $email->send($text) ){

$this->Session->setFlash('Письмо успешно отправлено', 'default', array('class' => 'ok'));

return $this->redirect($this->referer());

}else{

$this->Session->setFlash('Ошибка!', 'default', array('class' => 'error'));

return $this->redirect($this->referer());

}

}

}

}

ПРИЛОЖЕНИЕ Б

Модели Category.php, Book.php, Reader.php, Profession.php, Group.php> Typebook.php, User.php

<?php

class Category extends AppModel {

public $hasMany = array(

'Book' => array(

'className' => 'Book',

'dependent' => true

)

);

public $validate=array(

'title' => array(

'rule' => 'notEmpty',

'message' => 'Введите название раздела'

));

}

?>

<?php

class Book extends AppModel{

public $belongsTo = array('Category','Typebook') ;

public $hasAndBelongsToMany=array('Profession');

public $hasMany = array('BookReader');

public $validate=array(

'title' => array(

'rule' => 'notEmpty',

'message' => 'Введите ISBN книги'

),

'body' => array(

'rule' => 'notEmpty',

'message' => 'Введите название книги'

),

'count_pages'=> array(

'rule'=>'numeric',

'message' => 'Введите число'

),

'count_books'=> array(

'rule'=>'numeric',

'message' => 'Введите число'

),

'year'=> array(

'rule'=>'numeric',

'message' => 'Введите число' ) ); }?>

<?php

class Reader extends AppModel {

public $belongsTo = array('Group') ;

// public $hasAndBelongsToMany=array('Book');

public $hasMany = array('BookReader');

public $validate=array(

'body' => array(

'rule' => 'notEmpty',

'message' => 'Введите ФИО'

));

}

?>

<?php

class Profession extends AppModel {

public $hasAndBelongsToMany='Book';

public $validate=array(

'title' => array(

'rule' => 'notEmpty',

'message' => 'Введите шифр'

),

'body' => array(

'rule' => 'notEmpty',

'message' => 'Введите название специальности'

));

}

?>

<?php

class Group extends AppModel {

public $hasMany = array(

'Reader' => array(

'className' => 'Reader',

'dependent' => true

)

);

public $validate=array(

'title' => array(

'rule' => 'isUnique',

'message' => 'Такая группа уже есть'

));

}

?>

<?php

class Typebook extends AppModel {

public $hasMany = array(

'Book' => array(

'className' => 'Book',

'dependent' => true

)

);

public $validate=array(

'title' => array(

'rule' => 'isUnique',

'message' => 'Такой тип уже есть'

));}?>

<?php

App::uses('BlowfishPasswordHasher', 'Controller/Component/Auth');

//App::uses('SimplePasswordHasher', 'Controller/Component/Auth');

class User extends AppModel {

public $validate = array(

'username' => 'isUnique',

'password' => 'notEmpty',

'role' => array(

'rule' => array('inList', array('user', 'admin')),

'message' => 'Некорректное значение роли'

)

);

public function beforeSave($options = array()){

if (isset($this->data[$this->alias]['password'])) {

$passwordHasher = new BlowfishPasswordHasher();

$this->data[$this->alias]['password'] = $passwordHasher->hash(

$this->data[$this->alias]['password']

);

}

return true;}}

?>

<?php

class BookReader extends AppModel {

public $belongsTo = array('Book','Reader');

}

?>

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


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

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