Реферати українською » Информатика, программирование » Розробка програмного комплексу


Реферат Розробка програмного комплексу

Зміст

Завдання розробку програмного комплексу

Функціональна структура докладання

>Спецификация програмного комплексу

Структурна діаграма програмного комплексу

Дані для тестування

Інструкція користувача

Додаток


Завдання розробку програмного комплексу

Розробити інформаційну підсистему відділу кадрів.

Інформація, оброблювана в підсистемі, повинна зберігатися в текстовому читипизированном файлах.

Дані, що їх відбито у підсистемі: прізвище, місяць і рік прийому працювати, освіту, спеціальність, підлогу, ставлення до військової служби, рік народження.

Відомості про співробітників поповнюються принаймні прийому працювати.

У системі має вирішуватися такі:

1. Створення файла.

2. Доповнення файла.

3. Коригування даних в файлі.

4. Формування відповіді запити користувача:

4.1. Вивести як таблиці прізвища, освіту, ставлення до військової служби співробітників молодший 30 років;

4.2. Визначити середній вік працюючих чоловіків і жінок;

4.3. Вивести на екран прізвища співробітників, які у поточного року, у порядку спаду віку;

4.4. Побудувати графіки зміни рівня освіти - від віку;

4.5. Побудувати кругову діаграму, яка відображатиме вікове співвідношення працюючих: виділити групи до 30 років, від 31 до 50 років, старше 51 року;

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


Функціональна структура докладання

Програмний комплекс призначений до роботи з базою даних яктипизированного файла з розширенням txt. Комплекс здійснює читання, запис й створення бази.

До того ж програмний комплекс дає можливість створювати, видаляти і редагувати запис уБД. До того ж здійснює вибірку даних з урахуванням фіксованих правил добору, і побудова графіків і діаграм.

>Спецификация програмного комплексу

Основне завдання є розробка інформаційної підсистеми відділу кадрів. Коли щодо реалізації потрібно дружній інтерфейс було прийнято рішення вести розробку серед програмування Delphi 7. Це покращує споживчі якості програмного продукту, і навіть дозволить створити графічний інтерфейс для ОС Windows.

Єдина вимога для даного програмного пакета це наявність ОС сімейства Windows.

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

Як вхідних даних програма використовуєтипизированний файл бази даних, і навіть інформацію про працівника такі як:

· Прізвище – текстове полі з максимальною довгою 100 символів;

· Дата прийому працювати – полі типуTDate;

· Освіта – текстове полі довгою 100 символів;

· Спеціальність - текстове полі довгою 100 символів;

· Пол – полі типуbyte;

· Ставлення до військової служби - текстове полі довгою 100 символів;

· Рік народження – полі типуTDate.

Як вихідних даних програми виступає файл бази даних. До того ж графічне відображення результатів запитів користувача. З графічної інформації користувач може мати простий такі типи об'єктів:

· Таблиця з цими;

· Графік;

· Текстова інформація.

Оскільки всю інформацію перевіряється при введення і користувач вибирає тільки те, що ІСД може використовуватися у цьому полі, то ловиться одне помилка що з спробою редагування порожній рядки таблиці даних.

Структурна діаграма програмного комплексу

Схема побудови програмного кошти й основних класів:


Дані для тестування
Прізвище Дата народження Прийнято працювати Пол Освіта Спеціальність Ставлення до військової служби
Петров 03.12.1956 12.12.2001 чоловік Вище Інженер У запасі
Іванов 15.01.1990 11.12.2009 чоловік Середнє Технік У запасі
Федорова 30.04.1964 04.11.2004 дружин Вище Бухгалтер
Сидоров 24.07.1992 0707.2010 чоловік >Начальное Кур'єр >Призивник
Інструкція користувача

Після запуску програми користувач потрапляє але основне вікно програми:


Якщо потрібно використовувати вже створену базу необхідно використовувати кнопку «Вибрати базу». Після цього користувач потрапить на вікно вибору створення або відкриття існуючої бази.

А що вибрати базу необхідно натиснути кнопку «…» й у розпочатому вікні поставити ім'я чи вибрати вже наявний файл бази.

Увага: Якщо обраний режим створенняБД і вказується існуючий файл, він будеперезаписан.

І навіть а то й завантажувати базу є можливість створювати нові записи. По завершення праці та закриттю програми користувачеві запропонують зберегти внесені.

Управляти записами можна використовуючи три кнопки внизу екрана. З допомогою цих кнопок можна. Видаляти чи редагувати записи.

Існує можливість виконання зазначених запитів. Для вибору потрібного запиту необхідно скористатися випадаючого списком у верхній частині екрана, після чого натиснути кнопку «Виконати запит». Щойно програма здійснить вибірку на екран буде виведено форма з результатами запиту.

графік діаграматипизированний файл


Додаток. Вихідні тексти програмних модулів

>unitUnit1;

>interface

>uses

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

>Dialogs,StdCtrls,Menus,Grids,DBGrids, DB,DBTables;

>type

>TWorker=record

>FIO:string[100];

>StartWork :TDate;

>Edication :String[100];

>Spec :String[100];

>sex:byte;

>Armi:String[100];

>BirthDay:TDate;

end;

>type

>TForm1 =class(TForm)

>MainMenu1:TMainMenu;

>File1:TMenuItem;

>Exit1:TMenuItem;

>Button1:TButton;

>Button2:TButton;

>Button3:TButton;

>StringGrid1:TStringGrid;

>Button4:TButton;

>Button5:TButton;

>ComboBox1:TComboBox;

>procedureExit1Click(Sender:TObject);

>procedureButton1Click(Sender:TObject);

>procedureReadData(fileName:string;new:bool);

>procedureButton2Click(Sender:TObject);

>procedureButton4Click(Sender:TObject);

>procedureTableRowToWorker(index:integer;table:TStringGrid);

>procedureAddRowToTable(row:TWorker;table:TStringGrid);

>procedureEditTableRow(row:TWorker;table:TStringGrid);

>procedureButton5Click(Sender:TObject);

>procedureFormClose(Sender:TObject;varAction:TCloseAction);

>procedureSetBase();

>procedureWriteData(fileName:string;table:TStringGrid);

>procedureButton3Click(Sender:TObject);

>procedureFormShow(Sender:TObject);

private

{Privatedeclarations }

>Worker:TWorker;

>Base:String;

>tableDS:TDataSet;

public

{ Publicdeclarations }

end;

>var

>Form1:TForm1;

>implementation

>usesUnit2,Unit3,DateUtils,Unit4,Unit5,Unit6,Unit7;

{$R *.>dfm}

>procedureTForm1.Exit1Click(Sender:TObject);

>begin

>Close;

end;

>procedureTForm1.Button1Click(Sender:TObject);

>begin

>SetBase();

end;

//виводить форму вибору файла з базою даних

>procedureTForm1.SetBase();

>var

>i:integer;

>begin

>ifForm2.ShowModal =mrOkthen

>begin

>ifForm2.RadioButton1.Checkedthen

>begin

Base :=Form2.Edit1.Text;

>ReadData(Base,true);

end

>else

>begin

Base :=Form2.Edit3.Text;

>ReadData(Base,false);

end;

end;

end;

//переводить об'єкт типуTWorker в рядок таблиці

//>row - новий рядок типуTWorker

//>table - таблиця, куди додається рядок

>procedureTForm1.AddRowToTable(row:TWorker;table:TStringGrid);

>begin

>table.Cells[0,table.RowCount - 1] :=row.FIO;

>table.Cells[1,table.RowCount - 1] :=DateToStr(row.StartWork);

>table.Cells[2,table.RowCount - 1] :=row.Edication;

>table.Cells[3,table.RowCount - 1] :=row.Spec;

>ifrow.sex = 0then

>table.Cells[4,table.RowCount - 1] := 'чоловік'

>else

>table.Cells[4,table.RowCount - 1] := 'дружин';

>table.Cells[5,table.RowCount - 1] :=row.Armi;

>table.Cells[6,table.RowCount - 1] :=DateToStr(row.BirthDay);

>table.RowCount :=table.RowCount + 1;

end;

//>Вносит зміни у відредаговану рядок

//>row - відредаговані дані типуTWorker

//>table - таблиця, у якому вносять зміни

>procedureTForm1.EditTableRow(row:TWorker;table:TStringGrid);

>var

>i:integer;

>begin

і :=table.Selection.Top;

>table.Cells[0, і] :=row.FIO;

>table.Cells[1, і] :=DateToStr(row.StartWork);

>table.Cells[2, і] :=row.Edication;

>table.Cells[3, і] :=row.Spec;

>ifrow.sex = 0then

>table.Cells[4, і] := 'чоловік'

>else

>table.Cells[4, і] := 'дружин';

>table.Cells[5, і] :=row.Armi;

>table.Cells[6, і] :=DateToStr(row.BirthDay);

end;

//>Преобразует рядок таблиці вTWorker

//>index - номер рядки

//>table - таблиця, у якій перебувають дані

>procedureTForm1.TableRowToWorker(index:integer;table:TStringGrid );

>var

>i:integer;

>begin

і :=index;

>Worker.FIO :=table.Cells[0, і];

>Worker.StartWork :=StrToDate(table.Cells[1, і]);

>Worker.Edication :=table.Cells[2, і];

>Worker.Spec :=table.Cells[3, і];

>iftable.Cells[4, і] = 'чоловік'then

>Worker.sex := 0

>else

>Worker.sex := 1;

>Worker.Armi :=table.Cells[5, і];

>Worker.BirthDay :=StrToDate(table.Cells[6, і]);

end;

//читає дані з файла в таблицю

//fileName - ім'я файла і шлях щодо нього

//new - показує відривається існуюча база чи створюється нова

>procedureTForm1.ReadData(fileName:string;new:bool);

>var

>F:File ofTWorker;

>size:integer;

>begin

>AssignFile(F,fileName);

>if newthen

>begin

>Rewrite(F);

end

>else

>begin

>Reset(F);

>Seek(F,0);

>while (>notEOF(F))do

>begin

>Read(F,Worker);

>AddRowToTable(Worker,StringGrid1);

end;

end;

>CloseFile(F);

end;

//подія при натисканні кнопки створення нової записи

>procedureTForm1.Button2Click(Sender:TObject);

>begin

>Form3.editRecord :=false;

>ifForm3.ShowModal =mrOkthen

>begin

>Worker :=Form3.Worker;

>AddRowToTable(Worker,StringGrid1);

//>Worker.StartWork :=Form3.Edit1;

end;

end;

//подія при натисканні редагування

>procedureTForm1.Button4Click(Sender:TObject);

>begin

>try

>Form3.editRecord :=true;

>TableRowToWorker(StringGrid1.Selection.Top,StringGrid1);

>Form3.Worker :=Worker;

>ifForm3.ShowModal =mrOkthen

>begin

>Worker :=Form3.Worker;

>EditTableRow(Worker,StringGrid1);

end;

>except

>MessageDlg('При спроби редагування відбуласяошибка',mtError,[mbOK],0);

end;

end;

//Функція видалення рядкиTStringGrid

//>RowNumber - номер рядки

//>Grid - таблиця з якої видалення

>procedureGridDeleteRow(RowNumber:Integer;Grid:TstringGrid);

>var

і:Integer;

>begin

>Grid.Row :=RowNumber;

>if (>Grid.Row =Grid.RowCount - 1)then

{On the lastrow}

>Grid.RowCount :=Grid.RowCount - 1

>else

>begin

{Not the lastrow}

>for і :=RowNumber toGrid.RowCount - 1do

>Grid.Rows[i] :=Grid.Rows[i + 1];

>Grid.RowCount :=Grid.RowCount - 1;

end;

end;

//Видалення рядків

>procedureTForm1.Button5Click(Sender:TObject);

>var

>i,n,start:integer;

>begin

n :=StringGrid1.Selection.Bottom -StringGrid1.Selection.Top + 1;

>start:=StringGrid1.Selection.Top;

>ifStringGrid1.Selection.Bottom <StringGrid1.Selection.Topthen

>start:=StringGrid1.Selection.Bottom;

>for і := 1 to ndo

>begin

>GridDeleteRow(start + і - 1,StringGrid1);

end;

end;

>procedureTForm1.FormClose(Sender:TObject;varAction:TCloseAction);

>var

>res:integer;

>begin

>if Base = ''then

>begin

>res :=MessageDlg('Сохранитьзаписи?',mtInformation,[mbYes,mbNo],0);

>ifres =mrYesthen

>SetBase()

>else

exit;

end;

>WriteData(Base,StringGrid1);

end;

//запис даних в файл бази

//>fileName - ім'я і шлях до файлу бази

//>table - Таблиця з цими

>procedureTForm1.WriteData(fileName:string;table:TStringGrid);

>var

>F:File ofTWorker;

>i:integer;

>begin

>AssignFile(F,fileName);

>Reset(F);

>Seek(F,0);

>for і := 1 totable.RowCount-2do

>begin

>TableRowToWorker(i,StringGrid1);

>Write(F,Worker);

end;

>CloseFile(F);

end;

//Функція швидкої сортування

//А - масив для сортування

//>iLo - початок масиву

//>iHi - кінець масиву

>procedureQuickSort(var A:array ofTWorker;iLo,iHi:Integer);

>var

>Lo,Hi:Integer;

>Pivot :>TDate;

T:TWorker;

>begin

>Lo :=iLo;

>Hi :=iHi;

>Pivot :=A[(Lo +Hi)div2].BirthDay;

>repeat

>whileA[Lo].BirthDay <PivotdoInc(Lo) ;

>whileA[Hi].BirthDay >PivotdoDec(Hi) ;

>ifLo <=Hithen

>begin

T :=A[Lo];

>A[Lo] :=A[Hi];

>A[Hi] := T;

>Inc(Lo) ;

>Dec(Hi) ;

end;

>untilLo >Hi;

>ifHi >iLothenQuickSort(A,iLo,Hi) ;

>ifLo <iHithenQuickSort(A,Lo,iHi) ;

end;

//>Виполняет запити

>procedureTForm1.Button3Click(Sender:TObject);

>var

>i:integer;

>Workers:array ofTWorker;

>y1,m1,d1,y2,m2,d2:Word;

>MAge,WAge : real;

>MStch,WStch :integer;

>begin

>ifComboBox1.ItemIndex = 0then

>begin

>SetLength(Workers,StringGrid1.RowCount - 2);

>DecodeDate(Now,y2,m2,d2);

>for і := 1 toStringGrid1.RowCount - 2do

>begin

>TableRowToWorker(i,StringGrid1);

>DecodeDate(Worker.BirthDay,y1,m1,d1);

>if (>abs(y2 -y1) <= 30) and (>Worker.sex = 0)then

>Workers[i-1] :=Worker;

end;

>Form4.FillTable(Workers);

>Form4.ShowModal;

end

>else

>ifComboBox1.ItemIndex = 1then

>begin

>DecodeDate(Now,y2,m2,d2);

>MStch := 0;

>WStch := 0;

>for і := 1 toStringGrid1.RowCount - 2do

>begin

>TableRowToWorker(i,StringGrid1);

>DecodeDate(Worker.BirthDay,y1,m1,d1);

>if (>Worker.sex = 0)then

>begin

>MAge :=MAge +y2 -y1;

>MStch :=MStch +1;

end

>else

>begin

>WAge :=WAge +y2 -y1;

>WStch :=WStch +1;

end;

end;

>MAge :=MAge /MStch;

>WAge :=WAge /WStch;

>Form5.Label3.Caption :=FloatToStrF(MAge,ffGeneral, 8, 2);

>Form5.Label4.Caption :=FloatToStrF(WAge,ffGeneral, 8, 2);

>Form5.ShowModal;

end

>else

>ifComboBox1.ItemIndex = 2then

>begin

>SetLength(Workers,StringGrid1.RowCount - 1);

>DecodeDate(Now,y2,m2,d2);

>for і := 1 toStringGrid1.RowCount - 2do

>begin

>TableRowToWorker(i,StringGrid1);

>DecodeDate(Worker.StartWork,y1,m1,d1);

>ify2 =y1then

>Workers[i] :=Worker;

end;

>if (>Length(Workers) > 3)then

>QuickSort(Workers,1,Length(Workers))

>else

>ifWorkers[1].BirthDay <Workers[1].BirthDaythen

>begin

>worker :=Workers[1];

>Workers[1] :=Workers[2];

>Workers[2] :=worker;

end;

>Form6.FillTable(Workers);

>Form6.ShowModal;

end

>else

>ifComboBox1.ItemIndex = 3then

>begin

>SetLength(Workers,StringGrid1.RowCount - 2);

>for і := 1 toStringGrid1.RowCount - 2do

>begin

>TableRowToWorker(i,StringGrid1);

>Workers[i-1] :=Worker;

end;

>Form7.FillTable(Workers);

>Form7.ShowModal;

end

>else

>ifComboBox1.ItemIndex = 4then

>begin

>SetLength(Workers,StringGrid1.RowCount - 2);

>for і := 1 toStringGrid1.RowCount - 2do

>begin

>TableRowToWorker(i,StringGrid1);

>Workers[i-1] :=Worker;

end;

>Form7.FillKrug(Workers);

>Form7.ShowModal;

end

>else

>ifComboBox1.ItemIndex = 5then

>begin

>SetLength(Workers,StringGrid1.RowCount - 2);

>for і := 1 toStringGrid1.RowCount - 2do

>begin

>TableRowToWorker(i,StringGrid1);

>Workers[i-1] :=Worker;

end;

>Form7.FillStolb(Workers);

>Form7.ShowModal;

end;

end;

>procedureTForm1.FormShow(Sender:TObject);

>begin

>StringGrid1.Cells[0,0] := 'Прізвище';

>StringGrid1.Cells[1,0] := 'Прийнято';

>StringGrid1.Cells[2,0] := 'Освіта';

>StringGrid1.Cells[3,0] := 'Спеціалізація';

>StringGrid1.Cells[4,0] := 'Пол';

>StringGrid1.Cells[5,0] := '>Отн. до служби';

>StringGrid1.Cells[6,0] := 'Дата народження';

end;

end.

>unitUnit2;

>interface

>uses

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

>Dialogs,StdCtrls;

>type

>TForm2 =class(TForm)

>RadioButton1:TRadioButton;

>RadioButton2:TRadioButton;

>Edit1:TEdit;

>Label1:TLabel;

>Label3:TLabel;

>Edit3:TEdit;

>Button1:TButton;

>Button2:TButton;

>Button3:TButton;

>OpenDialog1:TOpenDialog;

>SaveDialog1:TSaveDialog;

>procedureRadioButton1Click(Sender:TObject);

>procedureRadioButton2Click(Sender:TObject);

>procedureButton2Click(Sender:TObject);

>procedureButton3Click(Sender:TObject);

>procedureButton1Click(Sender:TObject);

private

{Privatedeclarations }

public

{ Publicdeclarations }

end;

>var

>Form2:TForm2;

>implementation

{$R *.>dfm}

>procedureTForm2.RadioButton1Click(Sender:TObject);

>begin

>Label1.Enabled :=true;

>Edit1.Enabled :=true;

>Edit3.Enabled :=false;

>Label3.Enabled :=false;

>Button2.Enabled :=true;

>Button3.Enabled :=false;

end;

>procedureTForm2.RadioButton2Click(Sender:TObject);

>begin

>Label1.Enabled :=false;

>Edit1.Enabled :=false;

>Button2.Enabled :=false;

>Edit3.Enabled :=true;

>Label3.Enabled :=true;

>Button3.Enabled :=true;

end;

>procedureTForm2.Button2Click(Sender:TObject);

>begin

>ifSaveDialog1.Executethen

>begin

>Edit1.Text :=SaveDialog1.FileName+'.txt';

end

end;

>procedureTForm2.Button3Click(Sender:TObject);

>begin

>ifOpenDialog1.Executethen

>begin

>Edit3.Text :=OpenDialog1.FileName;

end;

end;

>procedureTForm2.Button1Click(Sender:TObject);

>begin

>ModalResult :=mrOk;

//>Close;

end;

end.

>unitUnit3;

>interface

>uses

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

>Dialogs,StdCtrls,ComCtrls,Unit1;

>type

>TForm3 =class(TForm)

>Label1:TLabel;

>Edit1:TEdit;

>Label2:TLabel;

>Label3:TLabel;

>Label4:TLabel;

>Label5:TLabel;

>Label6:TLabel;

>Label7:TLabel;

>ComboBox1:TComboBox;

>Edit2:TEdit;

>ComboBox2:TComboBox;

>Edit3:TEdit;

>DateTimePicker1:TDateTimePicker;

>DateTimePicker2:TDateTimePicker;

>Button1:TButton;

>Button2:TButton;

>procedureButton1Click(Sender:TObject);

>procedureButton2Click(Sender:TObject);

>procedureClearFields();

>procedureFormShow(Sender:TObject);

private

{Privatedeclarations }

public

{ Publicdeclarations }

>Worker:TWorker;

>editRecord:bool;

end;

>var

>Form3:TForm3;

>implementation

{$R *.>dfm}

>procedureTForm3.ClearFields();

>begin

>Edit1.Text := '';

>DateTimePicker2.Date :=Now;

>ComboBox1.ItemIndex := 0;

>Edit2.Text := '';

>ComboBox2.ItemIndex := 0;

>Edit3.Text := '';

>DateTimePicker1.Date :=Now;

end;

>procedureTForm3.Button1Click(Sender:TObject);

>begin

>Worker.FIO :=Edit1.Text;

>Worker.StartWork :=DateTimePicker2.Date;

>Worker.Edication :=ComboBox1.Text;

>Worker.Spec :=Edit2.Text;

>Worker.sex :=ComboBox2.ItemIndex;

>Worker.Armi :=Edit3.Text;

>Worker.BirthDay :=DateTimePicker1.Date;

>ModalResult :=mrOK;

end;

>procedureTForm3.Button2Click(Sender:TObject);

>begin

>ModalResult :=mrCancel;

end;

>procedureTForm3.FormShow(Sender:TObject);

>begin

>ifnoteditRecordthen

>ClearFields

>else

>begin

>Edit1.Text :=Worker.FIO;

>DateTimePicker2.Date :=Worker.StartWork;

>ComboBox1.Text :=Worker.Edication;

>Edit2.Text :=Worker.Spec;

>ComboBox2.ItemIndex :=Worker.sex;

>Edit3.Text :=Worker.Armi;

>DateTimePicker1.Date :=Worker.BirthDay;

end;

end;

end.

>unitUnit4;

>interface

>uses

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

>Dialogs,Grids,Unit1;

>type

>TForm4 =class(TForm)

>StringGrid1:TStringGrid;

private

{Privatedeclarations }

public

{ Publicdeclarations }

>procedureFillTable(Workers:array ofTWorker);

end;

>var

>Form4:TForm4;

>implementation

{$R *.>dfm}

>procedureTForm4.FillTable(Workers:array ofTWorker);

>var

>i,n:integer;

>begin

n:=Length(Workers);

>StringGrid1.Cells[0,0] := 'Прізвище';

>StringGrid1.Cells[1,0] := 'Освіта';

>StringGrid1.Cells[2,0] := 'Ставлення до служби';

>StringGrid1.RowCount := n+1;

>fori:=1 to ndo

>begin

>StringGrid1.Cells[0,i] :=Workers[i-1].FIO;

>StringGrid1.Cells[1,i] :=Workers[i-1].Edication;

>StringGrid1.Cells[2,i] :=Workers[i-1].Armi;

end;

end;

end.

>unitUnit6;

>interface

>uses

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

>Dialogs,Grids,Unit1;

>type

>TForm6 =class(TForm)

>StringGrid1:TStringGrid;

private

{Privatedeclarations }

public

>procedureFillTable(Workers:array ofTWorker);

{ Publicdeclarations }

end;

>var

>Form6:TForm6;

>implementation

{$R *.>dfm}

>procedureTForm6.FillTable(Workers:array ofTWorker);

>var

>i,n:integer;

>begin

n:=Length(Workers);

>StringGrid1.Cells[0,0] := 'Прізвище';

>StringGrid1.Cells[1,0] := 'Датарожд.';

>StringGrid1.RowCount := n;

>fori:=1 ton-1do

>begin

>StringGrid1.Cells[0,i] :=Workers[i].FIO;

>StringGrid1.Cells[1,i] :=DateToStr(Workers[i].BirthDay);

end;

end;

end.

>unitUnit7;

>interface

>uses

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

>Dialogs,TeEngine,TeeFunci,Series,ExtCtrls,TeeProcs,Chart,Unit1;

>type

>TForm7 =class(TForm)

>Chart1:TChart;

>Series1:TLineSeries;

>TeeFunction1:TMultiplyTeeFunction;

>Chart2:TChart;

>Series3:TPieSeries;

>Chart3:TChart;

>Series2:TBarSeries;

private

{Privatedeclarations }

public

{ Publicdeclarations }

>procedureFillTable(Workers:array ofTWorker);

>procedureFillKrug(Workers:array ofTWorker);

>procedureFillStolb(Workers:array ofTWorker);

end;

>var

>Form7:TForm7;

>implementation

{$R *.>dfm}

>procedureTForm7.FillTable(Workers:array ofTWorker);

>var

>i,n:integer;

>y1,m1,d1,y2,m2,d2:Word;

>yars:array[0..60] ofinteger;

>begin

//>Chart1.SeriesList.Clear;

//>Chart1.SeriesList.Add(Series1);

>Chart1.Visible :=true;

>Chart2.Visible :=false;

>Chart3.Visible :=false;

>Caption := 'Освіта';

>Series1.Clear;

n:=Length(Workers);

>DecodeDate(Now,y2,m2,d2);

>fori:=1 to 60do

>yars[i-1] := 0;

>fori:=1 to ndo

>begin

>DecodeDate(Workers[i-1].BirthDay,y1,m1,d1);

>if (>Workers[i-1].Edication = 'Вище')then

>yars[y2-y1] :=yars[y2-y1] + 5

>else

>if (>Workers[i-1].Edication = '>Cредне спеціальне')then

>yars[y2-y1] :=yars[y2-y1] + 4

>else

>if (>Workers[i-1].Edication = '>Cреднее')then

>yars[y2-y1] :=yars[y2-y1] + 3

>else

>if (>Workers[i-1].Edication = '>Неполное середнє')then

>yars[y2-y1] :=yars[y2-y1] + 2

>else

>yars[y2-y1] :=yars[y2-y1] + 1;

end;

>fori:=1 to 60do

>Series1.AddXY(i,yars[i-1]);

end;

>procedureTForm7.FillKrug(Workers:array ofTWorker);

>var

>i,n :integer;

>y1,m1,d1,y2,m2,d2 : Word;

>stch1,stch2,stch3 :integer;

>begin

//>Chart1.SeriesList.Clear;

//>Chart1.SeriesList.Clear;

//>Chart1.SeriesList.Add(Series2);

>Chart1.Visible :=false;

>Chart2.Visible :=true;

>Chart3.Visible :=false;

>Caption := 'Вікове співвідношення';

>Series3.Clear;

>stch1 := 0;

>stch2 := 0;

>stch3 := 0;

n:=Length(Workers);

>DecodeDate(Now,y2,m2,d2);

>fori:=1 to ndo

>begin

>DecodeDate(Workers[i-1].BirthDay,y1,m1,d1);

>if (>y2-y1 <= 30)then

>Inc(stch1)

>else

>if (>y2-y1 <= 50)then

>Inc(stch2)

>else

>Inc(stch3);

end;

//>Series2.Add(50);

>Series3.Add(stch1);

>Series3.Add(stch2);

>Series3.Add(stch3);

end;

>procedureTForm7.FillStolb(Workers:array ofTWorker);

>var

>i,n :integer;

>stch1,stch2,stch3,stch4,stch5 :integer;

>begin

>Chart1.Visible :=false;

>Chart2.Visible :=false;

>Chart3.Visible :=true;

>Caption := 'Освіта співробітників';

>Series2.Clear;

>stch1 := 0;

>stch2 := 0;

>stch3 := 0;

>stch4 := 0;

>stch5 := 0;

n:=Length(Workers);

>fori:=1 to ndo

>begin

>if (>Workers[i-1].Edication = 'Вище')then

>Inc(stch1)

>else

>if (>Workers[i-1].Edication = '>Cредне спеціальне')then

>Inc(stch2)

>else

>if (>Workers[i-1].Edication = '>Cреднее')then

>Inc(stch3)

>else

>if (>Workers[i-1].Edication = '>Неполное середнє')then

>Inc(stch4)

>else

>Inc(stch5);

end;

>Series2.Add(stch1);

>Series2.Add(stch2);

>Series2.Add(stch3);

>Series2.Add(stch4);

>Series2.Add(stch5);

end;

end.


Схожі реферати:

Навігація