- •Федеральное агентство по образованию
- •I. Объектно-ориентированное проектирование приложений
- •1.1. Технология проектирования ооп
- •1.1.1. Принципы ооп
- •1.1.2. Этапы разработки программных систем с использованием ооп
- •1.2.Mda-архитектура
- •1.2.1. Модель приложений и типы моделей
- •1.2.2. Этапы разработки mda-приложений
- •1.3. Унифицированный язык моделирования uml
- •1.4. Bold — реализация mda в Delphi
- •II. Разработка программного продукта
- •2.1. Проектирование приложения «Магазин бытовой техники»
- •2.1.1. Создание модели приложения
- •Описание классов модели приложения:
- •2.1.2. Импорт модели в BorlandMda
- •2.1.3. Создание графического интерфейса
- •2.2. Руководство пользователя
- •2.2.1. Установка и запуск
- •Установка программы «Магазин бытовой техники»
- •Запуск программы «Магазин бытовой техники»
- •2.2.2. Начало работы с приложением «Магазин бытовой техники»
- •2.2.3. Работа с программой
- •Заключение
- •Список литературы
- •Приложение Основной модуль приложения
- •Модуль описание классов бизнес-модели
- •Модуль регистрации пользователя как директора
- •Модуль смены пароля администратора
- •Модуль данных - связь бизнес-уровня и графического интерфейса
- •Модуль смены пароля администратора
- •Модуль редактирования информации о товаре, хранящегося на товарных базах
- •Модуль добавление новой товарной базы
- •Модуль отображения заставки
- •Модуль ввода количества заказываемого товара
- •Модуль отображения информации о программном продукте и разработчике
Модуль редактирования информации о товаре, хранящегося на товарных базах
unit EditTovarBase;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Spin, Data, BusinessClasses, Buttons;
type
TEditTovBase = class(TForm)
GroupBox13: TGroupBox;
Label31: TLabel;
Label32: TLabel;
Label33: TLabel;
Label34: TLabel;
Edit9: TEdit;
Edit10: TEdit;
SpinEdit1: TSpinEdit;
SpinEdit2: TSpinEdit;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
procedure FormActivate(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure SpeedButton1Click(Sender: TObject);
procedure Edit10KeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;
var
EditTovBase: TEditTovBase;
flag: Boolean;
implementation
uses Main;
{$R *.dfm}
//Активизация формы
procedure TEditTovBase.FormActivate(Sender: TObject);
var i: integer;
begin
TekBTov:=DataShop.ListBaseGroupTovar.ObjectList.Elements[DataShop.ListBaseGroupTovar.CurrentIndex] as TTov_base;
Edit9.Text:=TekBTov.Tname;
Edit10.Text:=floattostr(TekBTov.Tprice);
SpinEdit1.Value:=TekBTov.Tgarant;
SpinEdit2.Value:=TekBTov.TBcount;
end;
//Закрытие формы
procedure TEditTovBase.SpeedButton2Click(Sender: TObject);
begin
EditTovBase.Close;
end;
//При закрытии формы - возврат формы в исходное состояние
procedure TEditTovBase.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Edit9.Clear;
Edit10.Clear;
SpinEdit1.Value:=0;
SpinEdit2.Value:=1;
end;
//Процесс изменения данных о товаре
procedure TEditTovBase.SpeedButton1Click(Sender: TObject);
var price: real;
begin
flag:=false;
if (messagedlg('Подтвердите изменение товара',mtConfirmation,[mbYes,mbNo],0)=mrYes) then
begin
try
price:=strtofloat(Edit10.Text);
except
ShowMessage('Неверно указана цена!'+#13+'Проверьте правильность ввода!');
flag:=true;
end;
if not flag then
begin
TekBTov.Tname:=Edit9.Text;
TekBTov.Tprice:=price;
TekBTov.Tgarant:=SpinEdit1.Value;
TekBTov.TBcount:=SpinEdit2.Value;
SpeedButton2Click(nil);
end;
end;
end;
//Проверка корректности ввода
procedure TEditTovBase.Edit10KeyPress(Sender: TObject; var Key: Char);
begin
if not(key in ['0'..'9',#8,',']) then
key:=#0;
end;
end.
Модуль добавление новой товарной базы
unit NewBase;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, BoldListBox, data, Buttons, BusinessClasses;
type
TAddBase = class(TForm)
GroupBox1: TGroupBox;
Edit1: TEdit;
Label2: TLabel;
GroupBox2: TGroupBox;
BoldListBox1: TBoldListBox;
Label1: TLabel;
Memo1: TMemo;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
procedure SpeedButton3Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure SpeedButton1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
AddBase: TAddBase;
NewBas: TBase;
implementation
{$R *.dfm}
procedure TAddBase.SpeedButton3Click(Sender: TObject);
begin
SpeedButton2Click(nil);
AddBase.Close;
end;
procedure TAddBase.SpeedButton2Click(Sender: TObject);
begin
SpeedButton1.Enabled:=false;
Edit1.Clear;
Memo1.Clear;
Edit1.SetFocus;
end;
procedure TAddBase.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not(key in ['A'..'я','0'..'9',#8,' ']) then
key:=#0;
if (key=#8)and (Length(Edit1.Text)<=1) then
SpeedButton1.Enabled:=false;
if (key in ['A'..'я','0'..'9']) then
SpeedButton1.Enabled:=true;
end;
procedure TAddBase.SpeedButton1Click(Sender: TObject);
var i: integer;
ExBas: TBase;
BBaseExsist: Boolean;
Mag: TShop;
begin
if Memo1.Text<>'' then
begin
i:=DataShop.ListBases.CurrentIndex;
BBaseExsist:=false;
Mag:=DataShop.BoldSystemHandleShop.System.ClassByExpressionName['Shop'].BoldObjects[0] as Tshop;
for i:=0 to DataShop.ListBases.Count-1 do
begin
ExBas:=DataShop.ListBases.ObjectList.Elements[i] as TBase;
if (ExBas.Bname = Edit1.Text) then
BBaseExsist:=true;
end;
if not(BBaseExsist) then
begin
if (messagedlg('Подтвердите добавление товарной базы "'+Edit1.Text+'"!',mtConfirmation,[mbYes,mbNo],0)=mrYes) then
begin
NewBas:=TBase.Create(nil);
NewBas.Bname:=Edit1.Text;
NewBas.Baddress:=Memo1.Text;
NewBas.Imeetsya:=Mag;
SpeedButton3Click(nil);
end;
end
else
begin
ShowMessage('База с названием "'+Edit1.Text+'" уже существует!');
Edit1.Clear;
Edit1.SetFocus;
end;
end;
end;
end.