Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
avs2 - пз.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
306.9 Кб
Скачать
    1. Реализация логики приложения

Логика приложения реализуется в серверных скриптах, подходы к написанию которых были рассмотрены в пункте 5.1 ( Генерация HTML-страниц). С учетом того, что данные хранятся в файлах, очевидно, что для реализации логики приложения будет достаточно базовых функций работы с файлами и строками. Такие библиотеки имеются практически в любом языке программирования, соответственно, и во всех языках, перечисленных в пункте 5.1. Ввиду простоты и высокой обеспеченности учебным материалом, для реализации логики приложения а также генерации HTML-страниц был выбран язык PHP.

Логика приложения неразрывно связана с генерацией HTML-страниц, так как выполнение каждой логической задачи завершается выводом ее результатов. Далее приведены обобщенные алгоритмы для решения подзадач:

Регистрация пользователя

Получены логин, пароль.

  1. Если можно зарегистрировать пользователя с такими данными

    1. Зарегистрировать пользователя

    2. Сообщить об успешной регистрации

  2. Иначе

    1. Сформировать и вывести страницу с формой регистрации и текстом соответствующей ошибки

Вход

Получены логин, пароль.

  1. Если учетная запись с такими логином и паролем существует

    1. Сохранить логин и права как текущие

    2. Если это пользователь

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

    3. Иначе

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

  2. Иначе

    1. Сформировать и вывести страницу с формой входа и текстом соответствующей ошибки

Добавление записи

Получена запись. Известен текущий логин.

  1. Сохранить в файл новую запись

  2. Если запись сохранена

    1. обновить страницу

  3. Иначе

    1. Сформировать и вывести страницу с текстом соответствующей ошибки

Редактирование записи

Получен индекс записи. Известен текущий логин.

  1. Проверить записи на наличие обновлений

  2. Цикл по всем строкам/записям

    1. Если есть изменения

      1. Перезаписать строку

  3. Обновить страницу

Удаление записи

Получен индекс записи. Известен текущий логин.

  1. Удалить строку по индексу из файла.

  2. Обновить страницу.

  1. Описание реализации применяемых методов

В данном разделе описана реализация только тех задач, которые требуют алгоритмического решения. Генерация HTML-страниц и обмен данными между клиентом и сервером не требуют алгоритмического решения в рамках данного приложения.

    1. Хранение данных на сервере и доступ к ним, используемые переменные

Информацию с помощью файлов структурируем следующим образом:

  • Файл users.txt будет хранить логины и пароли пользователей через пробел в каждой строке.

  • Файл comments.txt будут хранить логин пользователя и содержание его записи через «~».

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

В реализации подзадач используются некоторые распространенные функции для работы с файлами и строками:

  • file fopen(string path, string mode) - открывает файл по адресу path в режиме mode, где

    • r - открытие на чтение,

    • w - открытие на запись, содержимое файла удаляется, если файла не существует создается новый,

    • + - открытие на чтение и запись,

    • a - открытие на дозапись, информация добавляется в конец файла, возвращает указатель на файл,

  • bool fclose(file fp) - закрывает файл, возвращает true в случае успешного закрытия и false в случае возникновения ошибки,

  • string fgets(file fp) - читает строку из файлового указателя, указатель перемещается в начало следующей строки,

  • int fwrite(file fp,string str) - записывает в файл строку str, возвращает число записанных байт,

  • string[] file(string path) - читает файл по адресу path и помещает его содержимое в массив строк,

  • int filesize(string filename) - возвращает размер файла в байтах,

  • int strlen(string str) - возвращает длину строки str,

  • string substr(string str, int start, int length) - возвращает подстроку str начиная с символа под номером start длиной length,

  • string[] explode(string delimiter, string str, int limit) - разбивает строку str по подстроке delimiter максимум на limit строк, причем последний элемент массива содержит остаток строки str,

  • string implode(string glue, string[] pieces) - склеивает элементы массива pieces в одну строку с помощью строки glue,

  • string trim(string str) - удаляет пробелы, знаки табуляции, перевода строки, возврата каретки и некоторые другие служебные символы из начала и конца строки.

  • bool feof(file fp) – проверяет, достигнут ли конец файла.

  • PHP_EOL(string) – корректный символ конца строки.

  • file_put_contents(file fp, join('', string str)) – пишет строку str в файл.

Предполагается, что они реализованы в стандартных библиотеках языка. В случае отсутствия некоторых из ник не составляет труда реализовать из самомтоятельно.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]