Программная реализация курьерского заказа
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
блицу и списки из файлов данных о курьерах и заказах, если таковые имеются.
) В качестве второго этапа можно принять этап распределения заказов между курьерами.
) На третьем этапе, этапе завершения, происходит сохранение данных обратно в текстовые файлы.
Работу процедуры сохранения данных в файл отображает рисунок 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