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

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

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 14.07.2014
Размер файла 484,9 K

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

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

}

return $out;

}

public function getInvalids($studId)

{

$invalids = Invalids::select(array('day', 'value'))

->where('month', '=', $this->periodEncode($this->period)[1])

->where('s_id', '=', $studId)->get()->toArray();

$out['total'] = $this->getInvalidsSum($studId);

if (empty($invalids)) {

return $out;

}

foreach ($invalids as $pass) {

$out[$pass['day']] = $pass['value'];

}

return $out;

}

public function getValidsSum($studId)

{

$valids = Valids::select(DB::raw('SUM(value) AS total'))

->where('month', '=', $this->periodEncode($this->period)[1])

->where('s_id', '=', $studId)->get()->toArray();

if (empty($valids)) {

return array();

}

return (int)$valids[0]['total'];

}

public function getInvalidsSum($studId)

{

$invalids = Invalids::select(DB::raw('SUM(value) AS total'))

->where('month', '=', $this->periodEncode($this->period)[1])

->where('s_id', '=', $studId)->get()->toArray();

if (empty($invalids)) {

return array();

}

return (int)$invalids[0]['total'];

}

public function getPeriodSum($sid)

{

$vsumm = Valids::select(DB::raw('SUM(value) AS total'))

->where('month', '>=', $this->periodEncode($this->period)[0])

->where('month', '<=', $this->periodEncode($this->period)[1])

->where('s_id', '=', $sid)->get()->toArray();

$isumm = Invalids::select(DB::raw('SUM(value) AS total'))

->where('month', '>=', $this->periodEncode($this->period)[0])

->where('month', '<=', $this->periodEncode($this->period)[1])

->where('s_id', '=', $sid)->get()->toArray();

return $vsumm[0]['total'] + $isumm[0]['total'];

}

public function rawGroupsList()

{

return Response::json(Group::prepareListOnly()->get()->toArray());

}

public function addPass()

{

$data = Input::all();

$this->setPeriod($data['period']);

$this->replacePass($data['type'], $data['studentId'], $this->periodEncode($this->period)[1],

$data['day'], $data['value']);

return Response::json(array(

'byGroup' => Group::getAll($this->periodEncode($this->period))

->where('students.group', '=', $data['group'])

->get()->toArray()[0],

'byStudent' => array(

'id' => $data['studentId'],

'valids' => $this->getValidsSum($data['studentId']),

'invalids' => $this->getInvalidsSum($data['studentId']),

'period' => $this->getPeriodSum($data['studentId'])

)

));

}

public function studentFastAdd($no, $period = false)

{

$data = Input::all();

$studentName = explode(' ', trim($data['student-fast-add-name']));

$studnet = new Students;

$studnet->first_name = $studentName[1];

$studnet->last_name = $studentName[0];

$studnet->group = $no;

$studnet->save();

return Redirect::to('/group/'.$no.'/'.$period);

}

public function addStud()

{

$data = Input::all();

$studentName = explode(' ', trim($data['student']));

$student = new Students;

$student->first_name = $studentName[1];

$student->last_name = $studentName[0];

$student->group = $data['group'];

$student->save();

return $this->studentList($data['group']);

}

public function remStud()

{

$data = Input::all();

Students::destroy($data['ids']);

return $this->studentList($data['group']);

}

public function editStud($sid)

{

$data = Input::all();

$studentName = explode(' ', trim($data['newName']));

$student = Students::where('id', '=', $sid);

$student->first_name = $studentName[1];

$student->last_name = $studentName[0];

$student->save();

return Response::json(array('success' => true));

}

private function replacePass($type, $sid, $month, $day, $val)

{

$pass = Valids::where('s_id', $sid)->where('month', $month)->where('day', $day);

if ($type == 'i') {

$pass = Invalids::where('s_id', $sid)->where('month', $month)->where('day', $day);

}

if (!(bool)$val) {

$pass->delete();

} elseif (!$pass->count()) {

$pass->insert(array('s_id' => $sid, 'month' => $month, 'day' => $day, 'value' => $val));

} else {

$pass->update(array('value' => $val));

}

}

public function studentList($no = '')

{

$groups = Group::prepareListOnly()->get()->toArray();

if (empty($no)) {

return Response::json(array(

'students' => array(),

'groups' => $groups

));

}

return Response::json(array(

'students' => Students::where('group', '=', $no)->orderBy('last_name')->get()->toArray(),

'groups' => $groups

));

}

}

Приложение 4

Шаблон представления

<!DOCTYPE html>

<html lang="ru">

<head>

<meta charset="utf-8">

<meta name="viewport" content="width=device-width, initial-scale=1">

<title><% $title %></title>

<% HTML::style('packages/bootstrap/css/bootstrap.min.css') %>

<% HTML::style('css/main.css') %>

</head>

<body data-period="<% $monthStart . '-' . $monthEnd %>">

<nav class="navbar navbar-default navbar-fixed-top" role="navigation">

<div class="container-fluid">

<div class="navbar-header">

<% HTML::link('/', 'Пропуски', array('class'=>'navbar-brand')) %>

</div>

<div class="navbar-left">

<button type="button" class="btn btn-default navbar-btn" data-toggle="modal" data-target="#groupEditor">

<span class="glyphicon glyphicon-pencil"></span> Редактор групп

</button>

</div>

@section('fast-add')

@show

<ul class="navbar-right nav navbar-nav">

<li class="dropdown">

<a href="#" class="dropdown-toggle" data-toggle="dropdown"><% $startMonthName %>

<b class="caret"></b>

</a>

<ul class="dropdown-menu">

@foreach($monthNames as $key=>$monthName)

@if ($key)

<li<% ($monthStart == $key) ? ' class="active"' : null %>>

<% HTML::link($baseLink . sprintf('%02d-%02d', $key, $monthEnd), $monthName) %>

</li>

@endif

@endforeach

</ul>

</li>

<li class="dropdown">

<a href="#" class="dropdown-toggle" data-toggle="dropdown"><% $endMonthName %>

<b class="caret"></b>

</a>

<ul class="dropdown-menu">

@foreach($monthNames as $key=>$monthName)

@if ($key)

<li<% ($monthEnd == $key) ? ' class="active"' : null %>>

<% HTML::link($baseLink . sprintf('%02d-%02d', $monthStart, $key), $monthName) %>

</li>

@endif

@endforeach

</ul>

</li>

</ul>

<p class="navbar-text navbar-right">Период:</p>

</div>

</nav>

@section('jumbotron')

@show

<div class="container-fluid">

@section('panels')

@show

</div>

<div id="ajaxErrorModal" class="modal fade" aria-hidden="true" role="dialog">

<div class="modal-dialog">

<div class="modal-content">

<div class="modal-header">

<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>

<h4>Ошибка сервера</h4>

</div>

<div class="modal-body">

</div>

</div>

</div>

</div>

<div id="groupEditor" class="modal fade" aria-hidden="true" role="dialog">

<div class="modal-dialog">

<div class="modal-content">

<div class="modal-header">

<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>

<h4>Редактор групп</h4>

</div>

<div class="modal-body">

<div class="input-group">

<input type="text" class="form-control" name="group-name"

id="group-name-fld" placeholder="Группа">

<div class="input-group-btn">

<button type="button" class="btn btn-default dropdown-toggle"

@if (!$groupList)

disabled="disabled"

@endif

data-toggle="dropdown">

Группы <span class="caret"></span>

</button>

<ul class="dropdown-menu pull-right group-selector">

@foreach($groupList as $groupItem)

<li><a href="#"><% $groupItem['group'] %></a></li>

@endforeach

</ul>

</div>

</div><!-- /.input-group -->

<hr>

<div class="input-group">

<input type="text" class="form-control" name="student-add" id="student-add-fld"

placeholder="Фамилия Имя" disabled="disabled">

<div class="input-group-btn">

<button type="button" class="btn btn-default" id="student-add-btn"

disabled="disabled">Добавить</button>

</div>

</div>

<hr>

<div class="btn-toolbar" role="toolbar">

<div class="btn-group">

<button type="button" class="btn btn-default" id="delete-students-btn">

<span class="glyphicon glyphicon-trash"></span>

</button>

</div>

<div class="btn-group delete-confirm-dialog" style="display: none;">

<button type="button" class="btn btn-danger"

id="delete-students-success-btn">Подтвердить удаление</button>

<button type="button" class="btn btn-default"

id="delete-students-denied-btn">Отмена</button>

</div>

</div>

<hr>

<div id="student-list"></div>

</div>

</div>

</div>

</div>

<% HTML::script('packages/jquery/jquery-2.1.0.min.js') %>

<% HTML::script('packages/bootstrap/js/bootstrap.min.js') %>

<% HTML::script('js/main.js') %>

</body>

</html>

Приложение 5

Представление группы

@extends('layouts.master')

@section('panels')

<div class="row">

<div class="col-sm-1 hidden-print">

<div class="list-group">

@if ($groupList)

@foreach($groupList as $groupItem)

<% HTML::link('group/' . $groupItem['group'],

$groupItem['group'],

array('class'=>'list-group-item' . (($groupItem['group'] == $current) ? ' active' : null))) %>

@endforeach

@endif

</div>

</div>

<div class="col-xs-12 col-sm-11 group-list" data-group-no="<% $current %>">

@if($studentsList)

@foreach($studentsList as $id => $student)

<div class="panel panel-default" data-student-id="<% $id %>">

<div class="panel-heading">

<h4><% $student['name'] %>

<span class="label label-default student-month-total"><% mb_strtolower($endMonthName) %>

<b><% $student['valids']['total'] + $student['invalids']['total'] %></b></span>

<span class="label label-default student-per-total">период <b><% $student['total'] %></b></span>

</h4>

</div>

<table class="table table-condensed table-bordered passes" data-month="<% $monthEnd %>">

<thead>

<tr>

<th></th>

@foreach($monthDays as $day => $dName)

<th class="text-center">

<div><% $day %></div>

<div><% $dName %></div>

</th>

@endforeach

<th class="text-center"></th>

</tr>

</thead>

<tbody>

<tr>

<td class="text-center"><span class="glyphicon glyphicon-plus"></span></td>

@foreach($monthDays as $day => $dName)

<td class="text-center">

<% Form::input('text', $day,

isset($student['valids'][$day]) ? $student['valids'][$day] : null,

array('class'=>'no-style', 'data-pass-day'=>$day, 'data-pass-type'=>'v',

'maxlength'=>'2')) %>

</td>

@endforeach

<td class="text-center v-total"><% $student['valids']['total'] %></td>

</tr>

<tr>

<td class="text-center"><span class="glyphicon glyphicon-minus"></span></td>

@foreach($monthDays as $day => $dName)

<td class="text-center">

<% Form::input('text', $day,

isset($student['invalids'][$day]) ? $student['invalids'][$day] : null,

array('class'=>'no-style', 'data-pass-day'=>$day, 'data-pass-type'=>'i',

'maxlength'=>'2')) %>

</td>

@endforeach

<td class="text-center i-total"><% $student['invalids']['total'] %></td>

</tr>

</tbody>

</table>

</div>

@endforeach

@endif

<!--<% var_dump($monthDays) %>-->

</div>

</div>

@stop

@section('fast-add')

<p class="navbar-text">Быстрая вставка</p>

<form class="navbar-form navbar-left" method="post">

<div class="form-group">

<input type="text" name="student-fast-add-name" class="form-control" placeholder="Фамилия Имя">

</div>

<button type="submit" class="btn btn-default" id="fast-add-btn">Добавить</button>

</form>

@stop

@section('jumbotron')

<div class="jumbotron">

<div class="container">

<h1><% $current %> группа

<small> Период <% mb_strtolower($startMonthName) %> &ndash; <% mb_strtolower($endMonthName) %></small>

</h1>

<table class="table table-condensed" id="total-table">

<thead>

<tr>

<th></th>

<th><% $endMonthName %></th>

<th>Период</th>

<th><% $endMonthName %> на 1</th>

<th>Период на 1</th>

</tr>

</thead>

<tbody>

<tr>

<td><span class="glyphicon glyphicon-plus"></span></td>

<td id="v-month-cell"><% $basicData[0]['v_month'] ? $basicData[0]['v_month'] : 0 %></td>

<td id="v-per-cell"><% $basicData[0]['v_per'] ? $basicData[0]['v_per'] : 0 %></td>

<td id="v-month-mid-cell"><% $basicData[0]['v_month']

? round($basicData[0]['v_month'] / $basicData[0]['members'], 2) : 0 %></td>

<td id="v-per-mid-cell"><% $basicData[0]['v_per']

? round($basicData[0]['v_per'] / $basicData[0]['members'], 2) : 0 %></td>

</tr>

<tr>

<td><span class="glyphicon glyphicon-minus"></span></td>

<td id="i-month-cell"><% $basicData[0]['i_month'] ? $basicData[0]['i_month'] : 0 %></td>

<td id="i-per-cell"><% $basicData[0]['i_per'] ? $basicData[0]['i_per'] : 0 %></td>

<td id="i-month-mid-cell"><% $basicData[0]['i_month']

? round($basicData[0]['i_month'] / $basicData[0]['members'], 2) : 0 %></td>

<td id="i-per-mid-cell"><% $basicData[0]['i_per']

? round($basicData[0]['i_per'] / $basicData[0]['members'], 2) : 0 %></td>

</tr>

</tbody>

<tfoot>

<tr>

<td><strong>&#931;</strong></td>

<td id="s-month-cell"><% $basicData[0]['i_month'] + $basicData[0]['v_month'] %></td>

<td id="s-per-cell"><% $basicData[0]['i_per'] + $basicData[0]['v_per'] %></td>

<td id="s-month-mid-cell"><% ($basicData[0]['i_month'] + $basicData[0]['v_month'])

? round(($basicData[0]['i_month'] + $basicData[0]['v_month']) / $basicData[0]['members'], 2) : 0 %></td>

<td id="s-per-mid-cell"><% ($basicData[0]['i_per'] + $basicData[0]['v_per'])

? round(($basicData[0]['i_per'] + $basicData[0]['v_per']) / $basicData[0]['members'], 2) : 0 %></td>

</tr>

</tfoot>

</table>

</div>

</div>

@stop

Приложение 6

Представление -- список групп

@extends('layouts.master')

@section('panels')

<div class='row'>

@if($absences)

@foreach($absences as $group)

<div class="col-xs-4 col-md-3 col-lg-2">

<div class="thumbnail">

<h2 class="text-right">

<% HTML::link('group/' . $group['group'], $group['group']) %>

</h2>

<table class="table table-condensed">

<thead>

<tr>

<th></th>

<th><% $currentMonth %></th>

<th>Период</th>

</tr>

</thead>

<tbody>

<tr>

<td><span class="glyphicon glyphicon-plus"></span></td>

<td><% $group['v_month'] ? $group['v_month'] : 0 %></td>

<td><% $group['v_per'] ? $group['v_per'] : 0%></td>

</tr>

<tr>

<td><span class="glyphicon glyphicon-minus"></span></td>

<td><% $group['i_month'] ? $group['i_month'] : 0%></td>

<td><% $group['i_per'] ? $group['i_per'] : 0%></td>

</tr>

</tbody>

<tfoot>

<tr>

<td><strong>&#931;</strong></td>

<td><% $group['v_month'] + $group['i_month'] %></td>

<td><% $group['v_per'] + $group['i_per'] %></td>

</tr>

</tfoot>

</table>

<p class="text-muted text-right">

<% $group['members'] %> <% Lang::choice('студент|студентов|студента', $group['members']) %>

</p>

<table class="table table-condensed">

<thead>

<tr>

<th></th>

<th><% $currentMonth %></th>

<th>Период</th>

</tr>

</thead>

<tbody>

<tr>

<td><span class="glyphicon glyphicon-plus"></span></td>

<td><% round($group['v_month'] ? $group['v_month'] / $group['members'] : 0, 2) %></td>

<td><% round($group['v_per'] ? $group['v_per'] / $group['members'] : 0, 2) %></td>

</tr>

<tr>

<td><span class="glyphicon glyphicon-minus"></span></td>

<td><% round($group['i_month'] ? $group['i_month'] / $group['members'] : 0, 2) %></td>

<td><% round($group['i_per'] ? $group['i_per'] / $group['members'] : 0, 2) %></td>

</tr>

</tbody>

<tfoot>

<tr>

<td><strong>&#931;</strong></td>

<td>

<% round(($group['v_month']+$group['i_month'])

? ($group['v_month']+$group['i_month']) / $group['members'] : 0, 2) %>

</td>

<td>

<% round(($group['v_per']+$group['i_per'])

? ($group['v_per']+$group['i_per']) / $group['members'] : 0, 2) %>

</td>

</tr>

</tfoot>

</table>

</div>

</div>

@endforeach

@endif

</div>

@stop

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


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

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

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

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

    курсовая работа [326,0 K], добавлен 28.06.2011

  • Разработка базы данных и клиента для управления базой данных с целью автоматизации рабочего места менеджера по клининговым услугам для ООО "Мастер блеск". Обоснование выбора программного обеспечения для создания базы данных. Заполнение данных в таблицы.

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

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

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

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

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

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

    курсовая работа [26,7 K], добавлен 19.06.2010

  • Разработка базы данных для учета размещения и услуг гостиницы-отеля "Баташев". Анализ предметной области, проектирование базы данных. Реализация SQL-запросов для создания объектов и получения отчетов. Реализация приложения для работы с базой данных.

    курсовая работа [336,0 K], добавлен 05.01.2014

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

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

  • Классификация баз данных. Выбор системы управления базами данных для создания базы данных в сети. Быстрый доступ и получение конкретной информации по функциям. Распределение функций при работе с базой данных. Основные особенности иерархической модели.

    отчет по практике [1,2 M], добавлен 08.10.2014

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

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

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