Разработка базы данных учета пропусков учащихся и программы-клиента к ней
Особенности физического и инфологического проектирования баз данных. Этапы и специфика создания электронного каталога для учета пропусков учащихся. Анализ области систематизации информации. Разработка программы-клиент для взаимодействия с базой данных.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 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">×</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">×</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) %> – <% 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>Σ</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>Σ</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>Σ</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