Зміст
Завдання розробку програмного комплексу
Функціональна структура докладання
>Спецификация програмного комплексу
Структурна діаграма програмного комплексу
Дані для тестування
Інструкція користувача
Додаток
Розробити інформаційну підсистему відділу кадрів.
Інформація, оброблювана в підсистемі, повинна зберігатися в текстовому читипизированном файлах.
Дані, що їх відбито у підсистемі: прізвище, місяць і рік прийому працювати, освіту, спеціальність, підлогу, ставлення до військової служби, рік народження.
Відомості про співробітників поповнюються принаймні прийому працювати.
У системі має вирішуватися такі:
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.
Нові надходження
Реклама
Контакти