Алгоритми і структури даних
Опис структури з ім'ям Timetable, що містить поля Nazv, Numr, Date, Time. Створення та апробація програми для впорядкування записів за номерами поїздів та виведення на екран інформації про поїзди, дата відправлення яких уведена з допомогою клавіатури.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | лабораторная работа |
Язык | украинский |
Дата добавления | 11.10.2016 |
Размер файла | 654,1 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Лабораторна робота
Тема: «Алгоритми і структури даних»
Кіровоград 2016
Завдання
? Описати структуру з ім'ям TIMETABLE, що містить наступні поля: NAZV - назва пункту призначення, NUMR - номер поїзда, DATE- дата відправлення, TIME- час відправлення. Написати прогрум, що окремими функціями виконує наступні дії:
- виведення з клавіатури даних у масив TRAIN, що складається з N структур типу TIMETABLE;
- впорядкування записів за номерами поїздів;
- виведення на екран інформації про поїзди, дата відправлення яких уведена з клавіатури; якщо таких поїздів немаеє, то вивести відповідне повідомлення.
інформація програма екран поїзд
Код програми
Index (головна сторінка)
<form action=”/search” method="post">
Дата: <input type="date" name="date">
<input type="submit" value="Искать по дате!">
</form>
<?php if($trains != null): ?>
<h1> Все поезда: </h1>
<?php foreach($trains as $key => $value): ?>
<p>
Название: <?= $value->getNazv(); ?> <br>
Номер: <?= $value->getNumr(); ?> <br>
Дата: <?= $value->getDate(); ?>
Время: <?= $value->getTime(); ?>
<br><br><br>
</p>
<?php endforeach; ?>
<?php else: ?>
<p> Поездов нет! </p>
<?php endif;?>
Application (клас)
protected function indexControllerMethodGet()
{
$train = new Train();
$allTrains = $train->getAllTrains();
return $this->render('index.php', ['title' => 'главная страница', 'trains' => $allTrains]);
}
protected function addTrainControllerMethodGet()
{
return $this->render('addTrain.php', ['title' => 'добавить поезд']);
}
protected function addTrainControllerMethodPost()
{
$timeTable = new TimeTable($_POST['nazv'], $_POST['numr'], $_POST['date'], $_POST['time']);
$train = new Train();
$train->addTrain($timeTable);
return header('Location: /');
}
protected function searchByDateControllerMethodPost()
{
$date = $_POST['date'];
if($date != null) {
$train = new Train();
$allTrains = $train->getAllTrains();
$searchArray = [];
$count = (count($allTrains)) - 1;
for ($i = 0; $i <= $count; $i++) {
if ($allTrains[$i]->getDate() == $date)
$searchArray[] = $allTrains[$i];
}
return $this->render('search.php', ['title' => 'Поиск за '. $date, 'date' => $date, 'trains' => $searchArray]);
} else return header('Location: /');
}
private function route()
{
$method = $_SERVER['REQUEST_METHOD'];
$uri = $_SERVER['REQUEST_URI'];
if(($uri == '/') and ($method == 'GET'))
return $this->indexControllerMethodGet();
if(($uri == '/add/train') and ($method == 'GET'))
return $this->addTrainControllerMethodGet();
if(($uri == '/add/train') and ($method == 'POST'))
return $this->addTrainControllerMethodPost();
if(($uri == '/search/by/date') and ($method == 'POST'))
return $this->searchByDateControllerMethodPost();
}
private function render($child, array $variables)
{
extract($variables);
include_once BASE. '/view/layout.php';
}
}
TIMETABLE (клас)
<?php
class TimeTable
{
public function __construct($nazv, $numr, $date, $time)
{
$this->nazv = $nazv;
$this->numr = $numr;
$this->date = $date;
$this->time = $time;
}
public function getNazv()
{
return $this->nazv;
}
public function getNumr()
{
return $this->numr;
}
public function getDate()
{
return $this->date;
}
public function getTime()
{
return $this->time;
}
public function getAllData()
{
return $this->nazv.'?'. $this->numr. '?'. $this->date. '?'. $this->time. PHP_EOL;
}
}
Train (клас)
<?php
class Train
{
protected $trains = [];
public function addTrain(TimeTable $timeTable)
{
$file = fopen(BASE. '/trains.txt', 'a+');
$str = $timeTable->getAllData();
fputs($file, $str);
}
public function getAllTrains()
{
$fileArray = file(BASE. '/trains.txt');
$count = (count($fileArray)) - 1;
for($i = 0; $i <= $count; $i++) {
$exp = explode('?', $fileArray[$i]);
$nazv = $exp[0];
$numr = $exp[1];
$date = $exp[2];
$time = $exp[3];
$this->trains[] = new TimeTable($nazv, $numr, $date, $time);
}
return $this->trains;
}
}
Train (вид)
<form action="/add/train" method="post">
Название: <input type="text" name="nazv">
<br>
Номер: <input type="number" name="numr">
<br>
Дата: <input type="date" name="date">
<br>
Время: <input type="time" name="time">
<br>
<input type="submit" value="Добавить">
</form>
<br>
<a href="/"> Назад </a>
Layout (шаблон)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title> <?= $title; ?> </title>
</head>
<body>
<?php include_once BASE. '/'. 'view/'. $child; ?>
</body>
</html>
Search (поиск)
<a href="/add/train"> Добавить поезд </a><br>
<a href="/"> На главную </a> <br>
<form action="/search/by/date" method="post">
Дата: <input type="date" name="date">
<input type="submit" value="Искать по дате!">
</form>
<?php if($trains != null): ?>
<h1> Все поезда, за <?= $date; ?> </h1>
<?php foreach($trains as $key => $value): ?>
<p>
Название: <?= $value->getNazv(); ?> <br>
Номер: <?= $value->getNumr(); ?> <br>
Дата: <?= $value->getDate(); ?>
Время: <?= $value->getTime(); ?>
<br><br><br>
</p>
<?php endforeach; ?>
<?php else: ?>
<p> Данных по поездам за <?= $date; ?>, не обнаружено! </p>
<?php endif;?>
Index (вхідна точка)
<?php
spl_autoload_register(function($class){
$path = 'vendor/'. $class. '.php';
if(is_file($path))
include_once 'vendor/'. $class. '.php';
else
throw new ClassNotFoundException("Class not found!");
});
include_once 'vendor/Exceptions/ClassNotFoundException.php';
try {
define('BASE', __DIR__);
new Application();
} catch (ClassNotFoundException $notFound)
{
echo $notFound->getMessage();
}
Блок-схема програми
Ось як виглядає програма.
Для того, щоб здійснити пошук нам потрібно в календарі вибрати число.
Ось що буде після пошуку (ми обрали 24.04 и в нас появився список за цей день)
А якщо в цей день немає рейсів, то у нас буду таке повідомлення:
Далі будемо добавяти рейси.
Результат після заповнення:
Висновок: За допомогою цієї лабораторної роботи я згадала класи та пізнала багато нового. Адже я обрала для написання програми майже нову для мене мову програмування.
Размещено на Allbest.ru
Подобные документы
Створення програми, яка друкує в вікно інформацію про натискання клавіш на клавіатурі в таблицю. Функція виведення назви отриманого програмою повідомлення від клавіатури та певних додаткових даних. Обробка інформації, неопрацьованої віконною процедурою.
лабораторная работа [17,9 K], добавлен 14.05.2011Створення програми, що видає результати голосування та підсумки виборів. Алгоритм розробки програми. Опис структури даних та вимоги до них, стандартних процедур та функцій, файлів та їх призначення. Приклад тестування та результати роботи програми.
курсовая работа [1,0 M], добавлен 28.06.2012Розробка програми-інтерпретатора функцій командного процесора DOS: TIME, DATE, DIR, CD, MD, RD на мові Асемблера. Функціональні модулі, процедури та макроси, які використовуються в програмі. Опис алгоритму розв’язання задачі, його програмна реалізація.
курсовая работа [42,6 K], добавлен 26.04.2016Розробка програми стеження за натиснутими клавішами клавіатури. Програмне забезпечення, необхідне для функціонування програми, мови програмування. Опис логічної структури, алгоритм програми та її зв'язок з іншими програмами. Характер та організація даних.
курсовая работа [375,4 K], добавлен 01.04.2016Теоретичні відомості про пакет ІЗВП Borland Delphi та СУБД MS Access, оцінка їх функціональних особливостей. Опис структури бази даних. Проектування інтерфейсу програми, опис її логічної структури та функцій. Контроль коректності вхідних, вихідних даних.
курсовая работа [4,5 M], добавлен 03.01.2014Опис процесу створення технічного завдання на розробку бази даних для сільської бібліотеки. Виявлення масиву даних та їх структури. Внесення інформації в базу. Визначення типів і зв’язків між таблицями. Створення інтерфейсу системи керування базою даних.
контрольная работа [174,9 K], добавлен 07.01.2015Структури даних як способи їх організації в комп'ютерах. Підтримка базових структури даних в програмуванні. Дерево як одна з найпоширеніших структур даних. Бінарні дерева на базі масиву. Створення списку - набору елементів, розташованих у певному порядку.
контрольная работа [614,7 K], добавлен 18.02.2011Процеси пошуку інформацій та розробка структури даних для ефективного зберігання та обробки інформації. Як приклад розглянуто бінарне дерево. Бінарні структури широко використовуються у житті,широко використовуються в багатьох комп'ютерних завданнях.
курсовая работа [67,7 K], добавлен 24.06.2008Створення баз даних для автоматизування роботи торгового представника в середовищі програмування Delрhі. Опис вхідної та результуючої інформації, формалізований опис задачі. Розробка технічного та робочого проекту, опис та обґрунтування вибору структури.
курсовая работа [135,8 K], добавлен 11.10.2010Розробка програми GameBox, яка включає в себе дві гри, судоку та пятнашки. Опис структури даних та вимоги до них, процедур і функцій користувача, стандартних процедур і функцій, які використовувались в програмі, та файлів. Результати роботи програми.
курсовая работа [5,3 M], добавлен 12.11.2011