Разработка информационно-поисковой системы

Информационные потребности пользователя, модульная декомпозиция информационно-поисковой системы. Выбор средств разработки, проектирование базы данных, описание входных и выходных данных. Алгоритмы работы программы и модулей, пользовательский интерфейс.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 03.10.2017
Размер файла 742,2 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

procedure pmCloseCategoryClick(Sender: TObject);

procedure pmTableViewPopup(Sender: TObject);

procedure sbFirstClick(Sender: TObject);

procedure sbLeftClick(Sender: TObject);

procedure sbRightClick(Sender: TObject);

procedure sbLastClick(Sender: TObject);

procedure tsPagesClick(Sender: TObject);

procedure ClosePanelResize(Sender: TObject);

procedure dbgTableDblClick(Sender: TObject);

procedure mmAvailableClick(Sender: TObject);

procedure mmNotAvailableClick(Sender: TObject);

procedure mmAllClick(Sender: TObject);

procedure mmOrderClick(Sender: TObject);

procedure mmIncomingClick(Sender: TObject);

procedure mmOutgoingClick(Sender: TObject);

procedure mmDocListClick(Sender: TObject);

procedure mmOrderListClick(Sender: TObject);

procedure mmLogClick(Sender: TObject);

procedure tbStorePlacesClick(Sender: TObject);

procedure mmTransferClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

fmStoreView: TfmStoreView;

implementation

{$R *.dfm}

uses DataModule, DataModuleRM, OpenCategoryStore, ElementStoreView, StoreSearch, StorePlaceView, OrderContent, OrderList, StoreLog, DocList, DocContent, StoreImport;

//**************************//

// Создание формы //

//**************************//

procedure TfmStoreView.FormCreate(Sender: TObject);

var

i : integer;

IniFile : TIniFile;

StringList : TStringList;

begin

StatusBar.Panels[1].Text := '1:1';

IniFile := TIniFile.Create('IniFiles\Category.ini');

StringList := TStringList.Create;

IniFile.ReadSection('CATEGORY_STORE', StringList);

if StringList.Count = 0 then

begin

StringList.Free;

IniFile.Free;

Exit;

end;

tsPages.Tabs.Clear;

sbCloseCategory.Enabled := true;

for i := 0 to StringList.Count - 1 do

tsPages.Tabs.Add(IniFile.ReadString('CATEGORY_STORE', StringList[i], ''));

StringList.Free;

IniFile.Free;

end;

//**********************//

// Показ формы //

//**********************//

procedure TfmStoreView.FormShow(Sender: TObject);

begin

if DM.nRole <> 3

then

begin

tbIncoming.Enabled := false;

tbOutgoing.Enabled := false;

tbStorePlaces.Enabled := false;

tbDocList.Enabled := false;

tbLog.Enabled := false;

tbTrasfer.Enabled := false;

mmIncoming.Enabled := false;

mmOutgoing.Enabled := false;

mmDocList.Enabled := false;

mmLog.Enabled := false;

mmTransfer.Enabled := false;

mmImportData.Enabled := false;

end

else

begin

tbIncoming.Enabled := true;

tbOutgoing.Enabled := true;

tbStorePlaces.Enabled := true;

tbDocList.Enabled := true;

tbLog.Enabled := true;

tbTrasfer.Enabled := true;

mmIncoming.Enabled := true;

mmOutgoing.Enabled := true;

mmDocList.Enabled := true;

mmLog.Enabled := true;

mmTransfer.Enabled := true;

mmImportData.Enabled := true;

end;

tsPages.TabIndex := 0;

mmAll.Checked := true;

tsPagesClick(Sender);

end;

//*********************************************//

// Обработчик меню: Открыть категорию //

//*********************************************//

procedure TfmStoreView.mmOpenCategoryClick(Sender: TObject);

begin

with fmOpenCategoryStore do

begin

CallForm := cfStoreView;

ShowModal;

end;

end;

//*********************************************//

// Обработчик меню: Закрыть категорию //

//*********************************************//

procedure TfmStoreView.mmCloseCategoryClick(Sender: TObject);

begin

pmCloseCategoryClick(nil);

end;

//******************************************//

// Обработчик меню: Импорт данных //

//******************************************//

procedure TfmStoreView.mmImportDataClick(Sender: TObject);

begin

fmStoreImport.ShowModal;

tsPagesClick(Sender);

end;

//**********************************//

// Обработчик меню: Выход //

//**********************************//

procedure TfmStoreView.mmExitClick(Sender: TObject);

begin

fmStoreView.Close;

fmStorePlaceView.Close;

end;

//**********************************//

// Обработчик меню: Поиск //

//**********************************//

procedure TfmStoreView.mmFindClick(Sender: TObject);

begin

fmStoreSearch.CallForm := cStoreView;

if mmAvailable.Checked

then

fmStoreSearch.bAvailable := true

else

fmStoreSearch.bAvailable := false;

if mmNotAvailable.Checked

then

fmStoreSearch.bNotAvailable := true

else

fmStoreSearch.bNotAvailable := false;

fmStoreSearch.ShowModal;

end;

//****************************//

// Показ Popup-меню //

//****************************//

procedure TfmStoreView.pmTableViewPopup(Sender: TObject);

begin

if tsPages.Tabs[0] = 'Пусто'

then

pmCloseCategory.Enabled := false

else

pmCloseCategory.Enabled := true;

end;

//**********************************************//

// Обработчик меню: Закрыть категорию //

//**********************************************//

procedure TfmStoreView.pmCloseCategoryClick(Sender: TObject);

begin

if MessageDlg('Закрыть категорию "' + tsPages.Tabs[tsPages.TabIndex] + '"', mtConfirmation, [mbYes, mbNo], 0) = mrYes then

begin

tsPages.Tabs.Delete(tsPages.TabIndex);

if tsPages.Tabs.Count = 0 then

begin

tsPages.Tabs.Add('Пусто');

tsPages.TabIndex := 0;

sbCloseCategory.Enabled := false;

end;

end;

end;

//******************************************//

// Обработчик меню: Доступные ЭРИ //

//******************************************//

procedure TfmStoreView.mmAvailableClick(Sender: TObject);

begin

mmAll.Checked := false;

mmNotAvailable.Checked := false;

mmAvailable.Checked := true;

tbAll.Down := false;

tbAvailable.Down := true;

tbNotAvailable.Down := false;

StatusBar.Panels.Items[3].Text := ' ' + mmAvailable.Caption;

tsPagesClick(Sender);

end;

//******************************************//

// Обработчик меню: Дефицитные ЭРИ //

//******************************************//

procedure TfmStoreView.mmNotAvailableClick(Sender: TObject);

begin

mmAll.Checked := false;

mmAvailable.Checked := false;

mmNotAvailable.Checked := true;

tbAll.Down := false;

tbAvailable.Down := false;

tbNotAvailable.Down := true;

StatusBar.Panels.Items[3].Text := ' ' + mmNotAvailable.Caption;

tsPagesClick(Sender);

end;

//***********************************//

// Обработчик меню: Все ЭРИ //

//***********************************//

procedure TfmStoreView.mmAllClick(Sender: TObject);

begin

mmAll.Checked := true;

mmAvailable.Checked := false;

mmNotAvailable.Checked := false;

tbAll.Down := true;

tbAvailable.Down := false;

tbNotAvailable.Down := false;

StatusBar.Panels.Items[3].Text := ' ' + mmAll.Caption;

tsPagesClick(Sender);

end;

//****************************************//

// Обработчик меню: Новая заявка //

//****************************************//

procedure TfmStoreView.mmOrderClick(Sender: TObject);

begin

fmOrderContent.ShowingType := otNew;

fmOrderContent.ShowModal;

tsPagesClick(Sender);

end;

//**********************************************//

// Обработчик меню: Приходная ведомость //

//**********************************************//

procedure TfmStoreView.mmIncomingClick(Sender: TObject);

begin

fmDocContent.DocType := vtNew;

fmDocContent.nDocType := 3;

fmDocContent.lblOrder.Caption := 'Приходная ведомость № ';

fmDocContent.ShowModal;

tsPagesClick(Sender);

end;

//**********************************************//

// Обработчик меню: Расходная ведомость //

//**********************************************//

procedure TfmStoreView.mmOutgoingClick(Sender: TObject);

begin

fmDocContent.DocType := vtNew;

fmDocContent.nDocType := 2;

fmDocContent.lblOrder.Caption := 'Расходная ведомость № ';

fmDocContent.ShowModal;

tsPagesClick(Sender);

end;

//************************************************//

// Обработчик меню: Перемещение по складу //

//************************************************//

procedure TfmStoreView.mmTransferClick(Sender: TObject);

begin

fmDocContent.DocType := vtNew;

fmDocContent.nDocType := 4;

fmDocContent.lblOrder.Caption := 'Перемещение по складу № ';

fmDocContent.ShowModal;

tsPagesClick(Sender);

end;

//********************************************//

// Обработчик меню: Журнал документов //

//********************************************//

procedure TfmStoreView.mmDocListClick(Sender: TObject);

begin

fmDocList.ShowModal;

tsPagesClick(Sender);

end;

//****************************************//

// Обработчик меню: Журнал заявок //

//****************************************//

procedure TfmStoreView.mmOrderListClick(Sender: TObject);

begin

fmOrderList.ShowModal;

tsPagesClick(Sender);

end;

//******************************************//

// Обработчик меню: Журнал операций //

//******************************************//

procedure TfmStoreView.mmLogClick(Sender: TObject);

begin

fmStoreLog.ShowModal;

tsPagesClick(Sender);

end;

//**************************//

// Смена закладок //

//**************************//

procedure TfmStoreView.tsPagesClick(Sender: TObject);

var

Left, Top, Bottom : integer;

begin

Top := Round(StatusBar.Height / 4);

Left := StatusBar.Panels[0].Width + StatusBar.Panels[1].Width + 5;

Bottom := 3 * Top;

StatusBar.Canvas.Pen.Color := clNavy;

StatusBar.Canvas.Brush.Color := clNavy;

StatusBar.Panels[1].Text := IntToStr(tsPages.TabIndex + 1) + ' : ' + IntToStr(tsPages.Tabs.Count);

rmDM.qrElements.Transaction.CommitRetaining;

if (tsPages.TabIndex = -1) or (tsPages.Tabs[tsPages.TabIndex] = 'Пусто') then

begin

rmDM.qrElements.Close;

Exit;

end;

StatusBar.Canvas.Rectangle(Left, Top, Left + 100, Bottom);

with rmDM.qrElements do

begin

Close;

SQL.Clear;

SQL.Add('select * from V_ELEMENTS ');

SQL.Add('where NAMENE = ''' + tsPages.Tabs[tsPages.TabIndex]+ '''');

if mmAvailable.Checked

then SQL.Add(' and ACTUAL > 0');

if mmNotAvailable.Checked

then SQL.Add(' and ACTUAL <= 0');

Open;

FieldByName('IDE').Visible := false;

FieldByName('NAMENE').Visible := false;

FieldByName('PRICE').Visible := false;

FieldByName('VENDOR').Visible := false;

FieldByName('REPLACEMENT').Visible := false;

FieldByName('TYPEE').DisplayLabel := 'Тип ЭРИ';

FieldByName('TYPEE').DisplayWidth := 30;

FieldByName('PRODUCER').DisplayLabel := 'Фирма-изготовитель';

FieldByName('PRODUCER').DisplayWidth := 20;

FieldByName('PERFORMANCE').DisplayLabel := 'Вид исполнения';

FieldByName('PERFORMANCE').DisplayWidth := 30;

FieldByName('EXIST').DisplayLabel := 'Имеется';

FieldByName('EXIST').DisplayWidth := 12;

FieldByName('RESERVED').DisplayLabel := 'Заказано';

FieldByName('RESERVED').DisplayWidth := 12;

FieldByName('ACTUAL').DisplayLabel := 'Доступно';

FieldByName('ACTUAL').DisplayWidth := 12;

FieldByName('COMMENT').DisplayLabel := 'Примечание';

FieldByName('COMMENT').DisplayWidth := 40;

end;

rmDM.qrElements.Transaction.CommitRetaining;

if mmAll.Checked

then StatusBar.Panels.Items[3].Text := ' ' + mmAll.Caption;

StatusBar.Canvas.Pen.Color := clBtnFace;

StatusBar.Canvas.Brush.Color := clBtnFace;

StatusBar.Canvas.Rectangle(Left, Top, Left + 100, Bottom);

end;

//**************************************//

// Переход на первую закладку //

//**************************************//

procedure TfmStoreView.sbFirstClick(Sender: TObject);

begin

tsPages.TabIndex := -1;

tsPages.TabIndex := 0;

end;

//******************************************//

// Переход на предыдущую закладку //

//******************************************//

procedure TfmStoreView.sbLeftClick(Sender: TObject);

begin

if(tsPages.TabIndex <> 0) then

tsPages.SelectNext(false);

end;

//****************************************//

// Переход на следующую закладку //

//****************************************//

procedure TfmStoreView.sbRightClick(Sender: TObject);

begin

if(tsPages.TabIndex <> tsPages.Tabs.Count - 1) then

tsPages.SelectNext(true);

end;

//****************************************//

// Переход на последнюю закладку //

//****************************************//

procedure TfmStoreView.sbLastClick(Sender: TObject);

begin

tsPages.TabIndex := -1;

tsPages.TabIndex := tsPages.Tabs.Count - 1;

end;

//****************************************************************//

// Изменение размеров панели с кнопкой закрытия страниц //

//****************************************************************//

procedure TfmStoreView.ClosePanelResize(Sender: TObject);

begin

sbCloseCategory.Left := ClosePanel.Width - 15;

end;

//**************************************************//

// Вызов карточки элемента двойным щелчком //

//**************************************************//

procedure TfmStoreView.dbgTableDblClick(Sender: TObject);

begin

if rmDM.qrElements.IsEmpty then

Exit;

fmElementStoreView.ElementView := true;

fmElementStoreView.ShowModal;

end;

//****************************//

// Разрушение формы //

//****************************//

procedure TfmStoreView.FormDestroy(Sender: TObject);

var

i : integer;

IniFile : TIniFile;

begin

IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'IniFiles/Category.ini');

IniFile.EraseSection('CATEGORY_STORE');

if tsPages.Tabs[0] <> 'Пусто' then

for i := 0 to tsPages.Tabs.Count - 1 do

IniFile.WriteString('CATEGORY_STORE', 'CAT' + IntToStr(i+1), tsPages.Tabs[i]);

IniFile.Free;

end;

//***************************************************//

// Переход в режим просмотра мест хранения //

//***************************************************//

procedure TfmStoreView.tbStorePlacesClick(Sender: TObject);

begin

fmStorePlaceView.ShowModal;

tsPagesClick(Sender);

end;

end.

//Модуль авторегистрации

unit Reg;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, ComCtrls, IB, IniFiles;

type

TfmReg = class(TForm)

paBack: TPanel;

Label1: TLabel;

pbReg: TProgressBar;

Label2: TLabel;

timReg: TTimer;

procedure FormCreate(Sender: TObject);

procedure timRegTimer(Sender: TObject);

private

{ Private declarations }

public

end;

var

fmReg: TfmReg;

implementation

{$R *.dfm}

uses DataModule, IBStoredProc, Greet, Math, StrUtils, WinSock;

//************************//

// Получение логина //

//************************//

function GetCurrentUserName: string;

const

cnMaxUserNameLen = 254;

var

sUserName: string;

dwUserNameLen: DWORD;

begin

dwUserNameLen := cnMaxUserNameLen - 1;

SetLength(sUserName, cnMaxUserNameLen);

GetUserName(PChar(sUserName), dwUserNameLen); //вызов API-функции

SetLength(sUserName, dwUserNameLen);

Result := sUserName; //возвращаем имя пользователя

end;

//***************************//

// Получение IP-адреса //

//***************************//

function GetIPAddress(name: string): string;

var

WSAData: TWSAData;

p: PHostEnt;

begin

try

WSAStartup($0101, WSAData);

p := GetHostByName(PChar(name));

Result := inet_ntoa(PInAddr(p.h_addr_list^)^);

except

Result := '127.0.0.1';

end;

WSACleanup;

end;

//***********************//

// Создание формы //

//***********************//

procedure TfmReg.FormCreate(Sender: TObject);

begin

timReg.Enabled := true;

end;

//***************//

// Таймер //

//***************//

procedure TfmReg.timRegTimer(Sender: TObject);

var

MyIni : TIniFile; //берем путь к базе из ini-файла

KeyFile : TextFile; //файл с RSA-ключом

sPassword : string;

Num : integer;

WinDir: PChar;

List : TStringList;

bExist : boolean;

FileName : string;

HostName : string;

DBPath : string;

begin

timReg.Destroy;

Randomize;

pbReg.StepIt;

fmReg.Refresh;

if not FileExists(ExtractFilePath(Application.ExeName) + 'IniFiles\DB.INI')

then

begin

Application.MessageBox('Не найден ini-файл','Ошибка!',MB_ICONERROR);

Application.Terminate;

Exit;

end;

MyIni := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'IniFiles\DB.INI'); //обращаемся к нужному ini-файлу

HostName := MyIni.ReadString('OPTIONS','DBHOST','-1');

DBPath := MyIni.ReadString('OPTIONS','DBPATH','-1');

if HostName = '-1' then

begin

Application.MessageBox('Ошибка подключения к базе данных',

'Ошибка!',MB_ICONERROR); //если не вышло - ошибка!

Application.Terminate;

Exit;

end;

DM.dbRimbase.DatabaseName := GetIPAddress(HostName) + ':' + DBPath;

DM.ShowRemindDialog := MyIni.ReadBool('OPTIONS','ShowRemind',true);

MyIni.Free;

fmReg.pbReg.StepIt; //двигаем указатель прогресса выполнения

DM.dbRimbase.Connected := false; //на всякий случай отключаемся от базы

try //пытаюсь подключиться к базе

DM.dbRimbase.Open;

except

GetMem(WinDir, 144);

GetWindowsDirectory(WinDir, 144);

StrCat(WinDir, '\system32\drivers\etc\services');

FileName := StrPas(WinDir);

FreeMem(WinDir, 144);

List:= TStringList.Create;

List.LoadFromFile(FileName);

bExist := false;

for Num :=0 to List.Count - 1 do

if Pos('gds_db', List[Num]) <> 0 then

begin

bExist := true;

break;

end;

if not bExist then

begin

List.Add('gds_db 3050/tcp #interbase mlya =)');

List.SaveToFile(FileName);

end;

List.Free;

try

DM.dbRimBase.Open;

except

Application.MessageBox('Ошибка подключения к базе данных',

'Ошибка!',MB_ICONERROR); //если не вышло - ошибка!

Application.Terminate;

Exit;

end;

end;

fmReg.pbReg.StepIt;

DM.sLogin := Trim(GetCurrentUserName); //определили кто за компом

//генерация пароля

if not FileExists(ExtractFilePath(Application.ExeName) + 'IniFiles\key.txt')

then

begin

Application.MessageBox('Не найден ключ-файл','Ошибка!',MB_ICONERROR);

Application.Terminate;

Exit;

end;

AssignFile(KeyFile,ExtractFilePath(Application.ExeName) + 'IniFiles\key.txt'); //подключаем файл с ключом

Reset(KeyFile);

for Num := 1 to (1 + Random(24)) do

Readln(KeyFile,sPassword);

Num := 1 + Random(47);

sPassword := AnsiMidStr(sPassword,Num,15);

fmReg.pbReg.StepIt;

with DM.spAutoReg do //вызываем процедуру регистрации

begin

ParamByName('VC_LOGIN').Value := DM.sLogin;

ParamByName('VC_PASS').Value := sPassword;

ParamByName('REFRESH_CALL').Value := 0;

Prepare;

ExecProc;

DM.sName := ParamByName('VC_NAME').AsString; //запомнили ФИО

DM.sLogin := ParamByName('VC_REAL_LOGIN').AsString; //и логин

DM.nRole := ParamByName('N_ROLE').AsInteger; //и роль

DM.nLevel := ParamByName('N_ACL').AsInteger; //и ACL

Close;

end;

fmReg.pbReg.StepIt;

DM.trRimBase.CommitRetaining; //сохраняем изменения в базе

fmGreet.Show; //играемся с формами

fmGreet.GreetTimer.Enabled := true;

fmGreet.BringToFront;

fmReg.Hide;

end;

end.

//Модуль импорта сведений о пользователях локальной сети

unit ImportUsers;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, ComCtrls, ShellAPI, Buttons;

type

TfmImportUsers = class(TForm)

ListView: TListView;

BottomPanel: TPanel;

buGetData: TButton;

buImportData: TButton;

buExit: TButton;

StatusBar: TStatusBar;

RadioGroup: TRadioGroup;

procedure buExitClick(Sender: TObject);

procedure buGetDataClick(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure ListViewClick(Sender: TObject);

procedure ListViewColumnClick(Sender: TObject; Column: TListColumn);

procedure buImportDataClick(Sender: TObject);

procedure FormShow(Sender: TObject);

procedure ListViewCompare(Sender: TObject; Item1, Item2: TListItem; Data: Integer; var Compare: Integer);

private

{ Private declarations }

public

UserList : TStringList;

CheckAll : boolean;

ColumnToSort : integer;

NumOfClicks : integer;

procedure GenerateList(var s : string);

procedure GetUserInfo(sLogin : string);

end;

var

fmImportUsers: TfmImportUsers;

implementation

uses StrUtils, DataModule;

{$R *.dfm}

//***********************************//

// Перехват вывода из консоли //

//***********************************//

function GetDosOutput(const CommandLine: string;

const WorkDir: string;

var text: String): Boolean;

var

SA: TSecurityAttributes;

SI: TStartupInfo;

PI: TProcessInformation;

StdOutPipeRead, StdOutPipeWrite: THandle;

WasOK: Boolean;

Buffer: array[0..255] of Char;

BytesRead: Cardinal;

Line: String;

begin

Application.ProcessMessages;

with SA do

begin

nLength := SizeOf(SA);

bInheritHandle := True;

lpSecurityDescriptor := nil;

end;

// create pipe for standard output redirection

CreatePipe(StdOutPipeRead, // read handle

StdOutPipeWrite, // write handle

@SA, // security attributes

0 // number of bytes reserved for pipe - 0 default

);

try

// Make child process use StdOutPipeWrite as standard out,

// and make sure it does not show on screen.

with SI do

begin

FillChar(SI, SizeOf(SI), 0);

cb := SizeOf(SI);

dwFlags := STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;

wShowWindow := SW_HIDE;

hStdInput := GetStdHandle(STD_INPUT_HANDLE);

hStdOutput := StdOutPipeWrite;

hStdError := StdOutPipeWrite;

end;

// launch the command line compiler

//WorkDir := 'C:\';

result := CreateProcess(

nil,

PChar(CommandLine),

nil,

nil,

True,

0,

nil,

PChar(WorkDir),

SI,

PI);

CloseHandle(StdOutPipeWrite);

// if process could be created then handle its output

if result then

try

// get all output until dos app finishes

Line := '';

repeat

// read block of characters (might contain carriage returns and line feeds)

WasOK := ReadFile(StdOutPipeRead, Buffer, 255, BytesRead, nil);

// has anything been read?

if BytesRead > 0 then

begin

// finish buffer to PChar

Buffer[BytesRead] := #0;

// combine the buffer with the rest of the last run

Line := Line + Buffer;

end;

until not WasOK or (BytesRead = 0);

// wait for console app to finish (should be already at this point)

WaitForSingleObject(PI.hProcess, INFINITE);

finally

// Close all remaining handles

CloseHandle(PI.hThread);

CloseHandle(PI.hProcess);

end;

finally

text := Line;

CloseHandle(StdOutPipeRead);

end;

end;

//*************************//

// Перевод кодировки //

//*************************//

procedure DosToWinConvert(var s: string); //перекодировка

var

Old, New : PChar;

begin

Old := PChar(s);

New := Old;

OemToChar(Old, New);

s := string(New);

end;

//***********************//

// Создание формы //

//***********************//

procedure TfmImportUsers.FormCreate(Sender: TObject);

begin

UserList := TStringList.Create;

end;

//********************//

// Показ формы //

//********************//

procedure TfmImportUsers.FormShow(Sender: TObject);

begin

RadioGroup.ItemIndex := 0;

ListView.Items.Clear;

StatusBar.Panels.Items[0].Text := ' Всего: 0';

StatusBar.Panels.Items[3].Text := ' Отмечено: 0';

ColumnToSort := 1;

NumOfClicks := 1;

CheckAll := false;

buImportData.Enabled := false;

end;

//**************************//

// Обработчик: Выход //

//**************************//

procedure TfmImportUsers.buExitClick(Sender: TObject);

begin

fmImportUsers.Close;

end;

//**************************************//

// Обработчик: Получить сведения //

//**************************************//

procedure TfmImportUsers.buGetDataClick(Sender: TObject);

var

s : string;

i, Left, Top, Bottom : integer;

Step : double;

begin

Top := Round(StatusBar.Height / 4);

Left := StatusBar.Panels[0].Width + StatusBar.Panels[1].Width + 5;

Bottom := 3 * Top;

StatusBar.Canvas.Pen.Color := clNavy;

StatusBar.Canvas.Brush.Color := clNavy;

StatusBar.Canvas.Rectangle(Left, Top, Left + 8, Bottom);

StatusBar.Panels.Items[1].Text := ' Идет получение сведений...';

StatusBar.Panels.Items[0].Text := ' Пусто';

StatusBar.Panels.Items[3].Text := '';

buExit.Enabled := false;

buGetData.Enabled := false;

buImportData.Enabled := false;

if RadioGroup.ItemIndex = 0

then GetDosOutput('net user','c:\',s)

else GetDosOutput('net user /domain','c:\',s);

DosToWinConvert(s);

GenerateList(s);

ListView.Items.BeginUpdate; //блокируем отрисовку ListView

ListView.Items.Clear;

if UserList.Count > 0

then Step := 130 / UserList.Count;

for i := 0 to UserList.Count - 1 do

begin

GetUserInfo(UserList.Strings[i]); //получаем информацию по каждому пользователю

StatusBar.Canvas.Rectangle(Left, Top, Left + 8 + Round(Step*(i+1)), Bottom);

end;

StatusBar.Panels.Items[1].Text := '';

ListView.Items.EndUpdate; //разрешаем отрисовку ListView

if UserList.Count > 0 then

with StatusBar.Panels do

begin

Items[0].Text := ' Всего: ' + IntToStr(UserList.Count);

Items[1].Text := '';

Items[3].Text := ' Отмечено: 0';

buImportData.Enabled := true;

end;

buExit.Enabled := true;

buGetData.Enabled := true;

StatusBar.Canvas.Pen.Color := clBtnFace;

StatusBar.Canvas.Brush.Color := clBtnFace;

StatusBar.Canvas.Rectangle(Left, Top, Left + 140, Bottom);

end;

//**********************************//

// Обработчик: Импортировать //

//**********************************//

procedure TfmImportUsers.buImportDataClick(Sender: TObject);

var

i, nUpdated, nNew, nType : integer;

s : string;

begin

DM.spUser.StoredProcName := 'IMPORT_USER_INFO';

nUpdated := 0;

nNew := 0;

StatusBar.Panels.Items[1].Text := ' Идет импорт сведений...';

for i := 0 to ListView.Items.Count - 1 do

if ListView.Items.Item[i].Checked

then

with ListView.Items.Item[i].SubItems do

begin

DM.spUser.Close;

DM.spUser.ParamByName('VC_LOGIN').Value := Strings[0];

DM.spUser.ParamByName('VC_NAME').Value := Strings[1];

DM.spUser.ParamByName('VC_DEP').Value := Strings[2];

DM.spUser.Prepare;

DM.spUser.ExecProc;

nType := DM.spUser.ParamByName('N_TYPE').AsInteger;

if (nType = 1) then nNew := nNew + 1;

if (nType = 0) then nUpdated := nUpdated + 1;

end;

s := 'Добавлено записей: ' + IntToStr(nNew) + #13#10 + 'Обновлено записей: ' + IntToStr(nUpdated);

ShowMessage(s);

StatusBar.Panels.Items[1].Text := '';

end;

//**************************************//

// Создание списка пользователей //

//**************************************//

procedure TfmImportUsers.GenerateList(var s : string);

var

tmp, line : string;

i, j : integer;

begin

UserList.Clear;

i := AnsiPos('--',s);

if i = 0

then

begin

Application.MessageBox('Импорт сведений из данного источника невозможен','Ошибка!',MB_ICONERROR);

Exit;

end;

Delete(s,1,i);

Delete(s,1,80);

i := Pos(#10,s);

line := Copy(s,1,i);

tmp := AnsiLeftStr(s,8);

Delete(s,1,i);

while (tmp <> 'The com') and (tmp <> 'Команда') do

begin

for j := 1 to 3 do

begin

if (j < 3) and (line <> '')

then

begin

i := AnsiPos(' ',line);

tmp := Copy(line,1,i-1);

Delete(line,1,i);

line := TrimLeft(line);

end

else tmp := line;

tmp := trim(tmp);

if (tmp <> '') and (tmp <> 'Administrator') and (tmp <> 'Guest')

and (tmp <> 'Администратор') and (tmp <> 'Гость') then UserList.Add(tmp);

end;

i := Pos(#10,s);

line := Copy(s,1,i);

tmp := AnsiLeftStr(s,7);

Delete(s,1,i);

end;

end;

//******************************************//

// Получение сведений о пользователе //

//******************************************//

procedure TfmImportUsers.GetUserInfo(sLogin : string);

var

i,j : integer;

s,tmp : string;

NewItem : TListItem;

begin

if RadioGroup.ItemIndex = 0

then GetDosOutput('net user ' + sLogin,'c:\',s)

else

begin

GetDosOutput('net user ' + sLogin + ' /domain','c:\',s);

for j := 1 to 2 do

begin

i := Pos(#10,s);

Delete(s,1,i);

end;

end;

DosToWinConvert(s);

NewItem := ListView.Items.Add;

for j := 0 to 2 do

begin

i := Pos(#10,s);

tmp := Copy(s,1,i);

Delete(s,1,i);

i := Pos(' ',tmp);

Delete(tmp,1,i-1);

tmp := Trim(tmp);

if Length(tmp) > 50 then SetLength(tmp,50);

NewItem.SubItems.Add(tmp);

end;

end;

//***********************//

// Щелчок по гриду //

//***********************//

procedure TfmImportUsers.ListViewClick(Sender: TObject);

var

i : integer;

chkCount : integer;

begin

chkCount := 0;

for i := 0 to ListView.Items.Count - 1 do

if ListView.Items.Item[i].Checked

then chkCount := chkCount + 1;

StatusBar.Panels.Items[3].Text := ' Отмечено: ' + IntToStr(chkCount);

end;

//********************************//

// Щелчок по столбцу грида //

//********************************//

procedure TfmImportUsers.ListViewColumnClick(Sender: TObject;

Column: TListColumn);

var

i : integer;

begin

if ListView.Items.Count = 0 then Exit;

if Column.Index = 0

then

begin

CheckAll := not CheckAll;

if CheckAll

then

for i := 0 to ListView.Items.Count - 1 do

ListView.Items.Item[i].Checked := true

else

for i := 0 to ListView.Items.Count - 1 do

ListView.Items.Item[i].Checked := false;

if CheckAll

then StatusBar.Panels.Items[3].Text := ' Отмечено: ' + IntToStr(ListView.Items.Count)

else StatusBar.Panels.Items[3].Text := ' Отмечено: 0';

end

else

begin

ListView.Items.BeginUpdate;

ListView.Columns.Items[1].Caption := 'Логин';

ListView.Columns.Items[2].Caption := 'Полное имя';

ListView.Columns.Items[3].Caption := 'Подразделение (примечание)';

if (ColumnToSort = Column.Index) and (NumOfClicks = 1)

then NumOfClicks := 2 else NumOfClicks := 1;

ColumnToSort := Column.Index;

if NumOfClicks = 1

then Column.Caption := Column.Caption + ' (+)'

else Column.Caption := Column.Caption + ' (-)';

(Sender as TCustomListView).AlphaSort;

ListView.Items.EndUpdate;

end;

end;

//************************//

// Сортировка грида //

//************************//

procedure TfmImportUsers.ListViewCompare(Sender: TObject; Item1,

Item2: TListItem; Data: Integer; var Compare: Integer);

var

Index : integer;

begin

Index := ColumnToSort - 1;

Compare := AnsiCompareText(Item1.SubItems[Index],Item2.SubItems[Index]);

if NumOfClicks = 2 then Compare := (-1) * Compare;

end;

end.

Руководство оператора

1. НАЗНАЧЕНИЕ ПРОГРАММЫ

Программное обеспечение информационно-поисковой системы «Разработка и макетирование» (ПО ИПС РиМ) обеспечивает:

- автоматическую регистрацию и аутентификацию пользователей при входе в ИПС;

- управление учетными записями пользователей ИПС, а также учетными сведениями о них;

- автоматическое формирование перечней элементов и ведомостей покупных изделий, используемых в электрических схемах проектируемых узлов и блоков электронной аппаратуры;

- автоматизацию учета имеющихся на складе ЭРИ, предназначенных для создания макетов и других технических изделий.

2. УСЛОВИЯ ВЫПОЛНЕНИЯ ПРОГРАММЫ

ПО ИПС РиМ предназначено для работы на персональных компьютерах с процессором не ниже i486 под управлением операционных систем Windows NT/2000/XP. На компьютере должны быть установлены MS Excel 2000/XP/2003 и MS Word 2000/XP/2003. SQL Server FireBird 1.5 должен быть установлен и запущен на любом компьютере локальной сети.

Минимальные требования: процессор с тактовой частотой не менее 300 МГц, ОЗУ не менее 128 МБ, 500 МБ свободного дискового пространства, манипулятор «мышь».

ПО ИПС РиМ, содержащее программу в файле RimBase.exe, динамическую библиотеку gds32.dll, папку IniFiles с файлами инициализации Category.ini, DB.ini и key.txt, должно находиться на жестком диске компьютера в одной папке с любым именем. Папка с БД может находиться на любом компьютере локальной сети и иметь любое имя.

3. ВЫПОЛНЕНИЕ ПРОГРАММЫ

3.1. Запуск ПО ИПС РиМ

Для начала работы следует запустить файл RimBase.exe, после чего появляется окно-заставка подключения к базе данных, затем окно-приветствие и главное окно с выбором категорий, реализующее пользовательский интерфейс.

В верхней части главного окна (рис.1) находится меню, выбор команд которого задает выполнение необходимых действий. Под главным меню располагается список элементов, отсортированный по категориям.

Главное меню состоит из следующих команд:

- Файл

- выполнение всех операций с элементами и категориями элементов;

- Поиск

- поиск элементов по заданному критерию;

- Правка

- редактирование информации об узлах и блоках электронной аппаратуры;

- Вид

- выбор режима отображения информации;

- Администрирование

- выполнение операций со списком пользователей РиМ и накопленной информацией об использовании ресурсов ИПС;

- Склад

- выполнение операций по ведению складского учета.

Главное окно ПО ИПС РиМ

Рисунок 1

Меню «Администрирование» содержит команды:

- Управление пользователями

- доступ к учетным записям пользователей РиМ;

- Управление сессиями

- доступ к настройкам модуля мониторинга использования ресурсов ИПС РиМ;

- Анализ данных

- анализ использования ресурсов ИПС РиМ.

3.2 Завершение работы с ПО ИПС РиМ

Для завершения работы следует выбрать команду главного меню "Файл->Выход" или нажать на кнопку закрытия главного окна.

3.3. Работа с главным меню ПО ИПС РиМ

Выбор команд из главного и дополнительных меню задается щелчком мыши по пунктам меню. Для отмены выбора команды следует нажать клавишу Esc или перевести курсор мыши на другой пункт меню.

3.3.1. Команда «Администрирование»

Команда предназначена для управления пользователями и настройками ПО ИПС РиМ.

3.3.1.1. Команда «Управление пользователями»

Команда предназначена для управления учетными записями пользователей ПО ИПС РиМ. После выбора команды активизируется окно «Управление пользователями» подсистемы администрирования (рис. 2).

Окно для управления пользователями

Рисунок 2

В верхней части окна находится меню, выбор команд которого задает выполнение необходимых действий. Под главным меню находится список всех пользователей, отсортированный по признакам «Все» и «Новые».

Главное меню этого окна состоит из следующих команд:

- Файл

- выполнение всех операций с учетными записями пользователей;

- Поиск

- поиск пользователей по заданному критерию;

- Правка

- редактирование сведений о пользователях;

- Вид

- выбор режима отображения информации;

Меню «Файл» содержит команды:

- Добавить…

- добавление нового пользователя;

- Удалить…

- удаление выбранного пользователя;

- Импорт данных

- импорт сведений из домена локальной сети или с данного компьютера;

- Системные словари

- управление системными словарями;

- Выход

- завершение работы с подсистемой администрирования.

Меню «Поиск» содержит команды:

- Найти

- поиск пользователей по одному или нескольким критериям.

Меню «Правка» содержит команды:

- Редактировать

- изменение сведений о пользователе

Меню «Вид» содержит команды:

- Таблица

- отображение информации о пользователях в табличном виде

- Форма

- отображение информации о пользователях в виде формы.

Работа с главным меню подсистемы администрирования

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

Команда «Файл»

Команда предназначена для работы с учетными сведениями пользователей.

Команда «Добавить…»

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

Окно для добавления пользователя

Рисунок 3

Для подтверждения введенных данных необходимо нажать кнопку СОХРАНИТЬ. Для отказа - нажать кнопку ОТМЕНА или кнопку закрытия окна.

Команда «Удалить…»

Команда предназначена для удаления выбранного пользователя. После выбора команды активизируется диалоговое окно с запросом «Удалить пользователя … ?». Нажатие кнопки ДА приводит к удалению этого пользователя, а нажатие кнопки НЕТ позволяет оператору отказаться от удаления.

Команда «Импорт сведений»

Команда предназначена для импорта сведений о пользователях локальной сети. После выбора команды активизируется диалоговое окно «Импорт сведений о пользователях» (рис. 4).

Окно импорта сведений

Рисунок 4

Чтобы получить имеющиеся сведения, необходимо сначала выбрать источник этих сведений, а потом нажать на кнопку ПОЛУЧИТЬ СВЕДЕНИЯ. После обработки запроса в списке будут отображены все найденные пользователи. Далее необходимо отметить тех пользователей, сведения о которых нужно импортировать и нажать на кнопку ИМПОРТИРОВАТЬ. Сведения будут занесены в базу данных. Чтобы отказаться от импорта надо нажать на кнопку ВЫХОД или на кнопку закрытия окна.

Команда «Системные словари»

Команда предназначена для управления системными словарями «Роли пользователей» и «Коды доступа к документам». После выбора команды активизируется диалоговое окно «Управление словарями» (рис. 5).

Окно управления словарями

Рисунок 5

Чтобы добавить элемент в словарь, необходимо нажать кнопку ДОБАВИТЬ и в открывшемся окне добавления элемента словаря ввести требуемое наименование (рис. 6), после чего нажать кнопку СОХРАНИТЬ. Отменить добавление можно нажатием кнопки ОТМЕНА или кнопки закрытия окна. Для удаления элемента из словаря предназначена кнопка УДАЛИТЬ, для изменения наименования - кнопка РЕДАКТИРОВАТЬ. Переключение между словарями осуществляется щелчком мыши на соответствующей закладке. Чтобы выйти из режима управления словарями, необходимо нажать кнопку ВЫХОД или кнопку закрытия окна.

Окно добавления элемента в словарь

Рисунок 6

Команда «Поиск»

Команда предназначена для поиска сведений об учетных записях пользователей по одному или нескольким критериям.

Команда «Найти»

Команда предназначена для поиска сведений об учетных записях пользователей по одному или нескольким критериям. После выбора команды активизируется диалоговое окно «Поиск пользователей» (рис. 7).

Окно поиска сведений о пользователе

Рисунок 7

Каждый из предусмотренных критериев поиска выбирается или отменяется щелчком мыши по индикатору, расположенном слева от названия критерия, после чего появляется или исчезает «галочка». Выбранный критерий поиска отмечается «галочкой» в соответствующем индикаторе. После выбора конкретного критерия напротив него активизируется поле для ввода значения или поле выбора значений из списка.

Нажатие на кнопку НАЙТИ запускает процесс поиска информации, удовлетворяющей значениям выбранных критериев. Результат поиска отображается на закладке «Результат поиска» окна «Управление пользователями» (рис.8).

Для закрытия окна необходимо нажать кнопку ОТМЕНА или нажать на кнопку закрытия окна.

Окно с результатом поиска

Рисунок 8

Команда «Правка»

Команда предназначена для изменения сведений о пользователях.

Команда «Редактировать»

Команда предназначена для редактирования сведений о пользователях. После выбора команды активизируется диалоговое окно «Редактирование пользователя» (рис. 9).

Окно для редактирования сведений о пользователе

Рисунок 9

После внесения всех необходимых изменений необходимо нажать кнопку СОХРАНИТЬ. После этого активизируется диалоговое окно с запросом «Изменить сведения о пользователе…?». Нажатие кнопки ДА приводит к сохранению введенной информации, а нажатие кнопки НЕТ позволяет оператору отказаться от сохранения

Команда «Вид»

Команда предназначена для переключения режима отображения информации (Таблица/Форма).

Команда «Таблица»

Команда предназначена для отображения информации о пользователях в виде таблицы. Отображение сведений в табличном виде представлено на рисунке 2.

Команда «Форма»

Команда предназначена для отображения информации об элементах в виде формы. Отображение сведений в виде формы представлено на рисунке 10.

Отображение информации в виде формы

Рисунок 10

Навигация по учетным записям осуществляется с помощью кнопок, расположенных в левом нижнем углу формы.

Действие «Назначить новые права доступа отмеченным пользователям». Команда предназначена для назначения новых прав доступа пользователям, учетные записи которых были отмечены в окне «Управление пользователей» «галочкой» (в режиме таблицы). В режиме формы команда будет применена к текущей учетной записи. После выбора команды активизируется диалоговое окно «Назначение прав доступа» (рис. 11).

Окно назначения прав доступа пользователям

Рисунок 11

В открывшемся окне необходимо отметить «галочкой» категорию прав доступа, которую требуется изменить, после чего выбрать новое значение из выпадающего списка. Для сохранения изменений нужно нажать на кнопку НАЗНАЧИТЬ, для отмены команды - на кнопку ОТМЕНА или кнопку закрытия окна.

Действие «Поиск по логину»

Команда выполняет инкрементальный поиск пользователей по их логину путем установки фильтра отображения на таблицу значений. Модификация фильтра производится путем изменения введенного значения в поле ввода «Поиск по логину».

Работа с панелью инструментов окна «Управление пользователями»

Кнопки на панели инструментов дублируют основные команды главного меню и предназначены для их быстрого вызова.

Команда «Добавить пользователя»

Дублирует команду главного меню «Файл->Добавить…».

Команда «Удалить пользователя»

Дублирует команду главного меню «Файл->Удалить…».

Команда «Поиск»

Дублирует команду главного меню «Поиск->Найти».

Команда «Редактировать»

Дублирует команду главного меню «Правка->Редактировать».

Команда «Таблица»

Дублирует команду главного меню «Вид->Таблица».

Команда «Форма»

Дублирует команду главного меню «Вид->Форма».

Команда «Показать уведомление о новых пользователях»

Предназначена для показа окна-уведомления о новых пользователях (рис. 12). В этом окне выводится информация о наличии в системе новых зарегистрированных пользователей. Чтобы данное окно показывалось при входе в подсистему администрирования, необходимо отметить «галочкой» соответствующую настройку. При нажатии кнопки ДА будет осуществлен переход на закладку «Новые». При нажатии кнопки НЕТ будет закрыто окно уведомления.

Команда «Импорт сведений о пользователях»

Дублирует команду главного меню «Файл->Импорт сведений».

Команда «Управление словарями»

Дублирует команду главного меню «Файл->Управление словарями».

Протокол тестирования

№ теста

Описание теста

Дата

Результат тестирования

Описание ошибки или примечание

Исправление ошибки

1.1

Запуск программы обычным зарегистриро-ванным пользователем

16.04.05

Выводятся информационное сообщение о подключении к базе данных, приветствие пользователя, главное окно «Элементы» и окно выбора категории.

В приветствии “Пожалуйста, подожДите” пропущена буква Д.

Исправлено. Внесены изменения в форму-приветствие.

1.2

Использование команды Файл | Добавить, соответствующей кнопки на панели инструментов и горячих клавиш Ctrl-N

17.04.05

Активизируется диалоговое окно “Добавление пользователя”

1.3

Использование команды Файл | Удалить, соответствующей кнопки на панели инструментов и горячих клавиш Ctrl-Del

29.04.05

Если строка в списке пользователей выделена цветом (выбрана), то выводится диалоговое окно “Confirm (заголовок окна) Удалить пользователя “…” ”. После нажатия кнопки НЕТ (NO) происходит вывод списка пользователей. После нажатия кнопки ДА (YES) происходит обновление списка пользователей.

1. Если строка в списке пользователей не выделена цветом (не выбрана), то выводится диалоговое окно “Информационно-поисковая система (заголовок окна) Access violation at address … in module `RegModule.exe'. Read of address 00000008”.

2. Обновление и вывод списка пользователей на закладке ВСЕ происходит построчным стиранием и повторным выводом. Это неудачный способ отображения списка.

Исправлено.

1. Сделана проверка на условие отметки пользователя, в противном случае выводится предупреждение.

2. Заменен механизм обновления и отображения информации в таблице.

1.4

Использование команды Файл | Импорт данных, соответствующей кнопки на панели инструментов и горячих клавиш Ctrl-I

29.04.05

Активизируется диалоговое окно “Импорт сведений о пользователях”

1.5

Использование команды Поиск| Найти …, соответствующей кнопки на панели инструментов и горячих клавиш Ctrl-F

29.04.05

Активизируется диалоговое окно “Поиск пользователей”.

1.6

Работа с диалоговым окном “Поиск пользователей ”

29.04.05

Результаты поиска помещаются на новую закладку “Результаты поиска”.

Если все критерии не отмечены или значения для всех критериев не заданы, то результаты поиска включают в себя всех зарегистрированных пользователей.

Для строковых значений различаются строчные и прописные буквы, поиск проводится по начальным символам строк.

1. По логину ищет правильно.

2. По ФИО ищет правильно.

3. По должности ищет правильно.

4. По подразделению ищет правильно.

5. По роли ищет правильно.

6. По сочетанию этих критериев ищет правильно.

1. По коду доступа поиск приводит к ошибке

Dynamic SQL Error

SQL error code = -104

Token unknown - line 1, char 35 and.

2. По дате регистрации поиск приводит к ошибке conversion error from string “0”

Исправлено.

Внесены изменения в процедуру формирования запроса к базе данных.

1.7

Использование команды Правка | Редактировать, соответствую-щей кнопки на панели инструментов и горячих клавиш Ctrl-E

29.04.05

Активизируется диалоговое окно “Редактирование пользователя”.

Независимо от того, выделена строка в списке пользователей или нет, диалоговое окно “Редактирование пользователя” всегда содержит сведения о пользователе, которые находятся в последней строке списка пользователей в главном окне.

Исправлено.

Добавлено слежение за выделенной строкой главного окна, если выделения нет - тогда выводится предупреждение.

1.8

Переход в режим редактирования сведений о пользователе двойным щелчком по списку пользователей

29.04.05

Активизируется диалоговое окно “Редактирование пользователя” со сведениями об указанном мышью пользователе.

Если сделать двойной щелчок за последней строкой списка, то выводится диалоговое окно “Информационно-поисковая система (заголовок окна) Access violation at address … in module `RegModule.exe'. Read of address 00000008”.

Исправлено.

Добавлено перманентное выделение - теперь по двойному щелчку осуществляется переход в окно редактирования отмеченного пользователя

1.9

Запуск модуля пользователем с ролью администратора

17.04.05

Выводятся информационное сообщение о подключении к базе данных, приветствие пользователя и уведомление о количестве зарегистрированных новых пользователей, если задан режим уведомления при входе в систему.

1.10

Работа с окном “Внимание!”

17.04.05

Нажатие кнопки “OK” обычным пользователем активизирует диалоговое окно с сообщением “Вы не являетесь администратором системы”; администратор после ввода логина и пароля входит в систему. Нажатие кнопки “Отмена” активизирует диалоговое окно с надписью “Выход”. После кнопки ОК происходит завершение работы модуля.

Это окно должно появляться при выборе пункта Администрирование в модуле Rimbase.

Исправлено при объединении модулей

1.11

Работа с диалоговым окном “Добавление пользователя”

20.04.05

29.04.05

1. Если не указан Логин, то при нажатии на кнопку Сохранить выводится диалоговое окно с сообщением “Ошибка! (заголовок окна) Не указан логин”. После нажатия кнопки OK происходит возврат в окно “Добавление пользователя”.

2. Значение атрибута “Уровень доступа” не контролируется на допустимость (можно ввести любое целое число <0, =0, >0).

3. Незаданное значение атрибута “Уровень доступа” по умолчанию устанавливается равным нулю. Остальные атрибуты с незаданными значениями устанавливается пустыми.

4. Если заполнено хотя бы поле логина, то при нажатии на кнопку Сохранить выводится диалоговое окно с запросом “Information (заголовок окна) Добавить пользователя “…”?”. После нажатия кнопки ДА (YES) выводится диалоговое окно с сообщением “Информационно-поисковая с… (заголовок окна) Пользователь успешно добавлен”. Нажатие кнопки ОК в этом окне приводит к закрытию диалогового окна “Добавление пользователя”.

После нажатия кнопки НЕТ (NO) происходит возврат в окно “Добавление пользователя”.

5. При попытке добавить пользователя с логином, который уже имеется в БД, выводится сообщение об ошибке “Ошибка! (заголовок окна) Такой пользователь у...


Подобные документы

  • Общее описание информационно–справочной системы, предназначенной для контролирования работы промоутеров. Описание входных и выходных данных. Проектирование интерфейса пользователя. Выбор стратегии разработки тестов. Поиск информации, просмотр отчётов.

    курсовая работа [3,6 M], добавлен 27.07.2014

  • Выбор состава технических и программных средств разработки системы. Описание входных и выходных данных. Выбор модели базы данных. Разработка подсистемы наполнения базы данных, формирования отчетов. Разработка интерфейса пользователя, тестирование системы.

    курсовая работа [3,7 M], добавлен 04.12.2014

  • Возможности программы DBDesigner. Проектирование и реализация информационно-поисковой системы с помощью CASE-средства DBDesigner в среде Intranet. Этапы проектирования базы данных, установление соединения с базой данных на сервере, синхронизация.

    лабораторная работа [1,5 M], добавлен 18.08.2009

  • Совместимость и преобразование типов данных. Создание информационно-поисковой системы на языке программирования Паскаль. Описание интерфейса, каждого блока программы "Картотека больных". Рассмотрение результатов работы программы, сортирования данных.

    курсовая работа [368,9 K], добавлен 18.05.2015

  • Автоматизация и визуализация рабочего места методиста факультета, работающего с личными делами студентов. Создание базы данных и ограничений. Интерфейс пользователя и порядок работы с программным обеспечением. Разработка справки и контекстной помощи.

    курсовая работа [867,3 K], добавлен 22.02.2016

  • Разработка web-приложения для оперирования данными с помощью базы данных и web-браузера в качестве клиента пользователя. Основные преимущества языка программирования Java. Осуществление редактирования, добавления информации и поиска по архивам данных.

    дипломная работа [2,1 M], добавлен 30.09.2016

  • Анализ существующих поисковых систем и используемых ими алгоритмов поиска документов. Разработка информационно-поисковой системы словарного типа, способной осуществлять релевантный поиск документов, особенности ее структуры и информационно-поисковой базы.

    дипломная работа [942,1 K], добавлен 19.05.2011

  • Разработка программы для автоматизации расчетов на телефонной станции. Описание входной и выходной информации, комплекс технических средств. Интерфейс конечного пользователя. Проектирование программных модулей представления входных и выходных данных.

    курсовая работа [460,1 K], добавлен 26.06.2015

  • Разработка информационной системы на языке программирования С++ в среде С++Builder. Схема базы данных. Характеристика энергосберегающих режимов операционной системы. Интерфейс программы, ее установка на компьютер, выполнение, средства и порядок испытания.

    отчет по практике [986,2 K], добавлен 06.02.2016

  • Анализ информационно-поисковых систем автоматизации производства. Построение инфологической и логической модели базы данных технологического оборудования для сборочно-монтажных работ. Выбор языка программирования приложения БД. Алгоритм работы программы.

    дипломная работа [2,5 M], добавлен 18.12.2013

  • Разработка база данных в виде таблицы, включающей поля: ФИО, адрес, номер телефона, наименование услуги, сумма оплаты, срок выполнения. Процедуры программы и соответствующие им пункты в меню. Описание исходных данных, интерфейса и работы каждой процедуры.

    курсовая работа [997,3 K], добавлен 08.06.2014

  • Описание входной и выходной информации. Требования к комплексу технических средств и к интерфейсу конечного пользователя. Разработка форм представления входных и выходных данных. Проектирование программных модулей. Руководство пользователя и программиста.

    курсовая работа [421,6 K], добавлен 27.06.2015

  • База данных как компьютеризованная система, предназначенная для хранения информации и предоставления ее по требованию. Описание предметной области для проектирования и организации базы учета данных готовой продукции и сопровождения ее программой.

    дипломная работа [1,0 M], добавлен 19.05.2011

  • Описание и классификация современных информационно–поисковых систем. Гипертекстовые документы. Обзор и рейтинги основных мировых поисковых систем. Разработка информационно–поисковой системы, демонстрирующей механизм поиска информации в сети Интернет.

    дипломная работа [1,3 M], добавлен 16.06.2015

  • Проектирование программного модуля: сбор исходных материалов; описание входных и выходных данных; выбор программного обеспечения. Описание типов данных и реализация интерфейса программы. Тестирование программного модуля и разработка справочной системы.

    курсовая работа [81,7 K], добавлен 18.08.2014

  • Возможности программы DBDesigner. Моделирование, сопровождения информационных систем. Проектирование базы данных. Кодирование, установление соединения с базой данных на серввере. Синхронизация, запросы для внесения изменений и операций над данными.

    лабораторная работа [1,4 M], добавлен 26.08.2009

  • Проектирование алгоритмов и программных кодов для различных элементов пользовательских форм информационно-аналитической системы. Исследование структуры базы данных. Связь между таблицами. Разработка графического интерфейса программы и справочной системы.

    курсовая работа [2,4 M], добавлен 10.01.2015

  • Проектирование информационно-поисковой системы "Цветы" для решения задач, связанных с предоставлением услуг по оформлению и доставке заказов букетов и композиций. Разработка объектов базы данных - транзакций, представлений, хранимых процедур и запросов.

    курсовая работа [4,2 M], добавлен 26.11.2011

  • Описание входных и выходных данных. Общая характеристика и требования к проектируемой программе, ее структуре и функциональным компонентам. Выбор и обоснование средств разработки, разработка интерфейса пользователя. Требования к программному обеспечению.

    курсовая работа [1,4 M], добавлен 12.05.2016

  • Разработка базы данных при помощи системы управления базами Microsoft Access. Определение состава выходных и входных данных, их математическое выражение и информационно-логическая модель. Разработка блок-схемы алгоритма и таблиц в режиме "Конструктор".

    курсовая работа [2,8 M], добавлен 12.11.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.