Автор: Пользователь скрыл имя, 04 Мая 2012 в 18:19, дипломная работа
Цель работы – разработать данную систему, используя возможности среды визуального программирования Delphi.
В результате проделанной работы была создана такая система с использованием инструментальных средств Delphi 7.0.
Программа обладает развитым графическим интерфейсом. С данной программой могут работать пользователи различной квалификации.
Введение
1 Обследование предметной области
1.1 Автоматизация работы оптового магазина
1.1.1 Обоснование необходимости совершенствования системы
1.1.2 Выбор и обоснование варианта реализации задачи учета товара и услуг
1.1.3 Цели и задачи автоматизации учета товара
1.2 Проектирование системы
1.2.1 ER-диаграмма системы в нотации Чена
1.2.2 Проектирование БД
1.2.3 Описание структуры таблиц БД
2 Анализ целесообразности использования заданных средств
разработки
2.1 Приоритетный язык программирования
2.1.1 Программный продукт Delphi
2.1.2 Высокопроизводительный компилятор в машинный код
2.1.3 Мощный объектно-ориентированный язык
2.1.4 Объектно-ориентированная модель программных компонент
2.1.5 Библиотека визуальных компонент
2.2 Приоритетная СУБД
3 Описание и применение программы
3.1 Общие сведения
3.2 Функциональное назначение
3.3 Описание логической структуры
3.4 Системные требования
3.5 Вызов и загрузка
3.6 Входные и выходные данные
3.7 Работа с готовой программой
4 Оценка экономической эффективности инвестиционного проекта
4.1 Расчет затрат на разработку системы
4.2 Формирование денежного потока
4.2.1 Расчет поступлений денежных средств
4.2.2 Финансирование проекта по этапам разработки
4.3 Анализ рисков
5 Охрана труда
6 Охрана окружающей среды
Заключение
Список использованных источников
Приложение А Выходные формы документов
Приложение Б Исходный код модуля главного окна программы
fmMain.BitBtn8.Enabled:=True
;
if ((Edit1.Text='Admin') or (Edit1.Text='admin')) and ((Edit2.Text='Arman') or (Edit2.Text='arman')) then
fmMain.ActionMainMenuBar1.
end;
Продолжение
приложения Б
end.
unit uRealiz;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Mask, DBCtrls, ComCtrls, Buttons, Grids,
DBGrids, DB, ComObj;
type
TfmRealiz = class(TForm)
Panel1: TPanel;
Label1: TLabel;
DBEdit1: TDBEdit;
Label2: TLabel;
dtpDate: TDateTimePicker;
DBGrid1: TDBGrid;
Panel2: TPanel;
bbtClose: TBitBtn;
bbtOK: TBitBtn;
Label3: TLabel;
edItogo: TEdit;
Label4: TLabel;
bbtGoods: TBitBtn;
bbtBill: TBitBtn;
bbtNakl: TBitBtn;
bbtCheck: TBitBtn;
DBNavigator1: TDBNavigator;
Label5: TLabel;
dblcbContr: TDBLookupComboBox;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure bbtOKClick(Sender: TObject);
procedure DBGrid1EditButtonClick(Sender: TObject);
procedure CalcSum;
procedure FormShow(Sender: TObject);
procedure bbtBillClick(Sender: TObject);
procedure bbtNaklClick(Sender: TObject);
procedure bbtCheckClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
Продолжение
приложения Б
end;
var
fmRealiz: TfmRealiz;
implementation
uses uDM, uMain, uStore, uRep;
{$R *.dfm}
//Функция осуществляет подсчет итоговой суммы по расходу с заданным шифром:
procedure TfmRealiz.CalcSum;
begin
DM.qrRealizSum.Close;
DM.qrRealizSum.ParamByName('
DM.qrRealizSum.Open;
fmRealiz.edItogo.Text
:= Format('%m', [DM.qrRealizSum.FieldByName('
end;
procedure TfmRealiz.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if DM.tbRealizComp.State in [dsEdit, dsInsert] then
DM.tbRealizComp.Cancel;
if DM.tbRealiz.State = dsEdit then
DM.tbRealiz.Cancel;
//Если пользователь закрыл форму или нажал кнопку Отмена, то все введенные
//данные
удаляются завершением
if DM.Database1.InTransaction then
DM.Database1.Rollback;
DM.tbRealiz.Refresh;
DM.tbContrag.Filtered := False;
end;
//Сохранение введенных данных о расходе:
procedure TfmRealiz.bbtOKClick(Sender:
TObject);
//Для каждой записи таблицы расхода товара изменяем количество
Продолжение
приложения Б
//соответствующего товара на складе (табло приход). Продажа товара ведется
//по принципу FIFO (первый в приходе - первый в расходе):
procedure RealizIncome;
var Quantity: Integer;
begin
with DM do begin
tbRealizComp.First;
while not tbRealizComp.Eof do begin
Quantity := tbRealizCompQuantity.
//Отбор всех записей о приходе текущего товара, при условии, что этот
// товар еще не продан:
qrStoreFree.Close;
qrStoreFree.ParamByName('
qrStoreFree.Open;
//По окончании цикла все кол-
// таблице прихода (склад):
repeat
qrStoreFree.Edit;
//Если по текущей записи о приходе товара кол-во >= проданного:
if qrStoreFree.FieldByName('
qrStoreFree.FieldByName('
qrStoreFree.FieldByName('
qrStoreFree.FieldByName('
Quantity := 0;
end
//Если по текущей записи о приходе товара кол-во < проданного:
else begin
Quantity := Quantity -
(qrStoreFree.FieldByName('
qrStoreFree.FieldByName('
qrStoreFree.FieldByName('
qrStoreFree.FieldByName('
end;
qrStoreFree.Post;
until Quantity = 0;
tbRealizComp.Next;
end;
end; //with
end;
begin
Продолжение
приложения Б
with DM do begin
if tbRealizComp.State in [dsEdit, dsInsert] then
tbRealizComp.Post;
if tbRealizComp.RecordCount = 0 then
Application.MessageBox('Не указано ни одного товара в расход!',
'Ошибка', MB_OK + MB_ICONERROR)
else begin
//Если пользователь указал не текущую дату в качестве даты расхода, изменяем ее:
if dtpDate.Date <> tbRealizDDate.AsDateTime then begin
tbRealiz.Edit;
tbRealizDDate.AsDateTime := dtpDate.Date;
tbRealiz.Post;
end;
RealizIncome;
//Завершение транзакции с
if Database1.InTransaction then
Database1.Commit;
Close;
end; //else if tbRealizComp.RecordCount = 0
end; //with
end;
//При щелчке по кнопке "..." в ячейке "Артикул" в DBGrid1 на экран
// выводится справочник товаров для выбора нужного товара из списка:
procedure TfmRealiz.
begin
fmStore.bbtGo.Caption := 'К форме реализации';
fmStore.bbtGo.Visible := True;
if fmStore.ShowModal = mrOK then begin
if not (DM.tbRealizComp.State in [dsEdit, dsInsert]) then
DM.tbRealizComp.Edit;
DM.tbRealizCompGoodsID.Value := DM.qrStoreGoodsID.Value;
end;
fmStore.bbtGo.Visible := False;
end;
procedure TfmRealiz.FormShow(Sender: TObject);
begin
Продолжение
приложения Б
CalcSum;
//В списке контрагентов доступны только клиенты:
DM.tbContrag.Filter := 'ContrType = False';
DM.tbContrag.Filtered := True;
end;
//Формирование счета:
procedure TfmRealiz.bbtBillClick(Sender: TObject);
begin
Rep_Bill('Счет');
end;
//Формирование расходной накладной:
procedure TfmRealiz.bbtNaklClick(Sender: TObject);
begin
Rep_Bill('Накладная');
end;
//Формирование чека:
procedure TfmRealiz.bbtCheckClick(
begin
Rep_Check;
end;
end.
unit uRealizAll;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons,
DBCtrls, ExtCtrls, Grids, DBGrids, ComCtrls;
type
TfmRealizAll = class(TForm)
DBGrid1: TDBGrid;
Panel2: TPanel;
DBGrid2: TDBGrid;
Panel1: TPanel;
DBNavigator1: TDBNavigator;
GroupBox1: TGroupBox;
Продолжение
приложения Б
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
dtpDateFrom: TDateTimePicker;
dtpDateTo: TDateTimePicker;
bbtClose: TBitBtn;
DBNavigator2: TDBNavigator;
bbtRealiz: TBitBtn;
bbtSellBook: TBitBtn;
procedure CheckBox1Click(Sender: TObject);
procedure bbtRealizClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure bbtSellBookClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
fmRealizAll: TfmRealizAll;
implementation
uses uDM, uRealiz, DB, uDiapason,
uRep;
{$R *.dfm}
//Фильтрация данных по расходу товара по диапазону дат:
procedure TfmRealizAll.CheckBox1Click(
var Filter: string;
begin
Filter := '';
if CheckBox1.Checked then
Filter :=
'(DDate >= ' + QuotedStr(DateToStr(
if CheckBox2.Checked then begin
if Filter <> '' then
Filter := Filter + ' and ';
Filter :=
Filter + '(DDate <= ' + QuotedStr(DateToStr(dtpDateTo.
end;
if (CheckBox1.Checked) or (CheckBox2.Checked) then begin
DM.tbRealiz.Filter := Filter;
DM.tbRealiz.Filtered := True;
Продолжение
приложения Б
end
else
DM.tbRealiz.Filtered := False;
end;
//Просмотр информации о выбранном расходе:
procedure TfmRealizAll.bbtRealizClick(
begin
//Форма расхода отображается в режиме только для чтения:
with fmRealiz do begin
bbtOK.Visible := False;
dtpDate.Date := DM.tbRealizDDate.AsDateTime;
dtpDate.Enabled := False;
DBGrid1.ReadOnly := True;
DBGrid2.ReadOnly := True;
dblcbContr.ReadOnly := True;
DBGrid1.Columns[0].ButtonStyle := cbsNone;
DBGrid1.Columns[1].ButtonStyle := cbsNone;
DBGrid2.Columns[0].ButtonStyle := cbsNone;
DBGrid2.Columns[1].ButtonStyle := cbsNone;
DBNavigator1.VisibleButtons
:= [nbFirst,nbPrior,nbNext,
ShowModal;
DBNavigator1.VisibleButtons
:= [nbFirst,nbPrior,nbNext,