|
||||||||||||
|
||||||||||||
|
|||||||||
МЕНЮ
|
БОЛЬШАЯ ЛЕНИНГРАДСКАЯ БИБЛИОТЕКА - РЕФЕРАТЫ - Кадровий облікКадровий облік70 Зміст
70 Блок-схема 1 - Процедура переведення рядка в дату.70 Блок-схема 2 - Процедура сортування за табельним номером.70 Блок-схема 3 - Процедура пошуку працівника за ім'ям.70 Блок-схема 4 - Процедура додавання нового робітника. 4. Визначення структури данихВ програмі були використані змінні типів наведених в Таблиці 1Таблиця 1. Типи змінних та їх призначення.
Деякі змінні, що використовуються в програмі, їх тип та призначення вказані в Таблиці 2. Таблиця 2. Деякі змінні, їх типи та призначення у програмі.
Рисунок 5. Програма з завантаженим файлом. Рисунок 6. Редагування інформації про робітника. Було додано кнопку оновити, для оновлення стажу роботи відносно поточної дати. Рисунок 7. Програма при програмно згенерованій грі. Було додано можливість видалення існуючих категорій. Зараз в програмі всі недоліки виправлені, програма працює нормально і без помилок. 10. Інструкції з експлуатації програмиДля нормальної роботи гри до комп'ютера висуваються такі мінімальні вимоги: Pentium 100 MHz; 1 Mb оперативної пам'яті; Операційну систему Windows 95/98/2000/XP / Vista; 600 Кб вільного місця на жорсткому диску; Відеокарта на 8 MB; Мишка, клавіатура. Щоб програма працювала потрібно скопіювати файл “Kadrovuy_Oblik. exe” на комп'ютер. Запуск програми здійснюється за допомогою файлу “Kadrovuy_Oblik. exe”. Для додавання нового робітника потрібно натиснути кнопку "Додати", на панелі редагування внизу вікна. Для редагування інформації про робітника, потрібно натиснути кнопку "Змінити" на панелі редагування, або 2 рази клацнути на потрібному робітнику. Також потрібного робітника можна видалити із списку, для цього потрібно вибрати працівника із списку, клавішами чи натисканням лівої кнопки мишки і натиснути кнопку "Видалити". В програмі можна додавати нові посади, відділи чи підрозділи, для цього потрібно натиснути кнопку "Редагування категорій" на панелі внизу і в новому вікні вписати нову посаду, відділ чи підрозділ. Також існуючі категорії (посади, відділи, підрозділи) можна видаляти для цього потрібно натиснути кнопку "Редагування категорій" і вибрати в списку непотрібну категорію і натиснути клавішу Del. Також робітників можна сортувати за багатьма критеріями, а для сортування в іншому напрямку потрібно натиснути кнопку "Інвертувати" на панелі "Сортування". В програмі присутній пошук робітників за всіма критеріями, які є в робітників. Пошук виконаний в вигляді фільтру, що спрощує пошук робітників. За об'ємом програма невелика тому легко влізе на дискету чи інший носій інформації. 11. Аналіз отриманих результатівДля даного курсового проекту було розроблено програму яка дозволяє вести облік робітників на підприємстві. В програмі є можливість додавання робітників, редагування інформації про них, і їх видалення. Є можливість збереження і завантаження даних про робітників. Присутнє сортування і пошук робітників за декількома критеріями. Створення нових посад, відділів чи підрозділів.Рисунок 8. Завантажений файл Рисунок 9. Дані сортовано за табельним номером Рисунок 10. Ввімкнено режим пошуку В режимі пошуку кнопки "Додати" і "Видалити" не доступні. Рисунок 11. Був проведений пошук по назві відділу Програма відповідає поставленій задачі. Всі функції та процедури працюють правильно і без помилок. Сортування даних виконується правильно без будь-яких помилок. Пошук проходить правильно, а також пошук серед вже знайдених робітників теж правильний і не містить помилок. ВисновокДля розробки даного проекту потрібно було спочатку проаналізувати реалізацію програми визначити структури даних, функціональні можливості програми. Для створення програми використовувалось середовище програмування Borland Delphi7. Дані про робітників зберігаються в типізований файл, а при завантажені файлу в програму дані записуються в масив записів, а вже програма працює з цим масивом. В програмі є такі функції як: 1. Завантаження2. Збереження3. Додавання нових робітників4. Зміна інформації про вже існуючих робітників5. Видалення робітників6. Сортування робітників за багатьма критеріями7. Пошук працівників за багатьма критеріями, який виконано в вигляді фільтру. В кожного працівника є багато полів з інформацією про нього, що спрощує облік робітників і пошук серед інших робітників. В ході розробки було оптимізовано роботу програми та максимально спрощено інтерфейс програми. Було досягнуто досить непоганої функціональності програми відносно аналогів. ДодаткиДодаток Аunit KadrUnit; interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, Grids, StdCtrls, Menus, XPMan; typeData=recordD: Byte; M: Byte; Y: Integer; end; TForm1 = class(TForm) StringGrid1: TStringGrid; MainMenu1: TMainMenu; N1: TMenuItem; N2: TMenuItem; N3: TMenuItem; N4: TMenuItem; N5: TMenuItem; GroupBox1: TGroupBox; GroupBox2: TGroupBox; Button1: TButton; Button2: TButton; Button3: TButton; OpenDialog: TOpenDialog; SaveDialog: TSaveDialog; Button4: TButton; GroupBox3: TGroupBox; ComboBox1: TComboBox; Button5: TButton; GroupBox4: TGroupBox; CheckBox1: TCheckBox; Button6: TButton; Button7: TButton; ComboBox2: TComboBox; ComboBox3: TComboBox; XPManifest1: TXPManifest; function GetData(S: String): Data; procedure SaveToFile(FileName: String); procedure LoadFromFile(FileName: String); function DataToStr(D: Data): String; procedure FormCreate(Sender: TObject); procedure RecToRow(Index,Row: Integer); procedure RefreshList; procedure Button1Click(Sender: TObject); procedure StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure N2Click(Sender: TObject); procedure N4Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure StringGrid1DblClick(Sender: TObject); procedure N3Click(Sender: TObject); procedure N5Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure ComboBox1Change(Sender: TObject); procedure CheckBox1Click(Sender: TObject); procedure Button7Click(Sender: TObject); procedure ComboBox3KeyPress(Sender: TObject; var Key: Char); procedure ComboBox3Change(Sender: TObject); procedure ComboBox2Change(Sender: TObject); procedure ComboBox2KeyPress(Sender: TObject; var Key: Char); function FindInRec(Index: Integer): Integer; procedure Button6Click(Sender: TObject); private{ Private declarations }public{ Public declarations }end; typeKadr=recordTabN: Integer; // Табельний номерLastName: String [255] ; // ПрізвищеName: String [255] ; // Ім'яPatronymic: String [255] ; // По БатьковіBirthData: Data; // Дата народженняBirthPlace: String [255] ; // Місце народженняStat: Boolean; // СтатьIndCode: String [10] ; // Ідентифікаційний кодReceptionData: Data; // Дата прийому на роботуExperience: Integer; // СтажExempt: Boolean; // ЗвільненийLiberationData: Data; // Дата звільненняPositionName: String [255] ; // Назва посадиDepartmentName: String [255] ; // Назва відділуDepartmentLeader: Boolean; // Керівник відділуSubsectionName: String [255] ; // Назва підрозділуSubsectionLeader: Boolean; // Керівник підрозділуend; varForm1: TForm1; F: File of Kadr; Worker,Rezerv: array of Kadr; CurFileName: String=''; WorkersCount: Integer=0; RezervCount: Integer=0; CurWorker: Integer=0; ADD: Boolean; implementationuses WorkerUnit, RegUnit; {$R *. dfm}function TForm1. GetData(S: String): Data; var i,j,P: Integer; beginResult. D: =0; Result. M: =0; Result. Y: =0; P: =0; j: =1; for i: =1 to Length(S) doif S [i] ='. ' then beginif P=1 then beginResult. M: =Form2. STI(Copy(S,j, i-j)); j: =i+1; if Copy(S,j,Length(S) - i-1) <>'' thenResult. Y: =Form2. STI(Copy(S,j,Length(S) - i)); end; if P=0 then beginResult. D: =Form2. STI(Copy(S,j, i-1)); INC(P); j: =i+1; end; end; end; procedure TForm1. SaveToFile(FileName: String); var i: Integer; beginCurFileName: =FileName; Caption: ='Кадровий облік - '+ExtractFileName(FileName); AssignFile(F,FileName); ReWrite(F); for i: =0 to WorkersCount-1 doWrite(F,Worker [i]); CloseFile(F); end; procedure AddToCombo(S: Kadr); var i: Integer; A: Boolean; beginA: =True; for i: =0 to Form2. ComboBox2. Items. Count-1 doif S. SubsectionName=Form2. ComboBox2. Items. Strings [i] then beginA: =False; Break; end; if A then Form2. ComboBox2. Items. Add(S. SubsectionName); A: =True; for i: =0 to Form2. ComboBox3. Items. Count-1 doif S. DepartmentName=Form2. ComboBox3. Items. Strings [i] then beginA: =False; Break; end; if A then Form2. ComboBox3. Items. Add(S. DepartmentName); A: =True; for i: =0 to Form2. ComboBox4. Items. Count-1 doif S. PositionName=Form2. ComboBox4. Items. Strings [i] then beginA: =False; Break; end; if A then Form2. ComboBox4. Items. Add(S. PositionName); end; procedure TForm1. LoadFromFile(FileName: String); beginWorkersCount: =0; CurWorker: =WorkersCount-1; SetLength(Worker,WorkersCount); Form2. ComboBox2. Clear; Form2. ComboBox3. Clear; Form2. ComboBox4. Clear; Form3. ListBox1. Clear; Form3. ListBox2. Clear; Form3. ListBox3. Clear; CurFileName: =FileName; Caption: ='Кадровий облік - '+ExtractFileName(FileName); AssignFile(F,FileName); Reset(F); while not EOF(F) do beginINC(WorkersCount); SetLength(Worker,WorkersCount); Form2. ClearWorker(WorkersCount-1); Read(F,Worker [WorkersCount-1]); AddToCombo(Worker [WorkersCount-1]); end; Form3. ListBox1. Items: =Form2. ComboBox4. Items; Form3. ListBox2. Items: =Form2. ComboBox3. Items; Form3. ListBox3. Items: =Form2. ComboBox2. Items; if WorkersCount>0 thenCurWorker: =0; RefreshList; CloseFile(F); end; function TForm1. DataToStr(D: Data): String; beginResult: =IntToStr(D. D) +'. '+IntToStr(D. M) +'. '+IntToStr(D. Y); end; procedure TForm1. FormCreate(Sender: TObject); beginStringGrid1. 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]: ='Дата прийому на роботу'; StringGrid1. Cells [7,0]: ='Стаж роботи'; StringGrid1. Cells [8,0]: ='Дата звільнення'; StringGrid1. Cells [9,0]: ='Назва посади'; StringGrid1. Cells [10,0]: ='Назва відділу'; StringGrid1. Cells [11,0]: ='Назва підрозділу'; end; procedure TForm1. RecToRow(Index,Row: Integer); beginif Row<1 then Exit; StringGrid1. Rows [Row]. Clear; StringGrid1. Cells [0,Row]: =IntToStr(Row); StringGrid1. Cells [1,Row]: =IntToStr(Worker [Index]. TabN); StringGrid1. Cells [2,Row]: =Worker [Index]. LastName; StringGrid1. Cells [3,Row]: =Worker [Index]. Name; StringGrid1. Cells [4,Row]: =Worker [Index]. Patronymic; StringGrid1. Cells [5,Row]: =Worker [Index]. IndCode; StringGrid1. Cells [6,Row]: =DataToStr(Worker [Index]. ReceptionData); StringGrid1. Cells [7,Row]: =IntToStr(Worker [Index]. Experience); if Worker [Index]. Exempt thenStringGrid1. Cells [8,Row]: =DataToStr(Worker [Index]. LiberationData); StringGrid1. Cells [9,Row]: =Worker [Index]. PositionName; StringGrid1. Cells [10,Row]: =Worker [Index]. DepartmentName; StringGrid1. Cells [11,Row]: =Worker [Index]. SubsectionName; end; procedure TForm1. RefreshList; var i: Integer; beginif WorkersCount=0 then beginStringGrid1. RowCount: =WorkersCount+2; StringGrid1. Rows [1]. Clear; Button2. Enabled: =False; Button3. Enabled: =False; Exit; end; Button2. Enabled: =True; if not CheckBox1. Checked thenButton3. Enabled: =True; StringGrid1. RowCount: =WorkersCount+1; for i: =0 to WorkersCount-1 do beginStringGrid1. Rows [i+1]. Clear; StringGrid1. Cells [0, i+1]: =IntToStr(i+1); StringGrid1. Cells [1, i+1]: =IntToStr(Worker [i]. TabN); StringGrid1. Cells [2, i+1]: =Worker [i]. LastName; StringGrid1. Cells [3, i+1]: =Worker [i]. Name; StringGrid1. Cells [4, i+1]: =Worker [i]. Patronymic; StringGrid1. Cells [5, i+1]: =Worker [i]. IndCode; StringGrid1. Cells [6, i+1]: =DataToStr(Worker [i]. ReceptionData); StringGrid1. Cells [7, i+1]: =IntToStr(Worker [i]. Experience); if Worker [i]. Exempt thenStringGrid1. Cells [8, i+1]: =DataToStr(Worker [i]. LiberationData); StringGrid1. Cells [9, i+1]: =Worker [i]. PositionName; StringGrid1. Cells [10, i+1]: =Worker [i]. DepartmentName; StringGrid1. Cells [11, i+1]: =Worker [i]. SubsectionName; end; end; procedure TForm1. Button1Click(Sender: TObject); beginINC(WorkersCount); SetLength(Worker,WorkersCount); CurWorker: =WorkersCount-1; Form2. ClearWorker(CurWorker); if WorkersCount>=StringGrid1. RowCount then beginStringGrid1. RowCount: =WorkersCount+1; StringGrid1. Rows [WorkersCount]. Clear; end; ADD: =True; Form2. ClearField; Form2. Show; end; procedure TForm1. StringGrid1SelectCell(Sender: TObject; ACol,ARow: Integer; var CanSelect: Boolean); beginCurWorker: =ARow-1; end; procedure TForm1. Button2Click(Sender: TObject); beginADD: =False; Form2. RecToForm(CurWorker); Form2. Show; end; procedure TForm1. Button3Click(Sender: TObject); beginForm2. DelWorker(CurWorker); end; procedure TForm1. N2Click(Sender: TObject); beginif OpenDialog. Execute thenLoadFromFile(OpenDialog. FileName); end; procedure TForm1. N4Click(Sender: TObject); beginif SaveDialog. Execute thenSaveToFile(SaveDialog. FileName); end; procedure TForm1. Button4Click(Sender: TObject); beginForm3. Show; end; procedure TForm1. StringGrid1DblClick(Sender: TObject); beginif Button2. Enabled thenButton2. OnClick(Button2); end; procedure TForm1. N3Click(Sender: TObject); beginif CurFileName<>'' thenSaveToFile(CurFileName) else N4. OnClick(N4); end; procedure TForm1. N5Click(Sender: TObject); beginClose; end; procedure TForm1. Button5Click(Sender: TObject); var i,L: Integer; A: Kadr; beginif WorkersCount<=1 then Exit; L: =Trunc((WorkersCount-1) / 2); for i: =0 to L do beginA: =Worker [i] ; Worker [i]: =Worker [WorkersCount-1-i] ; Worker [WorkersCount-1-i]: =A; end; RefreshList; end; procedure SortByTabN; // Сортування за табельним номеромvar i,j: Integer; A: Kadr; beginfor i: =0 to WorkersCount-2 dofor j: =i+1 to WorkersCount-1 doif Worker [i]. TabN>Worker [j]. TabN then beginA: =Worker [i] ; Worker [i]: =Worker [j] ; Worker [j]: =A; end; Form1. RefreshList; end; procedure SortByLastName; // Сортування за прізвищемvar i,j: Integer; A: Kadr; beginfor i: =0 to WorkersCount-2 dofor j: =i+1 to WorkersCount-1 doif Worker [i]. LastName>Worker [j]. LastName then beginA: =Worker [i] ; Worker [i]: =Worker [j] ; Worker [j]: =A; end; Form1. RefreshList; end; procedure SortByName; // Сортування за ім'ямvar i,j: Integer; A: Kadr; beginfor i: =0 to WorkersCount-2 dofor j: =i+1 to WorkersCount-1 doif Worker [i]. Name>Worker [j]. Name then beginA: =Worker [i] ; Worker [i]: =Worker [j] ; Worker [j]: =A; end; Form1. RefreshList; end; procedure SortByPatronymic; // Сортування по Батьковіvar i,j: Integer; A: Kadr; beginfor i: =0 to WorkersCount-2 dofor j: =i+1 to WorkersCount-1 doif Worker [i]. Patronymic>Worker [j]. Patronymic then beginA: =Worker [i] ; Worker [i]: =Worker [j] ; Worker [j]: =A; end; Form1. RefreshList; end; function DataToInt(A: Data): Integer; // Переведення дати в дніbeginResult: =A. Y*365+A. M*31+A. D; end; procedure SortByBirdthDay; // Сортування за датою народженняvar i,j: Integer; A: Kadr; beginfor i: =0 to WorkersCount-2 dofor j: =i+1 to WorkersCount-1 doif DataToInt(Worker [i]. BirthData) >DataToInt(Worker [j]. BirthData) then beginA: =Worker [i] ; Worker [i]: =Worker [j] ; Worker [j]: =A; end; Form1. RefreshList; end; procedure SortByIndCode; // Сортування за ідентифікаційним кодомvar i,j: Integer; A: Kadr; beginfor i: =0 to WorkersCount-2 dofor j: =i+1 to WorkersCount-1 doif Worker [i]. IndCode>Worker [j]. IndCode then beginA: =Worker [i] ; Worker [i]: =Worker [j] ; Worker [j]: =A; end; Form1. RefreshList; end; procedure SortByReceptionData; // Сортування за датою прийому на роботуvar i,j: Integer; A: Kadr; beginfor i: =0 to WorkersCount-2 dofor j: =i+1 to WorkersCount-1 doif DataToInt(Worker [i]. ReceptionData) >DataToInt(Worker [j]. ReceptionData) then beginA: =Worker [i] ; Worker [i]: =Worker [j] ; Worker [j]: =A; end; Form1. RefreshList; end; procedure SortByExperience; // Сортування за стажемvar i,j: Integer; A: Kadr; beginfor i: =0 to WorkersCount-2 dofor j: =i+1 to WorkersCount-1 doif Worker [i]. Experience>Worker [j]. Experience then beginA: =Worker [i] ; Worker [i]: =Worker [j] ; Worker [j]: =A; end; Form1. RefreshList; end; procedure SortByLiberationData; // Сортування за датою звільненняvar i,j: Integer; A: Kadr; beginfor i: =0 to WorkersCount-2 dofor j: =i+1 to WorkersCount-1 doif DataToInt(Worker [i]. LiberationData) >DataToInt(Worker [j]. LiberationData) then beginA: =Worker [i] ; Worker [i]: =Worker [j] ; Worker [j]: =A; end; Form1. RefreshList; end; procedure SortByPositionName; // Сортування за назвою посадиvar i,j: Integer; A: Kadr; beginfor i: =0 to WorkersCount-2 dofor j: =i+1 to WorkersCount-1 doif Worker [i]. PositionName>Worker [j]. PositionName then beginA: =Worker [i] ; Worker [i]: =Worker [j] ; Worker [j]: =A; end; Form1. RefreshList; end; procedure SortByDepartmentName; // Сортування за назвою відділуvar i,j: Integer; A: Kadr; beginfor i: =0 to WorkersCount-2 dofor j: =i+1 to WorkersCount-1 doif Worker [i]. DepartmentName>Worker [j]. DepartmentName then beginA: =Worker [i] ; Worker [i]: =Worker [j] ; Worker [j]: =A; end; Form1. RefreshList; end; procedure SortBySubsectionName; // Сортування за назвою підрозділуvar i,j: Integer; A: Kadr; beginfor i: =0 to WorkersCount-2 dofor j: =i+1 to WorkersCount-1 doif Worker [i]. SubsectionName>Worker [j]. SubsectionName then beginA: =Worker [i] ; Worker [i]: =Worker [j] ; Worker [j]: =A; end; Form1. RefreshList; end; procedure TForm1. ComboBox1Change(Sender: TObject); begincase ComboBox1. ItemIndex of0: SortByTabN; 1: SortByLastName; 2: SortByName; 3: SortByPatronymic; 4: SortByBirdthDay; 5: SortByIndCode; 6: SortByReceptionData; 7: SortByExperience; 8: SortByLiberationData; 9: SortByPositionName; 10: SortByDepartmentName; 11: SortBySubsectionName; end; end; procedure TForm1. CheckBox1Click(Sender: TObject); var i: Integer; beginGroupBox4. Enabled: =CheckBox1. Checked; Button1. Enabled: =not CheckBox1. Checked; Button3. Enabled: =not CheckBox1. Checked; if CheckBox1. Checked then beginRezervCount: =WorkersCount; SetLength(Rezerv,RezervCount); for i: =0 to RezervCount-1 doRezerv [i]: =Worker [i] ; end else beginWorkersCount: =RezervCount; SetLength(Worker,WorkersCount); for i: =0 to WorkersCount-1 doWorker [i]: =Rezerv [i] ; RefreshList; end; end; procedure TForm1. Button7Click(Sender: TObject); var i: Integer; beginWorkersCount: =RezervCount; SetLength(Worker,WorkersCount); for i: =0 to WorkersCount-1 doWorker [i]: =Rezerv [i] ; RefreshList; end; procedure TForm1. ComboBox3KeyPress(Sender: TObject; var Key: Char); begincase ComboBox2. ItemIndex of0,4,7,8,9,11: if not (Key in ['0'. '9',#8]) then Key: =#0; 6,10,12,13,14,15,16: Key: =#0; end; end; procedure TForm1. ComboBox3Change(Sender: TObject); beginif ComboBox2. ItemIndex in [4,8,11] thenif Length(ComboBox3. Text) in [2,5] then beginComboBox3. Text: =ComboBox3. Text+'. '; ComboBox3. SelStart: =Length(ComboBox3. Text); end; end; procedure TForm1. ComboBox2Change(Sender: TObject); beginComboBox3. Clear; ComboBox3. MaxLength: =0; case ComboBox2. ItemIndex of0: ComboBox3. MaxLength: =5; 4,7,8,11: ComboBox3. MaxLength: =10; 9: ComboBox3. MaxLength: =2; 6: ComboBox3. Items: =Form2. ComboBox1. Items; 12: ComboBox3. Items: =Form2. ComboBox4. Items; 13: ComboBox3. Items: =Form2. ComboBox3. Items; 14: ComboBox3. Items: =Form2. ComboBox2. Items; 10,15,16: beginComboBox3. Items. Add('Ні'); ComboBox3. Items. Add('Так'); end; end; end; procedure TForm1. ComboBox2KeyPress(Sender: TObject; var Key: Char); beginKey: =#0; end; function TForm1. FindInRec(Index: Integer): Integer; var i: Integer; beginResult: =-1; for i: =0 to RezervCount-1 doif Worker [Index]. TabN=Rezerv [i]. TabN then beginResult: =i; Exit; end; end; procedure FindByTabN; var i: Integer; begini: =0; while i<=WorkersCount-1 do beginif Worker [i]. TabN<>Form2. STI(Form1. ComboBox3. Text) then beginForm2. DelWorker(i); DEC(i); end; INC(i); end; Form1. RefreshList; end; procedure FindByLastName; var i: Integer; begini: =0; while i<=WorkersCount-1 do beginif Worker [i]. LastName<>Form1. ComboBox3. Text then beginForm2. DelWorker(i); DEC(i); end; INC(i); end; Form1. RefreshList; end; procedure FindByName; var i: Integer; begini: =0; while i<=WorkersCount-1 do beginif Worker [i]. Name<>Form1. ComboBox3. Text then beginForm2. DelWorker(i); DEC(i); end; INC(i); end; Form1. RefreshList; end; procedure FindByPatronymic; var i: Integer; begini: =0; while i<=WorkersCount-1 do beginif Worker [i]. Patronymic<>Form1. ComboBox3. Text then beginForm2. DelWorker(i); DEC(i); end; INC(i); end; Form1. RefreshList; end; procedure FindByBirthDay; var i: Integer; begini: =0; while i<=WorkersCount-1 do beginif DataToInt(Worker [i]. BirthData) <>DataToInt(Form1. GetData(Form1. ComboBox3. Text)) then beginForm2. DelWorker(i); DEC(i); end; INC(i); end; Form1. RefreshList; end; procedure FindByBirthPlace; var i: Integer; begini: =0; while i<=WorkersCount-1 do beginif Worker [i]. BirthPlace<>Form1. ComboBox3. Text then beginForm2. DelWorker(i); DEC(i); end; INC(i); end; Form1. RefreshList; end; procedure FindByStat; var i: Integer; begini: =0; while i<=WorkersCount-1 do beginif ORD(Worker [i]. Stat) <>Form1. ComboBox3. ItemIndex then beginForm2. DelWorker(i); DEC(i); end; INC(i); end; Form1. RefreshList; end; procedure FindByIndCode; var i: Integer; begini: =0; while i<=WorkersCount-1 do beginif Worker [i]. IndCode<>Form1. ComboBox3. Text then beginForm2. DelWorker(i); DEC(i); end; INC(i); end; Form1. RefreshList; end; procedure FindByReceptionData; var i: Integer; begini: =0; while i<=WorkersCount-1 do beginif DataToInt(Worker [i]. ReceptionData) <>DataToInt(Form1. GetData(Form1. ComboBox3. Text)) then beginForm2. DelWorker(i); DEC(i); end; INC(i); end; Form1. RefreshList; end; procedure FindByExperience; var i: Integer; begini: =0; while i<=WorkersCount-1 do beginif Worker [i]. Experience<>Form2. STI(Form1. ComboBox3. Text) then beginForm2. DelWorker(i); DEC(i); end; INC(i); end; Form1. RefreshList; end; procedure FindByExempt; var i: Integer; begini: =0; while i<=WorkersCount-1 do beginif ORD(Worker [i]. Exempt) <>Form1. ComboBox3. ItemIndex then beginForm2. DelWorker(i); DEC(i); end; INC(i); end; Form1. RefreshList; end; procedure FindByLiberationData; var i: Integer; begini: =0; while i<=WorkersCount-1 do beginif DataToInt(Worker [i]. LiberationData) <>DataToInt(Form1. GetData(Form1. ComboBox3. Text)) then beginForm2. DelWorker(i); DEC(i); end; INC(i); end; Form1. RefreshList; end; procedure FindByPositionName; var i,j: Integer; begini: =0; j: =Form1. ComboBox3. ItemIndex; if j<0 then Exit; while i<=WorkersCount-1 do beginif Worker [i]. PositionName<>Form1. ComboBox3. Items. Strings [j] then beginForm2. DelWorker(i); DEC(i); end; INC(i); end; Form1. RefreshList; end; procedure FindByDepartmentName; var i,j: Integer; begini: =0; j: =Form1. ComboBox3. ItemIndex; if j<0 then Exit; while i<=WorkersCount-1 do beginif Worker [i]. DepartmentName<>Form1. ComboBox3. Items. Strings [j] then beginForm2. DelWorker(i); DEC(i); end; INC(i); end; Form1. RefreshList; end; procedure FindBySubsectionName; var i,j: Integer; begini: =0; j: =Form1. ComboBox3. ItemIndex; if j<0 then Exit; while i<=WorkersCount-1 do beginif Worker [i]. SubsectionName<>Form1. ComboBox3. Items. Strings [j] then beginForm2. DelWorker(i); DEC(i); end; INC(i); end; Form1. RefreshList; end; procedure FindByDepartmentLeader; var i: Integer; begini: =0; while i<=WorkersCount-1 do beginif ORD(Worker [i]. DepartmentLeader) <>Form1. ComboBox3. ItemIndex then beginForm2. DelWorker(i); DEC(i); end; INC(i); end; Form1. RefreshList; end; procedure FindBySubsectionLeader; var i: Integer; begini: =0; while i<=WorkersCount-1 do beginif ORD(Worker [i]. SubsectionLeader) <>Form1. ComboBox3. ItemIndex then beginForm2. DelWorker(i); DEC(i); end; INC(i); end; Form1. RefreshList; end; procedure TForm1. Button6Click(Sender: TObject); begincase ComboBox2. ItemIndex of0: FindByTabN; 1: FindByLastName; 2: FindByName; 3: FindByPatronymic; 4: FindByBirthDay; 5: FindByBirthPlace; 6: FindByStat; 7: FindByIndCode; 8: FindByReceptionData; 9: FindByExperience; 10: FindByExempt; 11: FindByLiberationData; 12: FindByPositionName; 13: FindByDepartmentName; 14: FindBySubsectionName; 15: FindByDepartmentLeader; 16: FindBySubsectionLeader; end; end; end. unit WorkerUnit; interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, Mask, ExtCtrls; typeTForm2 = class(TForm) Button1: TButton; Button2: TButton; Label12: TLabel; CheckBox3: TCheckBox; Edit8: TEdit; Panel1: TPanel; Label9: TLabel; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label8: TLabel; Label10: TLabel; Label11: TLabel; Label13: TLabel; Label14: TLabel; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Edit5: TEdit; ComboBox1: TComboBox; Edit6: TEdit; ComboBox2: TComboBox; CheckBox1: TCheckBox; ComboBox3: TComboBox; CheckBox2: TCheckBox; ComboBox4: TComboBox; Edit7: TEdit; Edit9: TEdit; Edit10: TEdit; Button3: TButton; function STI(S: String): Integer; procedure ClearField; procedure FormToRec(Index: Integer); procedure ClearWorker(Index: Integer); procedure DelWorker(Index: Integer); procedure Edit7KeyPress(Sender: TObject; var Key: Char); procedure FormShow(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure ComboBox2KeyPress(Sender: TObject; var Key: Char); procedure RecToForm(Index: Integer); function Verification: Boolean; procedure Button1Click(Sender: TObject); procedure CheckBox3Click(Sender: TObject); procedure Edit7Change(Sender: TObject); procedure Edit8Change(Sender: TObject); procedure Edit10Change(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Edit1KeyPress(Sender: TObject; var Key: Char); procedure Button3Click(Sender: TObject); procedure ComboBox2DropDown(Sender: TObject); procedure ComboBox3DropDown(Sender: TObject); procedure ComboBox4DropDown(Sender: TObject); private{ Private declarations }public{ Public declarations }end; varForm2: TForm2; OK: Boolean=False; implementationuses KadrUnit, RegUnit; {$R *. dfm}function TForm2. STI(S: String): Integer; var E: Integer; begin/ / Ця функція альтернативна StrToInt, тільки при помилці результат = 0Val(S,Result,E); if E<>0 then Result: =0; end; function SUB_Data(A,B: Data): Integer; var A1,B1: Integer; beginA1: =A. Y*365+A. M*31+A. D; B1: =B. Y*365+B. M*31+B. D; Result: =Trunc((A1-B1) / 365); end; procedure TForm2. ClearField; beginEdit1. Text: =''; Edit2. Text: =''; Edit3. Text: =''; Edit4. Text: =''; Edit5. Text: =''; Edit6. Text: =''; Edit7. Text: =''; Edit8. Text: =''; Edit9. Text: =''; Edit10. Text: =''; CheckBox1. Checked: =False; CheckBox2. Checked: =False; CheckBox3. Checked: =False; ComboBox1. ItemIndex: =-1; ComboBox2. ItemIndex: =-1; ComboBox3. ItemIndex: =-1; ComboBox4. ItemIndex: =-1; end; procedure TForm2. FormToRec(Index: Integer); beginif ((Index>=WorkersCount) or(Index<0)) then Exit; Worker [Index]. TabN: =STI(Edit1. Text); Worker [Index]. LastName: =Edit3. Text; Worker [Index]. Name: =Edit4. Text; Worker [Index]. Patronymic: =Edit5. Text; Worker [Index]. BirthData: =Form1. GetData(Edit7. Text); Worker [Index]. BirthPlace: =Edit6. Text; if ComboBox1. ItemIndex>=0 thenWorker [Index]. Stat: =Boolean(ComboBox1. ItemIndex); Worker [Index]. IndCode: =Edit2. Text; Worker [Index]. ReceptionData: =Form1. GetData(Edit10. Text); Worker [Index]. Experience: =STI(Edit9. Text); Worker [Index]. Exempt: =CheckBox3. Checked; if CheckBox3. Checked thenWorker [Index]. LiberationData: =Form1. GetData(Edit8. Text); if ComboBox4. ItemIndex>=0 thenWorker [Index]. PositionName: =ComboBox4. Items. Strings [ComboBox4. ItemIndex] ; if ComboBox3. ItemIndex>=0 thenWorker [Index]. DepartmentName: =ComboBox3. Items. Strings [ComboBox3. ItemIndex] ; Worker [Index]. DepartmentLeader: =CheckBox2. Checked; if ComboBox2. ItemIndex>=0 thenWorker [Index]. SubsectionName: =ComboBox2. Items. Strings [ComboBox2. ItemIndex] ; Worker [Index]. SubsectionLeader: =CheckBox1. Checked; end; function ItemIndex(S: String; ST: TStrings): Integer; var i: Integer; beginResult: =-1; for i: =0 to ST. Count-1 doif ST. Strings [i] =S then beginResult: =i; Exit; end; end; procedure TForm2. RecToForm(Index: Integer); beginif ((Index>=WorkersCount) or(Index<0)) then Exit; Edit1. Text: =IntToStr(Worker [Index]. TabN); Edit3. Text: =Worker [Index]. LastName; Edit4. Text: =Worker [Index]. Name; Edit5. Text: =Worker [Index]. Patronymic; Edit7. Text: =Form1. DataToStr(Worker [Index]. BirthData); Edit6. Text: =Worker [Index]. BirthPlace; ComboBox1. ItemIndex: =Ord(Worker [Index]. Stat); Edit2. Text: =Worker [Index]. IndCode; Edit10. Text: =Form1. DataToStr(Worker [Index]. ReceptionData); Edit9. Text: =IntToStr(Worker [Index]. Experience); CheckBox3. Checked: =Worker [Index]. Exempt; Edit8. Enabled: =CheckBox3. Checked; if CheckBox3. Checked thenEdit8. Text: =Form1. DataToStr(Worker [Index]. LiberationData); ComboBox4. ItemIndex: =ItemIndex(Worker [Index]. PositionName,ComboBox4. Items); ComboBox3. ItemIndex: =ItemIndex(Worker [Index]. DepartmentName,ComboBox3. Items); CheckBox2. Checked: =Worker [Index]. DepartmentLeader; ComboBox2. ItemIndex: =ItemIndex(Worker [Index]. SubsectionName,ComboBox2. Items); CheckBox1. Checked: =Worker [Index]. SubsectionLeader; end; procedure TForm2. ClearWorker(Index: Integer); beginif ((Index>=WorkersCount) or(Index<0)) then Exit; Worker [Index]. TabN: =0; Worker [Index]. LastName: =''; Worker [Index]. Name: =''; Worker [Index]. Patronymic: =''; Worker [Index]. BirthData: =Form1. GetData(''); Worker [Index]. BirthPlace: =''; Worker [Index]. Stat: =False; Worker [Index]. IndCode: =''; Worker [Index]. ReceptionData: =Form1. GetData(''); Worker [Index]. Experience: =0; Worker [Index]. Exempt: =False; Worker [Index]. LiberationData: =Form1. GetData(''); Worker [Index]. PositionName: =''; Worker [Index]. DepartmentName: =''; Worker [Index]. DepartmentLeader: =False; Worker [Index]. SubsectionName: =''; Worker [Index]. SubsectionLeader: =False; end; procedure TForm2. DelWorker(Index: Integer); var i: Integer; A: Kadr; beginif ((Index>=WorkersCount) or(Index<0)) then Exit; ClearWorker(Index); for i: =Index to WorkersCount-2 doWorker [i]: =Worker [i+1] ; ClearWorker(WorkersCount-1); DEC(WorkersCount); SetLength(Worker,WorkersCount); if CurWorker>=WorkersCount thenCurWorker: =WorkersCount-1; Form1. RefreshList; end; procedure TForm2. Edit7KeyPress(Sender: TObject; var Key: Char); beginif not (Key in ['0'. '9',#8]) then Key: =#0; end; procedure TForm2. FormShow(Sender: TObject); beginComboBox4. Items: =Form3. ListBox1. Items; ComboBox3. Items: =Form3. ListBox2. Items; ComboBox2. Items: =Form3. ListBox3. Items; Form1. Enabled: =False; OK: =False; end; procedure TForm2. FormClose(Sender: TObject; var Action: TCloseAction); beginif not OK thenif ADD then beginif WorkersCount>0 thenDEC(WorkersCount); if CurWorker>=WorkersCount then CurWorker: =WorkersCount-1; if WorkersCount=0 then beginForm1. StringGrid1. RowCount: =WorkersCount+2; Form1. StringGrid1. Rows [1]. Clear; end elseForm1. StringGrid1. RowCount: =WorkersCount+1; end; Form1. Enabled: =True; if WorkersCount>0 then beginForm1. Button2. Enabled: =True; if not Form1. CheckBox1. Checked thenForm1. Button3. Enabled: =True; end else beginForm1. Button2. Enabled: =False; Form1. Button3. Enabled: =False; end; end; procedure TForm2. ComboBox2KeyPress(Sender: TObject; var Key: Char); beginKey: =#0; end; function TForm2. Verification: Boolean; beginResult: =True; ComboBox2. ItemIndex: =ItemIndex(ComboBox2. Text,ComboBox2. Items); ComboBox3. ItemIndex: =ItemIndex(ComboBox3. Text,ComboBox3. Items); ComboBox4. ItemIndex: =ItemIndex(ComboBox4. Text,ComboBox4. Items); if ((Edit8. Text='') and(CheckBox3. Checked)) then beginShowMessage('Введіть дату звільнення'); Edit8. SetFocus; Result: =False; Exit; end; if Edit1. Text='' then beginShowMessage('Введіть табельний номер'); Edit1. SetFocus; Result: =False; Exit; end; if Edit2. Text='' then beginShowMessage('Введіть ідентифікаційний код'); Edit2. SetFocus; Result: =False; Exit; end; if Edit3. Text='' then beginShowMessage('Введіть прізвище'); Edit3. SetFocus; Result: =False; Exit; end; if Edit4. Text='' then beginShowMessage('Введіть ім'я'); Edit4. SetFocus; Result: =False; Exit; end; if Edit5. Text='' then beginShowMessage('Введіть по Батькові'); Edit5. SetFocus; Result: =False; Exit; end; if ComboBox1. ItemIndex<0 then beginShowMessage('Виберіть стать'); ComboBox1. SetFocus; Result: =False; Exit; end; if Edit7. Text='' then beginShowMessage('Введіть дату народження'); Edit7. SetFocus; Result: =False; Exit; end; if Edit6. Text='' then beginShowMessage('Введіть місце народження'); Edit6. SetFocus; Result: =False; Exit; end; if ((ComboBox2. ItemIndex<0) and(not CheckBox3. Checked)) then beginShowMessage('Виберіть Підрозділ'); ComboBox2. SetFocus; Result: =False; Exit; end; if ((ComboBox3. ItemIndex<0) and(not CheckBox3. Checked)) then beginShowMessage('Виберіть Відділ'); ComboBox3. SetFocus; Result: =False; Exit; end; if ((ComboBox4. ItemIndex<0) and(not CheckBox3. Checked)) then beginShowMessage('Виберіть посаду'); ComboBox4. SetFocus; Result: =False; Exit; end; if Edit10. Text='' then beginShowMessage('Введіть дату прийому на роботу'); Edit10. SetFocus; Result: =False; Exit; end; end; procedure TForm2. Button1Click(Sender: TObject); var i: Integer; beginif not Verification then Exit; i: =Form1. FindInRec(CurWorker); FormToRec(CurWorker); if i>=0 thenRezerv [i]: =Worker [CurWorker] ; Form1. RecToRow(CurWorker,CurWorker+1); OK: =True; Close; end; procedure TForm2. CheckBox3Click(Sender: TObject); beginEdit8. Enabled: =CheckBox3. Checked; ComboBox2. Enabled: =not CheckBox3. Checked; ComboBox3. Enabled: =not CheckBox3. Checked; ComboBox4. Enabled: =not CheckBox3. Checked; CheckBox1. Enabled: =not CheckBox3. Checked; CheckBox2. Enabled: =not CheckBox3. Checked; Button3. Enabled: =not CheckBox3. Checked; if CheckBox3. Checked then Edit8. SetFocus; end; procedure TForm2. Edit7Change(Sender: TObject); beginif Length(Edit7. Text) in [2,5] then beginEdit7. Text: =Edit7. Text+'. '; Edit7. SelStart: =Length(Edit7. Text); end; end; procedure TForm2. Edit8Change(Sender: TObject); beginif Length(Edit8. Text) in [2,5] then beginEdit8. Text: =Edit8. Text+'. '; Edit8. SelStart: =Length(Edit8. Text); end; if Length(Edit8. Text) =10 thenEdit9. Text: =IntToStr(SUB_Data(Form1. GetData(Edit8. Text),Form1. GetData(Edit10. Text))); end; procedure TForm2. Edit10Change(Sender: TObject); beginif Length(Edit10. Text) in [2,5] then beginEdit10. Text: =Edit10. Text+'. '; Edit10. SelStart: =Length(Edit10. Text); end; Button3. OnClick(Button3); end; procedure TForm2. Button2Click(Sender: TObject); beginOK: =False; Close; end; procedure TForm2. Edit1KeyPress(Sender: TObject; var Key: Char); beginif not (Key in ['0'. '9',#8]) then Key: =#0; end; procedure TForm2. Button3Click(Sender: TObject); var TIME: SystemTime; CurData: Data; beginGetLocalTime(TIME); CurData. D: =Time. wDay; CurData. M: =Time. wMonth; CurData. Y: =Time. wYear; if Length(Edit10. Text) =10 thenEdit9. Text: =IntToStr(SUB_Data(CurData,Form1. GetData(Edit10. Text))); end; procedure TForm2. ComboBox2DropDown(Sender: TObject); beginif ComboBox2. Items. Count<1 then beginForm3. Show; Form3. Edit3. SetFocus; end; end; procedure TForm2. ComboBox3DropDown(Sender: TObject); beginif ComboBox3. Items. Count<1 then beginForm3. Show; Form3. Edit2. SetFocus; end; end; procedure TForm2. ComboBox4DropDown(Sender: TObject); beginif ComboBox4. Items. Count<1 then beginForm3. Show; Form3. Edit1. SetFocus; end; end; end. unit RegUnit; interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls; typeTForm3 = class(TForm) Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; ListBox1: TListBox; ListBox2: TListBox; ListBox3: TListBox; Label1: TLabel; Label2: TLabel; Label3: TLabel; procedure Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure Edit2KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure Edit3KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure FormShow(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure ListBox1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure ListBox2KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure ListBox3KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure ListBox1Click(Sender: TObject); procedure ListBox2Click(Sender: TObject); procedure ListBox3Click(Sender: TObject); private{ Private declarations }public{ Public declarations }end; varForm3: TForm3; implementationuses KadrUnit, WorkerUnit; {$R *. dfm}procedure TForm3. Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); var i: Integer; A: Boolean; beginif Key=27 then Close; if Key=13 then beginA: =True; for i: =0 to ListBox1. Items. Count-1 doif Edit1. Text=ListBox1. Items. Strings [i] then beginA: =False; Break; end; if A thenListBox1. Items. Add(Edit1. Text); Edit1. Clear; end; end; procedure TForm3. Edit2KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); var i: Integer; A: Boolean; beginif Key=27 then Close; if Key=13 then beginA: =True; for i: =0 to ListBox2. Items. Count-1 doif Edit2. Text=ListBox2. Items. Strings [i] then beginA: =False; Break; end; if A thenListBox2. Items. Add(Edit2. Text); Edit2. Clear; end; end; procedure TForm3. Edit3KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); var i: Integer; A: Boolean; beginif Key=27 then Close; if Key=13 then beginA: =True; for i: =0 to ListBox3. Items. Count-1 doif Edit3. Text=ListBox3. Items. Strings [i] then beginA: =False; Break; end; if A thenListBox3. Items. Add(Edit3. Text); Edit3. Clear; end; end; procedure TForm3. FormShow(Sender: TObject); beginForm1. Enabled: =False; Form2. Enabled: =False; end; procedure TForm3. FormClose(Sender: TObject; var Action: TCloseAction); beginForm2. ComboBox2. Items: =ListBox3. Items; Form2. ComboBox3. Items: =ListBox2. Items; Form2. ComboBox4. Items: =ListBox1. Items; Form1. Enabled: =True; Form2. Enabled: =True; end; procedure TForm3. ListBox1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); beginif ListBox1. ItemIndex>=0 thenif Key=46 then ListBox1. Items. Delete(ListBox1. ItemIndex); if Key=27 then Close; end; procedure TForm3. ListBox2KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); beginif ListBox2. ItemIndex>=0 thenif Key=46 then ListBox2. Items. Delete(ListBox2. ItemIndex); if Key=27 then Close; end; procedure TForm3. ListBox3KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); beginif ListBox3. ItemIndex>=0 thenif Key=46 then ListBox3. Items. Delete(ListBox3. ItemIndex); if Key=27 then Close; end; procedure TForm3. ListBox1Click(Sender: TObject); var i: Integer; begini: =ListBox1. ItemIndex; if i<0 then Exit; if ListBox1. Items. Strings [i] <>'' thenEdit1. Text: =ListBox1. Items. Strings [i] ; end; procedure TForm3. ListBox2Click(Sender: TObject); var i: Integer; begini: =ListBox2. ItemIndex; if i<0 then Exit; if ListBox2. Items. Strings [i] <>'' thenEdit2. Text: =ListBox2. Items. Strings [i] ; end; procedure TForm3. ListBox3Click(Sender: TObject); var i: Integer; begini: =ListBox3. ItemIndex; if i<0 then Exit; if ListBox3. Items. Strings [i] <>'' thenEdit3. Text: =ListBox3. Items. Strings [i] ; end; end. |
РЕКЛАМА
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
БОЛЬШАЯ ЛЕНИНГРАДСКАЯ БИБЛИОТЕКА | ||
© 2010 |