Інструкція з експлуатації програми



 

Для нормальної роботи програми комп’ютер повинен відповідати таким умовам:

- Windows 9x/2000/ME/XP

- Pentium III 1000MGz

- 64 Mb Ram

- 32 Mb video card

- CD-ROM

- 2 МВ вільного місця

Для того щоб встановити програму, необхідно вставити диск з програмою, потім скопіювати повністю папку з програмою на комп’ютер, та запустити програму з назвою “ComputerCounter”.

Щоб запустити програму достатньо два рази клацнути на неї, програма знаходиться в папці.

Після запуску програми користувачу потрібно спочатку вибрати що саме він хоче зробити, можна шукати, видаляти, сортувати вже існуючі дані, чи почати створювати нові. Після того як користувач ввів правильні дані, йому потрібно натиснути кнопку пошуку. За допомогою неї здійснюється пошук вказаної інформації. Після чого шукану інформацію буде показано на екран. Якщо інформація яку потрібно знайти, буде введена не вірно то користувач буде повідомлений. Щоб створити новий відділ необхідно поставити курсор миші у поле де розміщенні вже існуючі відділи і ввести назву яку потрібно, після цього необхідно натиснути кнопку з надписом «Додати відділ», тоді у списку відділів з’явиться пустий відділ. Для того щоб змінити назву у вже існуючому відділі, необхідно для початку вибрати відділ для якого потрібно змінити ім’я, після чого натиснути кнопку з надписом «перейменувати», і зроблені дії вступлять в силу. При знищені відділу, необхідно просто вибрати необхідний відділ з відповідною назвою і натиснути кнопку на формі із надписом «Видалити відділ», після чого програма виведе повідомлення і підтвердження видалення. При натисканні кнопки «Ок», відділ із всією існуючою інформацією буде видалений.

 

11 Аналіз отриманих результатів

    Аналіз отриманих результатів проводився після тестування програми. На кожному етапі створення відділу, назва додається до списку вже існуючих відділів, а при видаленні – програма виведе повідомлення на підтвердження повного видалення.

    Виконаний проект повністю відповідає усім поставленим вимогам, тому з упевненістю можна сказати, що поставленої мети досягнуто.

В програмі можна створити, видалити, відредагувати, відсортувати та здійснити пошук по відділах та комп’ютерах.

Після введення нової назви відділу і її підтвердження, вона з’явиться у списку існуючих відділів. Після чого пересвідчитись в достовірності роботи програми.

 

Рисунок 12 – Вікно програми перед початком роботи.

 

Для переміщення комп’ютера з одного відділу в інший натиснемо:

 

Рисунок 13 – Вибір команди із меню «Комп’ютери→перемістити».


Виберається відділ з якого переміщується (відділ1) у який (відділ2).

 

Рисунок 14 – Переміщення комп’ютерів з технічного в технологічний.

 

Рисинук 15 – Переміщена інформація.


Висновок

 

Під час виконання завдання курсової роботи, було розроблено програму, яка веде облік комп’ютерів на підприємстві, з можливість створення нової, зміни та видалення старої непотрібної інформації.

В процесі виконання курсової роботи, створена аналітична модель програми, процес аналізу завдання розглядається в аналітичному розділі, Створена інформаційно-математична модель програми, де було розроблено етапи роботи програми, і всі ці етапи розписані в інформаційно-математичній моделі, розроблений алгоритм програми, де описано в яких послідовностях повинні виконуватися частини програми, та з якими особливостями. Визначена структура даних, з’ясовані ті змінні, які необхідні для виконання поставленої задачі. В процесі роботи був розроблений інтерфейс користувача, який дозволяє легко та без особливих зусиль користуватися програмою. Складений код програми, відповідно до якого програма повинна виконувати всі поставлені перед нею завдання. Проведений аналіз програми, з’ясовані основні події роботи програми та процедури які їх опрацьовують, відбувалось тестування програми на наявність помилок та недоліків роботи, при тестуванні помилок та недоліків не виявлено, складена інструкція до використання програми та встановленні системні вимоги до персонального комп’ютера.


Список літератури

 

1. В. Фаронов – Система программирования Delphi;

2. Глинський Я.М – Turbo Pascal\Delphi 6 – видання;

3. Кэнту – Delphi для профисионалов;

4. Краснов – Графика в проектах Delphi;

5. Марков Є.П. – Програмированье в Delphi 7;

6. Мозговой М. -Занимательное программирование.

7. Григас Г. – Начала програмируванье. – М.,1987

8. Грогоно П. – Програмируванье на языке паскаль.

9. Спірідонов В.І. – Обчислювальна техніка і програмування.

10.  Глинський Я.М. – Основи інформатики та обчислювальної техніки.

11.  Абрамов С.А – Начала програмируванья на языке Паскаль.

12.  Фаронов В.В. – Delphi 5 учебный курс.

13. Черняхівський В.В – Сучасна технологія візуального програмування.

14.  Немнюгин – Turbo Pascal.

15.  Климов – Pascal 7.0

16. Юрий Гурский – Трюки и эффекты в Delphi 7.

17. Род Стивенс – Delphi. Готовые алгоритмы.

18. Виктор Пестриков, Артур Маслобоев – Delphi на примерах.

19. Михаил Фленов – Программирование в Delphi глазами хакера.


Додаток А

 

unit Unit1;

 

interface

 

uses

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

 Dialogs, Grids, Menus, StdCtrls;

 

type

VideoCard=record //Відеокарта

Firma:String[255];

Speed:Word; //Швидкість

Capacity:Word; // В Мб

end;

Monitor=record //Монітор

Firma:String[255];

Width:Word; //Ширина в пікселях

Height:Word; //Висота в пікселях

Diagonal:Byte; //Діагональ в дюймах

end;

Processor=record //Процесор

Firma:String[255];

Frequency:String[5]; //Частота в ГГц

KernelCount:Byte; //Кількість ядер

end;

MotherBoard=record //Материнська плата

Firma:String[255];

Frequency:String[5]; //Частота в МГц

end;

RAM=record //Оперативна пам’ять

Firma:String[255];

TypeRam:String[255]; // DDR, DDR2, DDR3

Capacity:Word; //Об’єм в Мб

Frequency:String[5]; //Частота в МГц

end;

HDD=record //Вінчестер

Firma:String[255];

TypeHDD:String[255]; //ATA, SATA, SATA2...

Capacity:Word; //Об’єм в Гб

Cache:String[5]; //Об’єм кешу в Мб

end;

Computer=record //Комп’ютер

Number:Word; //Номер

USER:String[255]; //Працівник

MVC:VideoCard; //Відеокарта

MM:Monitor; //Монітор

MP:Processor; //Процесор

MMB:MotherBoard; //Материнська плата

MR:RAM; //Оперативна пам’ять

MH:HDD; //Вінчестер

end;

Department=record //Відділ

Name:String[255]; //Назва відділу

Director:String[255]; //Керівник відділу

CompsCount:Byte; //Кількість комп’ютерів в відділі

Comps:array[1..100] of Computer; //Масив до 100 комп’ютерів в одному відділі

end;

 

 TForm1 = class(TForm)

 SG: TStringGrid;

 GroupBox1: TGroupBox;

 ComboBox1: TComboBox;

 Label1: TLabel;

 Button1: TButton;

 Button2: TButton;

 Edit1: TEdit;

 Label2: TLabel;

 ComboBox2: TComboBox;

 Label3: TLabel;

 Button6: TButton;

 Button10: TButton;

 GroupBox2: TGroupBox;

 Label4: TLabel;

 Button3: TButton;

 Button4: TButton;

 Button5: TButton;

 ComboBox3: TComboBox;

 Button7: TButton;

 Button8: TButton;

 MainMenu1: TMainMenu;

 N3: TMenuItem;

 N4: TMenuItem;

 N6: TMenuItem;

 N7: TMenuItem;

 N8: TMenuItem;

 N9: TMenuItem;

 N10: TMenuItem;

 N11: TMenuItem;

 N12: TMenuItem;

 N13: TMenuItem;

 N14: TMenuItem;

 N15: TMenuItem;

 N16: TMenuItem;

 N17: TMenuItem;

 N18: TMenuItem;

 N2: TMenuItem;

 N19: TMenuItem;

 Button9: TButton;

 N20: TMenuItem;

 N21: TMenuItem;

 PopupMenu1: TPopupMenu;

 N22: TMenuItem;

 N23: TMenuItem;

 N24: TMenuItem;

 N25: TMenuItem;

 N26: TMenuItem;

 N27: TMenuItem;

 procedure Save;

 procedure Load;

 procedure FormCreate(Sender: TObject);

 procedure Button3Click(Sender: TObject);

 procedure ShowComp(DepIndex,Index,Row:Byte);

 procedure ShowDepartament(Index:Byte);

 procedure DelDep(Index:Byte);

 function DelComp(DepIndex,Index:Byte):Boolean;

 function MoveCompToDep(DepIndex,Index,NewDep:Byte):Boolean;

 function MoveAllCompToDep(DepIndex,NewDep:Byte):Boolean;

 procedure Button1Click(Sender: TObject);

 procedure Button2Click(Sender: TObject);

 procedure ComboBox1KeyDown(Sender: TObject; var Key: Word;

 Shift: TShiftState);

 procedure FormClose(Sender: TObject; var Action: TCloseAction);

 procedure ComboBox1Change(Sender: TObject);

 procedure Edit1Change(Sender: TObject);

 procedure Button5Click(Sender: TObject);

 procedure SGSelectCell(Sender: TObject; ACol, ARow: Integer;

 var CanSelect: Boolean);

 procedure SGDblClick(Sender: TObject);

 procedure Button4Click(Sender: TObject);

 procedure SGKeyDown(Sender: TObject; var Key: Word;

 Shift: TShiftState);

 procedure RefreshDep;

 procedure SortDepByName;

 procedure SortDepByCount;

 procedure ComboBox2Change(Sender: TObject);

 procedure Button6Click(Sender: TObject);

 procedure SortByNumber;

 procedure SortByUserName;

 procedure SortByMMB;

 procedure SortByMP;

 procedure SortByMR;

 procedure SortByMVC;

 procedure SortByMM;

 procedure SortByMH;

 procedure SortByFreqProc;

 procedure SortByRAMCap;

 procedure SortByHDDCap;

 procedure SortByDiagonal;

 procedure ComboBox3Change(Sender: TObject);

 procedure Button7Click(Sender: TObject);

 procedure Button8Click(Sender: TObject);

 procedure Button9Click(Sender: TObject);

 procedure Button10Click(Sender: TObject);

 procedure N12Click(Sender: TObject);

 procedure N11Click(Sender: TObject);

 procedure N10Click(Sender: TObject);

 procedure N7Click(Sender: TObject);

 procedure N18Click(Sender: TObject);

 procedure N17Click(Sender: TObject);

 procedure N16Click(Sender: TObject);

 procedure N15Click(Sender: TObject);

 procedure N21Click(Sender: TObject);

 procedure N20Click(Sender: TObject);

 procedure N14Click(Sender: TObject);

 procedure N9Click(Sender: TObject);

 procedure N8Click(Sender: TObject);

 procedure N4Click(Sender: TObject);

 procedure N22Click(Sender: TObject);

 procedure N23Click(Sender: TObject);

 procedure N25Click(Sender: TObject);

 procedure N24Click(Sender: TObject);

 procedure N27Click(Sender: TObject);

 procedure N2Click(Sender: TObject);

 procedure N19Click(Sender: TObject);

 private

 { Private declarations }

 public

 { Public declarations }

 end;

 

var

 Form1: TForm1;

 F:File of Department; //Файл запису

 Dep:array[1..30] of Department; //Масив відділів

 Count:Byte=0; //Кількість відділів

 ADD:Boolean=True; //При додавані нового комп’ютера True, а при редагувані False

 SR:Byte=0; //Select Row, номер по списку вибраного комп’ютера із таблиці

 Editing:Boolean=False; //Ознака редагування

 

 

implementation

 

uses Unit2, Unit3, Unit4, Unit5, Unit6, Unit7;

 

{$R *.dfm}

 

procedure TForm1.Save; //Збереження в файл

var i:Byte;

 FileName:String;

begin

FileName:=ExtractFilePath(Application.ExeName)+'Computers'; //Генерація ім’я файлу

AssignFile(F,FileName); ReWrite(F);

for i:=1 to Count do

Write(F,Dep[i]);

CloseFile(F);

end;

 

procedure TForm1.Load; //Завантаження з файлу

var FileName:String;

begin

FileName:=ExtractFilePath(Application.ExeName)+'Computers'; //Генерація ім’я файлу

if not FileExists(FileName) then Exit; //Перевірка на наявність файлу

AssignFile(F,FileName); Reset(F);

Count:=0;

while not eof(F) do begin

INC(Count);

Read(F,DEP[Count]);

ComboBox1.Items.Add(DEP[Count].Name); //Додаємо назву відділу в список

end;

ComboBox1.ItemIndex:=0;

ShowDepartament(1);

CloseFile(F);

end;

 

procedure TForm1.FormCreate(Sender: TObject);

var

 l: DWORD;

 begin

 l := GetWindowLong(Self.Handle, GWL_STYLE);

 l := l and not (WS_MAXIMIZEBOX);

 l := SetWindowLong(Self.Handle, GWL_STYLE, l);

SG.Cells[0,0]:='№';

SG.Cells[1,0]:='Працівник';

SG.Cells[2,0]:='Відео карта';

SG.Cells[3,0]:='Монітор';

SG.Cells[4,0]:='Процесор';

SG.Cells[5,0]:='Материнська карта';

SG.Cells[6,0]:='Оперативна пам’ять';

SG.Cells[7,0]:='Жорсткий диск';

Load;

end;

 

procedure TForm1.Button3Click(Sender: TObject);

begin

Form2.Caption:='Додати комп`ютер';

if ((DEP[ComboBox1.ItemIndex+1].CompsCount>=100)or

 (ComboBox1.ItemIndex<0)) then Exit;

ADD:=True;

Form2.Show;

Form2.ClearEdit;

end;

 

procedure TForm1.ShowComp(DepIndex,Index,Row:Byte); //Показати комп’ютер в таблиці

begin

if ((Row<1)or(Index<1)or(Index>DEP[DepIndex].CompsCount)) then Exit;

if Row>=SG.RowCount then SG.RowCount:=Row+1;

SG.Rows[Row].Clear;

SG.Cells[0,Row]:=IntToStr(DEP[DepIndex].Comps[Index].Number);

SG.Cells[1,Row]:=DEP[DepIndex].Comps[Index].USER;

SG.Cells[2,Row]:=DEP[DepIndex].Comps[Index].MVC.Firma;

SG.Cells[3,Row]:=DEP[DepIndex].Comps[Index].MM.Firma;

SG.Cells[4,Row]:=DEP[DepIndex].Comps[Index].MP.Firma;

SG.Cells[5,Row]:=DEP[DepIndex].Comps[Index].MMB.Firma;

SG.Cells[6,Row]:=DEP[DepIndex].Comps[Index].MR.Firma;

SG.Cells[7,Row]:=DEP[DepIndex].Comps[Index].MH.Firma;

end;

 

procedure TForm1.ShowDepartament(Index:Byte); //Вивести всю інф про відділ на екран

var i:Word;

begin

if ((Index>Count)or(Index<1)) then begin

Edit1.Clear;

SG.RowCount:=2;

SG.Rows[1].Clear;

Exit;

end;

for i:=0 to Count-1 do

if ComboBox1.Items.Strings[i]=DEP[Index].Name then begin

ComboBox1.ItemIndex:=i; Break;

end;

if DEP[Index].CompsCount>0 then

SG.RowCount:=DEP[Index].CompsCount+1

else begin

SG.RowCount:=2;

SG.Rows[1].Clear;

end;

Edit1.Text:=DEP[Index].Director;

for i:=1 to DEP[Index].CompsCount do

ShowComp(Index,i,i);

end;

 

procedure TForm1.DelDep(Index:Byte); //Видалення відділу

var i:Byte;

begin

if ((Count<1)or(Index<1)) then Exit;

for i:=Index to Count-1 do

Dep[i]:=Dep[i+1];

DEC(Count);

ComboBox1.Items.Delete(Index-1);

ComboBox1.ItemIndex:=0;

ShowDepartament(1);

Editing:=True;

end;

 

function TForm1.DelComp(DepIndex,Index:Byte):Boolean; //Видалення комп’ютера

var i:Byte;

begin

Result:=False;

if ((DepIndex<1)or(DepIndex>Count)) then Exit;

if ((Index<1)or(Index>DEP[DepIndex].CompsCount)) then Exit;

for i:=Index to DEP[DepIndex].CompsCount-1 do

DEP[DepIndex].Comps[i]:=DEP[DepIndex].Comps[i+1];

DEC(DEP[DepIndex].CompsCount);

ShowDepartament(DepIndex);

Result:=True;

Editing:=True;

end;

 

//Перенесення одного комп’ютера з одного відділу в інший

function TForm1.MoveCompToDep(DepIndex,Index,NewDep:Byte):Boolean;

begin

Result:=False;

if DepIndex=NewDep then Exit;

if ((DepIndex<1)or(DepIndex>Count))or

 ((NewDep<1)or(NewDep>Count)) then Exit;

if ((Index<1)or(Index>DEP[DepIndex].CompsCount))or

 (DEP[NewDep].CompsCount=100) then Exit;

INC(DEP[NewDep].CompsCount);

DEP[NewDep].Comps[DEP[NewDep].CompsCount]:=DEP[DepIndex].Comps[Index];

DelComp(DepIndex,Index);

Result:=True;

Editing:=True;

end;

 

//Перенесення всіх комп’ютерів з одного відділу в інший

function TForm1.MoveAllCompToDep(DepIndex,NewDep:Byte):Boolean;

var i,C:Byte;

begin

Result:=False;

if DepIndex=NewDep then Exit;

if ((DepIndex<1)or(DepIndex>Count))or

 ((NewDep<1)or(NewDep>Count)) then Exit;

if ((DEP[NewDep].CompsCount+DEP[DepIndex].CompsCount)>100) then Exit;

 

C:=DEP[DepIndex].CompsCount;

for i:=1 to C do begin

INC(DEP[NewDep].CompsCount);

DEP[NewDep].Comps[DEP[NewDep].CompsCount]:=DEP[DepIndex].Comps[i];

DelComp(DepIndex,1);

end;

Result:=True;

Editing:=True;

end;

 

procedure TForm1.Button1Click(Sender: TObject); //Додавання нового відділу

var i:Byte;

begin

if Count>29 then Exit;

for i:=0 to ComboBox1.Items.Count-1 do //Перевірка на наявність відділу

if ComboBox1.Text=ComboBox1.Items.Strings[i] then begin

ShowMessage('Такий відділ вже є!');

Exit;

end;

if ComboBox1.Text<>'' then begin

INC(Count);

Dep[Count].Name:=ComboBox1.Text;

Dep[Count].CompsCount:=0;

ComboBox1.Items.Add(ComboBox1.Text);

ComboBox1.ItemIndex:=ComboBox1.Items.Count-1;

ShowDepartament(ComboBox1.ItemIndex+1);

Editing:=True;

end;

end;

 

procedure TForm1.Button2Click(Sender: TObject); //Видалення відділу

begin

if ((ComboBox1.ItemIndex>=0)and(ComboBox1.Items.Count>0)) then

if MessageDlg('Видалити відділ'+#13#10+'із всіма його комп’ютерами',

mtConfirmation,[mbOk,mbCancel],0)=mrOk then

DelDep(ComboBox1.ItemIndex+1);

end;

 

procedure TForm1.ComboBox1KeyDown(Sender: TObject; var Key: Word;

 Shift: TShiftState);

begin

if Key=13 then Button1.OnClick(Button1); //Додавання відділу

end;

 

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

begin

if Editing then

if MessageDlg('Зберегти зміни?',mtConfirmation,[mbNo,mbYes],0)=mrYes then

Save;

end;

 

procedure TForm1.ComboBox1Change(Sender: TObject); //Вибір відділу

begin

if ComboBox1.ItemIndex>=0 then

ShowDepartament(ComboBox1.ItemIndex+1);

end;

 

procedure TForm1.Edit1Change(Sender: TObject); //Зміна директора відділу

begin

if ComboBox1.ItemIndex>=0 then

DEP[ComboBox1.ItemIndex+1].Director:=Edit1.Text;

end;

 

procedure TForm1.Button5Click(Sender: TObject); //Редагування інф про комп’ютер

begin

Form2.Caption:='Редагувати комп`ютер';

if ((ComboBox1.ItemIndex<0)or(SR<1)or

 (SR>DEP[ComboBox1.ItemIndex+1].CompsCount)) then Exit;

ADD:=False;

Form2.Show;

Form2.ClearEdit;

Form2.RecToEdit;

end;

 

procedure TForm1.SGSelectCell(Sender: TObject; ACol, ARow: Integer;

 var CanSelect: Boolean);

begin

SR:=ARow; //Робимо вибраний комп’ютер поточним

end;

 

procedure TForm1.SGDblClick(Sender: TObject);

begin

Button5.OnClick(Button5); //Редагування інф про комп’ютер

end;

 

procedure TForm1.Button4Click(Sender: TObject); //Видалення комп’ютера

var CurD:Byte;

begin

CurD:=ComboBox1.ItemIndex+1;

if ((ComboBox1.Items.Count<1)or(CurD<1)) then Exit;

if ((SR<1)or(SR>DEP[CurD].CompsCount)) then Exit;

if MessageDlg('Видалити комп’ютер',mtConfirmation,[mbOk,mbCancel],0)=mrOk then

DelComp(CurD,SR);

end;

 

procedure TForm1.SGKeyDown(Sender: TObject; var Key: Word;

 Shift: TShiftState);

begin

if Key=46 then //Видалення комп’ютера натиском клавіші Del

Button4.OnClick(Button4);

end;

 

procedure TForm1.RefreshDep; //Оновити список відділів

var i:Byte;

begin

ComboBox1.Clear;

for i:=1 to Count do

ComboBox1.Items.Add(DEP[i].Name);

if ComboBox1.Items.Count>0 then

ComboBox1.ItemIndex:=0;

ShowDepartament(1);

end;

 

procedure TForm1.SortDepByName; //Сортувати відділи за назвою

var i,j:Byte;

 D:Department;

begin

for i:=1 to Count-1 do

for j:=i+1 to Count do

if DEP[i].Name<DEP[j].Name then begin

D:=DEP[i];

DEP[i]:=DEP[j];

DEP[j]:=D;

end;

RefreshDep;

end;

 

procedure TForm1.SortDepByCount; //Сортувати відділи за кількістю копм’ютерів

var i,j:Byte;

 D:Department;

begin

for i:=1 to Count-1 do

for j:=i+1 to Count do

if DEP[i].CompsCount<DEP[j].CompsCount then begin

D:=DEP[i];

DEP[i]:=DEP[j];

DEP[j]:=D;

end;

RefreshDep;

end;

 

procedure TForm1.ComboBox2Change(Sender: TObject);

begin

//Сортування відділів за вибраним критерієм

if ComboBox1.Items.Count>0 then

case ComboBox2.ItemIndex of

0 : SortDepByName;

1 : SortDepByCount;

end;

end;

 

procedure TForm1.Button6Click(Sender: TObject); //Інвертувати список відділів

var i,L:Byte;

 D:Department;

begin

if Count<=1 then Exit;

L:=Trunc(Count/2);

for i:=1 to L do begin

D:=DEP[i];

DEP[i]:=DEP[Count-i+1];

DEP[Count-i+1]:=D;

end;

RefreshDep;

end;

 

procedure TForm1.SortByNumber; //Сортування за номером

var i,j,C,Cur:Byte;

 D:Computer;

begin

Cur:=ComboBox1.ItemIndex+1;

if ((Cur<1)or(Cur>Count)) then Exit;

C:=DEP[Cur].CompsCount;

for i:=1 to C-1 do

for j:=i+1 to C do

if DEP[Cur].Comps[i].Number>DEP[Cur].Comps[j].Number then begin

D:=DEP[Cur].Comps[i];

DEP[Cur].Comps[i]:=DEP[Cur].Comps[j];

DEP[Cur].Comps[j]:=D;

end;

ShowDepartament(Cur);

end;

 

procedure TForm1.SortByUserName; //Сортування за ім’ям працівника

var i,j,C,Cur:Byte;

 D:Computer;

begin

Cur:=ComboBox1.ItemIndex+1;

if ((Cur<1)or(Cur>Count)) then Exit;

C:=DEP[Cur].CompsCount;

for i:=1 to C-1 do

for j:=i+1 to C do

if DEP[Cur].Comps[i].USER>DEP[Cur].Comps[j].USER then begin

D:=DEP[Cur].Comps[i];

DEP[Cur].Comps[i]:=DEP[Cur].Comps[j];

DEP[Cur].Comps[j]:=D;

end;

ShowDepartament(Cur);

end;

 

procedure TForm1.SortByMMB; //Сортування за виробником материнської плати

var i,j,C,Cur:Byte;

 D:Computer;

begin

Cur:=ComboBox1.ItemIndex+1;

if ((Cur<1)or(Cur>Count)) then Exit;

C:=DEP[Cur].CompsCount;

for i:=1 to C-1 do

for j:=i+1 to C do

if DEP[Cur].Comps[i].MMB.Firma>DEP[Cur].Comps[j].MMB.Firma then begin

D:=DEP[Cur].Comps[i];

DEP[Cur].Comps[i]:=DEP[Cur].Comps[j];

DEP[Cur].Comps[j]:=D;

end;

ShowDepartament(Cur);

end;

 

procedure TForm1.SortByMP; //Сортування за виробником процесора

var i,j,C,Cur:Byte;

 D:Computer;

begin

Cur:=ComboBox1.ItemIndex+1;

if ((Cur<1)or(Cur>Count)) then Exit;

C:=DEP[Cur].CompsCount;

for i:=1 to C-1 do

for j:=i+1 to C do

if DEP[Cur].Comps[i].MP.Firma>DEP[Cur].Comps[j].MP.Firma then begin

D:=DEP[Cur].Comps[i];

DEP[Cur].Comps[i]:=DEP[Cur].Comps[j];

DEP[Cur].Comps[j]:=D;

end;

ShowDepartament(Cur);

end;

 

procedure TForm1.SortByMR; //Сортування за виробником ОП

var i,j,C,Cur:Byte;

 D:Computer;

begin

Cur:=ComboBox1.ItemIndex+1;

if ((Cur<1)or(Cur>Count)) then Exit;

C:=DEP[Cur].CompsCount;

for i:=1 to C-1 do

for j:=i+1 to C do

if DEP[Cur].Comps[i].MR.Firma>DEP[Cur].Comps[j].MR.Firma then begin

D:=DEP[Cur].Comps[i];

DEP[Cur].Comps[i]:=DEP[Cur].Comps[j];

DEP[Cur].Comps[j]:=D;

end;

ShowDepartament(Cur);

end;

 

procedure TForm1.SortByMVC; //Сортування за виробником відеокарти

var i,j,C,Cur:Byte;

 D:Computer;

begin

Cur:=ComboBox1.ItemIndex+1;

if ((Cur<1)or(Cur>Count)) then Exit;

C:=DEP[Cur].CompsCount;

for i:=1 to C-1 do

for j:=i+1 to C do

if DEP[Cur].Comps[i].MVC.Firma>DEP[Cur].Comps[j].MVC.Firma then begin

D:=DEP[Cur].Comps[i];

DEP[Cur].Comps[i]:=DEP[Cur].Comps[j];

DEP[Cur].Comps[j]:=D;

end;

ShowDepartament(Cur);

end;

 

procedure TForm1.SortByMM; //Сортування за виробником монітору

var i,j,C,Cur:Byte;

 D:Computer;

begin

Cur:=ComboBox1.ItemIndex+1;

if ((Cur<1)or(Cur>Count)) then Exit;

C:=DEP[Cur].CompsCount;

for i:=1 to C-1 do

for j:=i+1 to C do

if DEP[Cur].Comps[i].MM.Firma>DEP[Cur].Comps[j].MM.Firma then begin

D:=DEP[Cur].Comps[i];

DEP[Cur].Comps[i]:=DEP[Cur].Comps[j];

DEP[Cur].Comps[j]:=D;

end;

ShowDepartament(Cur);

end;

 

procedure TForm1.SortByMH; //Сортування за виробником вінчестера

var i,j,C,Cur:Byte;

 D:Computer;

begin

Cur:=ComboBox1.ItemIndex+1;

if ((Cur<1)or(Cur>Count)) then Exit;

C:=DEP[Cur].CompsCount;

for i:=1 to C-1 do

for j:=i+1 to C do

if DEP[Cur].Comps[i].MH.Firma>DEP[Cur].Comps[j].MH.Firma then begin

D:=DEP[Cur].Comps[i];

DEP[Cur].Comps[i]:=DEP[Cur].Comps[j];

DEP[Cur].Comps[j]:=D;

end;

ShowDepartament(Cur);

end;

 

procedure TForm1.SortByFreqProc; //Сортування за частотою процесора

var i,j,C,Cur:Byte;

 D:Computer;

begin

Cur:=ComboBox1.ItemIndex+1;

if ((Cur<1)or(Cur>Count)) then Exit;

C:=DEP[Cur].CompsCount;

for i:=1 to C-1 do

for j:=i+1 to C do

if DEP[Cur].Comps[i].MP.Frequency>DEP[Cur].Comps[j].MP.Frequency then begin

D:=DEP[Cur].Comps[i];

DEP[Cur].Comps[i]:=DEP[Cur].Comps[j];

DEP[Cur].Comps[j]:=D;

end;

ShowDepartament(Cur);

end;

 

procedure TForm1.SortByRAMCap; //Сортування за об’ємом ОП

var i,j,C,Cur:Byte;

 D:Computer;

begin

Cur:=ComboBox1.ItemIndex+1;

if ((Cur<1)or(Cur>Count)) then Exit;

C:=DEP[Cur].CompsCount;

for i:=1 to C-1 do

for j:=i+1 to C do

if DEP[Cur].Comps[i].MR.Capacity>DEP[Cur].Comps[j].MR.Capacity then begin

D:=DEP[Cur].Comps[i];

DEP[Cur].Comps[i]:=DEP[Cur].Comps[j];

DEP[Cur].Comps[j]:=D;

end;

ShowDepartament(Cur);

end;

 

procedure TForm1.SortByHDDCap; //Сортування за об’ємом вінчестера

var i,j,C,Cur:Byte;

 D:Computer;

begin

Cur:=ComboBox1.ItemIndex+1;

if ((Cur<1)or(Cur>Count)) then Exit;

C:=DEP[Cur].CompsCount;

for i:=1 to C-1 do

for j:=i+1 to C do

if DEP[Cur].Comps[i].MH.Capacity>DEP[Cur].Comps[j].MH.Capacity then begin

D:=DEP[Cur].Comps[i];

DEP[Cur].Comps[i]:=DEP[Cur].Comps[j];

DEP[Cur].Comps[j]:=D;

end;

ShowDepartament(Cur);

end;

 

procedure TForm1.SortByDiagonal; //Сортування за розміром діагоналі монітору

var i,j,C,Cur:Byte;

 D:Computer;

begin

Cur:=ComboBox1.ItemIndex+1;

if ((Cur<1)or(Cur>Count)) then Exit;

C:=DEP[Cur].CompsCount;

for i:=1 to C-1 do

for j:=i+1 to C do

if DEP[Cur].Comps[i].MM.Diagonal>DEP[Cur].Comps[j].MM.Diagonal then begin

D:=DEP[Cur].Comps[i];

DEP[Cur].Comps[i]:=DEP[Cur].Comps[j];

DEP[Cur].Comps[j]:=D;

end;

ShowDepartament(Cur);

end;

 

procedure TForm1.ComboBox3Change(Sender: TObject);

begin

//Сортування комп’ютерів за вибраним критерієм

case ComboBox3.ItemIndex of

0 : SortByNumber;

1 : SortByUserName;

2 : SortByMMB;

3 : SortByMP;

4 : SortByMR;

5 : SortByMVC;

6 : SortByMM;

7 : SortByMH;

8 : SortByFreqProc;

9 : SortByRAMCap;

10 : SortByHDDCap;

11 : SortByDiagonal;

end;

end;

 

procedure TForm1.Button7Click(Sender: TObject);

var i,L,Cur:Byte;

 D:Computer;

begin

//Інвертувати список комп’ютерів в вибраному відділі

if Count<=1 then Exit;

Cur:=ComboBox1.ItemIndex+1;

if ((Cur<1)or(Cur>Count)) then Exit;

L:=Trunc(DEP[Cur].CompsCount/2);

for i:=1 to L do begin

D:=DEP[Cur].Comps[i];

DEP[Cur].Comps[i]:=DEP[Cur].Comps[DEP[Cur].CompsCount-i+1];

DEP[Cur].Comps[DEP[Cur].CompsCount-i+1]:=D;

end;

ShowDepartament(Cur);

end;

 

procedure TForm1.Button8Click(Sender: TObject);

begin

if Count>0 then

Form3.Show; //Показати вікно перенесення комп’ютерів

end;

 

procedure TForm1.Button9Click(Sender: TObject);

begin

Form4.Show;

end;

 

procedure TForm1.Button10Click(Sender: TObject);

begin

if ((ComboBox1.ItemIndex>=0)and(ComboBox1.Items.Count>0)) then

Form5.Show;

end;

 

procedure TForm1.N12Click(Sender: TObject);

begin

Button1.Click;

end;

 

procedure TForm1.N11Click(Sender: TObject);

begin

Button2.Click;

end;

 

procedure TForm1.N10Click(Sender: TObject);

begin

Button10.Click;

end;

 

procedure TForm1.N7Click(Sender: TObject);

begin

Button6.Click;

end;

 

procedure TForm1.N18Click(Sender: TObject);

begin

Button3.Click;

end;

 

procedure TForm1.N17Click(Sender: TObject);

begin

Button4.Click;

end;

 

procedure TForm1.N16Click(Sender: TObject);

begin

Button5.Click;

end;

 

procedure TForm1.N15Click(Sender: TObject);

begin

Button8.Click;

end;

 

procedure TForm1.N21Click(Sender: TObject);

begin

Button7.Click;

end;

 

procedure TForm1.N20Click(Sender: TObject);

begin

Button9.Click;

end;

 

procedure TForm1.N14Click(Sender: TObject);

begin

ComboBox3.SetFocus;

ComboBox3.DroppedDown := True

end;

 

procedure TForm1.N9Click(Sender: TObject);

begin

ComboBox1.SetFocus;

ComboBox1.DroppedDown := True

end;

 

procedure TForm1.N8Click(Sender: TObject);

begin

ComboBox2.SetFocus;

ComboBox2.DroppedDown := True

end;

 

procedure TForm1.N4Click(Sender: TObject);

begin

if Editing then

if MessageDlg('Зберегти зміни?',mtConfirmation,[mbNo,mbYes],0)=mrYes then

Save;

Halt;

end;

 

procedure TForm1.N22Click(Sender: TObject);

begin

Button3.Click;

end;

 

procedure TForm1.N23Click(Sender: TObject);

begin

Button4.Click;

end;

 

procedure TForm1.N25Click(Sender: TObject);

begin

Button5.Click;

end;

 

procedure TForm1.N24Click(Sender: TObject);

begin

Button8.Click;

end;

 

procedure TForm1.N27Click(Sender: TObject);

begin

Button9.Click;

end;

 

procedure TForm1.N2Click(Sender: TObject);

begin

 Form6.ShowModal;

end;

 

procedure TForm1.N19Click(Sender: TObject);

begin

 Form7.ShowModal;

end;

 

end.

 

unit Unit2;

 

interface

 

uses

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

 Dialogs, StdCtrls;

 

type

 TForm2 = class(TForm)

 GB1: TGroupBox;

 CB1: TCheckBox;

 Edit1: TEdit;

 Label1: TLabel;

 Edit2: TEdit;

 Label2: TLabel;

 GB2: TGroupBox;

 Label3: TLabel;

 Label4: TLabel;

 Edit3: TEdit;

 Edit4: TEdit;

 CB2: TCheckBox;

 Label5: TLabel;

 Edit5: TEdit;

 GB3: TGroupBox;

 Label6: TLabel;

 Label7: TLabel;

 Label8: TLabel;

 Edit6: TEdit;

 Edit7: TEdit;

 Edit8: TEdit;

 CB3: TCheckBox;

 Label9: TLabel;

 Edit9: TEdit;

 GB4: TGroupBox;

 Label10: TLabel;

 Label11: TLabel;

 Label12: TLabel;

 Edit10: TEdit;

 Edit11: TEdit;

 Edit12: TEdit;

 CB4: TCheckBox;

 GB5: TGroupBox;

 Label13: TLabel;

 Label14: TLabel;

 Label15: TLabel;

 Edit13: TEdit;

 Edit14: TEdit;

 Edit15: TEdit;

 CB5: TCheckBox;

 Label16: TLabel;

 Edit16: TEdit;

 GB6: TGroupBox;

 Label17: TLabel;

 Label18: TLabel;

 Label19: TLabel;

 Label20: TLabel;

 Edit17: TEdit;

 Edit18: TEdit;

 Edit19: TEdit;

 Edit20: TEdit;

 CB6: TCheckBox;

 Button1: TButton;

 Button2: TButton;

 Edit21: TEdit;

 Label21: TLabel;

 Edit22: TEdit;

 Label22: TLabel;

 procedure ClearEdit;

 procedure RecToEdit;

 procedure CB1Click(Sender: TObject);

 procedure FormShow(Sender: TObject);

 procedure FormClose(Sender: TObject; var Action: TCloseAction);

 procedure CB2Click(Sender: TObject);

 procedure CB3Click(Sender: TObject);

 procedure CB4Click(Sender: TObject);

 procedure CB5Click(Sender: TObject);

 procedure CB6Click(Sender: TObject);

 function Verification:Boolean;

 procedure Button1Click(Sender: TObject);

 procedure Button2Click(Sender: TObject);

 procedure Edit2KeyPress(Sender: TObject; var Key: Char);

 procedure Edit5KeyPress(Sender: TObject; var Key: Char);

 private

 { Private declarations }

 public

 { Public declarations }

 end;

 

var

 Form2: TForm2;

 

implementation

 

uses Unit1, Unit4;

 

{$R *.dfm}

 

function STI(S:String):Integer;

var E:Integer;

begin

//Ця функція альтернативна StrToInt, тільки при помилці результат = 0

Val(S,Result,E);

if E<>0 then Result:=0;

end;

 

procedure TForm2.ClearEdit; //Очищення всіх полів

begin

CB1.Checked:=True; CB2.Checked:=True;

CB3.Checked:=True; CB4.Checked:=True;

CB5.Checked:=True; CB6.Checked:=True;

Edit1.Clear; Edit2.Clear; Edit3.Clear;

Edit4.Clear; Edit5.Clear; Edit6.Clear;

Edit7.Clear; Edit8.Clear; Edit9.Clear;

Edit10.Clear; Edit11.Clear; Edit12.Clear;

Edit13.Clear; Edit14.Clear; Edit15.Clear;

Edit16.Clear; Edit17.Clear; Edit18.Clear;

Edit19.Clear; Edit20.Clear; Edit21.Clear;

Edit22.Clear;

end;

 

procedure TForm2.RecToEdit; //Показ інф з запису в полях редагування

var CurD:Byte;

begin

CurD:=Form1.ComboBox1.ItemIndex+1;

if CurD<1 then Exit;

Edit1.Text:=DEP[CurD].Comps[SR].MMB.Firma;

Edit2.Text:=DEP[CurD].Comps[SR].MMB.Frequency;

 

Edit3.Text:=DEP[CurD].Comps[SR].MP.Firma;

Edit4.Text:=DEP[CurD].Comps[SR].MP.Frequency;

Edit5.Text:=IntToStr(DEP[CurD].Comps[SR].MP.KernelCount);

 

Edit6.Text:=DEP[CurD].Comps[SR].MR.Firma;

Edit7.Text:=DEP[CurD].Comps[SR].MR.TypeRam;

Edit8.Text:=IntToStr(DEP[CurD].Comps[SR].MR.Capacity);

Edit9.Text:=DEP[CurD].Comps[SR].MR.Frequency;

 

Edit10.Text:=DEP[CurD].Comps[SR].MVC.Firma;

Edit11.Text:=IntToStr(DEP[CurD].Comps[SR].MVC.Speed);

Edit12.Text:=IntToStr(DEP[CurD].Comps[SR].MVC.Capacity);

 

Edit13.Text:=DEP[CurD].Comps[SR].MM.Firma;

Edit14.Text:=IntToStr(DEP[CurD].Comps[SR].MM.Width);

Edit15.Text:=IntToStr(DEP[CurD].Comps[SR].MM.Height);

Edit16.Text:=IntToStr(DEP[CurD].Comps[SR].MM.Diagonal);

 

Edit17.Text:=DEP[CurD].Comps[SR].MH.Firma;

Edit18.Text:=DEP[CurD].Comps[SR].MH.TypeHDD;

Edit19.Text:=IntToStr(DEP[CurD].Comps[SR].MH.Capacity);

Edit20.Text:=DEP[CurD].Comps[SR].MH.Cache;

 

Edit21.Text:=IntToStr(DEP[CurD].Comps[SR].Number);

Edit22.Text:=DEP[CurD].Comps[SR].USER;

end;

 

procedure TForm2.CB1Click(Sender: TObject);

begin

GB1.Enabled:=CB1.Checked;

end;

 

procedure TForm2.FormShow(Sender: TObject);

begin

Form1.Enabled:=False;

if OP then

Form4.Enabled:=False;

end;

 

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);

begin

if not OP then

Form1.Enabled:=True

else

Form4.Enabled:=True;

end;

 

procedure TForm2.CB2Click(Sender: TObject);

begin

GB2.Enabled:=CB2.Checked;

end;

 

procedure TForm2.CB3Click(Sender: TObject);

begin

GB3.Enabled:=CB3.Checked;

end;

 

procedure TForm2.CB4Click(Sender: TObject);

begin

GB4.Enabled:=CB4.Checked;

end;

 

procedure TForm2.CB5Click(Sender: TObject);

begin

GB5.Enabled:=CB5.Checked;

end;

 

procedure TForm2.CB6Click(Sender: TObject);

begin

GB6.Enabled:=CB6.Checked;

end;

 

function TForm2.Verification:Boolean;

var Cur,C,i,j:Byte;

begin

Result:=True;

if Edit21.Text='' then begin //Якщо не введено номер комп’ютера

ShowMessage('Введіть номер комп’ютера'); Result:=False; Exit;

end;

 

Cur:=Form1.ComboBox1.ItemIndex+1;

if ADD then

C:=DEP[Cur].CompsCount+1

else C:=SR;

 

for j:=1 to Count do //Перевірка номера на наявність

for i:=1 to DEP[j].CompsCount do begin

if ((i=C)and(j=Cur)) then Break;

if StrToInt(Edit21.Text)=DEP[j].Comps[i].Number then begin

ShowMessage('Комп’ютер з таким номером вже є!'); Result:=False; Exit;

end;

end;

 

if Edit22.Text='' then begin //Якщо не введено номер комп’ютера

ShowMessage('Введіть ПІБ працівника'); Result:=False; Exit;

end;

 

if CB1.Checked then

if ((Edit1.Text='')or(Edit2.Text='')) then begin //Якщо не введено всіх даних про материнську плату

ShowMessage('Заповніть всі поля материнської плати'); Result:=False; Exit;

end;

 

if CB2.Checked then

if ((Edit3.Text='')or(Edit4.Text='')or

 (Edit5.Text='')) then begin //Якщо не введено всіх даних про процесор

ShowMessage('Заповніть всі поля процесора'); Result:=False; Exit;

end;

 

if CB3.Checked then

if ((Edit6.Text='')or(Edit7.Text='')or

 (Edit8.Text='')or(Edit9.Text='')) then begin //Якщо не введено всіх даних про ОП

ShowMessage('Заповніть всі поля оперативної пам’яті'); Result:=False; Exit;

end;

 

if CB4.Checked then

if ((Edit10.Text='')or(Edit11.Text='')or

 (Edit12.Text='')) then begin //Якщо не введено всіх даних про відеокарту

ShowMessage('Заповніть всі поля відеокарти'); Result:=False; Exit;

end;

 

if CB5.Checked then

if ((Edit13.Text='')or(Edit14.Text='')or

 (Edit15.Text='')or(Edit16.Text='')) then begin //Якщо не введено всіх даних про монітор

ShowMessage('Заповніть всі поля монітора'); Result:=False; Exit;

end;

 

if CB6.Checked then

if ((Edit17.Text='')or(Edit18.Text='')or

 (Edit19.Text='')or(Edit20.Text='')) then begin //Якщо не введено всіх даних про HDD

ShowMessage('Заповніть всі поля жорсткого диска'); Result:=False; Exit;

end;

end;

 

procedure TForm2.Button1Click(Sender: TObject); //Додати, або змінити інф про комп

var Cur,C:Byte;

begin

if not Verification then Exit;

Cur:=Form1.ComboBox1.ItemIndex+1;

 

if ADD then begin //Якщо додати комп’ютер тоді збільшуємо кількість комп’ютерів

INC(DEP[Cur].CompsCount);

C:=DEP[Cur].CompsCount;

end else C:=SR;

 

//Перенесення даних в запис

DEP[Cur].Comps[C].Number:=StrToInt(Edit21.Text);

DEP[Cur].Comps[C].USER:=Edit22.Text;

 

if CB4.Checked then begin

DEP[Cur].Comps[C].MVC.Firma:=Edit10.Text;

DEP[Cur].Comps[C].MVC.Speed:=STI(Edit11.Text);

DEP[Cur].Comps[C].MVC.Capacity:=STI(Edit12.Text);

end;

if CB5.Checked then begin

DEP[Cur].Comps[C].MM.Firma:=Edit13.Text;

DEP[Cur].Comps[C].MM.Width:=STI(Edit14.Text);

DEP[Cur].Comps[C].MM.Height:=STI(Edit15.Text);

DEP[Cur].Comps[C].MM.Diagonal:=STI(Edit16.Text);

end;

if CB2.Checked then begin

DEP[Cur].Comps[C].MP.Firma:=Edit3.Text;

DEP[Cur].Comps[C].MP.Frequency:=Edit4.Text;

DEP[Cur].Comps[C].MP.KernelCount:=STI(Edit5.Text);

end;

if CB1.Checked then begin

DEP[Cur].Comps[C].MMB.Firma:=Edit1.Text;

DEP[Cur].Comps[C].MMB.Frequency:=Edit2.Text;

end;

if CB3.Checked then begin

DEP[Cur].Comps[C].MR.Firma:=Edit6.Text;

DEP[Cur].Comps[C].MR.TypeRam:=Edit7.Text;

DEP[Cur].Comps[C].MR.Capacity:=STI(Edit8.Text);

DEP[Cur].Comps[C].MR.Frequency:=Edit9.Text;

end;

if CB6.Checked then begin

DEP[Cur].Comps[C].MH.Firma:=Edit17.Text;

DEP[Cur].Comps[C].MH.TypeHDD:=Edit18.Text;

DEP[Cur].Comps[C].MH.Capacity:=STI(Edit19.Text);

DEP[Cur].Comps[C].MH.Cache:=Edit20.Text;

end;

Form1.ShowDepartament(Cur);

Editing:=True;

Close;

end;

 

procedure TForm2.Button2Click(Sender: TObject);

begin

Close;

end;

 

procedure TForm2.Edit2KeyPress(Sender: TObject; var Key: Char);

begin

if not (Key in ['0'..'9','.',#8]) then Key:=#0;

end;

 

procedure TForm2.Edit5KeyPress(Sender: TObject; var Key: Char);

begin

if not (Key in ['0'..'9',#8]) then Key:=#0;

end;

 

end.

 

unit Unit3;

 

interface

 

uses

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

 Dialogs, StdCtrls;

 

type

 TForm3 = class(TForm)

 ComboBox1: TComboBox;

 ComboBox2: TComboBox;

 LB1: TListBox;

 LB2: TListBox;

 Label1: TLabel;

 Label2: TLabel;

 Button1: TButton;

 Button2: TButton;

 Button3: TButton;

 Button4: TButton;

 procedure FormShow(Sender: TObject);

 procedure FormClose(Sender: TObject; var Action: TCloseAction);

 procedure ComboBox1Change(Sender: TObject);

 procedure ComboBox2Change(Sender: TObject);

 procedure Button1Click(Sender: TObject);

 procedure Button2Click(Sender: TObject);

 procedure Button3Click(Sender: TObject);

 procedure Button4Click(Sender: TObject);

 private

 { Private declarations }

 public

 { Public declarations }

 end;

 

var

 Form3: TForm3;

 

implementation

 

uses Unit1;

 

{$R *.dfm}

 

procedure TForm3.FormShow(Sender: TObject);

begin

Form1.Enabled:=False; //Оновлення списку відділів для переміщення

ComboBox1.Items:=Form1.ComboBox1.Items;

ComboBox2.Items:=Form1.ComboBox1.Items;

ComboBox1.ItemIndex:=0;

ComboBox2.ItemIndex:=0;

ComboBox1.OnChange(ComboBox1);

ComboBox2.OnChange(ComboBox2);

 

end;

 

procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);

begin

Form1.Enabled:=True;

end;

 

procedure TForm3.ComboBox1Change(Sender: TObject);

var i,Cur:Byte;

begin

//Показуємо всі комп’ютери з вибраного відділу

LB1.Clear;

Cur:=ComboBox1.ItemIndex+1;

for i:=1 to DEP[Cur].CompsCount do

LB1.Items.Add(IntToStr(DEP[Cur].Comps[i].Number));

end;

 

procedure TForm3.ComboBox2Change(Sender: TObject);

var i,Cur:Byte;

begin

//Показуємо всі комп’ютери з вибраного відділу

LB2.Clear;

Cur:=ComboBox2.ItemIndex+1;

for i:=1 to DEP[Cur].CompsCount do

LB2.Items.Add(IntToStr(DEP[Cur].Comps[i].Number));

end;

 

procedure TForm3.Button1Click(Sender: TObject);

begin

//Переміщення одного комп’ютера

if Form1.MoveCompToDep(ComboBox1.ItemIndex+1,LB1.ItemIndex+1,

ComboBox2.ItemIndex+1) then begin

LB2.Items.Add(LB1.Items.Strings[LB1.ItemIndex]);

LB1.Items.Delete(LB1.ItemIndex);

end;

end;

 

procedure TForm3.Button2Click(Sender: TObject);

begin

//Переміщення всіх комп’ютерів

if Form1.MoveAllCompToDep(ComboBox1.ItemIndex+1,ComboBox2.ItemIndex+1) then begin

LB2.Items.AddStrings(LB1.Items);

LB1.Clear;

end;

end;

 

procedure TForm3.Button3Click(Sender: TObject);

begin

//Переміщення одного комп’ютера

if Form1.MoveCompToDep(ComboBox2.ItemIndex+1,LB2.ItemIndex+1,

ComboBox1.ItemIndex+1) then begin

LB1.Items.Add(LB2.Items.Strings[LB2.ItemIndex]);

LB2.Items.Delete(LB2.ItemIndex);

end;

end;

 

procedure TForm3.Button4Click(Sender: TObject);

begin

//Переміщення всіх комп’ютерів

if Form1.MoveAllCompToDep(ComboBox2.ItemIndex+1,ComboBox1.ItemIndex+1) then begin

LB1.Items.AddStrings(LB2.Items);

LB2.Clear;

end;

end;

 

end.

 

unit Unit4;

 

interface

 

uses

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

 Dialogs, Grids, StdCtrls, Unit1;

 

type

 TForm4 = class(TForm)

 Label21: TLabel;

 Label22: TLabel;

 GB1: TGroupBox;

 Label1: TLabel;

 Label2: TLabel;

 Edit1: TEdit;

 Edit2: TEdit;

 CB1: TCheckBox;

 GB2: TGroupBox;

 Label3: TLabel;

 Label4: TLabel;

 Label5: TLabel;

 Edit3: TEdit;

 Edit4: TEdit;

 Edit5: TEdit;

 CB2: TCheckBox;

 GB3: TGroupBox;

 Label6: TLabel;

 Label7: TLabel;

 Label8: TLabel;

 Label9: TLabel;

 Edit6: TEdit;

 Edit7: TEdit;

 Edit8: TEdit;

 Edit9: TEdit;

 CB3: TCheckBox;

 GB4: TGroupBox;

 Label10: TLabel;

 Label11: TLabel;

 Label12: TLabel;

 Edit10: TEdit;

 Edit11: TEdit;

 Edit12: TEdit;

 CB4: TCheckBox;

 GB5: TGroupBox;

 Label13: TLabel;

 Label14: TLabel;

 Label15: TLabel;

 Label16: TLabel;

 Edit13: TEdit;

 Edit14: TEdit;

 Edit15: TEdit;

 Edit16: TEdit;

 CB5: TCheckBox;

 GB6: TGroupBox;

 Label17: TLabel;

 Label18: TLabel;

 Label19: TLabel;

 Label20: TLabel;

 Edit17: TEdit;

 Edit18: TEdit;

 Edit19: TEdit;

 Edit20: TEdit;

 CB6: TCheckBox;

 Edit21: TEdit;

 Edit22: TEdit;

 SG: TStringGrid;

 Button1: TButton;

 Button2: TButton;

 procedure DeleteRow(Row: Longint);

 procedure FormShow(Sender: TObject);

 procedure FormClose(Sender: TObject; var Action: TCloseAction);

 procedure FormCreate(Sender: TObject);

 procedure Button2Click(Sender: TObject);

 procedure ShowComp(DepIndex,Index,Row:Byte);

 function NN(D,C:Byte):Boolean;

 function MB(D,C:Byte):Boolean;

 function MP(D,C:Byte):Boolean;

 function MR(D,C:Byte):Boolean;

 function MVC(D,C:Byte):Boolean;

 function MM(D,C:Byte):Boolean;

 function MH(D,C:Byte):Boolean;

 function Find:Boolean;

 procedure Button1Click(Sender: TObject);

 function GetIndex(Row:Integer):TPoint;

 procedure SGSelectCell(Sender: TObject; ACol, ARow: Integer;

 var CanSelect: Boolean);

 procedure SGDblClick(Sender: TObject);

 procedure SGKeyDown(Sender: TObject; var Key: Word;

 Shift: TShiftState);

 private

 { Private declarations }

 public

 { Public declarations }

 end;

 

var

 Form4: TForm4;

 OP:Boolean=False; //Якщо вікно відкрите тоді True

 

implementation

 

{$R *.dfm}

 

type

 TCSGrid = class(TStringGrid)

 private

 public

 procedure MoveRow(FromIndex, ToIndex: Longint);

 end;

 

procedure TCSGrid.MoveRow(FromIndex, ToIndex: Longint);

begin

 RowMoved(FromIndex, ToIndex); { Захищений метод TStringGrid }

end;

 

procedure TForm4.DeleteRow(Row: Longint); //Процедура видалення рядків

begin

if ((SG.RowCount=2)and(Row>0)) then SG.Rows[1].Clear;

 if ((Row>0)and(SG.RowCount>2)) then

 with TCSGrid(SG) do

 if (RowCount > 0) and (Row < RowCount) then

 begin

 if (Row < RowCount - 1) then

 MoveRow(Row, RowCount - 1);

 Rows[RowCount - 1].Clear;

 RowCount := RowCount - 1;

 end;

end;

 

procedure TForm4.FormShow(Sender: TObject);

begin

OP:=True;

Form1.Enabled:=False;

Button2.OnClick(Button2);

end;

 

procedure TForm4.FormClose(Sender: TObject; var Action: TCloseAction);

begin

Form1.Enabled:=True;

OP:=False;

end;

 

procedure TForm4.FormCreate(Sender: TObject);

begin

SG.Cells[0,0]:='Відділ';

SG.Cells[1,0]:='№';

SG.Cells[2,0]:='Працівник';

SG.Cells[3,0]:='Відео карта';

SG.Cells[4,0]:='Монітор';

SG.Cells[5,0]:='Процесор';

SG.Cells[6,0]:='Материнська карта';

SG.Cells[7,0]:='Оперативна пам’ять';

SG.Cells[8,0]:='Жорсткий диск';

end;

 

procedure TForm4.Button2Click(Sender: TObject); //Очищення всіх полів

begin

CB1.Checked:=True; CB2.Checked:=True;

CB3.Checked:=True; CB4.Checked:=True;

CB5.Checked:=True; CB6.Checked:=True;

Edit1.Clear; Edit2.Clear; Edit3.Clear;

Edit4.Clear; Edit5.Clear; Edit6.Clear;

Edit7.Clear; Edit8.Clear; Edit9.Clear;

Edit10.Clear; Edit11.Clear; Edit12.Clear;

Edit13.Clear; Edit14.Clear; Edit15.Clear;

Edit16.Clear; Edit17.Clear; Edit18.Clear;

Edit19.Clear; Edit20.Clear; Edit21.Clear;

Edit22.Clear;

SG.RowCount:=2;

SG.Rows[1].Clear;

end;

 

procedure TForm4.ShowComp(DepIndex,Index,Row:Byte); //Показати комп’ютер в таблиці

begin

if ((Row<1)or(Index<1)or(Index>DEP[DepIndex].CompsCount)) then Exit;

if Row>=SG.RowCount then SG.RowCount:=Row+1;

SG.Rows[Row].Clear;

SG.Cells[0,Row]:=DEP[DepIndex].Name;

SG.Cells[1,Row]:=IntToStr(DEP[DepIndex].Comps[Index].Number);

SG.Cells[2,Row]:=DEP[DepIndex].Comps[Index].USER;

SG.Cells[3,Row]:=DEP[DepIndex].Comps[Index].MVC.Firma;

SG.Cells[4,Row]:=DEP[DepIndex].Comps[Index].MM.Firma;

SG.Cells[5,Row]:=DEP[DepIndex].Comps[Index].MP.Firma;

SG.Cells[6,Row]:=DEP[DepIndex].Comps[Index].MMB.Firma;

SG.Cells[7,Row]:=DEP[DepIndex].Comps[Index].MR.Firma;

SG.Cells[8,Row]:=DEP[DepIndex].Comps[Index].MH.Firma;

end;

 

function CMP(S1,S2:String):Boolean; //Порівняння 2-ох рядків

begin

Result:=((S1='')or(S1=S2));

end;

 

function TForm4.NN(D,C:Byte):Boolean; //Пошук по номеру і імені працівника

begin

Result:=False;

if ((Edit21.Text='')and(Edit22.Text='')) then Exit;

if CMP(Edit21.Text,IntToStr(DEP[D].Comps[C].Number))and

 CMP(Edit22.Text,DEP[D].Comps[C].USER) then Result:=True;

end;

 

function TForm4.MB(D,C:Byte):Boolean; //Пошук по материнській платі

begin

Result:=False;

if ((Edit1.Text='')and(Edit2.Text='')) then Exit;

if CB1.Checked then

if CMP(Edit1.Text,DEP[D].Comps[C].MMB.Firma)and

 CMP(Edit2.Text,DEP[D].Comps[C].MMB.Frequency) then Result:=True;

end;

 

function TForm4.MP(D,C:Byte):Boolean; //Пошук по процесору

begin

Result:=False;

if ((Edit3.Text='')and(Edit4.Text='')and(Edit5.Text='')) then Exit;

if CB2.Checked then

if CMP(Edit3.Text,DEP[D].Comps[C].MP.Firma)and

 CMP(Edit4.Text,DEP[D].Comps[C].MP.Frequency)and

 CMP(Edit5.Text,IntToStr(DEP[D].Comps[C].MP.KernelCount)) then Result:=True;

end;

 

function TForm4.MR(D,C:Byte):Boolean; //Пошук по ОП

begin

Result:=False;

if ((Edit6.Text='')and(Edit7.Text='')and(Edit8.Text='')and(Edit9.Text='')) then Exit;

if CB3.Checked then

if CMP(Edit6.Text,DEP[D].Comps[C].MR.Firma)and

 CMP(Edit7.Text,DEP[D].Comps[C].MR.TypeRam)and

 CMP(Edit8.Text,IntToStr(DEP[D].Comps[C].MR.Capacity))and

 CMP(Edit9.Text,DEP[D].Comps[C].MR.Frequency) then Result:=True;

end;

 

function TForm4.MVC(D,C:Byte):Boolean; //Пошук по відеокарті

begin

Result:=False;

if ((Edit10.Text='')and(Edit11.Text='')and(Edit12.Text='')) then Exit;

if CB4.Checked then

if CMP(Edit10.Text,DEP[D].Comps[C].MVC.Firma)and

 CMP(Edit11.Text,IntToStr(DEP[D].Comps[C].MVC.Speed))and

 CMP(Edit12.Text,IntToStr(DEP[D].Comps[C].MVC.Capacity)) then Result:=True;

end;

 

function TForm4.MM(D,C:Byte):Boolean; //Пошук по монітору

begin

Result:=False;

if ((Edit13.Text='')and(Edit14.Text='')and(Edit15.Text='')and

 (Edit16.Text='')) then Exit;

if CB5.Checked then

if CMP(Edit13.Text,DEP[D].Comps[C].MM.Firma)and

 CMP(Edit14.Text,IntToStr(DEP[D].Comps[C].MM.Width))and

 CMP(Edit15.Text,IntToStr(DEP[D].Comps[C].MM.Height))and

 CMP(Edit16.Text,IntToStr(DEP[D].Comps[C].MM.Diagonal)) then Result:=True;

end;

 

function TForm4.MH(D,C:Byte):Boolean; //Пошук по вінчестеру

begin

Result:=False;

if ((Edit17.Text='')and(Edit18.Text='')and(Edit19.Text='')and

 (Edit20.Text='')) then Exit;

if CB5.Checked then

if CMP(Edit17.Text,DEP[D].Comps[C].MH.Firma)and

 CMP(Edit18.Text,DEP[D].Comps[C].MH.TypeHDD)and

 CMP(Edit19.Text,IntToStr(DEP[D].Comps[C].MH.Capacity))and

 CMP(Edit20.Text,DEP[D].Comps[C].MH.Cache) then Result:=True;

end;

 

function TForm4.Find:Boolean; //Пошук

var X,Y,C:Byte;

begin

Result:=False;

SG.RowCount:=2;

SG.Rows[1].Clear;

C:=0;

for X:=1 to Count do

for Y:=1 to DEP[X].CompsCount do

if NN(X,Y) or MB(X,Y) or MP(X,Y) or MR(X,Y) or

 MVC(X,Y) or MM(X,Y) or MH(X,Y) then begin

INC(C);

ShowComp(X,Y,C);

end;

if C>0 then Result:=True;

end;

 

procedure TForm4.Button1Click(Sender: TObject);

begin

if not Find then ShowMessage('Нічого не знайдено!');

end;

 

function TForm4.GetIndex(Row:Integer):TPoint;

var X,Y:Byte;

begin

Result.X:=0; //Номер відділу

Result.Y:=0; //Номер комп’ютера

if SG.Cells[1,Row]='' then Exit;

for X:=1 to Count do

for Y:=1 to DEP[X].CompsCount do

if DEP[X].Comps[Y].Number=StrToInt(SG.Cells[1,Row]) then begin

Result.X:=X; Result.Y:=Y; Exit;

end;

end;

 

procedure TForm4.SGSelectCell(Sender: TObject; ACol, ARow: Integer;

 var CanSelect: Boolean);

var A:TPoint;

begin

A:=GetIndex(ARow);

if A.X<1 then Exit;

Form1.ComboBox1.ItemIndex:=A.X-1;

Form1.ShowDepartament(A.X);

SR:=A.Y; //Робимо вибраний комп’ютер поточним

end;

 

procedure TForm4.SGDblClick(Sender: TObject);

begin

Form1.Button5.OnClick(Form1.Button5); //Редагуємо інф про вибраний комп’ютер

end;

 

procedure TForm4.SGKeyDown(Sender: TObject; var Key: Word;

 Shift: TShiftState);

var CurD:Byte;

begin

if Key=46 then begin

//Видаляємо вибраний комп’ютер

CurD:=Form1.ComboBox1.ItemIndex+1;

if ((Form1.ComboBox1.Items.Count<1)or(CurD<1)) then Exit;

if ((SR<1)or(SR>DEP[CurD].CompsCount)) then Exit;

if MessageDlg('Видалити комп’ютер',mtConfirmation,[mbOk,mbCancel],0)=mrOk then

if Form1.DelComp(CurD,SR) then

DeleteRow(SR);

end;

end;

 

end.

 

unit Unit5;

 

interface

 

uses

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

 Dialogs, StdCtrls;

 

type

 TForm5 = class(TForm)

 Edit1: TEdit;

 Button1: TButton;

 Button2: TButton;

 procedure FormShow(Sender: TObject);

 procedure FormClose(Sender: TObject; var Action: TCloseAction);

 procedure Edit1KeyDown(Sender: TObject; var Key: Word;

 Shift: TShiftState);

 procedure Button1Click(Sender: TObject);

 procedure Edit1KeyPress(Sender: TObject; var Key: Char);

 procedure Button2Click(Sender: TObject);

 private

 { Private declarations }

 public

 { Public declarations }

 end;

 

var

 Form5: TForm5;

 

implementation

 

uses Unit1;

 

{$R *.dfm}

 

procedure TForm5.FormShow(Sender: TObject);

begin

Form1.Enabled:=False;

end;

 

procedure TForm5.FormClose(Sender: TObject; var Action: TCloseAction);

begin

Form1.Enabled:=True;

end;

 

procedure TForm5.Edit1KeyDown(Sender: TObject; var Key: Word;

 Shift: TShiftState);

begin

if Key=27 then Button2.OnClick(Button2); //Вихід

end;

 

procedure TForm5.Button1Click(Sender: TObject);

var I:Byte;

begin

if Edit1.Text='' then begin

ShowMessage('Назва не може бути пустою!'); Exit;

end;

for i:=0 to Form1.ComboBox1.Items.Count-1 do //Перевірка на наявність відділу

if Edit1.Text=Form1.ComboBox1.Items.Strings[i] then begin

ShowMessage('Такий відділ вже є!'); Exit;

end;

I:=Form1.ComboBox1.ItemIndex+1;

if ((I<1)or(I>Count)) then Exit;

Form1.ComboBox1.Items.Strings[I-1]:=Edit1.Text;

DEP[I].Name:=Edit1.Text;

Form1.ComboBox1.ItemIndex:=I-1;

Editing:=True;

Close;

end;

 

procedure TForm5.Edit1KeyPress(Sender: TObject; var Key: Char);

begin

if Key=#13 then Button1.OnClick(Button1); //Переіменувати

end;

 

procedure TForm5.Button2Click(Sender: TObject);

begin

Close;

end;

 

end.

 

unit Unit6;

 

interface

 

uses

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

 Dialogs, StdCtrls, ComCtrls;

 

type

 TForm6 = class(TForm)

 TreeView1: TTreeView;

 Memo1: TMemo;

 Button1: TButton;

 procedure Button1Click(Sender: TObject);

 procedure Button2Click(Sender: TObject);

 procedure TreeView1Click(Sender: TObject);

 private

 { Private declarations }

 public

 { Public declarations }

 end;

 

var

 Form6: TForm6;

 

implementation

 uses Unit1;

{$R *.dfm}

 

procedure TForm6.Button1Click(Sender: TObject);

begin

close;

end;

 

procedure TForm6.Button2Click(Sender: TObject);

begin

Memo1.Lines.SaveToFile('Справка.FSH');

end;

 

procedure TForm6.TreeView1Click(Sender: TObject);

begin

 Memo1.Lines.LoadFromFile('Справка\'+TreeView1.Selected.Text+'.FSH');

end;

 

end.

 

unit Unit7;

 

interface

 

uses

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

 Dialogs, StdCtrls, ExtCtrls;

 

type

 TForm7 = class(TForm)

 Panel1: TPanel;

 ProgramIcon: TImage;

 ProductName: TLabel;

 Version: TLabel;

 Copyright: TLabel;

 OKButton: TButton;

 procedure OKButtonClick(Sender: TObject);

 private

 { Private declarations }

 public

 { Public declarations }

 end;

 

var

 Form7: TForm7;

 

implementation

 

uses Unit1;

{$R *.dfm}

 

procedure TForm7.OKButtonClick(Sender: TObject);

begin

close;

end;

 

end.


Дата добавления: 2020-11-27; просмотров: 118; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!