Файл: Разработать справочную систему по стандартным функциям выбранного языка программирования ..pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 26.05.2023

Просмотров: 401

Скачиваний: 8

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

В качестве платформы для написания кода был выбран популярный и многофункциональный текстовый редактор Notepad++. Данный текстовый редактор является бесплатным и поддерживает синтаксис большого количества языков программирования. Его базовая функциональность может быть расширена за счет дополнительных модулей. [16]

Для проектирования базы данных MySQL был выбран официальный пакет MySQL Workbench. Это инструмент для визуального проектирования баз данных, интегрирующий проектирование, моделирование, создание и эксплуатации БД в единой системе. Также распространяется по бесплатной модели. [17]

Для Front-end разработки будут использоваться технологии HTML (Язык гипертекстовой разметки) и CSS (Каскадные таблицы стилей).

Для Back-end разработки будет использоваться язык программирования PHP (Препроцессор гипертекста).

Для базы данных будет использоваться MySQL (Свободная реляционная система управления баз данных).

Сперва спроектируем базу данных исходя из логического разделения информации на структуры в программе MySQL Workbench. Справочная система языка программирования PHP должна содержать категории и функции. Таблицы будут храниться в базе данных с названием «phpdir».

Таблица, содержащая категории (category) будет состоять из полей: «id» (уникальный идентификатор типа INT Primary Key NOT NULL) и «title» (название типа VARCHAR(100)). Таблица функций (function) будет состоять из полей «id» (уникальный идентификатор типа INT Primary Key NOT NULL), «idcategory» (типа INT) «title» (название типа VARCHAR(100)), «description» (краткое описание типа VARCHAR(255)), «text» (полное описание типа TEXT). Обе таблицы будут в кодировке UTF8 и принадлежать к типу InnoDB.

Запустим программное обеспечение MySQL Workbench и создадим вышеуказанные таблицы. Далее создадим модель и разместим на ней созданные таблицы. На данном этапе проектирование БД закончено.

Следующим этапом будет проектирование дизайна справочной системы. Его структура будет состоять из заголовка (header), боковой панели (sidebar), артикля (article) и подвала (footer). Его структура спроектирована в стандартном графическом редакторе Microsoft Paint.

Расположение элементов будет определено в каскадном шаблоне стилей с названием «style.css». Все элементы дизайна справочной системы будут растягивается под различные разрешения дисплее. Цветовая схема выбрана в сером стиле, чтобы не нести лишнюю нагрузку на пользователя.


Функциональная часть справочной системы будет построена по модели MVC (Model View Controller). В корне будут расположены следующие папки с файлами:

      • css
        • style.css
      • core
        • db.inc.php
      • model
        • category.inc.php
        • function.inc.php
      • view
        • main.html.php
        • sidebar.html.php
        • article.html.php
      • index.php

В папке css будет содержаться файл с каскадным стилем «style.css». В папке core содержится модуль подключения к базе данных «db.inc.php».

В папке model содержатся модели, «category.inc.php» отвечающая за вывод категорий из базы данных, «function.inc.php» отвечающая за вывод функций из базы данных.

В папке view содержатся html представления, «main.html.php» содержит в себе header, footer, а также подключаемые преставление «sidebar.html.php», которое выводит информацию из «category.inc.php» и «article.html.php», которое выводит первоначальную информацию сайта, а при выборе категории выводит информацию из модели «function.inc.php».

В корне справочной системы содержится контроллер «index.php».

2.2 Разработка справочной системы

Первым делом создадим базу данных MySQL, для этого в PhpMyAdmin введем команду CREATE DATABASE `phpdir`;

Далее в созданной базе создадим таблицу «category» при помощи следующего кода:

CREATE TABLE `category` (

`id` INT NOT NULL AUTO_INCREMENT,

`title` VARCHAR(100) NOT NULL,

PRIMARY KEY (`id`))

ENGINE = InnoDB CHARSET utf8;

Далее в созданной базе создадим таблицу «function» при помощи следующего кода:

CREATE TABLE `function` (

`id` INT NOT NULL AUTO_INCREMENT,

`idcategory` INT NULL,

`title` VARCHAR(100) NOT NULL,

`description` VARCHAR(255) NOT NULL,

`text` TEXT NULL,

PRIMARY KEY (`id`))

ENGINE = InnoDB CHARSET utf8;

Данные таблицы используют подсистему низкого уровня InnoDB, которая поддерживает технологии транзакций и внешних ключей. Стандартной кодировкой выбрана utf8, которая позволяет хранить символы Юникода используя переменное количество байт, а также поддерживает латинские буквы и простейшие знаки препинания.

После этого остается лишь наполнить созданные таблицы информацией.

Для таблицы «category» при помощи команды insert были заполнены категории и их заголовки.

Для таблицы «function» при помощи команды insert были заполнены название функций их краткое и полное описание, а также уникальный идентификатор категорий. (Приложение 1).

Первым делом создадим простой контроллер «index.php», его основная цель заключается в определение установленной переменной $_GET['cat'], которая сигнализирует о том, что пользователем была выбрана категория. После чего переменной $module будет задано название модуля вывода функций.


if(isset($_GET['cat']))

{

$module="article.html.php";

}

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

include_once "$path/view/main.html.php"; Приложение 2.

Стоит сразу отметить, что в папке core расположен файл, который отвечает за подключения к базе данных «db.inc.php». Подключения проходит через стандартную функцию PDO:

$pdo=new PDO('mysql:host=localhost;dbname=phpdir','root',''); Приложение 3,

Теперь создадим основной шаблон HTML в файле «main.html.php»:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<title>Справочная система по функциям PHP</title>

<link href="/css/style.css" type="text/css" rel="stylesheet" />

Тегом meta я указал в части head кодировку и тип страницы, далее тегом title я обозначил название страницы. Через link href была указана ссылка на каскадный стиль CSS.

<body>

<div id="container">

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

<div id="header"><p><a href="/">Справочная система по функциям PHP</a><p></div>

В блоке header указана название сайта с активной ссылкой, которая ведет на главную страницу.

<div id="sidebar"><?php include_once "$path/view/sidebar.html.php";?></div>

Далее в блоке боковой панели подключено представление, которое выводит список функций списком.

<div id="article">

<?php if(!isset($module))

echo "<p class=\"hello\">Добро пожаловать! <br /><br />

Вы находитесь на главной странице справочной системы по функциям PHP. Здесь вам доступна информация о функциях языка PHP. Выберите нужную вам категории в левом блоке, в полученном списке выберите нужную вам функцию и нажмите на нее для получения подробной информации. </p>";

else include_once "$path/view/$module" ?></div>

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

<div id="footer"><p>&nbsp;Хмарный Богдан © 2016 <a href="mailto:bogdan.hmarnii@gmail.com">Обратная связь.</a></p></div>

</div>

</body>

Последним блочным элементом является подвал, в котором указан копирайт и форма обратной связи через почту. (Приложение 4).

Разберем подключаемое представление «sidebar.html.php». Данное представление подключает свою модель:

include_once "$path/model/category.inc.php";

Данная модель создаем массив «$category».


<ul>

<?php foreach($category as $cat):?>

<li class="sidebar"><?php echo "<a href=\"?cat=".$cat['id']."\">".$cat['title']."</a>" ;?></li>

<?php endforeach; ?>

</ul>

При помощи цикла foreach, вызывается создается список из каждой категории, каждый элемент является ссылкой с переменной «$_GET['cat']», которой присваивается id категории и которая при нажатии будет обработана контроллером и нужной моделью. (Приложение 5).

При выборе категории, будет подключена модель будет задана переменная «$model», это обеспечит подключение в блоке article представления «article.html.php». Данное представление подключает свою модель:

include_once "$path/model/function.inc.php";

Данная модель отвечает за создание массива $function.

<?php foreach($function as $fun):?>

<p><?php echo "<a href=\"?cat=".$id."&fun=".$fun['id']."\">".$fun['title']."</a> - ".$fun['description'];?></p>

<?php if(isset($fun['text'])) echo $fun['text'];?>

<?php endforeach; ?>

При помощи цикла foreach формируются на странице выводятся все функции выбранной категории. Выводится краткое описание и название функции, которое заключено в видео ссылки, при нажатии которой задается переменная «$_GET['fun']». При нажатии на нужную функцию вместо списка выводится полное описание выбранной функции. (Приложение 6).

Вывод массива с категориями в представление sidebar.hml.php осуществляется моделью category.inc.php. Данная модель в перву очередь подключает файл подключения к базе данных:

include_once "$path/core/db.inc.php";(Приложение 7).

Вывод массива с функциями в представление article.html.php осуществляется моделью function.inc.php. Данная модель в первую очередь проверяет не выбрана ли конкретная функция !isset($_GET['fun']) и является ли переменная $_GET['cat'] правильной.

if(!isset($_GET['fun']) and is_numeric($_GET['cat']) and strlen($_GET['cat']<100))

Если условие совпадает, то в переменную $id будет записан идентификатор выбранной категории, далее подключен файл подключения к базе данных.

$id=$_GET['cat'];

include_once "$path/core/db.inc.php";

После этого создается запрос, который выбирает функции по заданной категории $id. И записью результата в массив $function[]:

$sql="SELECT id,title,description FROM function where idcategory='$id'";

$result=$pdo->query($sql);

foreach($result as $row)

$function[]=array('id'=>$row['id'],'title'=>$row['title'],'description'=>$row['description']);

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

else if(is_numeric($_GET['fun']) and strlen($_GET['fun']<100)

Но на этот раз запрос SQL будет содержать и запрос на вывод поля 'text', а также запись этого поля в массив $function[];

$sql="SELECT id,title,description,text FROM function where id=$id";

$result=$pdo->query($sql);

foreach($result as $row)

$function[]=array('id'=>$row['id'],'title'=>$row['title'],'description'=>$row['description'], 'text'=>$row['text']);


Если переменные $_GET['cat'] и $_GET['fun'] не отвечают требования, то массив $function[] будет задан пустым, чтобы не вызывать код ошибки на сайте else $function[]=null;(Приложение 8).

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

#container{

width:98%;

height:90%;

margin-left: 0.5%;

position:absolute;

display: block;

}

#sidebar {

width: 20%;

height:95%;

float: left;

background-color: rgba(246,246,246,1.00);

}

#article {

width:79%;

height:95%;

float:right;

background-color: rgba(246,246,246,1.00);

}

Например, sidebar и article имеют процентное соотношение 20% /1% на полосу 79%. С размещением слева и справа соответственно. (Приложение 9).

2.3 Описание работы созданной системы

Созданная мною справочная система по функциям языка программирования PHP полностью готова к работе. Данная система расположена на локальном сервере Open Server с локальным доменом «b.php». Вся информация динамически выводится из базы данных MySQL. Окно с сайтом намеренно уменьшено, чтобы продемонстрировать растягиваемость шаблона. Выглядит данная система следующим образом:

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

Когда пользователь выбирает функцию, то формируется URL запрос $_GET переменной ['cat'].

Благодаря этому в правой части от боковой панели, формируется ссылочный вывод функций данной категории с $_GET переменной ['fun'].

Модель «function.inc.php» обрабатывает URL запрос считывая значение переменной «$_GET['fun']» и выводит полное описание выбранной функции по ее идентификатору.

Заключение

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

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