Разработка приложения "Фрахт"

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

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

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

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

Размещено на http://www.allbest.ru/

Оглавление

  • Введение
  • 1. Характеристика предприятия
    • 1.1 Структура предприятия
    • 1.2 Вид деятельности
    • 1.3 Программное обеспечение, используемое на предприятии
    • 1.4 Компьютерная сеть
  • 2. Системное проектирование
  • 3. Создание базы данных
  • 4. Разработка программных модулей системы "Фрахт"
    • 4.1 Работа с пользователями
      • 4.1.1 Файлы join.php и dblib.inc
      • 4.1.2 Файл updateclub.php
      • 4.1.3 Файл membersmenu.php
      • 4.1.4 Файл login.php
      • 4.1.5 Файл updateevent.php
      • 4.1.6 Файл reviewevents.php
    • 4.2 Экран предложений
      • 4.2.1 Файл viewevents.php
      • 4.2.2 Файл viewclubs.php
      • 4.2.3 Файл viewclub.php
      • 4.2.4 Файл viewevent.php
  • 5. Руководство пользователя
  • 6. Технико-экономическое обоснование
    • 6.1 Расчет экономической эффективности создания и внедрения программного продукта
    • 6.2 Расчет годовых эксплуатационных расходов при ручном методе решения управленческой задачи
    • 6.3 Расчет годовых текущих затрат, связанных с эксплуатацией программного продукта
    • 6.4 Расчет совокупных единовременных затрат на создание программного продукта
  • 7. Производственная и экологическая безопасность
    • 7.1 Общие требования
    • 7.2 Производственная санитария
    • 7.3 Техника безопасности
      • 7.3.1 Электробезопасность
      • 7.3.2 Шум
      • 7.3.3 Излучение
    • 7.4 Пожарная безопасность помещения
  • Заключение
  • Список использованных источников
  • Приложение
  • экспедиционный программный модуль фрахт
  • Введение
  • Экспедиционные компании как специфические коммерческие учреждения предоставляют клиентам разнообразные услуги, как правило, на платной основе. Появление значительного количества транспортно-экспедиционных компаний обуславливает конкуренцию между ними и, как следствие, в условиях современной экономической ситуации в республике происходит сокращение их численности - компании, не сумевшие правильно организовать свою деятельность, сокращают ее объемы или прекращают ее в принципе. Это обуславливает повышенный интерес таких организаций к анализу своей финансовой деятельности, пересмотру форм и методов управления своими операциями.
  • Состав и структура спектра оказываемых услуг современной экспедиционной компании весьма разнообразны и мобильны. Это связано с сезонными изменениями на рынке грузоперевозок, с нововведениями в таможенном и налоговом законодательстве. Таким образом, экспедиционным компаниям необходимо быстро реагировать на все события, происходящие на рынке грузоперевозок. В силу исторической традиции, основной функцией экспедиционных компаний является поиск свободного груза и, соответственно, транспорта для его перевозки. Чтобы оставаться конкурентоспособными, необходимо оперативно реагировать на требования, предъявляемые клиентами. Для этого необходимо быть в курсе актуальной и релевантной информации по поводу наличия свободного транспорта в разных странах, его виде и особенностях, об изменениях цен на грузоперевозки у конкурентов, снижении платежеспособности клиентов и т.п.
  • Таким образом, повышение скорости реакции на запросы заказчиков приводит к увеличению числа заказчиков и перевозчиков, что является одним из основных моментов при разработке стратегии и тактики поведения на рынке грузоперевозок.
  • Целью дипломной работы является выработка предложений и определение основных путей совершенствования деятельности экспедиционной компании, а также разработка программного продукта, позволяющего реализовать данные предложения.
  • Для достижения поставленной цели в работе ставятся следующие задачи:
  • · рассмотреть основные теоретические аспекты, связанные с понятием экспедиционной деятельности;
  • · определить цели и проблемы оценки качества экспедиционных услуг;
  • · на основе фактических данных проанализировать и оценить экспедиционные услуги, оказываемые предприятием;
  • · выработать предложения по улучшению качества оказываемых услуг;
  • · с учетом выработанных предложений, разработать экономически эффективный и конкурентоспособный программный продукт, позволяющий автоматизировать деятельность предприятия.
  • При выполнении дипломной работы предполагается изучить законодательную базу Республики Беларусь о безопасности и гигиене труда на предприятиях и в организациях. Основой для написания практической части послужит специализированная литература отечественных и зарубежных авторов в области создания программных продуктов, применимых при моделировании интерактивных автоматизированных систем.
  • Базой для проводимого в работе исследования будет информация, полученная в результате прохождения преддипломной практики и изучения непосредственной деятельности компании ООО "Еврофрахт".
  • 1. Характеристика предприятия
  • 1.1 Структура предприятия
  • ООО "Еврофрахт" - компания, которая появилась на белорусском рынке в 2001 году. Основным направлением функционирования является транспортно-экспедиционная деятельность. Компания представляет собой часть холдинга, состав которого выглядит следующим образом [13]:
  • · "Eurofreight Logistic Polska sp.z o.o", г. Варшава, г. Белосток (автоперевозки грузов, таможенное оформление, складская логистика в ЕС).
  • · ООО "Еврофрахт", г. Минск
  • · ООО "Еврофрахт-Брокер", ООО "Еврофрахт-Логистик", г. Москва (таможенное оформление на территории Российской Федерации, также сертификация и страхование). В ООО "Еврофрахт" г. Минск действуют 6 транспортных отделов, которые занимаются непосредственной работой с клиентами, перевозчиками, а также поиском грузов и транспорта. Штат каждого транспортного отдела составляют 3 человека: начальник транспортного отдела и два менеджера по организации международных грузоперевозок. Кроме того, существует отдел продаж, который занимается поиском новых клиентов и установлением торговых отношений, после чего передает их в транспортные отделы. Этот отдел состоит из четырех человек: начальника отдела и трех менеджеров по работе с клиентами. В компании также имеется отдел кадров и бухгалтерия. Для обеспечения нормального функционирования систем и сетей существует отдел оперативной поддержки, который представлен двумя системными администраторами. Для оказания юридических и нотариальных консультаций компания пользуется услугами консультанта, который также состоит в штате. Организуют, контролируют и руководят деятельностью компании директор и два его заместителя.
  • 1.2 Вид деятельности
  • Основным направлением деятельности компании является организация международных грузоперевозок с использованием всех видов транспорта. Одним из принципов работы является принципа "от двери до двери", что подразумевает под собой весь комплекс экспедиционных услуг от получения заказа до доставки груза непосредственно клиенту.
  • Одним из направлений развития "Еврофрахт" является предложение новых видов услуг, включая новые маршруты и направления. При этом главный акцент делается на качество предоставляемого продукта.

Основная задача - предоставить компаниям-клиентам доступ к широкому спектру услуг в сфере грузоперевозок и обеспечить для каждого наиболее подходящий тип обслуживания.

Приоритетами в работе компании "Еврофрахт" являются гибкий подход к нуждам и пожеланиям заказчиков, а так же лучшее соотношение цены и качества грузовых перевозок.

Сотрудники компании на любом этапе грузоперевозок дают клиентам консультации по интересующим вопросам. Экономической составляющей в работе является помощь клиентам в расчете стоимости грузовой перевозки, а также при оформлении необходимые документы (экспортных деклараций, товарно-транспортных накладных, счет-фактур и др.)

Одним из основных видов деятельности компании "Еврофрахт" г. Минск - международные грузовые автоперевозки. Компания предоставляет полный пакет услуг по доставке грузов из стран Западной Европы в Российскую Федерацию, Республику Беларусь, Украину и страны Азии.

ООО "Еврофрахт-Логистик" организует международные грузовые авиаперевозки во все регионы Российской Федерации и других стран мира. Тут также использует принцип "от двери до двери". На сегодняшний день среди клиентов компании наиболее востребованными являются авиаперевозки из Китая, стран Юго-Восточной Азии и США в Российскую Федерацию. Авиаперевозки грузов осуществляются чартерными рейсами авиакомпаний "Аэрофлот", "Lufthansa Cargo", "Air France", "Delta Airlines", "British Airways", "SwissAir" и др. Специалисты компании занимаются всем процессом подготовки груза к перевозке (от маркировки до переупаковки и взвешивания). Кроме того, компания:

· обеспечивает таможенное оформление;

· занимается товаросопроводительной документацией;

· оказывает помощь в страховании, получении сертификатов и т.д.;

Также "Еврофрахт-Логистик" занимается организацией морских грузоперевозок. Морские грузоперевозки - сложный процесс, в котором задействовано большое количество различных служб и отдельных сотрудников. Благодаря наличию контактов с компаниями-судовладельцами морские грузоперевозки осуществляются по оптимальным схемам, которые разрабатываются в "Еврофрахт-Логистик". В данной сфере предлагаются следующие виды услуг:

· морские грузоперевозки консолидированных грузов в 20- и 40-футовых контейнерах;

· сотрудничество с известными перевозчиками "P&O", "ZIM", "MSC", "CMA-CGM", "China-Shiping Container Lines Co.Ltd", "BSCS";

· работа в морских портах Котка (Финляндия), Хамина (Финляндия), Санкт-Петербург, Новороссийск, Астрахань, Владивосток, Находка, Одесса (Украина);

· морские перевозки негабаритных грузов;

· стивидорные работы, релизы, обеспечение возврата пустых контейнеров;

· фрахтование морских судов;

· морские грузоперевозки контейнеров на склад отправителя или прием контейнера по пломбе в порту;

· транзит контейнеров в Москву или другие города.

Также к перечню оказываемых услуг можно добавить мультимодальные перевозки.

Мультимодальные перевозки - это сочетание морского, железнодорожного, автомобильного и воздушного транспорта. Такие перевозки позволяет оперативно и экономично доставлять грузы по всему миру. Их использование оправдано при работе на межконтинентальных направлениях, когда необходим доступ в удаленные места, где одного вида транспорта недостаточно.

Одним из приоритетных направлений деятельности являются грузоперевозки из Китая. По большей части грузов доставляются в 20- и 40- футовых контейнерах из города или порта Республики в Российскую Федерацию, СНГ и ЕС. При осуществлении доставки грузов из Китая, компания занимается страхованием грузов и таможенным оформлением импортных грузов на таможенных терминалах различных российских городов (в т.ч. Москвы, Санкт-Петербурга, Новороссийска, Новосибирска, Находки, Владивостока и др.) При необходимости решаются вопросы с консолидацией, складированием и хранением грузов.

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

Предлагаемые "Еврофрахт-Логистик" программы страхования включают подготовку необходимых документов и заключение договоров страхования с соответствующими компаниями.

Кроме того оказываются услуги в сфере таможенного оформления товаров и грузов в Центральном, Северо-Западном и Южном округах Российской Федерации. Данным направлением деятельности занимаются квалифицированные специалисты в сфере таможенного дела. В данной области компания занимается:

1. Таможенным оформлением:

· импорта/экспорта,

· временного ввоза/вывоза,

· ввозом товаров "под ключ",

· получением лицензий: переработка на таможенной территории; переработка вне таможенной территории,

· получением разрешения на временный ввоз; временный вывоз,

· получением классификационного решения на уровне ЦТУ и ФТС России,

· предварительным расчетом и оптимизацией затрат по доставке и хранению грузов и таможенных платежей; получение заключений, разрешений, подтверждений и др., согласно направлений сотрудников таможенных служб, в вышестоящих таможенных органах на СТ-1, радиационный контроль, контроль стоимости товара, освобождения от НДС, кодов ТН ВЭД, составление предварительной ГТД и т.д.

2. Оказанием консультационных услуг в сфере ВЭД:

· экспертизой внешнеэкономических контрактов,

· помощью в составлении внешнеэкономических контрактов,

· юридическими консультациями по таможенному оформлению.

3. Сертификацией:

· ветеринарных лицензий,

· оформлением разрешений на ввоз-вывоз,

· предоставлением сертификатов соответствия,

· санитарно-эпидемиологическое заключений,

· отказных писем.

1.3 Программное обеспечение, используемое на предприятии

В ООО "Еврофрахт" рабочее место каждого сотрудника оборудовано компьютером, принтером, факсом и телефоном. На всех персональных компьютерах, за исключением сервера, установлена операционная система Microsoft Windows XP, пакет Microsoft Office 2003, антивирус Avast 4 Professional, а также программа для работы с факсимильными сообщениями ActiveFax client. Для передачи сообщений посредством локальной сети используется программа Fchat. Для общения с клиентами, перевозчиками и между сотрудниками используются программы ICQ, Skype, JustVoip, а также Outlook Express для электронной переписки. Для автоматизации учета (бухгалтерского и управленческого) грузоперевозок используется программа 1С. Предприятие, которая установлена и настроена на компьютерах в отделе бухгалтерии.

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

1.4 Компьютерная сеть

Компьютерная сеть на ООО "Еврофрахт" включает 31 компьютер, 1 сервер, а также нескольких сетевых принтеров. Они объединены в сеть при помощи маршрутизаторов и коммутаторов (свитчей). На сервере установлена операционная система Microsoft Windows 2000 Server, антивирус Nod 32, серверная часть 1С. Предприятие, установлена программа ActiveFax server, тут также хранятся документы, договоры, необходимые для работы всем сотрудникам компании, база данных 1С. Предприятие, база данных клиентов и перевозчиков. Сервер подключен к Интернет, что обеспечивает доступом в Интернет все компьютеры сети.

На чертеже №1, прилагаемом к дипломному проекту показана принципиальная схема ЛВС ООО "Еврофрахт".

2. Системное проектирование

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

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

На чертеже №2, прилагаемом к дипломному проекту показана структура такого приложения.

Пользователям необходимо начинать со страницы join.php, где можно будет зарегистрироваться, для чего потребуется ввести имя и пароль. В том случае, если выбранное ими имя еще не использовалось, программа переадресует их к форме updateclub.php, где можно будет ввести информацию о своей компании. Пока эта форма не будет заполнена, пользователи не будут иметь возможность вносить свои предложения. После того как пользователь регистрируется, осуществляется переход на страницу меню (membersmenu.php), с которой можно вызывать утилиты, предназначенные для зарегистрированных пользователей.

Если пользователь уже зарегистрирован, он сначала попадает на страницу ввода имени и пароля (login.php). После проверки имени и пароля его направят прямо на страницу membersmenu.php.

На странице меню пользователи будут иметь возможность добавлять новые предложения (updateevent.php) и просматривать список уже существующих (reviewevents.php). Кроме того, пользователи смогут в любой момент изменить информацию о компании (updateclub.php). Все пользователи будут иметь возможность с одной страницы (viewevents.php) просмотреть список предложений по дням, месяцам, годам, стране отправления и стране назначения. Кроме того, пользователи смогут просмотреть список компаний в соответствии с их страной регистрации на странице viewclubs.php. При щелчке на названии компании или предложении пользователи получат более детальную информацию со страниц viewevent.php и viewclub.php соответственно.

3. Создание базы данных

Сначала создается база данных под названием organizer, в которой создаются пять таблиц: clubs, events, gorts, frcountrys и tcountrys. Информацию о компаниях и предложениях необходимо хранить в разных таблицах, поскольку одна компания может быть связана с несколькими предложениями. Отдельные таблицы создаются для того, чтобы иметь возможность определять типы предложений и места загрузок и разгрузок, поскольку это упрощает построение выпадающих меню, а также поиск и добавление данных. Таблицы заполняются вручную. Первой создается таблица пользователей [1]:

create table clubs(

id INT NOT NULL AUTO_INCREMENT,

PRIMARY KEY( id ),

name VARCHAR(50),

frcountry CHAR(3),

phone VARCHAR(30),

mail VARCHAR(20),

contact VARCHAR(20),

login VARCHAR(8),

password VARCHAR(6)

);

Пользователь должен вводить данные в поля name, phone, mail, contact, login и password. Поле frcountry будет содержать идентификатор, связанный с таблицей frcountrys.

Таблица events будет содержать информацию о каждом предложении каждой компании:

create table events(

id INT NOT NULL AUTO_INCREMENT,

PRIMARY KEY( id ),

gort CHAR(2),edate INT,

frcountry CHAR(3),

frcode CHAR(2),

tocountry CHAR(3),

tocode CHAR(2),

cargo VARCHAR(20),

typetrans VARCHAR(40),

eclub INT NOT NULL);

Стоит обратить внимание на то, что данная таблица также содержит поля gort, tocountry и frcountry. Компания может находиться в одной стране, однако предлагать грузы и транспорт из или в другие страны. Компании также могут предлагать как грузы, так и транспорт. Поле eclub будет содержать идентификатор компании, которая добавила предложение. В программе он может быть использован для создания списка всех предложений, добавленных данной компанией, или для получения информации о компании из списка предложений.

Поля frcountrys и tocountrys достаточно просты:

create table gorts(

id CHAR(2), gort VARCHAR(10));

create table frcountrys(

id CHAR(3), frcountry VARCHAR(20) );

create table tocountrys(

id CHAR(3), tocountry VARCHAR(20) );

Пользователи не будут иметь возможности изменять данные в этих таблицах. Вместо этого в программу добавляются другие категории данных с помощью конструкции SQL INSERT так, чтобы пользователь мог выбирать одно из возможных значений этих полей:

INSERT INTO gorts(

id, gort ) VALUES ("tr", "Транспорт");

На чертеже №3, прилагаемом к дипломному проекту показана схема базы данных.

4. Разработка программных модулей системы "Фрахт"

Ветвления для этого проекта были разобраны выше. Было решено реализовывать данный проект на разных страницах, а не создавать одну монолитную страницу. Такой метод построения имеет свои преимущества и недостатки.

С одной стороны, построение динамического окружения, в котором задействовано несколько страниц, может привести к дублированию фрагментов программы и усложнению проекта по мере его роста. С другой стороны, проще работать с отдельными страницами, предоставляя дизайнерам и разработчикам страницы возможность работать с обычными HTML-элементами.

4.1 Работа с пользователями

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

4.1.1 Файлы join.php и dblib.inc.

Файл join.inc содержит форму для ввода имени и пароля. Для проверки того, что имя не дублируется, и того, что имеется возможность добавлять информацию о пользователях, необходимо открыть базу данных. Поскольку по мере создания системы приходится довольно часто сталкиваться с необходимостью открывать базу данных, имеет смысл сразу написать соответствующую функцию. Данная функция сохраняется в отдельном документе. Затем можно будет иметь возможность добавлять ее в любую программу с помощью директивы include(). Данный документ будет называться dblib.inc и в дальнейшем будет использоваться для хранения всех функций, работающих с базами данных. Увидеть его код можно в приложении 1. Это позволит не вносить SQL-конструкции в основные РНР-программы.

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

Ниже приведена функция, которая соединяется с базой данных [1]:

$link;

connectToDB();

function connectToDB()

{

global $link;

$link = mysql_connect("localhost", "root", "");

if ( ! $link )

die ("Не могу подключиться к MySQL");

mysql_select_db( "organizer", $link )

or die (

"Не могу подключиться к организатору: ".mysql_error() );

}

В функции connectToDB() объявляется глобальная переменная $link, которая будет хранить идентификатор базы данных, возвращаемый функцией mysql_connect(). Глобальной переменной была объявлена переменная $link для того, чтобы остальные функции взаимодействия с базами данных имели доступ к идентификатору базы. Функции $connectToDB позволяет не только соединиться с демоном mysql, а также выбрать базу данных organizer. Поскольку успех этой операции определяет работу всего приложения, в случае если функция mysql_connect() или mysql_select_db() не завершаются успешно, выполнение программы прекращается.

Далее создается библиотека, к которой имеют доступ все страницы. Она называется сlublib.inc и содержит функции управления сессией и авторизации. Листинг библиотеки clublib.inc приведен в листинге 2. Были использованы функции работы с сессиями для хранения ассоциативного массива под названием $session. В файле clublib.inc используется функция session_start() для открытия или создания сессии, а также функция session_register() для того, чтобы зарегистрировать в сессии переменную [2]:

session_start();

session_register( "session" );

Необходимо помнить, что все конструкции РНР во включаемых файлах должны начинаться с начального дескриптора PHP (<?php) и завершаться концевым дескриптором РНР (?>). Может сложится впечатление, что хранение функций в отдельном файле неоправданно усложняет программу, однако на самом деле это помогает уберечься от дублирования фрагментов программы в проекте. После этого создается страница join.php. Исходный код этой страницы приведен в приложении 3.

В первую очередь в страницу join.php с помощью директивы include() включаются библиотеки, созданные ранее. После этого появляется открытое соединение с базой данных и активная сессия. Затем инициализируется переменная под названием $message. Эта переменная будет встречаться на многих страницах в проекте. Она имеет двойное назначение. Во-первых, в нее записывается информация об ошибках при проверке пересланных пользователем данных. Это сообщение затем может выводиться в окно браузера. Кроме того, эта переменная может использоваться в качестве флага, сигнализирующего о возникновении проблем. Если переменная $message остается пустой, можно заключить, что все проверки были пройдены нормально.

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

Теперь давайте перейдем к написанию HTML. В элементе BODY сначала включается дополнительный файл. Этот файл содержит глобальные элементы навигации, с которой нужно определиться вначале. Это упрощает проверку окружения в процессе написания проекта. Навигационные элементы были сохранены во включаемом файле под названием publicnav.php. Его код можно увидеть в приложении 4. Изначально данный файл будет содержать навигационные элементы только для общедоступных страниц [3].

<a href=viewclubs.php?<?php print SID ?>>Посмотреть список компаний</a> |

<a href=viewevents.php?<?php print SID ?>>Посмотреть грузы и транспорт</a> |

<a href=join.php?<?php print SID?>>Регистрация</a>|

<a href=login.php?<?php print SID ?>>Авторизация</a> |

<a href=index.php?<?php print SID?>>На главную</a>|

Благодаря тому, навигационные элементы были включены в отдельный файл, появилась возможность быстро обновлять внешний вид навигационных элементов всего узла. После вывода названия страницы осуществляется проверка переменной $message. Если в этой переменной не содержится пустая строка, выводится содержимое данной переменной в окно браузера. Такой механизм позволяет посылать пользователю ответ в случае, если нет возможности работать с введенной им информацией. HTML-форма имеет три видимых поля: form[login], form[password1] и form[password2]. При написании программы использовалась особая техника именования полей, поскольку РНР преобразует имена и соответствующие им значения в один ассоциативный массив под названием $form. Данный прием использован для того, чтобы в будущем не возникло проблем с большинством похожих имен. Все переменные сессии хранятся в массиве под названием $session, а переменные формы - в массиве $form. Это помогает упорядочить программу. Кроме того, стоит сводить количество глобальных переменных к минимуму для избегания конфликтов имен, что может случиться в проекте такого размера. Массив $form будет встречаться в каждой программе, где есть формы. В программе также был создан скрытый элемент под названием actionflag и еще один, который содержит имена и значения переменных сессии. В течение проекта от страницы к странице постоянно передается ID сессии, что не позволяет потерять клиентов, которые не используют cookies.

После создания этой HTML-формы, необходимо создать часть программы, проверяющую корректность ввода. Происходит проверка заполнения пользователем всех полей, также того, не содержат ли эти поля больше восьми символов. Затем вызывается новая функцию под названием getRow(), которая является одной из функций, входящих в файл dblib.inc. Данной функции передается имя таблицы, имя поля и значение поля. Эти значения используются данной функцией для поиска соответствующей строки в базе данных. Функция getRow() возвращает массив.

function getRow ( $table, $fnm, $fval )

{

global $lik;

$result = mysql_query(

"SELECT * FROM $table WHERE $fnm='$fval'", $link );

if ( ! $result )

die (" Фатальная ошибка при выполнении функции getRow : ".mysql_error() );

return mysql_fetch_array( $result );

}

Функции передается имя таблицы clubs и имя поля login, а также значение, переданное нам пользователем в $form[login]. Если функция mysql_fetch_array[login] возвращает заполненный массив, то становится понятно, что пользователь с таким именем уже существует, и поэтому создается сообщение об ошибке. Если переменная $message все еще содержит пустую строку, можно продолжать выполнение программы и создавать нового пользователя. Создание записи нового пользователя делится на два этапа. Во-первых, дополняется база данных. Для этого создается новая функция для файла dblib.inc под названием newUser():

function newUser ( $login, $pass )

{

global $link;

$result = mysql_query( "INSERT INTO clubs (login, password) VALUES ('$login', '$pass')", $link);

return mysql_insert_id( $link );

}

Этой функции передается имя и пароль нового пользователя. Данные значения применяются для добавления новой строки в таблицу clubs. Эта функция использует функцию mysql_insert_id() для того, чтобы автоматически инкрементировать идентификатор поля.

Теперь, когда имеется значение идентификатора, можно вызывать еще одну функцию из уже созданной библиотеки. cleanMemeberSession() должна находиться в файле dblib.inc. Этой функции передается идентификатор, имя члена и пароль. После того как cleanMemeberSession() сохранит все эти данные в массиве $session, они будут доступны каждой странице, работающей с сессиями. Таким образом, пользователь получает возможность идентифицироваться на каждой странице.

function cleanMemberSession( $id, $login, $pass )

{

global $session;

$session[id] = $id;

$session[login] = $login;

$session[password] = $pass;

$session[logged_in] = true;

}

Как только установлен идентификатор, имя и пароль, нужно установить элемент под названием logged_in в значение true.

После того как в join.php модифицирована информация о сессии и базе данных, можно направлять пользователя дальше. Вызывается функция header() и браузер пользователя направляется на страницу update.php, на которой он получит возможность вводить остальную информацию о своей компании.

4.1.2 Файл updateclub.php

Эта страница служит двум целям одновременно, позволяя новому пользователю добавить информацию о компании и уже существующему пользователю изменять существовавшую ранее информацию.

Программа update.php приведена приложении 5.

Далее снова включаются библиотеки dblib.inc и clublib.inc, что позволяет больше не заниматься открытием базы данных и сессии в данной программе. После вызывается новая функция под названием checkUser(), которая относится к библиотеке clublib(). Эта функция сверяет информацию сессии с информацией из базы данных.

function checkUser(){

global $session, $logged_in;

$session[logged] = false;

$club_row = getRow("clubs", "id", $session[id] );

if ( !club_row || $club_row[login] != $session[login] || $club_row[password] != $session[password] ){

header("Location: login.php");

exit();}

$session[logged_in] = true;

return $club_row;}

Данная функция относительно проста. В ней используется элемент массива $session[id] вместе с функцией getRow(), которая выбирает соответствующие данные из базы данных. В функции checkUser() этот ассоциативный массив сохраняется в переменной $club row, после чего элементы имени и пароля данного массива сравниваются с такими же элементами массива $session. Если эти значения не совпадают, пользователь направляется на страницу login.php.

Обращение к базе данных необходимо, потому что в отличие от обыкновенной проверки элемента logged_in в массиве $session, он не приводит к возникновению прорех в системе безопасности. "Злонамеренный" пользователь сможет ввести в строку запроса следующее:

Session%5Blogged_in%5D=1&session%5Bid%5D=l

РНР преобразует это в массив $session из параметров GET и в результате сможет пройти не очень строгую проверку. Теперь пользователь не сможет использовать этот простой прием, чтобы обмануть функцию checkUser(), поскольку сравниваются имя и пароль со значениями из базы данных, так что для успешной проверки переменная $session должна содержать правильную информацию.

Кроме того, при проверке функция checkUser() возвращает данные, связанные с клубом. Страницы для проверки членов клуба могут работать с этими данными.

Когда вызывается функция checkUser() в программе updateclub.php, возвращаемое ей значение сохраняется в переменной $check_row. Перейдя к тексту HTML, снова включаются навигационные элементы из файла publicnav.inc. Далее документ расширяется с помощью включения в него навигационные элементы для зарегистрированных пользователей [3]:

<p>

<a href=viewclubs.php?<?php print SID ?>>Посмотреть список компаний</a> |

<a href=viewevents.php?<?php print SID ?>>Посмотреть грузы и транспорт</a> |

<a href=join.php?<?php print SID ?>>Регистрация</a> |

<a href=login.php?<?php print SID ?>>Авторизация</a> |

<a href=index.php?<?php print SID ?>>На главную</a> |

</p>

<?php

if ( $session[logged_in] )

{

?>

<p>

<a href=updateclub.php?<?php print SID ?>>Описание компании</a> |

<a href=reviewevents.php?<?php print SID ?>>Ваши грузы и транспорт</a> |

<a href=updateevents.php?<?php print SID ?>>Добавить грузы и транспорт</a> |

<a href=membersmenu.php?<?php print SID ?>>Посмотреть список компаний</a> |

</p>

<?php

}

?>

<br>

Если флаг $session[logged_in] установлен в значение true, то ссыпки только для членов клуба тоже будут выведены в окно браузера. Стоит обратить внимание на то, что константа SID включается во все ссылки. Таким образом, можно утверждать, что идентификатор сессии передается от страницы к странице, даже если использование cookie запрещено.

Форма updateclub.php в этой программе не является уникальной. Кроме того, в форму включаются скрытые элементы actionflag и идентификатор сессии. Текстовые поля созданы для названия компании, контактных телефонов, адреса электронной почты и контактного лица. Чтобы задать выпадающие меню для страны регистрации компании, вызывается новая функция writeOptionList(), которая сохраняется в библиотеке функций работы с базами данных, dblib.inc. Ей передается имя таблицы и строчное значение. Эта функция использует переменную $table для считывания каждой строки таблиц gorts, frcountrys и tocountrys. После этого в теле цикла просматривается каждая строка и в окно браузера выводятся HTML-элементы OPTION. Если второй элемент массива, который вернула функция mysql_fetch_row(), совпадает с $id, следующий параметр - строка "SELECTED" - добавляется к элементу. Такая методика позволяет оставить второй элемент выпадающего меню формы выбранным.

function writeOptionList( $table, $id )

{

global $link;

$result = mysql_query( "SELECT * FORM $table", $link );

if ( ! $result )

{

print "failed to open $table<p>";

return false;

}

while ( $a_row = mysql_fetch_row( $result ) )

{

print "option value=\"$a_row[0]\"";

if ( $id == $a_row[0] )

print "SELECTED";

print ">$a_row[1]\n";

}

}

Фрагмент PHP-программы, отвечающий за проверку информации, введенной пользователем, сначала определяет, заполнено ли поле form[name]. Кроме того, проверяется правильность значений в поле form[frcountry]. Если переменная $message содержит пустую строку, считается, что условия для пересланных пользователем данных выполняются. После этого пользовательская информация передается функции под названием updateOrg(), которая заполняет соответствующую строку таблицы clubs. Функции updateOrg() передается идентификатор компании вместе со значением полей name, frcountry, phone, mail, contact в таблице clubs.

function updateOrg( $id, $name, $frcountry, $phone, $mail, $contact )

{

global $link;

$query = "UPDATE clubs set name = '$name', frcountry = '$frcountry', phone = '$phone', mail = '$mail',

contact = 'contact' WHERE id = '$id'";

$result = mysql_query( $query, $link );

if ( ! $result )

die ( "updateOrg: ошибка прм обновлении ".mysql_error() );

}

После того как строка базы данных модифицируется, пользователь переадресуется на страницу, содержащую меню членов клуба -- membersmenu. php. Если пользователь попал на страницу updateclub.php по ссылке или закладке, переменная $actionflag не будет установлена, поэтому фрагмент, отвечающий за проверку и модификацию, будет пропущен. Ассоциативный массив $club_row заполнялся, когда вызывалась функция checkUser(). Этот массив содержит имена и значения из текущей строки базы данных. Значения из данного массива записываются в переменную $form. Таким образом, форма модификации строки базы данных будет заполнена текущей информацией.

4.1.3 Файл membersmenu.php

Страница membership.php - главная станица для зарегистрированных пользователей. По сути, это список ссылок, куда можно добавлять новости и торговые предложения, которые могут быть интересны для сотрудников компании. Эту программу можно увидеть в листинге приложении 6.

На этой странице используется новый прием. После вызова функции checkUser(), проверяющей, является ли пользователь сотрудником компании, передается массив, возвращаемый этой функцией, другой функции, которая содержится в файле clublib.inc. Функция checkClubData() проверяет, ввел ли пользователь описание компании. Пользователям нельзя вводить и изменять предложения, до того как они заполнят информацию о своей компании. Нам нужно как минимум название компании.

function checkClubData( $clubarray )

{

if ( ! isset( $clubarray[name] ) )

{

header( "Location: updateclub.php?".SID );

exit;

}

}

4.1.4 Файл login.php

Перед тем как перейти на страницы, где зарегистрированные пользователи смогут вводить предложения по грузам и транспорту, необходимо создать программу login.php. Эта программа будет разрешать зарегистрированному пользователю входить в окружение. Программа login.php приведена в приложении 7.

Структура этой программы уже использовалась. Тут опять используются файлы dblib.inc и clublib.inc для инициализации соединения с базой данных и открытия сессии.

Если флаг $actionflag установлен, проверяются поля формы. Здесь используется новая функция из библиотеки dblib.inc. Эта функция проверяет элементы $form[login] и $form[password].

function checkPass( $login, $password )

{

global $link;

$result = mysql_query( "SELECT id, login, password FROM clubs WHERE login='$login' and password='$password'", $link );

if ( ! $result )

die ( "Ошибка checkPass: ".mysql_error() );

if ( mysql_num_rows( $result ) )

return mysql_fetch_array( $result );

return false;

}

Функция checkPass () принимает имя и пароль, пересылая простой запрос SELECT таблице clubs.

Если не произошло никаких ошибок, вызывается функция cleanMemberSession(), которая инициализирует элементы password и session переменной $session. После этого член клуба перенаправляется на страницу membersmenu. php.

4.1.5 Файл updateevent.php

Теперь, когда пользователи имеют возможность присоединяться или подключаться к службе, а также добавлять предложения, можно реализовывать программу создания и редактирования предложений. Такая программа приведена в приложении 8.

На этой странице создается форма, соответствующая полям из таблицы events. Как обычно, проверяется ее значения и заносятся в базу данных. Кроме того, нужно обновлять вид таблицы предложений, если она редактируется. Переменная $event_id будет передана на эту страницу в строке запроса, если осуществляется работа с существующим списком. Если переменная $event_id не пустая, используется функция getRow(), чтобы записать в переменную $event_row информацию о предложении. Если переменной $event_id не существует или она пустая, ей присваивается значение false.

Если форма была переслана, проверяется наличие в ней всех обязательных данных. Кроме того, контролируется, наступило ли время, переданное в этой форме. После этого устанавливается глобальная переменная $date в значение абсолютного времени, которое отвечает времени, переданному в форме.

Если переданная информация отвечает заданным требованиям, вызывается еще одна функция из dblib.inc - insertEvent(). Данной функции передаются все поля таблицы events. Последним полем передается идентификатор предложения. Это значение будет передано функции insertEvent(), которая решит, нужно ли модифицировать существующее предложение или создавать новое. Стоит обратить внимание на то, что идентификатор компании хранится в переменной $session[id]. Это значение будет записано в поле eclub таблицы events. Кроме того, штамп времени записывается в базу данных.

function insertEvent(

$gort, $frcountry, $frcode, $tocountry, $tocode,

$cargo, $typetrans, $club_id, $timestamp, $event_id )

{

global $link;

if ( ! $event_id )

{

$query = "INSERT INTO events (gort, frcountry, frcode, tocountry, tocode,

cargo, typetrans, eclub, edate )

VALUES ( '$gort', '$frcountry', '$frcode', '$tocountry', '$tocode',

'$cargo', '$typetrans', '$club_id', '$timestamp')";}

else

{

$query = "UPDATE events SET gort='$gort', frcountry='$frcountry', frcode='$frcode',

tocountry='$tocountry', tocode='$tocode', cargo='$cargo', typetrans='$typetrans',

eclub='$club_id', edate='$timestamp' WHERE id='$event_id'";

}

$result = mysql_query( $query, $link );

if ( ! $result )

die ( "insertEvent error: ".mysql_error() );

}

Как видно, функция insertEvent() проверяет аргумент $event[id]. Если он равен false, то используется конструкция INSERT. В противном случае будет задействована конструкция UPDATE.

После модификации базы данных пользователь направляется программой на страницу reviewevents.php, где он сможет увидеть все предложения.

Если пользователь до сих пор не переслал данные, то фрагмент программы, выполняющий проверку и модификацию, будет пропущен. Если переменная $event_id существует, то это означает, что предложение было взято из базы данных для занесения в форму. Для этого просто записываются значения из переменной $event_row в переменную $form. Кроме того, значение элемента edate переменной $event_row записывается в глобальную переменную $date.

Если форма не была переслана и не существует переменной $event_id, соответствующие значения из $club_row записываются в элементы $form[type] и $form[area]. $club_row содержит строку из таблицы club. Это необходимо для того, чтобы соответствующие меню для типа и места имели значение по умолчанию.

В HTML-форме единственным стоящим внимания фрагментом является тот, который отвечает за создание меню даты и времени. Эти меню достаточно просто создать, однако необходимо, чтобы в них автоматически выбирались текущие время и дата, время и дата, выбранные в последний раз, или время и дата из таблицы events. Это абсолютное время уже хранится в переменной $date. В начале программы в эту переменную записывается абсолютное время, которое отвечает текущему моменту. Если пользователь вводит информацию, создается новое абсолютное время, соответствующее введенному времени, и записываем его в переменную $date.

Каждое меню передает в переменной $date абсолютное время соответствующей функции из библиотеки под названием date.inc. Эта библиотека приведена в приложении 9.

Всем этим функциям передается абсолютное время, в результате чего создается список HTML-дескрипторов OPTION. В этих функциях используется функция getDate() для получения индекса соответствующей части времени (год, месяц, день месяца).

Затем производится проверка того, находятся ли эти переменные в допустимом диапазоне значений. Если это так, то данные функции добавляют строку SELECTED к элементу OPTION, который выводится в окно браузера.

4.1.6 Файл reviewevents.php

Теперь необходимо предоставить пользователю возможность просматривать добавленные предложения. Пользователь должен иметь возможность просматривать список своих предложений, а также редактировать и удалять любое из них.

Страница reviewevents.php достаточно проста. Она приведена в приложении 10.

Использованием библиотеки dblib.inc для открытия соединения с базой данных и библиотеки clublib.inc для открытия сессии, а также для закрытия доступа неавторизированным пользователям, создается функцию writeEvents (). Эта функция может быть вызвана из любой точки HTML-текста и выводит афишу прямо в окно браузера. Информация о компании уже существует в переменной $club_row, которая была записана туда после запуска функции getEvents(). Идентификатор клуба, находящийся в элементе $club_row[id], можно использовать как ключ, открывающий доступ ко всем предложениям. Для этого используется функция getEvents(). Данная функцию далее рассматривается более детально. Этой функции передается идентификатор компании, в результате чего она возвращает многомерный массив, содержащий каждое предложение данной компании.

Значение, возвращаемое функцией getEvents(), сохраняется в переменной под названием $events. Таким образом получается больше информации, чем нужно, однако функция getEvents() достаточно гибка. Эта функция используется до тех пор, пока не разрешатся все проблемы, возникающие при написании проекта. Если значение из $events равно false, в окно браузера выводится соответствующее сообщение и прекращается выполнение функции. В противном случае создается HTML-таблица. Считывая информацию из массива $array, выводятся некоторые элементы из его подмассивов в отдельную таблицу.

В отформатированном виде дата выводится на экран и передается элемент edate каждого массива функции date(). Кроме того, создается HTML-ссылка с помощью элементf id каждой афиши. Поле id используется вместе с константой SID для создания строки запроса, которая может быть передана странице updateevent.php для получения редактируемой таблицы предложений. Кроме того для каждого из элементов создаются ссылки, которые указывают на текущую страницу. Для этого конструируется строка запроса, в которой есть идентификатор предложения и параметр actionflag со значением deleteEvent. Эта строка потом может быть использована для удаления данного предложения, поэтому создается обработчик события на JavaScript, который позволит отменить активацию ссылки в том случае, если пользователь передумает.

При создании функции writeEvents() нужно учесть возможность того, что пользователь может захотеть удалить афишу. Для этого проверяются переменные $actionflag и $event_id. Если проверка проходит удачно, вызывается функцию deleteEvent(), передавая ей переменную $event_id.

function deleteEvent( $id )

{

global $link;

$query = "DELETE FROM events WHERE id='$id'";

$result = mysql_query( $query, $link );

if ( ! $result )

die ( "deleteEvent fatal error: ".mysql_error() );

return ( mysql_affected_rows($link) );

}

4.2 Экран предложений

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

Далее создаются страницы, позволяющие просматривать список предложений по различным критериям.

4.2.1 Файл viewevents.php

С помощью страницы viewevents.php пользователь может просматривать существующие предложения. Эта страница похожа на страницу reviewevents.php, которая была описана ранее. Данная страница более гибкая и предоставляет пользователю больше возможностей для просмотра, однако на ней нельзя редактировать информацию. Исходная программа для такой страницы приведена в приложении 11.

Эту программа начиснается с включения библиотек dblib.inc, date.inc и clublib.inc. Таким образом, предоставляется доступ ко всем функциям, входящим в первую и последнюю из вышеперечисленных библиотек. Одновременно с этим открывается соединение с базой данных и сессия.

После этого проверяется, была ли переслана форма, при этом считывается содержимое переменной $actionflag. Соответствующее поле формы является скрытым. Если пользователь переслал форму, выбранные им настройки должны иметь приоритетное значение перед ранее сохраненными. Ранее регистрировался ассоциативный массив в сессии пользователя для сохранения имени и пароля пользователя. Теперь к нему добавляются новые элементы к тому же массиву, который будет хранить настройки пользователя.

Переменная $session была зарегистрирована в сессии пользователя, как только мы включили библиотеку clublib.inc.

session_start();

session_register("session");

Теперь переменная $session превращается в многомерный массив, что происходит благодаря записи последней в элемент $session[viewevents]. При этом сохраняется структура настроек и данные переменные приписываются к этой странице. Здесь пользователь может выбрать такие параметры, как тип (транспорт или груз), страна загрузки, страна разгрузки, день, месяц и год. Сохраняется информация, пересланная пользователем, в соответствующие элементы массива $session[viewevents].

Если пользователь не переслал данных, это может означать, что он сделал это раньше. В таком случае массив $session[viewevents] будет существовать, однако переменная $actionflag не будет установлена. Если это так, в массив $form записываются те же значения. Таким образом, в форме точно будут представлены правильные значения.

Если пользователь не переслал экранную форму и элемент $session[viewevents] пуст, тогда нужно создать массив, содержащий значения по умолчанию. Функция getDate() используется для создания массива дат. Этот массив применяется для записи в элемент session[viewevents] [day] текущего дня месяца, $session [viewevents] [month] текущего месяца и в элемент $session[viewevents] [year] текущего года.

Теперь точно известно, что вышеуказанные два элемента содержат корректный день, месяц и год. Эти значения можно потом изменять, использовав информацию, пересланную в форме, или информацию из переменных сессии. Данные значения функции передаются из библиотеки date.inc под названием getDateRange(). Данная функция принимает номера дня, месяца и года, а также возвращает массив, состоящий из двух значений абсолютного времени, соответствующих началу и концу дня.

function getDateRange( $mon, $day, $year )

{

$start = mktime( 0, 0, 0, $mon, $day, $year );

$end = mktime( 0, 0, 0, $mon+,$day+1, $year );

$end --;

return array( $start, $end );

}

Возвращенный этой функцией массив сохраняется в глобальной переменной под названием $range.

Далее создается функция displayEvents(), которая будет выводить краткое содержание предложения в окно браузера. Данная функция будет вызываться из тела HTML-документа [4].

Для получения массива с краткими описаниями предложений вызывается функция getEvents(), которая находится в библиотеке dblib.inc .

function getEvents( $club_id=0, $range=0, $gort=0, $frcountry=0, $tocountry=0 )

{

global $link;

$query = "SELECT clubs.name, events.*,

gorts.gort as gortname,

frcountrys.frcountry as frcountryname,

tocountrys.tocountry as tocountryname ";

$query .= "FROM clubs, events, gorts, frcountrys, tocountrys WHERE ";

$query .= "clubs.id=events.eclub

AND events.gort=gorts.id

AND events.frcountry=frcountrys.id

AND events.tocountry=tocountrys.id ";

if ( ! empty( $club_id ) && $club_id !="ANY" )

$query .= "AND events.eclub='$club_id' ";

if ( ! empty($range) )

$query .= "AND events.edate >= '$range[0]'

AND events.edate <='$range[1]' ";

if ( ! empty($gort) && $gort != "ANY" )

$query .= "AND events.gort='$gort' ";

if ( ! empty($frcountry) && $frcountry != "ANY" )

$query .= "AND events.frcountry='$frcountry' ";

if ( ! empty($tocountry) && $tocountry != "ANY" )

$query .= "AND events.tocountry='$tocountry' ";

$query .= "ORDER BY events.edate";

$result = mysql_query( $query, $link );

if ( ! $result )

die ( "getIDevents fatal error: ".mysql_error() );

$ret = array();

while ( $row = mysql_fetch_array( $result ) )

array_push( $ret, $row );

return $ret;

}

Хотя эта функция называется getEvents(), она не только выводит таблицу предложений. Кроме того ей передается четыре аргумента: идентификатор компании, интервал времени в виде массива из двух значений абсолютного времени, страна загрузки и страна разгрузки. Все эти аргументы необязательны и могут быть заменены нулем или логическим значением false, если нет желания передавать их в SQL-запросе. Большая часть функции динамически создает SQL-запросы в соответствии с переданными аргументами. Основной запрос объединяет все таблицы в базе данных, передавая в запросе название компании, страну загрузки и страну разгрузки. Эти значения будут включены в конечный результат.


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

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

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

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

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

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

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

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

    курсовая работа [3,6 M], добавлен 18.02.2013

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

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

  • Разработка программного продукта - приложения, позволяющего заносить данные анкетирования в базу данных MS SQL. Описание логики работы приложения, особенности пользовательского интерфейса. Формы просмотра анкет, описание процедур и функций программы.

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

  • Формирование входных и выходных данных, SQL–скрипт генерации таблиц базы данных. Создание интерфейса программного приложения и проектирование форм базы данных. Требования к аппаратно–программному обеспечению. Инструкции по установке и эксплуатации.

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

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

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

  • Разработка базы данных для автоматизации учета и хранения сведений о заявках от работодателей. Проектирование приложения в СУБД Access. Описание запросов, отчетов и представлений данных. Интерфейс, условия выполнения и тестирование программного продукта.

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

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

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

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