Программная реализация курьерского заказа

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

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

) В качестве второго этапа можно принять этап распределения заказов между курьерами.

) На третьем этапе, этапе завершения, происходит сохранение данных обратно в текстовые файлы.

Работу процедуры сохранения данных в файл отображает рисунок 4.1.

 

 

 

 

. РАЗРАБОТКА ПРОГРАММНОГО СРЕДСТВА

 

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

В записи zakaz определены следующие поля, содержащие данные о заказе:

-name:string; - название товара;

number:integer; - номер товара;

adress:string; - адрес доставки заказа;

-othour:time; - с какого времени осуществляется доставка;

-dohour:time; - до какого времени необходимо доставить заказ;

-ves:integer; - вес товара;

volume:integer; - объем товара;

next:Tzakaz; - указатель на следующий элемент списка;

-addToCour:boolean; - логический элемент, отображающий добавление заказа какому-либо курьеру;

В записи courier определены следующие поля, характеризующие курьера:

-number:integer; - номер курьера;

fiocour:string; - ФИО курьера;

ottime:time; - с какого времени работает курьер;

-dotime:time; - до которого времени работает курьер;

-Volume:integer; - максимальный объем заказа, перевозимого курьером;

-weight:integer; - грузоподъемность автомобиля курьера;

-next:Tcourier; - указатель на следующий элемент списка;

-NowWeight:integer; - текущий вес заказов, добавленных курьеру;

NowVolume:integer; - текущий объем, добавленный курьеру;

PointZak:TCurZakaz; - указатель на список заказов данного курьера;

Поле PointZak записи courier содержит следующие поля:

zak:Tzakaz; - указатель заказ данного курьера;

next:TCurZakaz; - указатель на следующий элемент списка;

В программе используются следующие переменные:, listCour - указатели на начало списков курьеров и заказов;, current, prev - указатели для работы со списками

Все остальные переменные являются вспомогательными или производными от выше изложеных.

В таблице 1 приведены основные процедуры и функции, используемые в программе.

 

Таблица 1 "Основные процедуры и функции"

ПодпрограммаНазначениеTMainWind.FormCreate(Sender: TObject);Считывание данных с файлов, создание списков курьеров и заказов.TMainWind.AddZakButtonClick(Sender: TObject);Добавление нового заказа.TMainWind.AddCourButtonClick;Добавление нового курьера.TMainWind.FormClose;Сохранение данных в файлы.TMainWind.DisplayCourList;Вывод списка курьеров в форму.TMainWind.DisplayZakList;Вывод списка заказов в таблицу.TMainWind.GetCourierByIndex;Нахождение записи выделенного курьера.TMainWind.FIOCourListBoxClickВывод в форму всех заказов курьера.TMainWind.AddZakazToCur(zak:TZakaz):boolean;Распределение заказов по курьерам.TMainWind.ChangeCourButtonClick(Sender: TObject);Редактирование записи курьера.TMainWind.DeleteCourButtonClick(Sender: TObject);Удаление записи курьера.TMainWind.ChangeZakButtonClick(Sender: TObject);Редактирование записи заказа.TMainWind.DeleteZakButtonClick(Sender: TObject);Удаление заказа.

 

4. РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ

 

При запуске программы пользователь увидит окно с управляющими элементами (кнопками), таблицей и несколькими списками (рисунок 5.1).

 

Рисунок 5.1

 

Перемещение между кнопками осуществляется курсором. Выбор конкретной функции происходит по нажатию на кнопку.

Для добавления заказа необходимо нажать на пункт Добавление, после чего в появившемся окне (Рисунок 5.2.) ввести нужную информацию и нажать кнопку подтверждения. Далее произойдет добавление новой записи и ее распределение курьеру. После нажатия кнопки Сохранить окно автоматически закроется.

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

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

 

Рисунок 5.2.

 

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

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

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

 

 

СПИСОК ЛИТЕРАТУРЫ

 

1.Бобровский, С.И., Delphi 7. Учебный курс. - СПб.: Питер, 2004.- 736с.

.Фаронов, В.В. Турбо Паскаль 7.0. Начальный курс. Учебное пособие / В.В.Фаронов. М. : Издательство "ОМД групп", 2003. - 616с.

.Глухова Л. А., ФадееваЕ.П., ФадееваЕ.Е. Основы алгоритмизации программирования: Лаб. Практикум для студ. спец. I-40 01 01 "Программное обеспечение информационных технологий" дневной формы обуч. В 4 ч. Ч.2. -Мн.: БГУИР, 2005.

 

 

ПРИЛОЖЕНИЕ

 

ТЕКСТ ПРОГРАММЫ

 

unit MainWindowUnit;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, ExtCtrls, NewOrderUnit, GlobalTypes, NewCourierUnit,, Grids, EditZakUnit;= class(TForm): TGroupBox;: TGroupBox;: TGroupBox;: TButton;: TButton;: TButton;: TButton;: TButton;: TButton;: TMemo;: TListBox;: TListBox;: TListBox;: TListBox;: TListBox;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;: TStringGrid;AddZakButtonClick(Sender: TObject);AddCourButtonClick(Sender: TObject);FormClose(Sender: TObject; var Action: TCloseAction);FormCreate(Sender: TObject);DisplayCourList;DisplayZakList;Number;NumberZak;FIOCourListBoxClick(Sender: TObject);OtTimeCourListBoxClick(Sender: TObject);DoTimeCourListBoxClick(Sender: TObject);VolumeCourListBoxClick(Sender: TObject);WeightCourListBoxClick(Sender: TObject);AddZakazToCur(zak:TZakaz):boolean;GetCourierByIndex(index:integer;var prevCour:Tcourier):TCourier;ChangeCourButtonClick(Sender: TObject);DeleteCourButtonClick(Sender: TObject);ChangeZakButtonClick(Sender: TObject);DeleteZakButtonClick(Sender: TObject);

{ Private declarations }

{ Public declarations };: TMainWind;:zakaz;:courier;:Tzakaz;:TCourier;

{$R *.dfm}

nildocurrent.dohour.hour>temp.dohour.hourthencurrent.dohour.hour=t