Рефераты. Информационная система "Data-центр"

begin

FRMSPRAV.DBGrid1.DataSource:=DM.DS_MEM;

FRMSPRAV.DBNavigator1.DataSource:=DM.DS_MEM;

FRMSPRAV.Show;

FRMSPRAV.Caption:='Память';

end;

procedure TFRMMain.N11Click(Sender: TObject);

begin

FRMTable.Label1.Caption:=('Введите название машины');

FRMTable.DBGrid1.DataSource:=DM.DSQ_Dogovor;

FRMTable.ClientHeight:=211;

FRMTable.Show;

FRMTable.Panel1.Visible:=false;

FRMTable.Panel2.Visible:=true;

FRMTable.Caption:='Поиск арендаторов';

end;

procedure TFRMMain.N12Click(Sender: TObject);

begin

FRMSPRAV.DBGrid1.DataSource:=DM.DS_SPEED;

FRMSPRAV.DBNavigator1.DataSource:=DM.DS_SPEED;

FRMSPRAV.Show;

FRMSPRAV.Caption:='Скорость';

end;

procedure TFRMMain.N13Click(Sender: TObject);

begin

FRMTable.DBGrid1.DataSource:=DM.DSv_DOGOVOR;

FRMTable.Show;

FRMTable.ClientHeight:=169;

FRMTable.Caption:='Договора';

end;

procedure TFRMMain.N14Click(Sender: TObject);

begin

FRMTable.DBGrid1.DataSource:=DM.DSV_MASHINS;

FRMTable.Show;

FRMTable.ClientHeight:=169;

FRMTable.Caption:='Прайс-лист';

end;

procedure TFRMMain.N15Click(Sender: TObject);

begin

FRMTable.DBGrid1.DataSource:=DM.DS_DOGOVOR;

FRMTable.ClientHeight:=211;

FRMTable.Show;

FRMTable.Panel1.Visible:=true;

FRMTable.Panel2.Visible:=false;

FRMTable.Caption:='Договора';

end;

procedure TFRMMain.N16Click(Sender: TObject);

begin

FRMTable.DBGrid1.DataSource:=DM.DS_MASHIN;

FRMTable.ClientHeight:=211;

FRMTable.Show;

FRMTable.Panel1.Visible:=true;

FRMTable.Panel2.Visible:=false;

FRMTable.Caption:='Прайс-лист';

end;

procedure TFRMMain.N21Click(Sender: TObject);

begin

FRMTable.Label1.Caption:=('Введите требуемый объем памяти');

FRMTable.DBGrid1.DataSource:=DM.DSP_Poisk;

FRMTable.ClientHeight:=211;

FRMTable.Show;

FRMTable.Panel1.Visible:=false;

FRMTable.Panel2.Visible:=true;

FRMTable.Caption:='Поиск машины';

end;

procedure TFRMMain.N5Click(Sender: TObject);

begin

DM.RvDogovora.Execute;

end;

procedure TFRMMain.N6Click(Sender: TObject);

begin

close;

end;

end.

unit UnitDM;

interface

uses

SysUtils, Classes, DB, ADODB, RpCon, RpConDS, RpDefine, RpRave, RpRender,

RpRenderCanvas, RpRenderPreview, DBClient;

type

TDM = class(TDataModule)

T_KLIENTS: TADOTable;

T_DOGOVOR: TADOTable;

T_MASHIN: TADOTable;

T_SPEED: TADOTable;

T_MEM: TADOTable;

T_HDD: TADOTable;

T_PROC: TADOTable;

DS_DOGOVOR: TDataSource;

DS_MASHIN: TDataSource;

DS_SPEED: TDataSource;

DS_MEM: TDataSource;

DS_HDD: TDataSource;

DS_PROC: TDataSource;

DS_KLIENT: TDataSource;

ADOConnection1: TADOConnection;

T_HDDID_HDD: TAutoIncField;

T_HDDNAIM: TWideStringField;

T_HDDHARACT: TWideStringField;

T_PROCID_PROC: TAutoIncField;

T_PROCNAIM: TWideStringField;

T_PROCHARACT: TWideStringField;

T_MEMID_MEM: TAutoIncField;

T_MEMNAIM: TWideStringField;

T_MEMHARACT: TWideStringField;

T_KLIENTSID_KLIENT: TAutoIncField;

T_KLIENTSNAIM: TWideStringField;

T_SPEEDID_SPEED: TAutoIncField;

T_SPEEDNAIM: TWideStringField;

T_SPEEDHARACT: TWideStringField;

RvDogovora: TRvProject;

RvDogovor: TRvDataSetConnection;

TV_DOGOVOR: TADOTable;

DSV_DOGOVOR: TDataSource;

TV_MASHINS: TADOTable;

DSV_MASHINS: TDataSource;

TV_MASHINSNAIM_MASH: TWideStringField;

TV_MASHINSNAIM_MEM: TWideStringField;

TV_MASHINSNAIM_SPEED: TWideStringField;

TV_MASHINSNAIM_PROC: TWideStringField;

TV_MASHINSNAIM_HDD: TWideStringField;

TV_MASHINSCENA: TFloatField;

TV_DOGOVORNAIM_MASH: TWideStringField;

TV_DOGOVORCENA: TFloatField;

TV_DOGOVORDate_zakl: TDateTimeField;

TV_DOGOVORDate_okonch: TDateTimeField;

TV_DOGOVORStoimost: TFloatField;

TV_DOGOVORNAIM_KLIENT: TWideStringField;

QP_Dogovor: TADOQuery;

DSQ_Dogovor: TDataSource;

P_Poisk: TADOStoredProc;

DSP_Poisk: TDataSource;

T_KLIENTSHARACT: TWideStringField;

T_DOGOVORID_DOGOVOR: TAutoIncField;

T_DOGOVORID_KLIENT: TIntegerField;

T_DOGOVORID_MASHIN: TIntegerField;

T_DOGOVORDate_zakl: TDateTimeField;

T_DOGOVORDate_okonch: TDateTimeField;

T_DOGOVORStoimost: TFloatField;

T_MASHINID_MASHIN: TAutoIncField;

T_MASHINID_PROC: TIntegerField;

T_MASHINID_HDD: TIntegerField;

T_MASHINID_MEM: TIntegerField;

T_MASHINID_SPEED: TIntegerField;

T_MASHINNAIM: TWideStringField;

T_MASHINCENA: TFloatField;

QP_DogovorNAIM_KLIENT: TWideStringField;

QP_DogovorNAIM_MASH: TWideStringField;

QP_DogovorCENA: TFloatField;

QP_DogovorDate_zakl: TDateTimeField;

QP_DogovorDate_okonch: TDateTimeField;

QP_DogovorStoimost: TFloatField;

P_PoiskNAIM_MASH: TWideStringField;

P_PoiskNAIM_MEM: TWideStringField;

P_PoiskNAIM_SPEED: TWideStringField;

P_PoiskNAIM_PROC: TWideStringField;

P_PoiskNAIM_HDD: TWideStringField;

P_PoiskCENA: TFloatField;

procedure T_DOGOVORCalcFields(DataSet: TDataSet);

private

{ Private declarations }

public

{ Public declarations }

end;

var

DM: TDM;

implementation

uses UnitMain;

{$R *.dfm}

procedure TDM.T_DOGOVORCalcFields(DataSet: TDataSet);

begin

T_Dogovor.Fields[5].AsFloat:=round(T_Dogovor.Fields[4].AsDateTime-T_Dogovor.Fields[3].AsDateTime)*(T_Mashin.Fields[6].AsInteger/30);

end;

end.

unit UnitTable;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Grids, DBGrids, StdCtrls, ExtCtrls;

type

TFRMTable = class(TForm)

DBGrid1: TDBGrid;

Panel1: TPanel;

Button3: TButton;

Button2: TButton;

Button1: TButton;

Panel2: TPanel;

Edit1: TEdit;

Button4: TButton;

Label1: TLabel;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure Button4Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

FRMTable: TFRMTable;

implementation

uses UnitDM, UnitAdd;

{$R *.dfm}

procedure set_add_form_dogovor;

begin

FRMAdd.DBLookupComboBoxD1.Visible:=true;

FRMAdd.DBLookupComboBoxD2.Visible:=true;

FRMAdd.DBEditD1.Visible:=true;

FRMAdd.DBEditD2.Visible:=true;

FRMAdd.DBLookupComboBoxM1.Visible:=false;

FRMAdd.DBLookupComboBoxM2.Visible:=false;

FRMAdd.DBLookupComboBoxM3.Visible:=false;

FRMAdd.DBLookupComboBoxM4.Visible:=false;

FRMAdd.DBEditm1.Visible:=false;

FRMAdd.DBEditm2.Visible:=false;

FRMAdd.Label1.Caption:=('ФИО Клиента');

FRMAdd.Label2.Caption:=('Название машины');

FRMAdd.Label3.Caption:=('Дата заключения');

FRMAdd.Label4.Caption:=('Дата окончания');

FRMAdd.Label5.Caption:=('');

FRMAdd.Label6.Caption:=('');

end;

procedure set_add_form_mashin;

begin

FRMAdd.DBLookupComboBoxD1.Visible:=false;

FRMAdd.DBLookupComboBoxD2.Visible:=false;

FRMAdd.DBEditD1.Visible:=false;

FRMAdd.DBEditD2.Visible:=false;

FRMAdd.DBLookupComboBoxM1.Visible:=true;

FRMAdd.DBLookupComboBoxM2.Visible:=true;

FRMAdd.DBLookupComboBoxM3.Visible:=true;

FRMAdd.DBLookupComboBoxM4.Visible:=true;

FRMAdd.DBEditm1.Visible:=true;

FRMAdd.DBEditm2.Visible:=true;

FRMAdd.Label1.Caption:=('Процессор');

FRMAdd.Label2.Caption:=('Жесткий диск');

FRMAdd.Label3.Caption:=('Память');

FRMAdd.Label4.Caption:=('Скорость подключения');

FRMAdd.Label5.Caption:=('Название');

FRMAdd.Label6.Caption:=('Цена');

end;

procedure TFRMTable.Button1Click(Sender: TObject);

begin

if DBGrid1.DataSource=DM.DS_DOGOVOR then begin

DM.T_DOGOVOR.Append;

set_add_form_dogovor;

FRMAdd.Caption:='Добавить договор';

end else

if DBGrid1.DataSource=DM.DS_MASHIN then begin

DM.T_MASHIN.Append;

set_add_form_mashin;

FRMAdd.Caption:='Добавить конфигурацию';

end;

FRMAdd.show;

end;

procedure TFRMTable.Button2Click(Sender: TObject);

begin

if DBGrid1.DataSource=DM.DS_DOGOVOR then begin

DM.T_DOGOVOR.Edit;

set_add_form_dogovor;

FRMAdd.Caption:='Редактировать договор';

end else

if DBGrid1.DataSource=DM.DS_MASHIN then begin

DM.T_MASHIN.Edit;

set_add_form_mashin;

FRMAdd.Caption:='Редактировать конфигурацию';

end;

FRMAdd.show;

end;

procedure TFRMTable.Button3Click(Sender: TObject);

begin

if DBGrid1.DataSource=DM.DS_DOGOVOR then begin

DM.T_DOGOVOR.Delete;

end else

if DBGrid1.DataSource=DM.DS_MASHIN then begin

DM.T_MASHIN.Delete;

end;

end;

procedure TFRMTable.Button4Click(Sender: TObject);

var s:string;

begin

if DBGrid1.DataSource=DM.DSQ_DOGOVOR then begin

DM.QP_Dogovor.Close;

s:='SELECT NAIM_KLIENT, NAIM_MASH, CENA, Date_zakl, Date_okonch, ';

s:=s+' Stoimost FROM PR_DOGOVOR ';

s:=s+'WHERE NAIM_MASH =('''+edit1.Text+''')';

DM.QP_Dogovor.SQL.Clear;

DM.QP_Dogovor.SQL.Add(s);

try

dm.QP_Dogovor.Open;

except

showmessage('ошибка');

end;

end else

if DBGrid1.DataSource=DM.DSP_Poisk then begin

dm.P_Poisk.close;

dm.P_Poisk.Parameters.ParamByName('@p').Value:=Edit1.Text;

dm.P_Poisk.Open;

end;

end;

end.

unit UnitAdd;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, DBCtrls, Mask;

type

TFRMAdd = class(TForm)

Button1: TButton;

DBEditD1: TDBEdit;

DBEditD2: TDBEdit;

DBLookupComboBoxD1: TDBLookupComboBox;

DBLookupComboBoxD2: TDBLookupComboBox;

Button2: TButton;

DBLookupComboBoxM1: TDBLookupComboBox;

DBLookupComboBoxM2: TDBLookupComboBox;

DBLookupComboBoxM3: TDBLookupComboBox;

DBLookupComboBoxM4: TDBLookupComboBox;

DBEditM1: TDBEdit;

DBEditM2: TDBEdit;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

FRMAdd: TFRMAdd;

implementation

uses UnitDM, UnitTable;

{$R *.dfm}

procedure TFRMAdd.Button1Click(Sender: TObject);

begin

if FRMTable.DBGrid1.DataSource=DM.DS_DOGOVOR then begin

DM.T_Dogovor.Fields[5].AsFloat:=round(DM.T_Dogovor.Fields[4].AsDateTime-DM.T_Dogovor.Fields[3].AsDateTime)*(round(DM.T_Mashin.Fields[6].AsInteger/30));

DM.T_DOGOVOR.Post;

DM.T_DOGOVOR.Active:=false;

DM.T_DOGOVOR.Active:=true;

DM.T_DOGOVOR.Append;

end

else if FRMTable.DBGrid1.DataSource=DM.DS_MASHIN then begin

DM.T_MASHIN.Post;

DM.T_MASHIN.Active:=false;

DM.T_MASHIN.Active:=true;

DM.T_MASHIN.Append;

end;

end;

procedure TFRMAdd.Button2Click(Sender: TObject);

begin

close;

end;

end.

3.2 Руководство пользователя

Главная форма (рис. 3.1) позволяет получить доступ ко всем функциям программы, путем использования главного меню. Так же на ней отображен весь список договоров.

Рисунок 3.1 Главная форма

С помощью главного меню открывается редактор таблиц, путем использования кнопок «Добавить», «Редактировать», «Удалить» можно внести изменения в состав таблиц (рис. 3.2, 3.3). При нажатии кнопки «Ок» на форме добавления/редактирования записи автоматически посчитается сумма договора на основании длительности договора и стоимости аренды данной конфигурации.

Рисунок 3.2 Таблица «Договора» и форма для внесения изменений.

Рисунок 3.3 Таблица «Прайс-лист» и форма для внесения изменений.

При использовании второго пункта меню «Справочники» Можно внести изменения в имеющиеся в базе данных справочники (рис. 3.4 - 3.8)

Рисунок 3.4 Справочник «Клиенты».

Рисунок 3.5 Справочник «Процессоры».

Рисунок 3.6 Справочник «Жесткие диски».

Рисунок 3.7 Справочник «Оперативная память».

Рисунок 3.8 Справочник «Скорость».

Для удобства просмотра хранящейся в базе данных информации сделаны представления, которые можно увидеть с помощью пункта меню «Представления» (рис. 3.9, 3.10)

Рисунок 3.9 Представление Договоров.

Рисунок 3.10 Представление Прайс-листа.

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

Рисунок 3.11 Запрос.

Для удобства просмотра и возможности вывода информации на печать была использована программа RaveReports с помощью которой можно создавать отчеты. На рис. 3.12 показан внешний вид получаемого отчета.

Рисунок 3.12 Вид отчета.

Заключение

В результате работы была создана реляционная база данных в Microsoft SQL Server, содержащая 7 таблиц, 5 из которых справочники. Клиентское приложение написанное с помощью CodeGear Delphi позволяющее просматривать, изменять и искать нужную информацию. Были рассмотрены различные способы внесения и получения данных из базы данных. Построен отчет для вывода на печать с помощью программы RaveReports. Изучены свойства и методы компонентов CodeGear Delphi для работы с базами данных.

Страницы: 1, 2, 3, 4, 5



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.