Помощь в написании студенческих работ
Антистрессовый сервис

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

ОтчётПомощь в написанииУзнать стоимостьмоей работы

Далее необходимо присвоить данный класс объекту, при наведении на который будет появляться подсказка. Пример всплывающей подсказки представлен на рисунке 5. Для реализации данного пункта был выбран язык программирования javascript для которого необходимо подключить плагин tiptip: Конечный результат работы представлен на рисунке 4 и рисунке 6. Код программы представлен в приложении А. В результате… Читать ещё >

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

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

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

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

· ознакомление с языками программирования 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:

.

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

$(function().

{.

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

});

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

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

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

Заключение.

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

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

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

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

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

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

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

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

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

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

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

detail.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 = ' '.$time.' ( Отсутствует выход вконце дня ) ';

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 = 'Офис: ... - '.$time.'( Отсутствует вход ).

'; .

return $str;

}.

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

{.

$str = 'Производство: ... - '.$time.'( Отсутствует вход ).

';

return $str;

}.

}.

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

{.

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

{.

$str = $time.' ( '.$interval.' ).

';

$out = 0;

return $str;

}.

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

{.

$str = ' ... ( Пропущен выход ).

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

return $str;

}.

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

{.

$str = '... ( Пропущен выход из офиса).

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

$out = 2;

return $str;

}.

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

{.

$str = ' ... ( Пропущен выход ).

Производство: ... - '.$time.' ( Пропущен вход ).

';

$out = 0;

return $str;

}.

}.

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

{.

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

{.

$str = $time.' ( '.$interval.' ).

';

$out = 0;

return str;

}.

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

{.

$str = ' ... - '.$time.' ( Пропущен вход ) .

';

return $str;

} .

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

{.

$str = ' ... ( Пропущен выход ).

'.$time.' - ';

$out = 1;

return $str;

}.

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

{.

$str = '... ( Пропущен выход ).

... - '.$time.'( Пропущен вход ).

';

}.

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 sqlsrvconnection( WTASERVER, array( "Database" =>WTADATABASE, "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[WTANAME]. ' '.$user_row[WTANAME1].' '.$user_row[WTANAME2]; //формирование строки с ФИО .

$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.=''; //открываем тег строки .

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

{.

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

{.

$calendar_body.='';

$skip—;

}.

else .

{.

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

$calendar_body.=''.$begin_date->format('d.m.Y').'.

Выходной.

';

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

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

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

$info='';

$mistake ='';

$where_event_place='';

$out = 0;

foreach( $result[WTAEX] as $ex_info ).

$class_warning = '';

$event_class = ''; .

$event_string = '';

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

{.

$event_class = 'entry'; .

$event_string = 'вход';

}.

else if( $ex_info[WTAMODE] == WTAEVENT_EXIT ) .

{.

$event_class = 'exit'; .

$event_string = 'выход';

}.

if( $ex_info[WTADOOR] == WTADOOR_OFFICE ) //определяем где произошло событие.

{.

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

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

}.

else if( $ex_info[WTADOOR] == WTADOOR_FACTORY ) {.

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

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

}.

if( $ex_info[WTAWARNINGS] ) .

{.

$class_warning = ' class="warning" ';

}.

// $info.=$ex_info[WTATIME]->format('H:i:s').' - '.$event_string.' '.$ex_info[WTAINTERVAL]. '.

'; .

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

foreach( $ex_info[WTAWARNINGS] as $warning ) .

{.

$mistake .=$warning.'.

';

}.

}.

$dinner = $result[WTADINNER]; //учет обеда.

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.= " Учет обеда$dinner " ;

}.

$road = $result[WTAROAD]; //учет дороги.

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.= " Время в дороге$road " ;

}.

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

{.

if($mistake=='').

{.

$calendar_body.='.

.

.

.

.

.

'.$begin_date->format('d.m.Y').'
Отработано: '.$result[WTAWORKT]->format('%H:%I').'
Обед: '.$dinner.'
Дорога: '.$road.'
.

'; .

}.

else .

{.

$calendar_body.='.

.

.

.

.

.

'.$begin_date->format('d.m.Y').'
Отработано: '.$result[WTAWORKT]->format('%H:%I').'
Обед: '.$dinner.'
Дорога: '.$road.'
.

'; .

}.

}.

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

{.

if($mistake=='').

{.

$calendar_body.='.

.

.

.

.

.

'.$begin_date->format('d.m.Y').'
Отработано: '.$result[WTAWORKT]->format('%H:%I').'
Обед: '.$dinner.'
Дорога: '.$road.'
.

'; .

}.

else .

{.

$calendar_body.='.

.

.

.

.

.

'.$begin_date->format('d.m.Y').'
Отработано: '.$result[WTAWORKT]->format('%H:%I').'
Обед: '.$dinner.'
Дорога: '.$road.'
.

'; .

}.

} .

}.

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

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

}.

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

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

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

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

$calendar_head = '

'.$username.'

';

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

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

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

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

$calendar_head.='

<< '.$months[(int)$begin_date->format('m')-1]. ' >>

';

$calendar_head .= '

Необходимо отработать в этом месяце: '.$need_work[$begin_date->format(" Y" )][$begin_date->format(" n" )]. '.

'; .

$calendar_head .= '.

Понедельник.

Вторник.

Среда.

Четверг.

Пятница.

Суббота.

Воскресенье.

';

echo "" ;

echo "" ;

echo "" ;

echo "" ;

echo "

" ;

echo $calendar_head;

echo $calendar_body;

echo "

" ;

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

{.

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

}.

echo '

Вернуться на главную.

';

echo "" ;

} catch( sqlsrvexception $e ).

{.

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

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

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

{.

foreach( $errors as $error).

{.

echo "


SQLSTATE: ".$error[ 'SQLSTATE']. ".

" ;

echo "code: ".$error[ 'code']. ".

" ;

echo "message: ".$error[ 'message']. "


" ;

}.

}.

}.

?>.

.

.

.

$(function ().

{.

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

});

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:#0;

font-size:20px;

}.

.none.

{.

border:0px;

}.

.tdcells.

{.

style=" border: solid 1px BLACK;

border: 0px;

width: 100%;

height: 100%; «.

}.

Показать весь текст
Заполнить форму текущей работой