ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«БЕЛГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ НАЦИОНАЛЬНЫЙ
ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ»
( Н И У
« Б е л Г У » )
ИНСТИТУТ ИНЖЕНЕРНЫХ ТЕХНОЛОГИЙ И ЕСТЕСТВЕННЫХ НАУК
КАФЕДРА МАТЕМАТИЧЕСКОГО И ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
ИНФОРМАЦИОННЫХ СИСТЕМ
АВТОМАТИЗИРОВАННАЯ СИСТЕМА ИНВЕНТАРИЗАЦИИ
ОБОРУДОВАНИЯ ООО «БЕЛАЯ ПТИЦА»
Выпускная квалификационная работа
обучающегося по направлению подготовки 02.03.03 Математическое
обеспечение и администрирование информационных систем
очной формы обучения, группы 07001402
Заволоки Вадима Вячеславовича
Научный руководитель
доцент Румбешт В.В.
БЕЛГОРОД 2018
ОГЛАВЛЕНИЕ
ВВЕДЕНИЕ
3
Глава 1. ПОСТАНОВКА ЗАДАЧИ НА РАЗРАБОТКУ СИСТЕМЫ
6
1.1
Особенности организации ООО «Белая птица»
6
1.2
Обзор и анализ существующих систем
9
1.3
Требования к автоматизированной системе
Глава
2.
ПРОЕКТИРОВАНИЕ
И
ПРОГРАММНАЯ
АВТОМАТИЗИРОВАННОЙ СИСТЕМЫ
19
РЕАЛИЗАЦИЯ
23
2.1
Выбор средств разработки
23
2.2
Проектирование информационного обеспечения
26
2.3
Программная реализация автоматизированной системы
37
ГЛАВА 3. ИСПЫТАНИЯ
40
3.1 Программа испытаний
40
3.2 Результаты испытания автоматизированной системы
43
ЗАКЛЮЧЕНИЕ
54
СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ
55
ПРИЛОЖЕНИЕ
59
ВВЕДЕНИЕ
В компаниях, с большими офисами и большим количеством рабочих
мест, лицу ответственному за оборудование и мебель, проблематично без
использования автоматизированной системы производить инвентаризацию,
отчётность и учёт техники. Зачастую необходима информация о том, какое
оборудование и мебель закреплена за этим лицом и где она находится:
1)
Конкретный отдел;
2)
Этаж;
3)
Кабинет.
Не происходило ли несанкционированной замены комплектующих
компьютера и списание этим лицом оборудования, которое является
пригодным для использования. Хранить такую информацию в бумажном
виде неэффективно, сложно оперативно иметь доступ к необходимой записи.
Для этих задач существует отчётность за определённый период и, в случае
поломки, диагностика ремонтопригодности и сам ремонт. Использование
компьютерных
средств
ускорит
и
облегчит
работу
системного
администратора и сократит потери компании за счёт уменьшения процессов
связанных с обслуживанием компьютеров.
Для успешной автоматизации процессов компании первым делом
необходимо произвести тщательный анализ работы предприятия с целью
выявления факторов влияющих на низкую производительность в отношении
инвентаризации оборудования и его складской учёт, так как они тесно
связаны друг с другом.
При
разработке
оборудования
автоматизированной
необходимо
изучить
системы
существующие
инвентаризации
в
данной
сфере
разработки, выявить их положительные стороны, а так же недостатки и
непригодность
для
данного
предприятия.
Потому
что
главное
перестраивать процессы под определённый программный продукт, а
не
4
наоборот разработать программный продукт, который будет удовлетворять
происходящим процессам на предприятии.
Актуальность исследовательской работы заключается в автоматизации
процесса инвентаризации и учёта оборудования. Для того, чтобы сопоставить
действительные активы предприятия с данными учета. Инвентаризация – это
ревизия, позволяющая выявить неточности учета в организации, обозначить
расхождения
в
отражении
фактов
деятельности
предприятия
и
ликвидировать их.
Целью выпускной квалификационной работы является создание
автоматизированной
информационной
системы
инвентаризации
оборудования для ООО «Белая птица» и дальнейшего её внедрения.
Для достижения поставленной цели необходимо решить следующий
ряд задач:
1)
Анализ деятельности организации, требующей информационного
сопровождения;
2)
Подробный обзор и анализ существующих систем;
3)
Определение требований к системе;
4)
Проектирование;
5)
Программная реализация автоматизированной системы;
6)
Испытание.
Введение содержит общие сведения о работе, ее актуальность, цели,
задачи.
Первая глава содержит настоящее состояние предметной области,
обозреваем
существующие
системы,
которые
смогут
частично
или
полностью удовлетворить нашим требованиям, выявим их недостатки,
результаты будут отображены в таблице.
Вторая глава содержит обоснования выбора программных средств и
проектированию информационной системы.
Третья глава содержит программу и методику испытаний, а также
проведения испытаний исходя из возможностей информационной системы.
5
В заключении подводится итог о проведенной работе.
Дипломная работа состоит из 57 страниц, 23 рисунков и приложения
включающего 10 страниц.
6
Глава 1. ПОСТАНОВКА ЗАДАЧИ НА РАЗРАБОТКУ
АВТОМАТИЗИРОВАННОЙ СИСТЕМЫ
1.1 Особенности организации ООО «Белая птица»
Агрохолдинг «Белая птица» основан в 2004 году в Белгородской области,
контролируется
структурой
«Промсвязьбанка»
–
компанией
«Промсвязькапитал»[1].
Для тех людей, которые работают в компании, обеспечивается:
1)
Обеспечение должного уровня рабочего места и безопасности
работников компании по отношению к результатам производственной
деятельности,
повышение
мотивации
и
укрепление
дисциплины
производства;
2)
Установление требований к выполнению и организации работ в
области охраны труда, во всех сферах деятельности предприятия;
3)
Стажировка
и
подбор
высококвалифицированных
профессиональных кадров на всех участках деятельности компании;
4)
Контроль
за
соблюдением
требований
охраны
труда,
установленных федеральными законами и иными нормативными правовыми
актами;
5)
области
Обоснование экономических подходов к решению задач в
охраны
труда,
включая
оценку
социально-экономической
эффективности мероприятий по снижению промышленных рисков по охране
труда[2].
Для
повышения
эффективности
функционирования
предприятия
необходимо обеспечить четко действующую систему учета и контроля его
средств и источников. Качественное состояние основных средств, степень их
развития
определяет
способность
уровень
достигать
производительных
сил
поставленных
общества,
их
целей[3].
7
В процессе функционирования предприятия возникает необходимость в
проверке фактического наличия и состояния хозяйственных средств и
расчетов предприятия. Иногда возникают такие ситуации на предприятии,
когда в результате каких-либо причин учетные данные не совпадают с
фактическим наличием. Это может быть вызвано рядом причин, например
таких как, воровство, неточный учет основных средств при их поступлении
или
выбытии
или
истечении
срока
эксплуатации[4].
Вследствие,
неправильного ведения или неправильного подсчета основных средств,
может отрицательно сказаться на производстве или вообще остановить
производственный процесс. Поэтому необходимо проводить проверки
фактического наличия и состояния основных средств. Такие проверки
называются инвентаризацией[5]. Под инвентаризацией понимается один из
важнейших элементов бухгалтерского учета, основной способ фактического
контроля сохранности имущества и денежных средств. При инвентаризации
проводится проверка наличия имущества организации и состояние ее
финансовых обязательств, а также соответствие полученных данных
регистрам бухгалтерского учета[6].
Таким образом, имеем необходимость обеспечить должного уровня
производительность на рабочих местах, оснастить всем необходимым для
выполнения офисных видов работ.
Информационная система может иметь широкий круг задач, которые
могут
нуждаться
производительного
в
автоматизации
выполнения
рабочих
рабочих
процессов
планов.
В
с
данный
целью
момент
рассматрим офис, а не производство продукции, для которого должны
выполняться следующие процессы:
1) Инвентаризация оборудования, которое благодаря автоматизации
процессов должно происходить в разы быстрее, чем это происходило
без информационной системы. Всё это обусловлено тем, что при
инвентаризации
происходит
практически
корректировка баланса оборудования;
моментальная
8
2) Учёт поступившего и выданного оборудования, которое позволит
незамедлительно узнать о наличии на складах разных типов
оборудования;
3) Заявки на регистрацию нового пользователя в системе;
4) Отчётность по ряду параметров базы данных: приоритетам, срокам,
ответственным,
кабинетам,
конкретному
оборудованию,
ценам,
кладовщикам, типам, видам и названию оборудования;
5) Поиск
по
оборудованию,
в
котором
будут
отображены
все
наименования, которые когда-либо были на складе. Поиск происходит
по параметрам: Цена, название, тип, вид.
6) Списание
оборудования
по
причине
неремонтопригодности,
расходных материалов и . К таким материалам могут относиться:
мышки, клавиатуры, светильники, плафоны, фонари, картриджи для
принтера, пишущие принадлежности, линейки, ластики, папки, файлы,
клей, диски, калькуляторы, степлеры, дыроколы, flash-накопители, ,
бумага, скрепки и прочие канцтовары. А дорогостоящие предметы
(стоимость
которых
превышает
установленный
стоимостный
критерий) со сроком полезного использования более одного года не
попадают под критерий «списанного»;
7) Составление отчётной документации.
Эти виды деятельности возможно автоматизировать, если реализовать
такую систему, чтобы она могла позволять работникам оперативно и
незамедлительно получать нужное оборудование и мебель для обустройства
новых мест работы при переезде, если такое нужно, или устройства нового
сотрудника, который был назначен в определённый отдел с каким-либо
проектом
или
для
постоянного
пребывания.
Автоматизированная
информационная система инвентаризации оборудования рассчитана на
пользователей, которые без знания программирования смогут управлять этой
системой, а именно иметь постоянный доступ к любой информации по
9
имеющемуся в наличии оборудованию как в отделе, так и в конкретном
кабинете.
1.2 Обзор и анализ существующих систем
На данный момент присутствует огромное количество готовых
решений
для
возможности
реализации
инвентаризации
и
учёта
оборудования. Однако, все эти решения в той или иной мере не отвечают тем
требованиям, чтобы подобающим образом упростить ряд аспектов работы
предприятия, требующих автоматизации. Чтобы убедиться в этом, можно
рассмотреть несколько таких систем и оценить то, как они справляются с
поставленными задачами.
Система 1. Программный продукт 1С:Предприятие
Для примера рассмотрим уже имеющийся на рынке сервис «1С
Предприятие».
Система программ «1С:Предприятие 8.3» включает в себя платформу и
прикладные решения, разработанные на ее основе, для автоматизации
деятельности организаций и частных лиц.
Программные продукты фирмы «1С» качественно решают все
бухгалтерские задачи и помогают специалисту в его повседневном труде[7].
«1С:Предприятие» представляет для своих клиентов целую экосистему,
а именно:
1)
Платформа для разработчиков;
2)
Среда для ведения различных видов учёта и аналитики;
3)
Допустимость
подключения
оборудования;
4)
Большая сеть партнёров;
5)
разнообразного
торгового
CMS для создания сайтов.
Гибкость платформы позволяет применять «1С:Предприятие 8» в самых
разнообразных областях:
10
1)
Автоматизация производственных и торговых предприятий,
бюджетных и финансовых организаций, предприятий сферы обслуживания и
т.д. поддержка оперативного управления предприятием;
2)
Автоматизация организационной и хозяйственной деятельности;
3)
ведение бухгалтерского учета с несколькими планами счетов и
произвольными измерениями учета, регламентированная отчетность;
4)
Широкие возможности для управленческого учета и построения
аналитической отчетности, поддержка многовалютного учета;
5)
Решение задач планирования, бюджетирования и финансового
анализа;
6)
Расчет зарплаты и управление персоналом;
7)
Другие области применения.[8]
На примере рис. 1.1 можем видеть разнообразность доступных
информационных баз и их обилие, в нашем случае этого не требуется,
потому что наша система узконаправленна на конкретную задачу и
необходимость в данном функционале не предусмотрена. Все дальнейшие
данные, которые изображены на рисунках используются для примера.
Рис.1.1. Выбор информационной базы предприятия
11
На рис. 1.2 происходит выбор пользователя из выпадающего списка,
которому нужно ввести пароль, не смотря на то, что в данном случае имя
пользователя не несёт за собой ничего конкретного учётные записи
созданные в системе являются индивидуальными, а для переключения между
учётными записями нужно заново перезагрузить систему и изменение
учётной записи внутри запущенного «1С Предприятия» не предусмотрено,
чего в требуемой системе делать не нужно, в случае с разрабатываемой
системой всё будет происходить быстро и оперативно - без лишних затрат
времени, если нужно сменить пользователя, то это действие можем
выполнить в пару нажатий.
Так как приложение для рабочего стола более тяжеловесно для
системы и имеет определённые системные требования, всё происходящее с
информационными базами обрабатывает клиент, а не сервер, поэтому
разрабатываемая система является более гибкой и не требующей времени для
настройки и установки. Сам интерфейс является понятным человеку,
который далёк от бухгалтерии и учёта.
Рис. 1.2. Окно входа для пользователя
На рис. 1.3, в верхней строчке, на рабочей области изображено главное
меню в котором присутствуют такие пункты как «Файл», «Правка»,
«Операции», «Справочники», «Документы», «Отчёты», «Сервис», «Окна» и
«Справка».[3]
12
Рис. 1.3. Рабочая область программы «1С Предприятие»
Можно видеть две панели инструментов и рабочую область, где и
происходит сама работа и внизу строка состояния, где
можно видеть
дополнительную информацию и вызывать справку, которая содержит
описание событий. В системе «1С Предприятие» вся работа происходит в
трёх структурах:
1)
Справочники – хранится постоянная информация, которая с
течением времени крайне редко изменяется и она не имеет отношения к
операциям на предприятии. К такой информации относится информация об
организации, о складах, номенклатуре, контрагенты (куда включаются
покупатели, поставщики и другие физические лица), о кассах, статьях
движения кассовых средств и прочее;
2)
Документы – отражает в программе факты хозяйственной
деятельности предприятия. Допустим, на предприятии произошёл заказ
покупателем либо была выполнена реализация товаров и услуг либо были
приняты деньги через кассу или банк, то есть любая хозяйственная
деятельность, которую необходимо учитывать отражается в пункте меню
«Документы».
Чаще
всего
при
заполнении
документов
используют
справочники, именно из постоянной информации. Можем прийти к тому что
в справочниках (рассматривали выше) содержится информация необходимая
для заполнения документов, конкретно для того чтобы заполнить ту
хозяйственную операцию, которая произошла на предприятии;
13
Отчёты – позволяют получить сводную информацию, которая
3)
была отражена документами.
Если проследить всю цепочку, то справочники нужны для того чтобы
заполнить документы, а уже отражающиеся документы попадают в отчёты,
то есть всю сводную информацию по документам строят в отчётах.[3]
Рис. 1.4. Форма списания оборудования на складе
На рис. 1.4 можно видеть обилие экономических терминов, в то время
как в разработанной системе можно наблюдать узкоспециализированность в
отношении инвентаризации и складского учёта, для человека который не
знаком
с
бухгалтерским
учётом
будет
практичней
работать
в
разрабатываемой системе, потому что 1С по своей структуре сильно
перегружена различными элементами. Для работы с автоматизированной
системой
инвентаризации
оборудования
нужно
будет
потратить
минимальное количество времени, чтобы обучить нового сотрудника
полноценно и самостоятельно работать с системой.
Таким образом, рассмотренная система «1С Предприятие» не подходит
под задачи предприятия, так как:
1)
В случае с толстым клиентов при наличии информационной базы
локально, на клиенте, имеют место быть риски потери данных и
невозможности их восстановления, в связи с поломкой оборудования, на
котором хранились эти данные;
14
2)
При расширении информационной базы, имеющей большое
количество параметров и из-за многофункциональности «1С Предприятие»
информационная база занимает слишком много памяти, в то время как
разрабатываемая система не требовательная к объемам памяти из-за её
узконаправленности даже при больших объемах данных;
3)
В любой версии конфигурации «1С Предприятие» отсутствует
специализация инвентаризации и складского учёта, в конфигурации
присутствует бухгалтерский и управленческий учёт, не востребованный в
задачах отдела;
4)
При необходимости обновления конфигурации, в случае если
используются только элементы складского учёта, программа нуждается в
обновлении элементов бухгалтерского и управленческого учёта, что
увеличивает время обновления и усложняет конструкцию;
5)
Слишком высокая стоимость лицензии и обслуживания.
Система 2. Программный продукт Hardware Inspector
Программа Hardware Inspector предназначена для инвентарного учета
компьютеров и другой техники в организациях. Ориентирована на
выполнение работ, связанных с учетом и планированием компьютерного (и
иного) аппаратного обеспечения[9].
Функционал Hardware Inspector не ограничивается одним лишь учетом
компьютеров - система позволяет автоматизировать почти все аспекты
деятельности ИТ-подразделения. Набор из более чем 30 встроенных отчетов
позволит оценить эффективность его работы и предоставить нужные отчеты
вышестоящему руководству[10].
15
Рис. 1.5. Окно размещение оборудования по подразделениям
На
рис.
1.5
видим,
что
левая сторона располагает
деревом
подразделений, а правая развернутым описанием выбранного элемента
дерева. Данный продукт имеет гибкую систему разграничения
Основные возможности программы Hardware Inspector:
учет комплектующих;
отслеживание истории перемещения устройств, их ремонта,
профилактики и инвентаризации;
возможность не только ручного ввода данных, но и импорта
информации из отчетов программ анализа конфигурации компьютеров
AIDA32, EVEREST, ASTRA И ASTRA32;
учет лицензий на программное обеспечение;
мониторинг инсталляции пользователями запрещенного ПО;
мониторинг
изменений,
происходящих
в
конфигурациях
компьютеров (аудит рабочих мест);
учет заявок от пользователей;
инвентаризация устройств с использованием штрих-кодов;
гибкое разграничение доступа к данным;
мощные механизмы поиска устройств, лицензий и прочего;
16
большой набор настраиваемых отчетов, экспорт в различные
форматы;
поддержка многопользовательской работы с базой данных в сети;
Уникальность
программы
Hardware
Inspector
заключается
в
возможности вести учет не просто текущего состояния параметров
компьютера, а всей истории жизни каждого устройства[11].
Для данной системы можно выделить следующие достоинства:
автоматизация
-
сканирование
сети
осуществляется
автоматически с высокой скоростью;
наглядность - группировка собранной информации производится
как для всей сети в целом, так и для каждого компьютера в отдельности;
гибкость - имеется возможность добавлять специальные поля для
каждого компьютера;
удобство
-
собранные
данные
можно
распечатать
или
экспортировать в нужный формат;
отчёты - генератор отчётов и предустановленные шаблоны
максимально ускорят процедуру построения отчётов по сети[12].
На рис. 1.6 можно видеть, что при нажатии кнопки "Переместить"
создается документ "Перемещение устройств", в котором можно выбрать
одно или несколько устройств текущего рабочего места и указать, куда это
оборудование будет перемещено и по какой причине.
17
Рис. 1.6. Документ "Перемещение устройств"
Недостатком системы можно выделить сложность ее внедрения: для
внесения
данных
специальный
о
компьютере,
модуль,
на
сканирующий
него
необходимо
компьютер.
Лишь
установить
после
этого
компьютер будет внесен в базу данных.
Кроме того, данный модуль проработан недостаточно хорошо,
вследствие чего некоторые данные об оборудовании приходится вносить
вручную.
Ещё к минусам можно отнести отсутствие бесплатной версии без
ограничения хранения базы и количества пользователей.
Система 3. Программный продукт IT Invent
IT Invent – это автоматизированная информационная система для
инвентаризации
и
учета
компьютеров,
принтеров,
программ
и
комплектующих, а также учет ремонтов и обслуживаний, работ по
поддержке техники, заказов поставщикам, поступлений и перемещений
оборудования, учет контрагентов и сотрудников[13].
На рис. 1.7 можно видеть, что программа позволяет производить
разделение учетных конфигурационных единицы на 4 базовых классов:
1)
Оборудование
оборудование и т.д.).
(компьютеры,
принтеры,
оргтехника,
сетевое
18
2) Программы (коробочный софт и номера лицензий).
3) Комплектующие (память, DVD, картриджи, сим-карты и т.д.).
4) Расходные материалы (бумага, канцелярия, флешки, кабель, тонер и
т.д.)[14].
Рис. 1.7. Интерфейс программы IT Invent
Присутствует установка бесплатной версии, но с ограничениями на 200
записей каждого вида учётных единиц, результаты сканирования сети,
работы и задачи.
Недостатком можно выделить узконаправленность на работу только с
учётом компьютеров и комплектующих и отсутствием возможности оставить
заявку администрации. Для рассматриваемого предприятия такой недостаток
критичен, так как рабочие места сотрудников могут находиться в области и
наличие возможности связи, только по телефону не удовлетворяет
требованиям.
19
Таким образом, рассмотрев ряд систем, три из которых представлены
выше, можно прийти к выводу, что те системы, которые уже существуют –
не способный в полной мере удовлетворить требования, представленные к
системе потребности предприятием.
Исходя из анализа, возникает потребность разработать собственную
систему, который будет автоматизировать инвентаризацию оборудования, в
соответствии с описанными выше аспектами, подлежащими автоматизации.
1.3 Требования к автоматизированной системе
1. Требования к функциональным характеристикам
Программа
должна
обеспечивать
возможность
выполнения
перечисленных ниже функций:
1)
Предоставлять
пользователям
возможность
экспортировать
данные, которые им отображены, в xls документ;
2)
Предоставлять пользователям информации о системе и её
возможностях при входе в систему;
3)
Реализация
возможности
для
пользователя
связаться
с
администратором ресурса при необходимости через электронную почту;
4)
Реализовать возможность хранения, изменения, удаления и
добавления данных в различные таблицы в зависимости от прав доступа
конкретного пользователя, а именно:
Добавления данных пользователя администратором сайта;
Указывание должности нового пользователя и дальнейшего
изменения должности в связи с его повышением или переводом в другой
отдел для администратора ресурса;
Редактирование баланса оборудования для кладовщиков и
прочих ответственных лиц, путём приёма или выдачи оборудования или
мебели заведующим лицам по конкретному отделу;
20
Реализация возможности для человека ответственного по отделу
списывать оборудование;
Реализация подачи заявок на регистрацию новых пользоватей;
Реализация возможности производить инвентаризацию человеку
как ответственному по отделу, так и кладовщику для корректировки баланса;
Защита базы данных от попыток несанкционированного доступа
к хранимым данным.
На странице добавления пользователя администратор должен иметь
возможность вводить следующие данные: имя пользователя, которое может
состоять из латинских букв и цифр, пароль.
На странице добавления нового оборудования или мебели кладовщик
должен
иметь
возможность
вводить
следующие
данные:
артикул,
наименование, тип оборудования, вид оборудования, цену оборудования,
указать принадлежность к отделу.
На странице изменения баланса кладовщик или ответственный по
отделу должны иметь возможность редактировать количество оборудования
в результате инвентаризации: указать нужное оборудование, указать
количество.
На странице пользователи, администратор должен иметь возможность
изменения пользователя и его должности: имя, фамилия, отчество, телефон,
указать должность, указать отдел.
На странице должности администратор должен иметь возможность
добавление новой должности: Название должности.
Общие требования к входным данным, вводимым пользователем на
ресурсе: В случае с текстовыми данными – они должны вводиться в
специальное поле или быть выбраны из предложенных с помощью
выпадающего списка.
2. Требования к надёжности
21
Устойчивое функционирование программы должно быть обеспечено
выполнением
заказчиком
совокупности
организационно-технических
мероприятий, перечень которых приведен ниже:
организацией бесперебойного питания технических средств;
использованием лицензионного программного обеспечения;
регулярным выполнением рекомендаций Министерства труда и
социального развития РФ, изложенных в Постановлении от 23 июля 1998 г.
«Об утверждении межотраслевых типовых норм времени на работы по
сервисному
обслуживанию
ПЭВМ
и
оргтехники
и
сопровождению
программных средств»;
регулярным выполнением требований ГОСТ 51188-98. Защита
инфоpмации. Испытания пpогpаммных сpедств на наличие компьютеpных
виpусов.
3. Условия эксплуатации
Разрабатываемым программным продуктом может воспользоваться
любой работник (разработчик, администратор и т.д.) «Интернет-центра». Для
надежной
работы
программы
пользователям
(клиентам,
заказчикам)
необходимо, корректно использовать программный продукт, вводить верно
значения.
Клиент
должен
обладать
основами
правил
простейшей
компьютерной этики, для использования программного продукта.
4.
Требования к численности и квалификации персонала
Для управления работы ресурса требуется минимум один человек,
который должен производить администрирование. Так же требуется
персонал, который обслуживает сервер.
5.
Требования к исходным кодам и языкам программирования
Языком программирования, реализующим исходные коды стороне
сервера, должен быть язык программирования PHP с использованием СУБД
MySQL. Интегрированной средой разработки автоматизированной системы
должна быть использована среда JetBrains PhpStorm 2017.3.4. Языками
22
программирования на стороне клиента являются HTML и Javascript с
использованием библиотек Jquery и AJAX.
6.
Требования
к
программным
средствам,
используемым
программой
Для работы с ресурсом
требованиям:
Достаточно
иметь
необходимо соответствие следующим
любое
современное
устройство
с
установленной операционной системой, требованием для которого является
возможность подключения к интернету и наличие интернет-браузера с
поддержкой стандарта HTML5 и Javascrip.
7.
Требования к информационному обеспечению
Должно быть спроектировано информационное обеспечения исходя из
анализа предметной области, в котором нужно рассмотреть основные
особенности данной предметной области и выявить конкретные компоненты,
которые необходимо будет отразить в программном продукте.
8.
Требование к учётным записям пользователей:
1)
Логин пользователя;
2)
Пароль;
Авторизация необходима для обеспечения безопасности и целостности
данных. При регистрации в базу данных записывается логин пользователя и
пароль в двойном md5 хешировании. При авторизации происходит сравнение
пароля и логина
23
Глава 2. ПРОЕКТИРОВАНИЕ И ПРОГРАММНАЯ РЕАЛИЗАЦИЯ
ИНФОРМАЦИОННОЙ СИСТЕМЫ
2.1 Выбор средств разработки
Для создания динамических веб-страниц нам потребуется понимать и
использовать различные технологии. Разработка динамических веб-страниц
включает три основных компонента:
1)
веб-сервер,
2)
язык программирования сценариев, исполняемых на стороне
сервера;
3)
базу данных[15].
Разрабатывая веб-приложения с применением PHP, надо понимать все
три компонента. Начнем с элементарных сведений об истории и назначении
Apache (веб-сервер), PHP (язык программирования сценариев, исполняемых
на стороне сервера) и MySQL (база данных). Это поможет нам осознать, как
они вписываются в общую картину разработки веб-приложений.
Язык PHP широко распространен и совместим со всеми основными
операционными системами. Он прост в изучении, что делает его идеальным
инструментом для веб-программистов[16].
Apache – это веб-сервер, который превращает запросы браузера в
конечные веб-страницы и знает, как обрабатывать программный код PHP.
PHP – это всего лишь язык программирования, и без поддержки веб-сервера,
например Apache, у пользователей Сети нет никакой возможности получить
страницы, содержащие программный код PHP.
Язык структурированных запросов (Structured Query Language, SQL) –
самый распространенный язык, предназначенный для записи, извлечения,
обновления и удаления информации в системах управления базами
данных[17].
24
Основные преимущества PHP:
1)
Совместимость;
Такие веб-браузеры, как Safari, Firefox, Opera, Google Chrome и Internet
Explorer, предназначены для обработки документов в формате HTML, и им
все равно, под управлением какой операционной системы работает вебсервер.
Apache,
PHP
MySQL
и
рассчитаны
на
поддержку
многих
операционных систем, поэтому нет ограничений при выборе какой-то
определенной операционной системы для сервера или клиента. Отсутствие
беспокойства по поводу совместимости программного обеспечения[18].
Если веб-сервер обнаруживает PHP-код, он пытается определить, не
является ли данный файл файлом PHP-сценария. Если это так, файл
передается для обработки интерпретатору PHP без какого-либо участия со
стороны браузера. Но если в HTML-файле есть ссылка на внешний CSSфайл, то прежде чем отобразить страницу, браузер отдельно пошлет запрос,
чтобы получить эту таблицу стилей[19].
Обработка PHP-кода сервером называется обработкой на стороне
сервера. Запрашивая веб-страницу, вы запускаете целую цепь событий. Это
взаимодействие между нашим локальным компьютером и веб-сервером
(находящимся на хостинге в Интернете) иллюстрируется на рис. 2.1:
Рис. 2.1. Обработка PHP-кода сервером
25
Опишем все шаги последовательности изображенный на рисунке:
1)
Введём адрес веб-страницы в адресной строке браузера;
2)
Браузер разбивает адрес на составляющие и отправляет имя
страницы веб-серверу;
3)
Процесс веб-сервера принимает запрос на получение страницы
index.php;
4)
Веб-сервер считывает файл index.php с жесткого диска;
5)
Веб-сервер определяет, что это сценарий PHP, а не простой
HTML-файл, и поэтому передает его на обработку другому процессу –
интерпретатору PHP;
6)
Интерпретатор PHP исполняет PHP-код, который он обнаружил в
тексте, полученном от процесса веб-сервера. Этот код включает в себя
обращения к базе данных MySQL;
7)
Интерпретатор PHP запрашивает у процесса базы данных MySQL
обработку обращений к базе данных;
8)
Процесс базы данных MySQL возвращает результаты запроса к
базе данных;
9)
Интерпретатор PHP завершает исполнение PHP-кода, добавляя
данные, полученные из базы данных, и возвращает результат процессу вебсервера;
10)
Веб-сервер возвращает результат браузеру в виде HTML-текста;
11)
Веб-браузер формирует внешний вид веб-страницы на экране
компьютера в соответствии с полученным HTML-текстом[20].
2)
Межплатформенная совместимость
Система PHP совместима веб-серверами: HTTP-сервер Apache для
Linux/Unix и Windows и с несколькими менее известными серверами.
3)
Удобство в использовании
Язык PHP является легким для изучения, а программы на этом языке
могут быть легко созданы, особенно теми разработчиками, которые имеют
26
хотя бы небольшой опыт работы на языке программирования с
синтаксисом, подобным языку C. В связи с этим язык PHP можно просто
осваивать. Начинающие программисты получают возможность приступать
к продуктивной работе уже на начальном этапе знакомства[21].
2.2 Проектирование информационного обеспечения
1.
В
Системный анализ предметной области
рамках
данного
выпускного
квалификационного
проекта
спроектирована и создана автоматизированная система с базой данных
инвентаризации и учёта. С помощью готовой системы можно будет:
1)
осуществлять добавление, изменение и удаление по данным из
созданных таблиц;
2)
просматривать данные о приоритетах, сроках, ответственным,
кабинетам, конкретному оборудованию, ценам, кладовщикам, типам, видам и
названию оборудования;
3)
осуществлять поиск, фильтрацию, сортировку и формировать
отчётность данных для более удобного представления их пользователю.
Таким образом, система должна обеспечивать: возможность добавления,
изменения и удаления данных в базе и иметь удобный интерфейс для работы
пользователей.
Данная база данных состоит из 12 взаимосвязанных таблиц «Баланс»,
«Оборудование», «Операции», «Помещение», «Отдел», «Этаж», «Кабинет»,
«Пользователи», «Должность», «Тип оборудования», «Вид оборудования»,
«Тип операции».
2.
Инфологическое проектирование базы данных
Для хранения информации в базе данных, нам необходимо
разработать структуру базы данных. Определить какие таблицы
(сущности) она в себя будет включать, какие поля (атрибуты) будут
включать в себя таблицы.
27
Разрабатывая данную базу данных, можно выделить следующие
сущности: Баланс, оборудование, операции, помещение, отдел, этаж,
кабинет, пользователи, должности, заявки.
Важной частью проектирования является нормализация разделение
групп элементов данных с целью установления основных отношений,
уменьшения избыточности и объединения связанных элементов данных в
структуры, которыми можно эффективно манипулировать.
Использование
ненормализованных баз данных может привести к нарушению целостность
базы данных. [22]
Целью данного этапа проектирования базы данных является приведение
базы данных инвентаризации и учёта оборудования к третьей нормальной
форме. Для того чтобы это сделать, необходимо последовательно привести
базу данных от первой нормальной формы к третьей, то есть:
1)
значения всех атрибутов в таблицах преобразовать в атомарные -
содержащие только одну запись;
2)
первичный ключ разделить на части так, чтобы некоторые из
ключевых полей зависели только от одной из таких частей, а также создать
новые таблицы для каждой части ключа и переместить поля, зависящие от
них;
3)
осуществить логическое разделение на родительские и дочерние
сущности, а затем определить идентифицирующие связи[23].
Для начала приведем базу данных к первой нормальной форме, делая
значения всех атрибутов во всех столбцах атомарными. Далее определяем
первичные ключи и зависящие от них не ключевые поля. Затем создаем
отдельную таблицу для каждого первичного ключа и перемещаем в неё этот
ключ вместе с зависимыми не ключевыми полями. Теперь база данных
находится во второй нормальной форме. Последним, что необходимо сделать
для перевода базы данных в третью нормальную форму – определение
зависимых полей и создание новой таблицы для каждого из таких полей. Тем
28
самым, все поля в таблицах, приведенных к третьей нормальной форме, будут
независимыми[24].
Каждая
сущностей
имеет
собственные
атрибуты.
Для
начала
спроектируем таблицу «Оборудование», которая должна в себя включать:
1)
Id_Оборудования – первичный ключ, который обеспечивает
уникальность каждой записи и он будет связан с таблицей «Баланс» внешним
ключом;
2)
Артикул – цифровое обозначение оборудования;
3)
Тип оборудования – будет служить для обозначения, к какому
типу можно будет отнести данное оборудование;
4)
Вид оборудования – исходя из типа, будет служить для
обозначения области применения оборудования;
5)
Цена – позволит знать стоимость оборудования на момент его
внесения в таблицу;
6)
Помещение
–
склад,
в
котором
хранится
конкретное
оборудование.
В результате нормализации таблицы:
1.
каждое значение имеет по одному атрибуту;
2.
создадим ещё одну таблицу «Помещения» для того, чтобы при
удалении
некоторого
единственного
оборудования,
которое
может
находиться на одном складе не потерять при этом сам склад из базы данных,
остальные записи друг от друга напрямую зависящие;
3.
создадим
в
текущей
таблице
внешние
ключи
таблицы
«Помещения», «Тип оборудования», «Вид оборудования» для того чтобы
иметь представление о том, где находиться каждое оборудование и
содержимое внешних ключей может относиться к нескольким записям
таблицы.
Далее спроектируем таблицу «Помещения», которая будет в себя
включать:
29
1.
–
id_Помещения
первичный
ключ
который
обеспечивает
уникальность каждой записи и позволяет производить операции с любым
полем в таблице ещё он связан с таблицей «Оборудование» внешним
ключом;
2.
Размер – размер помещения;
3.
Улица – улица, на которой находиться помещение;
4.
Номер дома – номер дома находящийся на улице, эти два
последних поля образуют адрес помещения.
В результате нормализации таблицы:
1.
каждое значение имеет по одному атрибуту. К примеру, адрес
разбит на два поля, которые его образуют;
2.
все записи в таблице друг от друга напрямую зависящие и не
могут быть использованы раздельно;
3.
таблица связана с таблицей «Помещения» посредством внешнего
ключа.
Далее спроектируем таблицу «Баланс», которая будет включать в себя
следующие поля:
1.
id_Баланса
-
первичный
ключ
который
обеспечивает
уникальность каждой записи;
2.
Оборудование – внешний ключ таблицы «Оборудование»,
который будет указывать на её первичный ключ и позволит использовать
записи с этой таблицы;
3.
Количество
–
будет
означать
количество
конкретного
оборудования.
В результате нормализации таблицы:
1.
каждое значение имеет по одному атрибуту;
2.
все записи в таблице друг от друга напрямую зависящие и не
могут быть использованы раздельно;
3.
таблица связана с таблицей «Оборудование» посредством
внешнего ключа.
30
Далее спроектируем таблицу «Отдел», которая будет включать в себя
следующие поля:
1.
id_Отдела
-
первичный
ключ,
который
обеспечивает
уникальность каждой записи;
2.
Название отдела – позволит указать название отделов;
3.
Этаж – конкретный этаж, внешний ключ, который будет связан с
таблицей «Этаж».
В результате нормализации таблицы:
1.
каждое значение имеет по одному атрибуту;
2.
все записи в таблице друг от друга напрямую зависящие и не
могут быть использованы раздельно;
3.
таблица связана с таблицей «Этаж» посредством внешнего
ключа.
Далее спроектируем таблицу «Этаж», которая будет включать в себя
следующие поля:
1.
id_Этаж - первичный ключ, который обеспечивает уникальность
каждой записи;
2.
Номер этажа - позволит указать, какой из отделов находится на
данном этаже;
3.
Кабинет - конкретный кабинет, внешний ключ, который будет
связан с таблицей «Отдел».
В результате нормализации таблицы:
1.
каждое значение имеет по одному атрибуту;
2.
все записи в таблице друг от друга напрямую зависящие и не
могут быть использованы раздельно;
3.
таблица связана с таблицей «Отдел» посредством внешнего
ключа.
Далее спроектируем таблицу «Кабинет», которая будет включать в себя
следующие поля:
31
1.
id_Кабинета
-
первичный
ключ,
который
обеспечивает
уникальность каждой записи;
2.
Номер кабинета – позволит указать номер кабинета.
В результате нормализации таблицы:
1.
каждое значение имеет по одному атрибуту;
2.
все записи в таблице друг от друга напрямую зависящие и не
могут быть использованы раздельно;
3.
таблица связана с таблицей «Этаж» посредством внешнего
ключа.
На основе этих данных строим следующую инфологическую модель.
Получившаяся логическая модель базы данных изображена на рис. 2.2.
32
Рис. 2.2. Логическая модель базы данных
33
3. Физическое проектирование базы данных
Физическое проектирование — создание схемы базы данных для
конкретной СУБД. Специфика конкретной СУБД может включать в себя
ограничения на именование объектов базы данных, ограничения на
поддерживаемые типы данных и прочее. Кроме того, специфика конкретной
СУБД при физическом проектировании включает выбор решений, связанных
с физической средой хранения данных (выбор методов управления дисковой
памятью, разделение базы данных по файлам и устройствам, методов доступа
к данным), создание индексов и так далее[25].
Таблица «Баланс» состоит из 3 полей:
1)
id_balance (integer, primary key);
2)
id_ecuipment_fk (integer, foreign key);
3)
quantity (integer).
Она служит нам для учёта количества оборудования и мебели.
Таблица «Помещения» состоит из 4 полей:
1)
id_room (integer, primary key);
2)
size(integer);
3)
street (varchar);
4)
building(varchar);
Служит для хранения данных об адресе помещения, в котором
храниться оборудование и мебель.
Таблица «Оборудование» состоит из 7 полей:
1)
id_equipment (integer, primary key);
2)
articul(integer);
3)
name (varchar);
4)
id_type_fk(integer);
5)
id_kind_fk(integer);
6)
price(integer);
7)
id_room_fk(integer, foreign key).
34
Хранит в себе название, цену, расположение, вид и тип оборудования,
для удобной отчётности.
Таблица «Операции» состоит из 8 полей:
1)
id_operations (integer, primary key);
2)
id_user_fk(integer, foreign key);
3)
id_division_fk(integer, foreign key);
4)
id_equipment_fk(integer, foreign key);
5)
date(date);
6)
quantity(integer);
7)
id_type_fk(integer)
Отвечает за выполнение операций, где тип операции изменяется в
зависимости от состояния флагов и хранит в себе данные о пользователе и
кладовщику, отделе за который отвечает пользователь, оборудованию над
которым происходят операции и дате операции.
Таблица «Отдел» состоит из 3 полей:
1)
id_division (integer, primary key);
2)
name_division(varchar);
3)
id_floor_fk(integer, foreign key).
Хранит в себе информацию об отделе, его название и этаж на котором
находится отдел.
Таблица «Пользователи» состоит из 9 полей:
1)
id_user (integer, primary key);
2)
name(varchar);
3)
surname(varchar);
4)
patronimic(varchar);
5)
telephone(integer);
6)
id_position_fk(integer, foreign key);
7)
id_division_fk(integer, foreign key);
8)
user_login(varchar);
9)
user_password(varchar);
35
Хранит в себе информацию о пользователях, их ФИО, контактные
данные, должность, отдел, имя учётной записи, пароль.
Таблица «Этаж» состоит из 3 полей:
1)
id_floor (integer, primary key);
2)
num_floor(integer);
3)
id_cabinet_fk(integer, foreign key);
Хранит в себе данные о кабинетах на этаже.
Таблица «Кабинет» состоит из 2 полей:
1)
id_cabinet (integer, primary key);
2)
num(integer).
Хранит в себе данные о нумерации кабинетов.
Таблица «Должность» состоит из 2 полей:
1)
id_position (integer, primary key);
2)
name_position(varchar).
Хранит в себе данные о должности пользователей.
Таблица «Тип оборудования» состоит из двух полей:
1)
id_type (integer, primary key);
2)
name (varchar).
Хранит в себе данные о возможном типе оборудования.
Таблица «Вид оборудования» состоит из двух полей:
1)
id_kind (integer, primary key);
2)
name (varchar).
Хранит в себе информацию о возможном виде оборудования.
Таблица «Тип операции» состоит из двух полей:
1)
id_type (integer, primary key);
2)
name (varchar).
Хранит в себе информацию о типе операции.
На рис. 2.3 представлена физическая модель базы данных, на основе
которой спроектируем базу данных:
36
Рис. 2.3. Физическая модель
37
2.3 Программная реализация автоматизированной системы
Так как для написания приложения используется большой объем кода,
то нет возможности прокомментировать весь код целиком. Однако следует
описать те разработки, которые являются ключевыми и представляют
особенный интерес для рассмотрения. Как и было заявлено в требованиях,
приложение предоставляет возможность экспортировать данные из таблицы
в xls файл.
Для реализации подобного решения упустим PHPExсel, для наших
требований будет достаточно MIME TYPE application/vnd.ms-excel. Указание
MIME-типа используется в HTML обычно при передаче данных форм и
вставки на страницу различных объектов. Так как пользователь уже
получивший доступ к таблице видит кнопку «Экспорт», тогда пользователю
не
нужно
отправлять
в
запросе
уровень
доступа
и
проходить
дополнительную проверку. На листинге 2.1 имеем следующую реализацию:
Листинг 2.1. Кнопка вызова события
<button
class="btn
btn-sm
btn-outline-secondary"
onClick="document.location.href='excel.php'">Экспорт</button>
Листинг 2.1. Конец листинга
При нажатии на кнопку происходит вызов события onClick и
выполнение обработчика exel.php не покидая предыдущей страницы.
Название файла формируется из приставки «otchet_» она обозначает то, что
это отчёт об операции, и текущей даты для удобства ориентирования в уже
загруженных отчётах. В приложении 1 представлен сам обработчик события
onClick.
38
Для того чтобы проверить как система реализует возможность
неавторизованного
пользователя
ознакомимся
с
условием
проверки
авторизации и прав доступа листинг 2.2.
Листинг 2.2. Проверка авторизации
if (isset($_SESSION['login'])) {
$USER_USERNAME = $_SESSION['login'];
$admins = mysqli_query($connection, "SELECT id_position_fk FROM users
WHERE user_login = '$USER_USERNAME'");
$id_admins = mysqli_fetch_array($admins);
if ($id_admins['id_position_fk'] == 1) {
//Информация доступна только пользователям с должностью
«Администратор».}
elseif (empty($_SESSION['login']) || empty($_SESSION['id']))
{ //Здесь все, что может видеть неавторизованный пользователь.}
else {//Информация для остальных пользователей системы}
Листинг 2.2. Конец листинга
В начале листинга получаем значение поля login с формы авторизации,
затем создаем переменную, в которую занесём результат запроса, а именно
номер должности id_position_fk, который соответствует нашему login. Далее
следует проверка на значение хранящиеся в переменной и если значение
равно единице, то в теле этого условия будет отображена информация
предназначенная для пользователей с правами «Администратор». В случае
если значение из переменной не соответствует переменной идёт проверка
следующего условия, в котором при отсутствии принимаемых данных
неавторизованные
авторизации.
пользователи
будут
перенаправлены
на
страницу
39
В последнем же условии, которое применимо только к главной
странице, рассматриваем авторизованных пользователей, но не имеющих
прав администратора.
В листинге 2.3 отобразим кнопку выхода, в нём происходит удаление
всех переменных в сессии и перенаправление на страницу авторизации.
Листинг 2.3. Обработчик кнопки «Выход»
<?php
SESSION_START();
unset($_SESSION['password']);
unset($_SESSION['login']);
unset($_SESSION['id_users']);
header("Location:http://inventory/log/login.php");
?>
Листинг 3.2. Конец листинга
40
Глава 3. ИСПЫТАНИЯ
3.1 Программа и методика испытаний
Объектом испытаний, рассматриваемым в данной главе, является ранее
спроектированная
и
разработанная
«Автоматизированная
система
инвентаризации оборудования ООО Белая птица». По сфере применения
данная информационная система является информационной системой
обработки данных.
Целью испытаний информационной системы являются проверка ее
работоспособности, а так же ее соответствие указанным в первой главе
требованиям к автоматизированной системе.
Полный
перечень
требований
к
автоматизированной
системе
перечислен в третьем разделе первой главы, однако ключевыми пунктами,
требующими установки соответствия, являются следующие:
1.
Предоставлять пользователям возможность экспортировать
данные, которые им отображены с таблицы, в документ;
2.
Предоставлять пользователям информации о системе и её
возможностях при входе в систему;
3.
Реализация возможности для пользователя связаться с
администратором ресурса при необходимости через электронную почту;
4.
Реализовать возможность хранения, изменения, удаления и
добавления данных в различные таблицы в зависимости от прав доступа
конкретного пользователя;
5.
Реализация возможности производить инвентаризацию человеку
как ответственному по отделу, так и кладовщику для корректировки баланса;
6.
Защита базы данных от попыток несанкционированного доступа
к хранимым данным.
41
Исходя из приведенных выше требований - был разработан следующий
алгоритм для проведения испытаний автоматизированной системы:
1
Тестирование возможностей системы для неавторизованного
пользователя.
1.1
Запустить информационную систему.
1.2
При попытке что-либо сделать обработчик отправит на окно
входа в систему.
1.3
Используя
окно
входа
нажать
на
кнопку
«Заявка
на
регистрацию».
1.4
Заполнить форму состоящую из ФИО, внутреннего номера
телефона, электронной почты.
1.5
Нажать на кнопку отправить и подождать рассмотрение заявки
на регистрацию администратором системы.
1.6
При
получении
данных
для
входа
зайти
на
страницу
авторизации.
1.7
Ввести полученные данные в
подсвеченные поля «Имя
пользователя» и «Пароль».
1.8
Нажать на кнопку «Войти».
2
Тестирование
возможностей
системы
для
авторизованного
пользователя с правами «Администратор».
2.1
Авторизоваться на сайте с помощью заранее известной учетной
записи, имеющей права доступа администратора, заполнив поля формы на
странице авторизации: логин, пароль.
2.2
Убедиться в том, что теперь пользовать имеет доступ к странице
«Панель администратора» и возможность перейти к ней отображена в меню.
2.3
Для создания новой записи в таблице «Пользователи» выбрать
«Регистрация пользователя».
2.4
Заполнить
пользователя.
требуемые
данные
для
добавления
нового
42
2.5 Убедиться в том, что использовать систему могут только
сотрудники и в зависимости прав доступа от должности сотрудника.
2.6
Отправить сотруднику данные для входа в учётную запись на
почту.
2.7
Нажать на кнопку «Удалить» для удаления записи с таблицы.
2.8
Нажать на кнопку «Изменить» для редактирования записи в
таблице.
2.9
Изменить должность, а с ними и права доступа для пользователя
изменившего должность.
2.10 Изменить пароль пользователю при его утере.
2.11 Перейти к таблице «Помещения».
2.12 Для добавления нового помещения нажать на кнопку «Добавить»
вверху таблицы.
2.13 Для сохранения данных из таблицы на компьютер нажать на
кнопку «Экспорт» вверху таблицы.
2.14 Нажать на поле в верхней части страницы в строке «Поиск».
2.15 Для поиска по улице, номеру или размеру помещения ввести
первые буквы слова или цифру.
2.16 Нажать на кнопку «Выйти» в правом верхнем углу страницы.
3
Тестирование
возможностей
системы
для
авторизованного
пользователя с правами «Кладовщик» ранее созданного при выполнении
пунктов 2.3-2.6.
3.1
При
входе
в
систему
выбрать
из
доступных
разделов
«Операции».
3.2
Выбрать таблицу «Операции».
3.3
Нажать на кнопку изменить и внести новое значение, при этом
указав тип операции: «Приём», «Выдача», «Излишки», «Недостача» или
«Списание».
3.4
Указать в операции отдел, дату, оборудование и количество
оборудования в зависимости от операции.
43
3.5
Нажать на кнопку «Экспорт», чтобы сохранить результаты
операций на компьютер.
3.6
Выбрать из доступных разделов пункт «Номенклатура и
оборудование».
3.7
Выбрать таблицу «Оборудование».
3.8
Нажать
на
кнопку
«Добавить»,
чтобы
добавить
новую
номенклатуру.
3.9
Внести
значения:
«Артикул»,
«Название»,
«Цена»,
«Тип
оборудования», «Вид оборудования», «Цену» и указать помещение из
выпадающего списка в пункте «Помещение».
3.10 Нажать на кнопку «Экспорт» в верхней части таблицы, чтобы
выполнить сохранение результатов на компьютер.
3.11 Нажать на кнопку «Выйти» в правом верхнем углу страницы.
4
Тестирование
возможностей
системы
для
авторизованного
пользователя с правами «Ответственный» ранее созданного при выполнении
пунктов 2.3-2.6.
4.1
При входе в систему выбрать из доступных пунктов меню раздел
«Операции».
4.2
Выбрать таблицу «Операции» и как в ранее выполненных
пунктах 3.7 – 3.9 повторить их.
4.3
Нажать на кнопку «Экспорт», чтобы сохранить результаты
операций на компьютер.
3.2 Результаты испытания автоматизированной системы
Начать проведение испытаний следует с тестирования возможностей
системы для неавторизованного пользователя.
Первым делом запускаем систему, для этого в адресной строке
браузера вводим адрес страницы. После того как главная страница сайта
загрузилась, видим переадресацию с главной страницы на страницу
44
авторизации, потому что система предприятия не может давать доступ к
главной странице и пунктам меню, человеку который не имеет отношение к
организации. В системе предусмотрено оставлять
за собой отчётность о
выполнении операций посредством. Главная страница не загружаясь
проверила авторизован ли пользователь и вывела сообщение. Работа главной
страницы изображена на рис. 3.1.
Рис. 3.1. Сообщение незарегистрированному пользователю
При отсутствии переданных в условие проверки данных из формы
авторизации происходит переадресация на страницу авторизации.
На рис. 3.2 рассмотрим вкладку «Работа с таблицами», где
исключительно администратор может производить изменения во всех
таблицах.
45
Рис. 3.2. Работа с таблицами
На рисунке видно 2 таблицы, последняя из которых отображена менее
чем на половину, но можем наблюдать такие колонки как «Удалить» и
«Изменить» в каждой из таблиц, в верхней части страницы есть «живой
поиск», который при наборе запроса динамически отображает имеющиеся
совпадения с находящимися в базе записями.
Для начала протестируем поиск по имеющемуся в таблице полю
«Улица», рис. 3.3.
46
Рис. 3.3. Работа поиска
Как видно при запросе «Щ» обработчик вывел результат – «Щорса»,
что позволит осуществлять поиск и экономить время в поиске значений
данных из таблицы, запрос происходит динамически, без перезагрузки
страницы, с помощью технологии Ajax.
Далее рассмотрим возможность добавления данных в таблицу на
примере таблицы «Помещения». Внесём в таблицу 8 – размер помещения,
«Некрасова» – улица, на которой находится помещение и 17 - номер дома,
адрес помещения рис. 3.4.
47
Рис. 3.4. Окно добавления помещения в таблицу
На
рисунке
изображена
форма
всплывающего
окна,
которая
срабатывает при нажатии на кнопку «Добавить запись». При нажатии на
кнопку «Добавить» данные из формы отправляются в PHP обработчик,
который содержит запрос на добавление данных в таблицу «Помещения».
Результат работы формы «Добавить запись» изображён на рис. 3.5
48
Рис. 3.5. Результат выполнения запроса
Рассмотрим удаление записи из таблицы на примере внесённой записи
в таблицу «Помещения» рис. 3.6.
Рис. 3.6. Результат удаления данных из таблицы «Помещения»
49
На рисунке можем видеть отсутствие ранее добавленной записи. В
результате можем прийти к выводу, обработчик удалил нужную запись и
запрос был построен правильно.
Рассмотрим авторизацию пользователя с логином admin и правами
пользователя администратор (рис. 3.7).
Рис.3.7. Окно авторизации
Можем видеть, что для регистрации пользователя отсутствует
возможность регистрации самостоятельно, а только при подаче заявки.
Рассмотрим пример подачи заявки после отображения меню с правами
администратора.
После нажатия кнопки «Войти» пользователь попадает на главную
страницу сайта, где отображены все доступные пункты меню, для
пользователя с этим правом доступа открыты все пункты, рис. 3.8. При
передаче логина из формы входа на главную страницу происходит сравнение
соответствия логина и правд доступа администратора и т.д. Подробнее
алгоритм разграничения прав пользователей описан во второй главе.
50
Рис. 3.8. Меню сайта для пользователя с правами доступа
«Администратор»
На рисунке можем видеть, что администратор может включать
обязанности других пользователей системы, именно от него зависит
актуальность информации о каждой таблице.
На рис. 3.9 будет рассмотрена подача заявки на регистрацию
пользователем.
Рис. 3.9. Заявка на регистрацию
51
Для
регистрации
нового
пользователя
в
системе предприятия
предусмотрен контроль данного процесса непосредственно администрацией
ресурса, так как ресурс не является общедоступным для каждого
пользователя интернет, чтобы пройти регистрацию нужно заполнить форму
состоящую из ФИО, номера телефона, который находится на рабочем месте
сотрудника и электронной почте. После отправки формы данные приходят на
электронную почту администратора (рис. 3.10). Администратор добавляет
пользователя и отправляет на указанный электронный адрес данные для
входа.
Рис. 3.10. Данные заполненной формы
Далее будет рассмотрена страница с операциями над оборудованием
(рис. 3.11).
52
Рис. 3.11. Операции с оборудованием
На рисунке можем видеть примеры произведённых операций, а именно
номер операции, который обозначает порядковый номер произведения
операций, ФИО человека, который произвел операцию, отдел за который
ответственный
данный
человек,
название
оборудования
конкретной
операции, дату произведения операции, типы операций, которые были
рассмотрены в требованиях к функциональным возможностям и количество
оборудованиях, которое использовалось для корректировки баланса. При
нажатии на кнопку «Экспорт» возможно сохранить данные операций на
персональный компьютер. Пример экспорта будет рассмотрен на следующем
рисунке.
Приведём пример выполнения экспорта с таблицы в xls документ
«Помещения»(рис. 3.12) с помощью описанного алгоритма, в приложении к
работе.
53
Рис. 3.12. Экспорт значений из таблицы
При нажатии на кнопку «Экспорт» была получена возможность
сохранить файл в xls формате, содержимое файла будет изображено на рис.
3.13.
Рис. 3.13. Содержимое файла xls
Можем видеть, что содержимое файла соответствует содержимому
рассматриваемому в течении всех испытаний.
54
На примере тестирования таблицы удалось убедиться, что
автоматизированная система инвентаризации оборудования полностью
соответствует заявленным требованиям из первой главы и может быть
использована для внедрения в организацию.
55
ЗАКЛЮЧЕНИЕ
В ходе работы изучены теоретические сведенья и были получены
практические навыки в организации и автоматизации инвентаризации
оборудования.
Кроме того был произведен тщательный анализ работы предприятия и
были выявлены проблемы влияющие на низкую производительность в
отношении инвентаризации оборудования и его складского учёта и
теоретические материалы на данную тему. Были изучены существующие в
данной сфере разработки, их положительные стороны, а так же в случае с
данным предприятием недостатки и непригодность для внедрения этих
готовых решений в нём.
Кроме этого были рассмотрены основные проблемы, с которыми
сталкиваются обычные пользователи подобных систем, которые не знакомы
с бухгалтерией и учётом, с различным созданием актов и отчётов. В связи с
этим, была разработана автоматизированная система, которая удовлетворяет
требованиям предприятия и решает следующие поставленные задачи:
1.
Возможность экспортировать данные, которые отображены
пользователям в xls документ;
2.
Возможность хранения, изменения, удаления и добавления
данных в различные таблицы в зависимости от прав доступа конкретного
пользователя;
3.
Возможность производить инвентаризацию для корректировки
баланса;
4.
Авторизация и разграничение прав пользователей.
Разработанное
приложение
протестировано
с
учетом
вопросов
безопасности данных пользователей. И является готовым программным
продуктом, пригодным для использования в качестве инструмента для
автоматизации процессов инвентаризации оборудования.
56
СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ
Белая птица // Новости компании[Электронный ресурс]. – URL:
1.
http://www.belaya-ptica.ru/ (дата обращения: 14.10.2017).
Сеть деловых коммуникаций // Деятельность организации ООО
2.
Белая птица [Электронный ресурс]. – URL: https://sbis.ru/ (дата обращения:
24.10.2017).
Международный экономический форум 2013 // Особенности
3.
проведения инвентаризации основных средств [Электронный ресурс]. – URL:
http://be5.biz/ekonomika1/r2013/2375.htm (дата обращения: 03.11.2017).
Бухгалтерский финансовый учет/ В.Г
4.
Широбоков, З.М.
Грибанова З.М.// 2008. - 672 с.
Бухгалтерский Финансовый учет / И.И Бочкарева И.И., Г.Г.
5.
Левина Г.Г.// 2010. - 413 с.
–
6.
Бухгалтерский финансовый учет/ И.В. Анциферова// 2009. - 556 с.
7.
Актив софт // Система "1С: Предприятие" [Электронный ресурс].
URL:
http://active-soft.ru/programmnye-produkty
(дата
обращения:
15.11.2017).
8.
Центр продаж 1С // Обзор системы "1С: Предприятие"
[Электронный ресурс]. – URL: http://asp-1c.ru/products/1c-enterprise/review/
(дата обращения: 23.11.2017).
9.
Инновационный фонд развития информационных технологий //
Учет компьютеров с Hardware Inspector [Электронный ресурс]. – URL:
http://ifreet.ru/uchet-kompyuterov-s-hardware-inspector/
(дата
обращения:
15.12.2017).
10.
учёт
Программы для компьютера // Hardware Inspector – инвентарный
компьютеров
и
ПО
[Электронный
URL:https://www.softkey.ru/catalog/programs/1898/hardwareinspector#.WyFe1kjRDIV (дата обращения: 18.12.2017).
ресурс].
–
57
Компьютеры, комплектующие, контроль доступа // Hardware
11.
Inspector
ресурс].
[Электронный
–
URL:
https://www.softkey.ru/catalog/programs/1898/hardwareinspector#.WyFe1kjRDIV (дата обращения: 20.12.2017).
Учёт компьютеров // Учёт компьютеров с Hardware Inspector
12.
ресурс].
[Электронный
–
URL:
http://www.hwinspector.com/ru/products/hardware_inspector/ (дата обращения:
22.12.2017).
13.
Учёт
[Электронный
компьютеров
ресурс].
–
//
URL:
Инвентаризация
компьютеров
http://it-invent.ru/Description.aspx
(дата
обращения: 07.01.2018).
Студенческая библиотека онлайн // Программа «IT-Invert»
14.
ресурс].
[Электронный
–
URL:
http://studbooks.net/2226091/informatika/programma_invent (дата обращения:
10.01.2018).
Инструменты для публикации и обмена информации // Лекция 1.
15.
Компоненты
PHP-приложения
[Электронный
ресурс].
–
URL:
http://docplayer.ru/29128116-Lekciya-1-komponenty-php-prilozheniya.html (дата
обращения: 25.01.2018).
16.
Инструменты для публикации и обмена информации // Изучаем
PHP и MySQL [Электронный ресурс]. – URL: http://docplayer.ru/26165958Learning-php-and-mysql.html (дата обращения: 27.01.2018).
Разработка WEB- сайтов // Введение в PHP [Электронный
17.
ресурс].
–
URL:
http://laptev-alex.ru/index.php/vvedenie-v-php
(дата
обращения: 29.01.2018).
18.
Бесплатная
интернет
библиотека//
PHP-приложения
[Электронный ресурс]. – URL: http://lib.knigi-x.ru/23istoriya/775784-1-phpprilozheniya-dlya-sozdaniya-razvitiya-dinamicheskih-veb-stranic-vampotrebuetsya-ponimat.php (дата обращения: 02.02.2018).
58
19.
Никсон Р. Создаем динамические веб-сайты с помощью PHP,
MySQL, JavaScript, CSS и HTML5. 3-е издание, 2015. – 688 с.
20.
Бейли Л., Моррисон М. Изучаем PHP и MySQL, 2010. – 768 с.
21.
Котеров Д., Симдянов И. PHP 7, 2017. – 1088 с.
22.
Когаловский М. Перспективные технологии информационных
систем, 2003. — 288 с.
23.
Когаловский М. Энциклопедия технологий баз данных, 2002. —
24.
Гарсиа-Молина Г., Ульман Дж., Уидом Дж. Системы баз данных.
800 с.
Полный курс, 2003. — 1088 с.
25.
Коннолли Т., Бегг К. Базы данных. Проектирование, реализация
и сопровождение. Теория и практика, 2003 – 1436с.
59
ПРИЛОЖЕНИЕ
mail.php
<?php
$recepient = "crash96z@rambler.ru";
$sitename = "Система инвентаризации оборудования";
$name = trim($_POST["name"]);
$phone = trim($_POST["phone"]);
$email = trim($_POST["email"]);
$message = "ФИО: $name \nТелефон: $phone \nEmail: $email";
$pagetitle = "Заявка на регистрацию пользователя с ресурса \"$sitename\"";
mail($recepient, $pagetitle, $message, "Content-type: text/plain; charset=\"utf8\"\n From: $recepient");
?>
common.js
$(document).ready(function() {
$("#form").submit(function() {
$.ajax({
type: "POST",
url: "mail.php",
data: $(this).serialize()
}).done(function() {
$(this).find("input").val("");
alert("Спасибо за заявку! Скоро мы с вами свяжемся.");
$("#form").trigger("reset");
60
});
return false;
});
});
tables.php
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrinkto-fit=no">
<meta name="description" content="">
<meta name="author" content="">
<link rel="icon" href="../../../../favicon.ico">
<title>Система инвентаризации оборудования</title>
<link href="bootstrap.min.css" rel="stylesheet">
<link href="dashboard.css" rel="stylesheet">
</head>
<body>
<?php
echo '<div class="container">
<nav class="navbar navbar-dark fixed-top bg-dark flex-md-nowrap p-0 shadow">
<a class="navbar-brand col-sm-3 col-md-2 mr-0" href="#">Белая птица</a>
<input class="form-control" type="text" name="referal" placeholder="Поиск по
отделам" value="" autocomplete="off">
<ul class="navbar-nav px-3">
<li class="nav-item text-nowrap">
61
<a class="nav-link" href="#">Выйти</a>
</li>
</ul>
</nav>
<div class="search_result" align="center"></ul>
</div>';
?>
<script src="jquery-1.5.1.min.js"></script>
<script src="searchroom.js"></script>
<div class="container-fluid">
<div class="row">
<nav class="col-md-2 d-none d-md-block bg-light sidebar">
<div class="sidebar-sticky">
<ul class="nav flex-column">
<li class="nav-item">
<a class="nav-link active" href="#">
<span data-feather="home"></span>
Главная страница <span class="sr-only">(current)</span>
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">
<span data-feather="file-text"></span>
Номенклатура и оборудование
</a>
62
</li>
<li class="nav-item">
<a class="nav-link" href="#">
<span data-feather="file-text"></span>
Операции
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">
<span data-feather="users"></span>
Панель администратора
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">
<span data-feather="layers"></span>
Работа с таблицами
</a>
</li>
</ul>
</div>
</nav>
<main role="main" class="col-md-9 ml-sm-auto col-lg-10 px-4">
<div class="d-flex justify-content-between flex-wrap flex-md-nowrap
align-items-center pt-3 pb-2 mb-3 border-bottom">
<h1 class="h2">Заявки</h1>
63
<div class="btn-toolbar mb-2 mb-md-0">
<div class="btn-group mr-2">
<button class="btn btn-sm btn-outline-secondary" ">Добавить
запись</button>
<button class="btn btn-sm btn-outline-secondary"
onClick="document.location.href='excel.php'">Экспорт</button>
</div>
</div>
</div>
<?php
include "connect.php";
$sql= "SELECT operations.id_operations, users.surname, users.name,
users.patronimic, division.name_division, equipment.name, operations.date,
operations.type_operation, operations.quantity FROM users, division, equipment,
operations WHERE users.id_users = operations.id_user_fk AND
division.id_division = operations.id_division_fk AND equipment.id_equipment =
operations.id_equipment_fk ORDER BY operations.id_operations";
$res = $mysqli->query($sql);
echo ' <div class="table-responsive">';
echo ' <table class="table table-striped table-sm">';
echo '<thead>'.
'<tr><th>Номер операции</th>' .
'<th>Фамилия</th>' .
'<th>Имя</th>' .
'<th>Отчество</th>' .
'<th>Отдел</th>' .
'<th>Оборудование</th>' .
'<th>Дата</th>' .
64
'<th>Тип операции</th>' .
'<th>Количество</th>' .
'</tr>'.
'</thead>';
while ($row = $res -> fetch_array()) {
echo "<tbody>";
"<tr>";
echo "<td>$row[0]</td>";
echo "<td>$row[1]</td>";
echo "<td>$row[2]</td>";
echo "<td>$row[3]</td>";
echo "<td>$row[4]</td>";
echo "<td>$row[5]</td>";
echo "<td>$row[6]</td>";
echo "<td>$row[7]</td>";
echo "<td>$row[8]</td>";
echo "</tr>";
"</tbody>";}
?>
</table>
</div>
</main>
</div>
</div>
<script src="popper.min.js"></script>
65
<script src="bootstrap.min.js"></script>
<script src="https://unpkg.com/feather-icons/dist/feather.min.js"></script>
<script>
feather.replace()
</script>
</body>
</html>
operations.php
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrinkto-fit=no">
<meta name="description" content="">
<meta name="author" content="">
<link rel="icon" href="../../../../favicon.ico">
<title>Система инвентаризации оборудования</title>
<link href="bootstrap.min.css" rel="stylesheet">
<link href="dashboard.css" rel="stylesheet">
</head>
<body>
<?php
echo '<div class="container">
<nav class="navbar navbar-dark fixed-top bg-dark flex-md-nowrap p-0 shadow">
<a class="navbar-brand col-sm-3 col-md-2 mr-0" href="#">Белая птица</a>
66
<input class="form-control" type="text" name="referal" placeholder="Поиск по
отделам" value="" autocomplete="off">
<ul class="navbar-nav px-3">
<li class="nav-item text-nowrap">
<a class="nav-link" href="#">Выйти</a>
</li>
</ul>
</nav>
<div class="search_result" align="center"></ul>
</div>';
?>
<script src="jquery-1.5.1.min.js"></script>
<script src="searchroom.js"></script>
<div class="container-fluid">
<div class="row">
<nav class="col-md-2 d-none d-md-block bg-light sidebar">
<div class="sidebar-sticky">
<ul class="nav flex-column">
<li class="nav-item">
<a class="nav-link active" href="#">
<span data-feather="home"></span>
Главная страница <span class="sr-only">(current)</span>
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">
67
<span data-feather="file"></span>
Заявки
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">
<span data-feather="file-text"></span>
Номенклатура и оборудование
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">
<span data-feather="file-text"></span>
Операции
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">
<span data-feather="users"></span>
Панель администратора
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">
<span data-feather="layers"></span>
68
Работа с таблицами
</a>
</li>
</ul>
</div>
</nav>
<main role="main" class="col-md-9 ml-sm-auto col-lg-10 px-4">
<div class="d-flex justify-content-between flex-wrap flex-md-nowrap
align-items-center pt-3 pb-2 mb-3 border-bottom">
<h1 class="h2">Операции</h1>
<div class="btn-toolbar mb-2 mb-md-0">
<div class="btn-group mr-2">
<button class="btn btn-sm btn-outline-secondary" ">Добавить
запись</button>
<button class="btn btn-sm btn-outline-secondary"
onClick="document.location.href='excel.php'">Экспорт</button>
</div>
</div>
</div>
<?php
include "connect.php";
$sql= "SELECT operations.id_operations, users.surname, users.name,
users.patronimic, division.name_division, equipment.name, operations.date,
operations.type_operation, operations.quantity FROM users, division, equipment,
operations WHERE users.id_users = operations.id_user_fk AND
division.id_division = operations.id_division_fk AND equipment.id_equipment =
operations.id_equipment_fk ORDER BY operations.id_operations";
69
$res = $mysqli->query($sql);
echo ' <div class="table-responsive">';
echo ' <table class="table table-striped table-sm">';
echo '<thead>'.
'<tr><th>Номер операции</th>' .
'<th>Фамилия</th>' .
'<th>Имя</th>' .
'<th>Отчество</th>' .
'<th>Отдел</th>' .
'<th>Оборудование</th>' .
'<th>Дата</th>' .
'<th>Тип операции</th>' .
'<th>Количество</th>' .
'</tr>'.
'</thead>';
while ($row = $res -> fetch_array()) {
echo "<tbody>";
"<tr>";
echo "<td>$row[0]</td>";
echo "<td>$row[1]</td>";
echo "<td>$row[2]</td>";
echo "<td>$row[3]</td>";
echo "<td>$row[4]</td>";
echo "<td>$row[5]</td>";
echo "<td>$row[6]</td>";
70
echo "<td>$row[7]</td>";
echo "<td>$row[8]</td>";
echo "</tr>";
"</tbody>";}
?>
</table>
</div>
</main>
</div>
</div>
<script src="popper.min.js"></script>
<script src="bootstrap.min.js"></script>
<script src="https://unpkg.com/feather-icons/dist/feather.min.js"></script>
<script>
feather.replace()
</script>
</body>
</html>
del.php
<?php
include "connect.php";
if ($id = $_GET['del1']){
header("Location:http://inventory/room.php");
}
$sql= "DELETE FROM room WHERE id_room = $id";
71
$res = $mysqli->query($sql);
?>
ins.php
<?php
include "connect.php";
$add1=$_POST['new_class'];
$add2=$_POST['new_name'];
$add3=$_POST['new_year'];
if ($_REQUEST['add']) {
header("Location:http://inventory/room.php");
}
$sql= "INSERT INTO room(size, street, building) VALUES ('$add1', '$add2',
'$add3')";
$res = $mysqli->query($sql);
?>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
upd.php
<?php
include "connect.php";
if ($_REQUEST['upd2']){
header("Location:http://inventory/room.php");
}
72
$upd_num = $_GET['upd_id1'];
$upd1=$_POST['new_class'];
$upd2=$_POST['new_number'];
$upd3=$_POST['new_year'];
$sql= "UPDATE room SET size = '$upd1', street = '$upd2', building = '$upd3'
WHERE id_room = $upd_num";
$res = $mysqli->query($sql);
echo '<div class = "blok">';
echo '<div class = "main">';
echo '<p align = "center" >Изменение</p>';
echo '<form action = "upd_class.php?upd_id1='.$_GET['upd_id1'].'" method =
"POST">';
echo '<div class = "field">';
echo '<p><label for="ln">Размер:</label> <input type="text" name="new_class"
/></p>';
echo '</div>';
echo '<div class = "field">';
echo '<p><label for="n">Улица</label><input type="text" id = "n"
name="new_number" /></p>';
echo '</div>';
echo '<div class = "field">';
echo '<p><label for="n">Дом</label><input type="text" name="new_year"
/></p>';
echo '<p><input type="submit" name = "upd2" value = "Изменить"/></p>';
echo '</form>';
echo '</div>';
echo '</div>';
73
?>
</body>
</html>
excel.php
<?php
function cleanData(&$str)
{
$str = preg_replace("/\t/", "\\t", $str);
$str = preg_replace("/\r?\n/", "\\n", $str);
if(strstr($str, '"')) $str = '"' . str_replace('"', '""', $str) . '"';
}
$filename = "otchet_" . date('Ymd') . ".xls";
header("Content-Disposition: attachment; filename=\"$filename\"");
header("Content-Type: application/vnd.ms-excel");
$connection = mysqli_connect('localhost', 'mysql', 'mysql', 'inventory') or
die(mysqli_error($connection));
mysqli_query($connection,'SET character_set_database = cp1251_general_ci');
mysqli_query ($connection,"SET NAMES 'cp1251'");
$flag = false;
$result = mysqli_query($connection,"SELECT * FROM room")
or die('Ошибка соединения с базой!');
$arr = array('№', 'Размер', 'Улица', 'Дом');
echo implode("\t", $arr) . "\r\n";
while(false !== ($row = mysqli_fetch_assoc($result))) {
array_walk($row, 'cleanData');
echo implode("\t", array_values($row)) . "\r\n";
74
}
exit;
?>
search.php
<?php
define("DB_HOST","localhost");
define("DB_NAME","inventory"); //Имя базы
define("DB_USER","mysql"); //Пользователь
define("DB_PASSWORD","mysql"); //Пароль
define("PREFIX",""); //Префикс если нужно
$mysqli = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
$mysqli -> query("SET NAMES 'utf8'") or die ("Ошибка соединения с базой!");
if(!empty($_POST["referal"]))
{ $referal =
trim(strip_tags(stripcslashes(htmlspecialchars($_POST["referal"]))));
$db_referal = $mysqli -> query("SELECT * FROM ".PREFIX." room WHERE
street LIKE '%$referal%' OR id_room LIKE '%$referal%' OR size LIKE
'%$referal%' OR building LIKE '%$referal%'")
or die('Ошибка №'.__LINE__.'<br>Обратитесь к администратору сайта
пожалуйста, сообщив номер ошибки.');
echo "<br><br><div class='ramka_top1'><table border=1 width=30%>";
echo "<tr><td>№</td><td>Размер
кв.м</td><td>Улица</td><td>Дом</td><td>Удалить</td><td>Изменить</td><
/tr>";
while ($row = $db_referal -> fetch_array()) {
echo "<tr>";
echo "<td>$row[0]</td>";
75
echo "<td>$row[1]</td>";
echo "<td>$row[2]</td>";
echo "<td>$row[3]</td>";
echo "<td><a name=\"del\"
href=\"del.php?del1=".$row[0]."\">Удалить</a></td>\n";
echo "<td><a name=\"upd\"
href=\"upd_class.php?upd_id1=".$row[0]."\">Изменить</a></td>\n";
echo "</tr>"; }
}
?>
search.js
$(function(){
$('.form-control').bind("change keyup input click", function() {
if(this.value.length >= 1){
$.ajax({
type: 'post',
url: "searchroom.php", //Путь к обработчику
data: {'referal':this.value},
response: 'text',
success: function(data){
$(".search_result").html(data).fadeIn();
})
}
})
$(".search_result").hover(function(){
}
76
$(".form-control").blur(); //Убираем фокус с input
})
$(".search_result").on("click", "li", function(){
s_user = $(this).text();
$('.form-control').val(s_user).attr('disabled', 'disabled'); //деактивируем input,
если нужно
$(".search_result").fadeOut();
})
})
77
Выпускная квалификационная работа выполнена мной совершенно самостоятельно.
Все использованные в работе материалы и концепции из опубликованной научной
литературы и других источников имеют ссылки на них.
«___» ________________ _____ г.
__________________________
(подпись)
_____________________
(Ф.И.О.)
Отзывы:
Авторизуйтесь, чтобы оставить отзыв