Form).
Сохраняем заготовку проекта в папке c:\kp. Имя файла проекта kp.dpr, имена используемых модулей: Unit1.pas…Unit5.pas, имена используемых форм: Unit1.frm…Unit5.frm.
Форма Form1 - основная форма проекта. На ней расположены основные элементы интерфейса пользователя и элементы управления.
Компоненты размещаются на форме посредством «перетягивания» их значков в определенное место формы из соответствующих разделов (Standart, DataAccess, DataControl, BDE, QReport) палитры компонентов среды разработки Borland Delphi.
Для всех вышеперечисленных компонентов необходимо определить их свойства, такие как геометрические размеры компонента (Width, Height), Имя (Name), Источник данных (DataSource), Отображаемые на экране надписи (Caption) и ряд других - в соответствии с требуемой задачей. Часть этих свойств удобно заполнять с помощью специализированных мастеров. Так, например, состав полей, отображаемых на экране с помощью компонента DBGrid, настраивается с помощью Редактора полей, вызываемого путем двойного щелчка по соответствующему компоненту. Контроль введенных свойств и доступ к компонентам осуществляется с помощью Окна свойств и Инспектора объектов. Размер формы и расположенных на ней компонентов выбирается исходя из наиболее часто встречающегося у потенциального пользователя разрешения экрана 800 х 600 точек, эргономических и эстетических соображений.
Форма Form2 предназначена для ввода информации о новом товаре. Ввод информации осуществляется посредством заполнения пользователем значений текстовых полей DBEdit1…3, связанных с базой данных через элементы управления DataSource, расположенные на форме Form1.
Форма Form3 предназначена для работы с таблицей типов товаров и содержит источник данных DataSource1, связанный с таблицей tTable2, расположенной на форме Form1, управляющий элемент DbGrid1 для отображения и редактирования полей таблицы, управляющий элемент DbNavigator1 для выполнения основных операций с записями в таблице: навигации, добавления, удаления и сохранения.
Форма Form4 содержит компонент DBChart1, источником данных которого являются данные из таблицы Query1. Все необходимые свойства этого компонента проще всего ввести с помощью мастера, также вызываемого двойным щелчком по компоненту.
Форма Form5 содержит отчет QuickRep1 и связанные с ним элементы: полосы данных QRBand1…QRBand4, надписи QRLabel1…QRLabel97, текстовые поля QRDBText1… QRDBText6, вычисляемые поля QRExpr1… QRExpr6, линии QRShape1, QRShape2. Источником данных формы являются связные таблицы Table1 и Table2, которые в свою очередь связаны с источником данных DataSource1.
Форма AboutBox содержит пять компонентов:
командную кнопку OKButton, служащей для закрытия формы;
трех информационных надписей (ProductName и Version).
Форма Intro выполняет функции «заставки» при запуске программы и содержит два компонента: Image1 с графическим изображением (файл Intro.jpg) и Timer1, свойство которого Interval имеет значение 3000 мс, т.е. «заставка» будет отображаться на экране в течении 3 с.
После подготовки компонентов форм необходимо приступить к написанию кода обработки событий, возникающих при работе приложения.
Код представляет собой программу на языке Object Pascal обработки событий объектов и состоит из нескольких модулей: основного (kp), и модулей обработки событий форм (Unit1…Unit7). В каждом модуле, в свою очередь, может содержаться несколько процедур, предусматривающих обработку тех или иных событий компонентов форм.
. Запуск и отладка системы
После написания программного кода необходимо выполнить заключительный этап проектирования - запуск и отладку приложения. Запуск приложения на выполнение осуществляется путем выполнения команды Run (клавиша F9) среды проектирования Borland Delphi. На этом этапе происходит анализ кода на предмет наличия синтаксических ошибок и, при их отсутствии, компиляция в исполняемый модуль - kp.exe. При необходимости код программы корректируется разработчиком: исправляются допущенные синтаксические и логические ошибки, оптимизируются те или иные конструкции.
6. Инструкция по эксплуатации системы
Сразу после запуска системы пользователю становится доступны главная форма системы, меню, командные кнопки, элементы навигации по базе данных и элементы ввода условий фильтрации. Внешний вид форм проекта на этапе выполнения приведен в прил. 2
Вспомогательная информация (подсказки по элементам управления) доступна пользователю в строке состояния.
Навигация по записям базы данных осуществляется путем выбора с помощью указателя мыши требуемого элемента в таблице товаров.
Пользователь имеет возможность изменить режим сортировки - для этого необходимо воспользоваться соответствующей радиокнопкой.
Для отбора сведений о товарах определенного типа необходимо включить режим фильтрации и указать искомый тип товара, выбрав его из списка.
Чтобы осуществить поиск информации о товаре в базе данных необходимо открыть с помощью кнопки «Поиск товара» форму ввода искомого значения. После нажатия кнопки «ОК» в системе будет осуществлен поиск искомых сочетаний знаков. При этом указатель будет помещен на первое найденное значение или будет выведено сообщение об отсутствии искомого значения.
Для ввода информации о новом товаре служит кнопка «Новый товар». После её нажатия появляется форма ввода для внесения в базу новой записи.
Удаление информации о выбранном товаре осуществляется после нажатия кнопки «Удалить товар». При этом на экране появляется предупреждающее сообщение.
Вычисление общей суммы продаж по выбранному товару и остаток его на складе осуществляется автоматически.
Для просмотра сведений о продажах в графической форме служит кнопка «Диаграмма».
Для работы с таблицей типов товаров необходимо нажать кнопку «Тип товара», что приведет к открытию соответствующей формы.
Для предварительного просмотра и распечатки отчета о продажах служит кнопка «Отчет». В окне предварительного просмотра пользователю доступны кнопки изменения масштаба изображения на экране, выбора и настройки принтера, отправки указанной страницы на печать.
7. Перенос и установка системы на другой компьютер
Для нормальной работоспособности системы на другом компьютере необходимо воспользоваться программой InstallShield, поставляемой вместе с Delphi. Запустив мастер создания инсталляционного пакета и заполнив все необходимые поля карточки мастера (расположение на диске, метод установки, необходимость включения компонентов в пакет и т.п.) получаем на выходе исполняемый файл setup.exe. Этот файл необходимо передать пользователю программы.
Для установки системы на компьютере пользователя необходимо запустить указанный выше файл (setup.exe) и дождаться завершения установки. При этом будет произведено автоматическое копирование всех необходимых элементов, создан каталог KP на диске C компьютера пользователя, произведена настройка псевдонима базы данных.
Перед установкой программы необходимо:
. Убедится в наличии установленных ОС Windows 98 или выше и администратора баз данных BDE версии 5.1 или выше.
. Убедится в наличии установленной СУБД ACCESS 2000 или выше.
. При необходимости установить указанные компоненты.
После завершения установки достаточно запустить из папки KP исполняемый файл kp.exe.
Заключение
Данный курсовой проект разработан для создания АРМ «Склад» для фирмы «Мир школьника». Создание базы данных обусловлено необходимостью вести автоматизированный учет и хранение сведений обо всех товарах, хранящихся на складе, их приходе, расходе и остатках. Вся эта информация необходима для нормального функционирования фирмы.
Проектирование приложения осуществляется под управлением СУБД Access.
В процессе разработки была использована нормализованная реляционная модель. Проведение нормализации позволило спроектировать базу данных, в которой нет избыточных (ненужных) данных и противоречий. Также была обеспечена целостность данных, которая способствовала адекватности отражаемых сведений.
В результате использования данного приложения на предприятии увеличится скорость обработки данных, и скорость работы персонала по поиску, так же уменьшится вероятность появления ошибок в работе связанная с человеческим фактором. Вместе с тем существует ряд перспективных направлений, связанных с улучшением и усовершенствованием проекта. Такие как, например, подключение пока локального АРМа «Склад» к локальной сети фирмы, что позволит работника других отделов просматривать отчеты со склада напрямую, не обращаясь к работникам склада с просьбой распечатать необходимый отчет.
локальный автоматизированный программирование склад
Список литературы
1. Архангельский А.Я. Работа с локальными базами данных в Delphi 5. М.:Бином,2000.
. Архангельский А.Я. Язык SQL в Delphi 5. М.: ЗАО «Издательство БИНОМ»,М.: 2000.
3. Архангельский А.Я. Object Pascal в Delphi 5. М.: ЗАО «Издательство БИНОМ», 1999.
. Гофман В.Э., Хомоненко А.Д. Delphi 6. СПб, «БХВ-Петербург», 2002.
. Гофман В.Э., Хомоненко А.Д.Работа с базами данных в Delphi. СПб,«Скт- Петербург», 2000.
. Дарахвелидзе П., Марков Е. Программирование в Delphi 7. СПб, «Скт-Петербург», 2003.
. Климова Л.М. Программирование в среде Delphi. Часть 2.Учебное пособие. М.: МГТУ ГА, 2003.
. Фаронов В.В. Delphi 6. Учебный курс. М.: Издатель Молгачкова С.В., 2002.
. Архангельский А. Я. Программирование в Delphi 7. М: « Издательство БИНОМ», 2003.
Приложение
Файл kp.dpr
program kp;,in 'Unit1.pas' {Form1},in 'Unit2.pas' {Form2},in 'Unit3.pas' {Form3},in 'Unit4.pas' {Form4},in 'Unit5.pas' {Form5},in 'Unit6.pas' {Intro},in 'Unit7.pas' {AboutBox};
{$R *.res}.Initialize;.CreateForm(TForm1, Form1);.CreateForm(TForm2, Form2);.CreateForm(TForm3, Form3);.CreateForm(TForm4, Form4);.CreateForm(TForm5, Form5);.CreateForm(TIntro, Intro);.CreateForm(TAboutBox, AboutBox);.Run;.
Файл unit1.pasUnit1;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, DB, Grids, DBGrids, DBTables, Menus, StdCtrls, ExtCtrls, DBCtrls,, ComCtrls;= class(TForm): TDatabase;: TTable;: TDBGrid;: TDataSource;: TTable;KodZapisi: TAutoIncField;Nazvanie: TStringField;Kod: TIntegerField;Prihod: TFloatField;Rashod: TFloatField;Zena: TFloatField;Stoimost: TCurrencyField;Ostatok: TFloatField;Kod: TAutoIncField;Tip: TStringField;Field111: TStringField;: TMainMenu;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TButton;: TButton;: TButton;: TRadioGroup;: TGroupBox;: TCheckBox;: TDBLookupComboBox;: TDataSource;: TStatusBar;: TButton;: TButton;: TButton;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;tTable1CalcFields(DataSet: TDataSet);N5Click(Sender: TObject);cmdNewClick(Sender: TObject);
procedure cmdDelClick(Sender: TObject);tTable1AfterPost(DataSet: TDataSet);cmdTypeClick(Sender: TObject);tTable2AfterPost(DataSet: TDataSet);RadioGroup1Click(Sender: TObject);CheckBox1Click(Sender: TObject);DBLookupComboBox1Click(Sender: TObject);cmdChartClick(Sender: TObject);cmdFindClick(Sender: TObject);cmdReportClick(Sender: TObject);N6Click(Sender: TObject);N7Click(Sender: TObject);N8Click(Sender: TObject);N9Click(Sender: TObject);N12Click(Sender: TObject);N10Click(Sender: TObject);FormCreate(Sender: TObject);FormCloseQuery(Sender: TObject; var CanClose: Boolean);FormShow(Sender: TObject);N11Click(Sender: TObject);
{ Private declarations }DisplayHint(Sender: TObject);
{ Public declarations };: TForm1;Unit2, Unit3, Unit4, Unit5, Unit6, Unit7;
{$R *.dfm}
//Вывод подсказки в строку состоянияTForm1.DisplayHint(Sender: TObject);.SimpleText := Application.Hint;;
//Формирование значений вычисляемых полейTForm1.tTable1CalcFields(DataSet: TDataSet);Stoimost.AsCurrency:=tTable1Zena.AsCurrency*tTable1Rashod.AsFloat;Ostatok.AsFloat:=tTable1Prihod.AsFloat-tTable1Rashod.AsFloat;;
//Кнопка "Выход из программы"TForm1.N5Click(Sender: TObject);;;
//Кнопка "Новая запись"TForm1.cmdNewClick(Sender: TObject);.ShowModal;;
//Кнопка "Удаление записи"TForm1.cmdDelClick(Sender: TObject);MessageDlg('Удалить запись?',,[mbYes,mbNo],0) = mrYes then tTable1.Delete;;TForm1.tTable1AfterPost(DataSet: TDataSet);.Active:=False;.Active:=True;.Last;;
//Кнопка "Тип товара"TForm1.cmdTypeClick(Sender: TObject);.ShowModal;;TForm1.tTable2AfterPost(DataSet: TDataSet);.Active:=False;.Active:=True;.Last;;
//Включение режимов сортировкиTForm1.RadioGroup1Click(Sender: TObject);.Active:=False;RadioGroup1.ItemIndex of
: tTable1.IndexName:='indNazvanie';
: tTable1.IndexName:='indKod';
: tTable1.IndexName:='';;.Active:=True;;
//Управление фильтромFilterOn();v:Variant;Form1 doCheckBox1.Checked=False then.Enabled:=True;:=DBLookupComboBox1.KeyValue;VarIsNumeric(v) then tTable1.Filter:='Kod='+IntToStr(v)tTable1.Filter:='';.Filtered:=True;.Enabled:=False;.Filtered:=False;;;;TForm1.CheckBox1Click(Sender: TObject);;;TForm1.DBLookupComboBox1Click(Sender: TObject);;;
//Кнопка "Диаграмма"TForm1.cmdChartClick(Sender: TObject);.ShowModal;;
//Кнопка "Поиск товара"TForm1.cmdFindClick(Sender: TObject);s:String;:Boolean;InputQuery('Найти','', s) then:=tTable1.Locate('Nazvanie',s,[loPartialKey,loCaseInsensitive]);f=False then Application.MessageBox('Значение не найдено',
'Результат поиска',MB_ICONWARNING+MB_OK);tTable1.Cancel;;
//Кнопка "Отчет"TForm1.cmdReportClick(Sender: TObject);bm: TBookmark;:=tTable1.GetBookmark;.QuickRep1.Preview;.GotoBookmark(bm);;
//Работа с менюTForm1.N6Click(Sender: TObject);.Click;;TForm1.N7Click(Sender: TObject);.Click;;TForm1.N8Click(Sender: TObject);.Click;;TForm1.N9Click(Sender: TObject);.Click;;TForm1.N12Click(Sender: TObject);.Click;;TForm1.N10Click(Sender: TObject);.HelpFile := 'kp.hlp';.HelpCommand(HELP_CONTENTS, 0);;
//Вывод подсказки в строку состоянияTForm1.FormCreate(Sender: TObject);.OnHint := DisplayHint;;
//Выход из программыTForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);Application.MessageBox('Вы уверены?',
//Вывод заставкиTForm1.FormShow(Sender: TObject);.ShowModal;;TForm1.N11Click(Sender: TObject);.ShowModal;;.
Листинг П. 4.2 Файл unit2.pasUnit2;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, DBCtrls, DB, DBTables, Grids, DBGrids, Mask;= class(TForm): TLabel;: TLabel;: TLabel;: TButton;: TButton;: TLabel;: TDBEdit;: TDBEdit;: TDBEdit;: TDBLookupComboBox;cmdOKClick(Sender: TObject);cmdCancelClick(Sender: TObject);DBLookupComboBox1Click(Sender: TObject);FormActivate(Sender: TObject);DBEdit1Change(Sender: TObject);FormCloseQuery(Sender: TObject; var CanClose: Boolean);
{ Private declarations }
{ Public declarations };: TForm2;Unit1;
{$R *.dfm}TForm2.cmdOKClick(Sender: TObject);.tTable1.Post;.Close;;TForm2.cmdCancelClick(Sender: TObject);.tTable1.Cancel;.Close;;TForm2.DBLookupComboBox1Click(Sender: TObject);DBLookupComboBox1.Text<>'' thenDBEdit1.Text<>'' then cmdOK.Enabled:=True;;TForm2.FormActivate(Sender: TObject);.Enabled:=False;.tTable1.Append;;TForm2.DBEdit1Change(Sender: TObject);DBLookupComboBox1.Text<>'' thenDBEdit1.Text<>'' then cmdOK.Enabled:=True;;TForm2.FormCloseQuery(Sender: TObject; var CanClose: Boolean);.tTable1.Cancel;.Close;;.
база данные ведомость приложение
Файл unit3.pasUnit3;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, ExtCtrls, DBCtrls, Grids, DBGrids, DB;= class(TForm): TDBGrid;: TDBNavigator;: TDataSource;
{ Private declarations }
{ Public declarations };: TForm3;Unit1;
{$R *.dfm}.
Файл unit4.pasUnit4;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, TeEngine, Series, ExtCtrls, TeeProcs, Chart, DbChart, TeeFunci,, DBTables, Grids, DBGrids;= class(TForm): TQuery;: TDBChart;: TPieSeries;FormActivate(Sender: TObject);
{ Private declarations }
{ Public declarations };: TForm4;Unit1;
{$R *.dfm}TForm4.FormActivate(Sender: TObject);.Active:=False;.Active:=True;;.
Файл unit5.pasUnit5;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, QuickRpt, ExtCtrls, DB, DBTables, QRCtrls;= class(TForm): TQuickRep;: TQRGroup;: TQRBand;: TTable;KodZapisi: TAutoIncField;Nazvanie: TStringField;Kod: TIntegerField;Prihod: TFloatField;Rashod: TFloatField;Zena: TFloatField;: TTable;Kod: TAutoIncField;Tip: TStringField;: TQRDBText;: TDataSource;: TQRLabel;: TQRLabel;: TQRLabel;: TQRLabel;: TQRLabel;: TQRLabel;: TQRLabel;: TQRShape;: TQRDBText;: TQRDBText;: TQRDBText;: TQRDBText;: TQRDBText;: TQRExpr;: TQRExpr;: TQRBand;: TQRBand;: TQRLabel;: TQRExpr;: TQRExpr;: TQRExpr;: TQRExpr;: TQRShape;: TQRLabel;FormActivate(Sender: TObject);
{ Private declarations }
{ Public declarations };: TForm5;
{$R *.dfm}TForm5.FormActivate(Sender: TObject);.Active:=True;;.
Файл unit6.pasUnit6;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, jpeg, ExtCtrls;= class(TForm): TImage;: TTimer;Timer1Timer(Sender: TObject);
{ Private declarations }
{ Public declarations };: TIntro;Unit1;
{$R *.dfm}TIntro.Timer1Timer(Sender: TObject);;;.
Файл unit7.pasUnit7;Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,, ExtCtrls;= class(TForm): TPanel;: TLabel;: TLabel;: TButton;OKButtonClick(Sender: TObject);
{ Private declarations }
{ Public declarations };: TAboutBox;
{$R *.dfm}TAboutBox.OKButtonClick(Sender: TObject);.Close;;.