Ознакомление с языками программирования web-приложений. Основы работы с базами данных

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

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

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

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

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Введение

Производственная практика проходила на ЗАО НПП «ЗНАК».

За время прохождении практики были выполнены следующие виды работ:

· ознакомление с деятельностью и задачами предприятия;

· ознакомление с языками программирования web-приложений (HTML, CSS, PHP);

· изучение основ работы с БД в среде MS SQL server management express 2005.

и полученные следующие результаты:

1. Постановка задачи и целей практики

Задание: модернизация сайта. Есть БД в которую записывается время прихода и ухода на работу, а также место работы (офис и производство), необходимо сформировать отчет ( в виде интернет - страницы) в котором отображается календарь с полной информацией о проделанной работе выбранногосотрудника.

Цели:

· Разработать форму представления данных на экране.

· Сформировать данные из БД, пригодные для вывода на экран.

· Изучение основ web-программирования (HTML, CSS, PHP).

· Изучение основ работы с БД в среде MS SQL server management express 2005.

· Реализация технологии всплывающих подсказок (javascript).

2. Реализация поставленных целей

2.1 Разработка формы представления данных на экране

Исходная форма (рисунок 1):

Рисунок 1 -исходная форма представления данных на экране.

Недостатки данного представления:

· Нет возможности посмотреть данные за весь месяц.

· Сложно просматривается соответствие между входом на работу и выходом с нее.

· Сложное представление данных, результатом чего является сложность восприятия информации.

2.2 Разработка новой формы представления

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

· Дата (формат: день.месяц.год).

· Учет обеда (формат: часы:минуты).

· Учет дороги (формат: часы:минуты).

· Количество отработанных часов в текущий день (формат: часы:минуты). Отображается зеленным, если у сотрудника за текущий день не было нарушений и красным, если нарушения были.

· Иконка, при наведении на которую показывается дополнительная информация.

Один день календаря представлен на рисунке 2.

Рисунок 2 - один день из календаря.

В результате разработки вида представления информации была получена следующая форма (рисунок 3).

Рисунок 3 - новая форма представления информации на экране.

2.3 Формирование данных из БД, которые пригодны для вывода на экран

Исходная форма (рисунок 4):

Рисунок 4 - исходная формировка данных.

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

Рисунок 5 - новая формировка данных.

2.4 Реализация технологии всплывающих подсказок

Для реализации данного пункта был выбран язык программирования javascript для которого необходимо подключить плагин tiptip:

<script type="text/javascript" src="script/jquery.tipTip.js"></script>

Для реализации подсказки необходимо прописать следующую функцию:

<script typr="text/javascript">

$(function()

{

$(".someclass").tipTip({maxWidth: '500px'});

});

</script>

Далее необходимо присвоить данный класс объекту, при наведении на который будет появляться подсказка. Пример всплывающей подсказки представлен на рисунке 5.

Конечный результат работы представлен на рисунке 4 и рисунке 6. Код программы представлен в приложении А.

Рисунок 6 - итог

Заключение

база данные время сотрудник

В результате прохождения практики были получены следующие результаты:

· Разработана новая форма представления данных на сайте.

· Изучены основы web- программирования (HTML, CSS, PHP).

Изучена работа плагина tiptip, который предназначен для создания всплывающих подсказок.

· Получены навыки работы с БД в среде MSSQL server management express 2005.

Список литературы

1. Джон Коггзол - PHP5 полное руководство.

2. Евгений Попов - Видеоурок (Создание всплывающих подсказок).

3. Евгений Попов - Видеокурсы (html,css,php,javascript)

Приложение А - листинг программы

(дополнительное)

detail.php

<?php

require 'wta_func.php'; //подключение необходимых функций

function actions ($out,$move,$place,$time,$interval)

{

if($move == 'entry') $move = 0;

else $move = 1;

if($place == '(офис)') $place = 1;

else $place = 0;

$str='';

if($time=='00:00:00')

{

$str = '<span style=color:#ff8800> '.$time.' ( Отсутствует выход вконце дня ) </span>';

return $str;

}

switch($out)

{

case 0: //если человек находится на улице

{

if($move==0&&$place==1) //вход в офис

{

$str = 'Офис: '.$time.' - ';

$out = 1;

return $str;

}

if($move==0&&$place==2) //вход на производство

{

$str = 'Производство: '.$time.' - ';

$out = 2;

return $str;

}

if($move==1&&$place==1) //выход из офиса

{

$str = '<span style=color:#ff8800>Офис: ... - '.$time.'( Отсутствует вход )<br></span>';

return $str;

}

if($move==1&&$place==2) //выход с производства

{

$str = '<span style=color:#ff8800>Производство: ... - '.$time.'( Отсутствует вход )<br></span>';

return $str;

}

}

case 1: //если человек находится в офисе

{

if($move==1&&$place==1) //выход из офиса

{

$str = $time.' ( '.$interval.' )<br>';

$out = 0;

return $str;

}

if($move==0&&$place==1) //вход в офис (двойной)

{

$str = '<span style=color:#ff8800> ... ( Пропущен выход )<br></span>Производство: '.$time.' - ';

return $str;

}

if($move==0&&$place==2) //вход на производство(пропущен выход из офиса)

{

$str = '<span style=color:#ff8800>... ( Пропущен выход из офиса)<br></span> Производство: '.$time.' - ';

$out = 2;

return $str;

}

if($move==1&&$place==2) //выход с производства(пропущен выход из офиса и вход на производство)

{

$str = '<span style=color:#ff8800> ... ( Пропущен выход )<br></span>Производство: ... - '.$time.' ( Пропущен вход )<br>';

$out = 0;

return $str;

}

}

case 2: //если человек находится на производстве

{

if($move==1&&$place==2) //выход с производства

{

$str = $time.' ( '.$interval.' )<br>';

$out = 0;

return str;

}

if($move==0&&$place==2) //вход на производство (двойной)

{

$str = '<span style=color:#ff8800> ... - '.$time.' ( Пропущен вход ) <br></span>';

return $str;

}

if($move==0&&place==1) //пропущен выход с производства

{

$str = '<span style=color:#ff8800> ... ( Пропущен выход )<br></span>'.$time.' - ';

$out = 1;

return $str;

}

if($move=1&&place==0) //пропущен выход с производства и вход в офис

{

$str = '<span style=color:#ff8800>... ( Пропущен выход )<br> ... - '.$time.'( Пропущен вход )<br></span>';

}

break;

}

}

}

try {

if(isset($_GET["uid"])) {$uid = $_GET['uid'];}

if(isset($_GET["begin_date"]))

{

$date1 = $_GET['begin_date'];

$begin_date = new DateTime($date1,$timezone);

$month = $begin_date->format('m');

$year = $begin_date->format('Y');

}

else

{

$month = date("m",mktime(0,0,0,date('m'),1,date('Y')));

$year = date('Y',mktime(0,0,0,date('m'),1,date('Y')));

}

if(isset($_GET["end_date"]))

{

$date2 = $_GET['end_date'];

$last_date = new DateTime( $date2, $timezone ); //конец месяца

}

else $uid = 1;

$timezone = new \DateTimeZone( 'Europe/Moscow' ); //выбираем временной пояс

$current_date = new DateTime("now",$timezone);

$begin_date->setDate( $begin_date->format('Y'), $begin_date->format('m'), 1 ); //формат получения (начало месяца)

$conn = new \sqlsrv\connection( \WTA\SERVER, array( "Database"=>\WTA\DATABASE, "UID"=>"sa", "PWD"=>"1" ) );

$users_query = $conn->query("

SELECT $uid_u, $name, $name1, $name2

FROM $userlist

WHERE $uid_u = $uid AND $tab_number_filter

ORDER BY $name");

$user_row = $conn->fetch_assoc_array( $users_query );

$username.= ' '.$user_row[\WTA\NAME].'&nbsp;'.$user_row[\WTA\NAME1].'&nbsp;'.$user_row[\WTA\NAME2]; //формирование строки с ФИО

$skip = date('w',mktime(0,0,0,$month,1,$year)); //узнаем номер для недели

$skip=$skip - 1;

if ($skip == -1) $skip=6;

$daysInMonth = date('t',mktime(0,0,0,$month,1,$year)); //узнаем количество дней в месяце

$calendar_head = '';

$calendar_body = ''; //обнуляем переменнаые для календаря

$day = 1; //переменная цикла

for($i=0; $i<6;$i++)

{

$calendar_body.='<tr>'; //открываем тег строки

for($j = 0; $j <7;$j++) //внутренний цикл для дней недели

{

if(($skip>0)or($day>$daysInMonth))

{

$calendar_body.='<td class="none"> </td>';

$skip--;

}

else

{

if(($j == 5) OR ($j == 6)) //если воскресение или суббота,то отмечаем выходной

$calendar_body.='<td class="holiday">'.$begin_date->format('d.m.Y').'<br><p>Выходной</p></td>';

else {//иначе просто выводи день ячейки

$beg_date = new DateTime( $begin_date->format('Y-m-d'), $timezone );

$result = \WTA\get_worktime( $conn, $user_row[\WTA\UID_U], $beg_date ); //необходим формат времени format('Y-m-d')

$info='';

$mistake ='';

$where_event_place='';

$out = 0;

foreach( $result[\WTA\EX] as $ex_info )

$class_warning = '';

$event_class = '';

$event_string = '';

if( $ex_info[\WTA\MODE] == \WTA\EVENT_ENTRY ) //определяем какое событие произошло (вход или выход)

{

$event_class = 'entry';

$event_string = 'вход';

}

else if( $ex_info[\WTA\MODE] == \WTA\EVENT_EXIT )

{

$event_class = 'exit';

$event_string = 'выход';

}

if( $ex_info[\WTA\DOOR] == \WTA\DOOR_OFFICE ) //определяем где произошло событие

{

$where_event_place='(офис)';

$event_string.= " (офис)";

}

else if( $ex_info[\WTA\DOOR] == \WTA\DOOR_FACTORY ) {

$where_event_place='(пр-во)';

$event_string.= " (пр-во)";

}

if( $ex_info[\WTA\WARNINGS] )

{

$class_warning = ' class="warning"';

}

// $info.=$ex_info[\WTA\TIME]->format('H:i:s').' - '.$event_string.' '.$ex_info[\WTA\INTERVAL].'<br>';

$info .= actions(&$out,$event_class,$where_event_place,$ex_info[\WTA\TIME]->format('H:i:s'),$ex_info[\WTA\INTERVAL]);

foreach( $ex_info[\WTA\WARNINGS] as $warning )

{

$mistake .=$warning.'<br>';

}

}

$dinner = $result[\WTA\DINNER]; //учет обеда

if( $dinner != 0 )

{

$min = (int)(($dinner%3600)/60); $min = $min > 9 ? $min : "0$min";

$hour = (int)($dinner/3600); $hour = $hour > 9 ? $hour : "0$hour";

$dinner = "вычет $hour:$min";

$html_table.= "<tr class=\"green\"><td>&nbsp;</td><td>Учет обеда</td><td>$dinner</td><td>&nbsp;</td></tr>";

}

$road = $result[\WTA\ROAD]; //учет дороги

if( $road != 0 )

{

$min = (int)(($road%3600)/60); $min = $min > 9 ? $min : "0$min";

$hour = (int)($road/3600); $hour = $hour > 9 ? $hour : "0$hour";

$road = "$hour:$min";

$html_table.= "<tr class=\"green\"><td>&nbsp;</td><td>Время в дороге</td><td>$road</td><td>&nbsp;</td></tr>";

}

if((date(j)==$day)&&(date(m)==$month)&&(date(Y)==$year)) //проверяем на текущий день

{

if($mistake=='')

{

$calendar_body.='<td class="today">

<table style=" border: solid 0px BLACK; width: 100%; height: 150px; ">

<tr><td style=" border: solid 0px BLACK;">'.$begin_date->format('d.m.Y').'<img class="someclass" title="'.$begin_date->format('d.m.Y').'<br><br>'.$info.'<br>Нарушений нет!" align = "right" src="img/button.ico"/></td></tr>

<tr><td style=" border: solid 0px BLACK; font-size:16px; ">Отработано: <strong style="color:green;">'.$result[\WTA\WORKT]->format('%H:%I').'</strong> </td></tr>

<tr><td style=" border: solid 0px BLACK;font-size:16px;">Обед: <strong>'.$dinner.'</strong></td></tr>

<tr><td style=" border: solid 0px BLACK;font-size:16px;">Дорога: <strong>'.$road.'</strong></td></tr>

</table>

</td>';

}

else

{

$calendar_body.='<td class="today">

<table style=" border: solid 0px BLACK; width: 100%; height: 150px; ">

<tr><td style=" border: solid 0px BLACK;">'.$begin_date->format('d.m.Y').'<img class="someclass" title="'.$begin_date->format('d.m.Y').'<br><br>'.$info.'<br>'.$mistake.'" align = "right" src="img/button.ico"/></td></tr>

<tr><td style=" border: solid 0px BLACK; font-size:16px;">Отработано: <strong style="color:red;">'.$result[\WTA\WORKT]->format('%H:%I').'</strong> </td></tr>

<tr><td style=" border: solid 0px BLACK;font-size:16px;">Обед: <strong>'.$dinner.'</strong></td></tr>

<tr><td style=" border: solid 0px BLACK;font-size:16px;">Дорога: <strong>'.$road.'</strong></td></tr>

</table>

</td>';

}

}

else//если это обычный день(производим разбиение на строки и ячейки)

{

if($mistake=='')

{

$calendar_body.='<td class="day">

<table style=" border: solid 0px BLACK; width: 100%; height: 150px; ">

<tr><td style=" border: solid 0px BLACK;">'.$begin_date->format('d.m.Y').'<img class="someclass" title="'.$begin_date->format('d.m.Y').'<br><br>'.$info.'<br>Нарушений нет!"align = "right" src="img/button.ico"/></td></tr>

<tr><td style=" border: solid 0px BLACK; font-size:16px; ">Отработано: <strong style="color:green;">'.$result[\WTA\WORKT]->format('%H:%I').'</strong> </td></tr>

<tr><td style=" border: solid 0px BLACK;font-size:16px;">Обед: <strong>'.$dinner.'</strong></td></tr>

<tr><td style=" border: solid 0px BLACK;font-size:16px;">Дорога: <strong>'.$road.'</strong></td></tr>

</table>

</td>';

}

else

{

$calendar_body.='<td class="day">

<table style=" border: solid 0px BLACK; width: 100%; height: 150px; ">

<tr><td style=" border: solid 0px BLACK;">'.$begin_date->format('d.m.Y').'<img class="someclass" title="'.$begin_date->format('d.m.Y').'<br><br>'.$info.'<br>'.$mistake.'" align = "right" src="img/button.ico"/></td></tr>

<tr><td style=" border: solid 0px BLACK; font-size:16px;">Отработано: <strong style="color:red;">'.$result[\WTA\WORKT]->format('%H:%I').'</strong> </td></tr>

<tr><td style=" border: solid 0px BLACK;font-size:16px;">Обед: <strong>'.$dinner.'</strong></td></tr>

<tr><td style=" border: solid 0px BLACK;font-size:16px;">Дорога: <strong>'.$road.'</strong></td></tr>

</table>

</td>';

}

}

}

$day++;//увеличиваем день на один

$begin_date->modify('+1 DAY'); //увеличиваем день на один

}

} //закрытие внутреннего цикла

$calendar_body.='</tr>'; //закрываем тег строки

} //закрытие внешнего цикла

//заголовок календаря

$calendar_head = '<h1 align=center >'.$username.'</h1>';

$begin_date->modify('-1 DAY');

$months = array( 'Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь',

'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь' ); //массив с месяцами

$mn = (int)$begin_date->format('m');

$calendar_head.='<h3 align=center><< '.$months[(int)$begin_date->format('m')-1].' >></h3>';

$calendar_head .= '<p align = "right" style="font-size:20px;" >Необходимо отработать в этом месяце: '.$need_work[$begin_date->format("Y")][$begin_date->format("n")].'</p>';

$calendar_head .= '<tr style = "height:25px">

<th>Понедельник</th>

<th>Вторник</th>

<th>Среда</th>

<th>Четверг</th>

<th>Пятница</th>

<th>Суббота</th>

<th>Воскресенье</th>

</tr>';

echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">";

echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"styl.css\">";

echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"tipTip.css\">";

echo "<body bgcolor=#f5f5dc >";

echo "<table align=\"center\" style=\" width: 1600px;height: 900px;\">";

echo $calendar_head;

echo $calendar_body;

echo "</table>";

if(isset($_GET["begin_date"]))

{

$month = (int)$begin_date->format('m');

}

echo '<a href="index.php?month='.$month.'"><p align= "right" >Вернуться на главную</p></a>';

echo "</body>";

} catch( \sqlsrv\exception $e )

{

echo "Ошибка при обращении к SQL серверу: ".$e->getMessage();

// Вывод информации об ошибке.

if( ($errors = sqlsrv_errors() ) != null)

{

foreach( $errors as $error)

{

echo "<hr>SQLSTATE: ".$error[ 'SQLSTATE']."<br>";

echo "code: ".$error[ 'code']."<br>";

echo "message: ".$error[ 'message']."<hr>";

}

}

}

?>

<script type="text/javascript" src="script/jquery-1.3.2.min.js"></script>

<script type="text/javascript" src="script/jquery.tipTip.js"></script>

<script type="text/javascript">

$(function()

{

$(".someclass").tipTip({maxWidth: '500px'});

});

</script>

style.css (таблица стилей для оформления календаря)

td /*отображение границ таблицы*/

{

width: 80px;

border: 0px;

border: solid 3px BLACK;

font-size: 22px;

/*text-align: center;*/

}

.today /*выделениесегодняшнейдаты*/

{

background-color:*#FFFF99;

border-color:#FF531A;

}

.holiday/*выделениевоскресения*/

{

background-color:#fffff0;

border-color:#FF531A;

width: 7%;

text-align: center;

}

body

{

margin:0 auto;

padding:10px;

}

.day

{

background-color:#f5f5dc;

color:#000000;

font-size:20px;

}

.none

{

border:0px;

}

.tdcells

{

style=" border: solid 1px BLACK;

border: 0px;

width: 100%;

height: 100%; "

}

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


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

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

    курсовая работа [981,4 K], добавлен 05.11.2011

  • Определение базы данных и банков данных. Компоненты банка данных. Основные требования к технологии интегрированного хранения и обработки данных. Система управления и модели организации доступа к базам данных. Разработка приложений и администрирование.

    презентация [17,1 K], добавлен 19.08.2013

  • Особенности технологий создания и работы с базами данных. Реализация структуры базы данных в MS Visio и MS SQL Server. Виды манипуляций над данными, создание сложных запросов. Суть и характеристика прав пользователей, разработка клиентских приложений.

    учебное пособие [2,2 M], добавлен 16.05.2013

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

    курсовая работа [2,1 M], добавлен 14.02.2011

  • Понятие базы данных, модели данных. Классификация баз данных. Системы управления базами данных. Этапы, подходы к проектированию базы данных. Разработка базы данных, которая позволит автоматизировать ведение документации, необходимой для деятельности ДЮСШ.

    курсовая работа [1,7 M], добавлен 04.06.2015

  • Процесс разработки Web-сайта. Состав и содержание работ по созданию подсистемы. Требования к Web-сайту. Определение сущностей модели базы данных. Разработка логической модели базы данных. Реализация PHP-скриптов и заполнение базы данных Web-сайта.

    дипломная работа [8,2 M], добавлен 29.06.2011

  • Разработка Web-сайта с подключенной к нему базой данных для управления пользователями, их авторизацией и регистрацией. Подключение базы данных к сайту. Использование технологии AJAX. Виды SQL инъекций и способы защиты базы данных от попыток взлома.

    дипломная работа [2,9 M], добавлен 13.02.2016

  • Формы представляемой информации. Основные типы используемой модели данных. Уровни информационных процессов. Поиск информации и поиск данных. Сетевое хранилище данных. Проблемы разработки и сопровождения хранилищ данных. Технологии обработки данных.

    лекция [15,5 K], добавлен 19.08.2013

  • Структура, классификация и этапы проектирования баз данных. Системы управления базами данных, их жизненный цикл. Разработка и реализация базы данных в MS Access. Организация входных и выходных данных. Защита данных от внешних угроз. Сведение о программе.

    курсовая работа [558,6 K], добавлен 21.06.2012

  • Системы управления базами данных: сущность и характеристика. Типы данных и свойства полей СУБД Access. Объекты базы данных: таблицы, схемы данных, формы, запросы, отчеты. Разработка и проектирование базы данных "Продажи книг" в среде Microsoft Access.

    курсовая работа [1,8 M], добавлен 04.02.2013

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