- •1Аналитический обзор топологических систем
- •1.1Обзор существующих подсистем в дгту
- •1.2Обзор существующих топологических систем
- •1.2.1Ростов-навигатор
- •1.2.3Яндекс Карты
- •1.3Постановка задачи
- •2Алгоритмическое конструирование топологической системы
- •2.1Общая схема функционирования
- •2.2Алгоритмы работы топологической системы
- •3Программное конструирование топологической сиcтемы
- •3.1Обоснование выбора языка программирования
- •10Браузеры
- •11.1Структура базы данных
- •11.2Интерфейс топологической системы
- •Заключение
- •12Список использованных источников
- •Приложение а техническое задание на программное средство
- •Приложение б тексты основных программных модулей
Приложение б тексты основных программных модулей
П.Б.1 Контроллер
<?
class Topology extends Controller
{
/**
* главная страница */
function index()
{
$this->load->view('topology/header');
$this->load->view('topology/main');
$this->load->view('topology/footer'); // $this->load->view('plan_ats');
}
/** показать топологию для здания
* $buildId - идентификатор здания из базы
*/
function show_topology($buildId,$f)
{
$this->load->database();
if (isset($buildId) && $buildId > 0) {
$arr = array();
// print ($f);
$arr['floor'] = $f; // $this->input->post('floor'); // номер этажа
if ($arr['floor'] < 1)
$arr['floor'] = $f;
$arr['floor_count'] = 4;
$arr['buildId'] = $buildId;
$arr['plan_cnt'] = $this->show_floor($buildId, $arr['floor'], true);
$res = $this->load_audition($buildId);
$data = array();
$data['arr'] = $arr;
$data['res'] = $res;
$this->load->view('topology/header');
$this->load->view('topology/plan', $data);
$this->load->view('topology/footer');
} else {
echo "Error";
}
}
/**
* Загрузить этаж здания
* @param <type> $buildId
* @param <type> $floorNum
* @return <type>
*/
function show_floor($buildId, $floorNum, $hide = false)
{
$arr = array();
if ($hide)
return $this->load->view('topology/plan_' . $buildId . '_' . $floorNum, $arr, $hide);
else
$this->load->view('topology/plan_' . $buildId . '_' . $floorNum, $arr, $hide);
return 0;
}
/* *Загружаем из базы аудитории */
function load_audition($korpus)
{
$this->load->database();
$this->load->model('topology_model');
$res = $this->topology_model->audition($korpus);
return $res;
}
}
П.Б.2 Модель
<?php
if (!defined('BASEPATH') || !defined('APPPATH'))
exit('No direct script access allowed');
/**
* Модель для работы со структурой ДГТУ
*/
class Topology_Model extends Model
{
public function audition($korpus)
{
$this->load->database();
$id_res = array();
$id_korp = array();
$res = array();
/*
*выбираем id этажей гл. корпуса
*/
if(count($korpus)==1){
$str='гл.корп.';
}
$id = "SELECT distinct id FROM structure.building WHERE shortname=?";
$id_korp = $this->db->query($id,array('гл.корп.'));
$id_res=$id_korp->result_array();
$idd1=$id_res[0]['id'];
$idd2=$id_res[1]['id'];
$idd3=$id_res[2]['id'];
$idd4=$id_res[3]['id'];
\\по найденным id находим все number аудитории
$aud = "SELECT id, number FROM structure.room WHERE building_fk=? or building_fk=? or building_fk=? or building_fk=?";
$audition = $this->db->query($aud, array($idd1,$idd2,$idd3,$idd4));
$res = $audition->result_array();
$tel = "SELECT id FROM structure.room WHERE building_fk=? or building_fk=? or building_fk=? or building_fk=?";
$id_tel = $this->db->query($tel, array($idd1,$idd2,$idd3,$idd4));
$id_tel_res=$id_tel->result_array();
$a=$id_tel_res[10]['id'];
$tell="SELECT room_fk, number FROM structure.telephone WHERE room_fk=?";
$number_telephone=$this->db->query($tell,array($a));
$numbers_tel=$number_telephone->result_array();
return $res;
}
}
П.Б.3 Скрипт
/*выбираем нужный этаж*/
$(document).ready(function(){
$('.menu-elem h3').bind('click',function(){
var id = $(this).parent().attr('id').substr(6,1);
$('.building-block').slideDown(5000);
$('#block-cnt').html('Подождите идет загрузка данных...');
$.post(sitepath+'topology/show_floor/'+buildId+'/'+id,{},function(data){
$('#block-cnt').html(data);
});
});
/*присваиваем каждому атрибуту title номер этажа и номер аудитории */
for($i=0; $i<=numbers.length; $i++){
$('#id_'+buildId+'_'+floor+'_'+numbers[$i]+'').attr({
title: 'Аудитория а.'+numbers[$i]+' этаж '+floor+''
});
}
/*Меню*/
$('#floor_un td').hover(
function(){
$(this).css('background','#E2E2E2',
'color','green');
},
function(){
$(this).css('background','blue',
'color','black');
}
);
});
П.Б.4 Модуль выбора этажа
<?php
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
?>
<script type="text/javascript">
sitepath = '<?=SITEPATH?>';
buildId = '<?=$arr["buildId"];?>';
floor='<?=$arr["floor"];?>';
numbers = [];
var $j=0;
<?php foreach ($res as $item):?>
numbers[$j]='<?=$item["number"];?>';
$j=$j+1;
<? endforeach; ?>
</script>
<div id="topology-main">
<div class="header">
<h2>Схема телефонных номеров ДГТУ</h2>
</div>
<!-- МЕНЮ выбора этажа-->
<div class="menu">
<table class="td_border" width="120" cellpadding="0" cellspacing="0">
<tr id="floor_un" class="menu-elem"> <td><h3><a href="<?=SITEPATH?>topology/show_topology/1/1">ДГТУ 1-этаж</a></h3></td></tr>
<tr id="floor_un" class="menu-elem"> <td><h3><a href="<?=SITEPATH?>topology/show_topology/1/2">ДГТУ 2-этаж</a></h3></td></tr>
<tr id="floor_un" class="menu-elem"> <td><h3><a href="<?=SITEPATH?>topology/show_topology/1/3">ДГТУ 3-этаж</a></h3></td></tr>
<tr id="floor_un" class="menu-elem"> <td><h3><a href="<?=SITEPATH?>topology/show_topology/1/4">ДГТУ 4-этаж</a></h3></td></tr>
</table>
</div>
<!-- Блок этажей -->
<div id="block-cnt" class="block">
<?$plan_cnt=$arr['plan_cnt']; if (isset($plan_cnt)) echo $plan_cnt; ?>
</div>
</div>