Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Проектирование реализации операций бизнес-процесса «Расчет заработной платы». (Обоснование проектных решений по информационному обеспечению)

Содержание:

ВВЕДЕНИЕ

сократить число работников предприятия за счет внедрения программы для автоматизации.

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

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

Таким образом, выбор темы курсовой работы, связанной с облегчением одной из основных задач бухгалтерии - учет труда и заработной платы сотрудников, путем использовании специализированной компьютерной программы (в данном случае разработка собственной программы), обусловлен её актуальностью.

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

Разработанная программа позволит автоматизировать направление «расчет заработной платы».

Для достижения данной цели необходимо решение следующих задач:

  • Выполнить характеристику задач, которые необходимо автоматизировать;
  • Описать программное и техническое обеспечение;
  • Описать БД и процесс разработки программы;
  • Протестировать полученное приложение.

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

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

1 ГЛАВА. АНАЛИТИЧЕСКАЯ ЧАСТЬ

1.1. Выбор комплекса задач автоматизации

Расчёт заработной платы (РЗП) – сегодня это один из актуальных вопросов. Так как автоматизация многих предприятий начинается именно с отдела бухгалтерского отдела.

Следует отметить, что у руководителей фирм могут купить готовые программные системы для автоматизации бухгалтерского отдела. Но иногда может возникнуть необходимость только в отдельной программе по подсчету заработной платы сотрудников фирмы. Как правило, такие программы нужны очень маленьким предприятиям, где работает от 5 до 15 сотрудников.

Разработка программы подсчета заработной платы намного дешевле разработать на заказ, чем покупать или арендовать «1С-Предприятие».

Поэтому, в данной курсовой работе будет разработана и описана программа по расчету заработной платы сотрудников.

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

​​​​​​​1.2. Характеристика существующих бизнес – процессов

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

Рисунок 1. Бизнес-процессы

Как видно из бизнес-процессов, подсчет заработной платы выполняется на основе – отработанных часов, почасовой ставки и стажа сотрудника.

​​​​​​​1.3. Характеристика документооборота, возникающего при решении задачи.

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

Рисунок 2. Схема документооборота

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

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

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

Такой режим работы - ручной, очень не удобный, так как:

  • Имеет место большое число ошибок;
  • Нужен 1 работник, который будет заниматься только заработной платой, а это дополнительные ежемесячные расходы;
  • Большой объем информации (в случае большой фирмы);

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

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

​​​​​​​1.4. Обоснование проектных решений по информационному обеспечению.

Информационное обеспечение (ИО) – это совокупность методов и средств построения информационного фонда предприятия, организации его функционирования и использования.

Информационное обеспечение включает в себя внутримашинное и внемашинное информационное обеспечение.

Внемашинное информационное обеспечение включает различные документы на бумажных носителях (договора, приказы, распоряжения, отчеты, приходно-расходные ордера, ТТН, кассовые ордера и др.).

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

Для разработки БД была выбрана реляционная модель баз данных, так как:

Реляционная модель данных является удобной и наиболее привычной формой представления данных в виде таблицы. В отличие от иерархической и сетевой моделей, такой способ представления: 1) понятен пользователю-непрограммисту; 2) позволяет легко изменить схему – присоединять новые элементы данных и записи без изменения соответствующих подсхем; 3) обеспечивает необходимую гибкость при обработке непредвиденных запросов.

Одним из основных преимуществ реляционной модели является ее однородность[2].

Достоинства реляционного подхода:

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

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

Реляционные системы далеко не сразу получили широкое распространение. В то время, как основные теоретические результаты в этой области были получены еще в 70-х, и тогда же появились первые прототипы реляционных СУБД, долгое время считалось невозможным добиться эффективной реализации таких систем. Однако отмеченные выше преимущества и постепенное накопление методов и алгоритмов организации реляционных баз данных и управления ими привели к тому, что уже в середине 80-х годов реляционные системы практически вытеснили с мирового рынка ранние СУБД.

В настоящее время основным предметом критики реляционных СУБД является не их недостаточная эффективность, а присущая этим системам некоторая ограниченность (прямое следствие простоты) при использование в так называемых нетрадиционных областях (наиболее распространенными примерами являются системы автоматизации проектирования), в которых требуются предельно сложные структуры данных. Еще одним часто отмечаемым недостатком реляционных баз данных является невозможность адекватного отражения семантики предметной области. Другими словами, возможности представления знаний о семантической специфике предметной области в реляционных системах очень ограничены. Современные исследования в области постреляционных систем главным образом посвящены устранению этих недостатков[3].

​​​​​​​1.5. Обоснование проектных решений по программному обеспечению.

Для создания программы была выбрана среда разработки Delphi версии 7.

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

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

1) Являться компиляторами (т.е. на любой стадии разработки создает настоящий машинный код).

2) Работать и создавать исполнимые файлы для платформы Windows 9x/NT (далее Win32).

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

4) Иметь интегрированную среду разработки и отладки.

5) Работать с базами данных SQL-серверного типа.

6) Давать возможность доработки стандартных библиотек (вплоть до низкоуровневой работы с Win32 API, использования ассемблерных вставок, работы с указателями).

7) Поддерживать разработку многоуровневых приложений, в частности поддержку современных стандартов DCOM, CORBA, транзакционно-объектных серверов.

8) Поддерживать компонентный подход в разработке (как с точки зрения использования готовых компонентов, так и с точки зрения создания собственных).

9) Поддерживать групповую разработку.

На рынке программного обеспечения лидируют следующие продукты:

• Borland C++ 3.0 Enterprise Edition

• Borland Delphi Enterprise Edition

• Sybase Power++

• Microsoft Visual C++

• IBM Visual Age for C++

Пунктам с 1 по 5 удовлетворяют все вышеперечисленные продукты. По остальным критериям возможности каждого из продуктов имеют некоторые различия.

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

Для построения системы и написания программного кода был выбран Delphi.

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

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

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

Вот некоторые ключевые характеристики:

• Интегрированная Среда Быстрой Разработки Приложений

• Развитые средства отладки контроля и мониторинга.

• Поддержка технологий COM и COM+

• Интеграция с Microsoft Office

• Поддержка технологии MIDAS

• Разработка ASP

• Поддержка OLE DB и ADO

• Средства коллективной разработки Borland TeamSource

• Поддержка разработки распределенных систем

Этот инструмент заслуженно характеризуется как высокоэффективный, легкий в освоении и в отладке (что играет далеко не последнюю роль в реальной работе), дает возможность быстрого создания законченных приложений, и, наконец, считается лучшим для создания систем архитектуры “клиент/сервер”.

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

Надежность систем, созданных с использованием Delphi и InterBase, соответствует самым высоким критериям, предъявляемым к системам в таких областях, как оборонное производство, атомная энергетика, авиакосмическая отрасль, государственная служба, телекоммуникации, управление финансовыми потоками и страхование.

2 ГЛАВА. ПРОЕКТНАЯ ЧАСТЬ

2.1. Информационная модель и её описание.

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

  • Фамилия;
  • Имя;
  • Отчество;
  • Кол-во отработанных часов за неделю;
  • Размер почасовой ставки.

Информационная модель представлена на рисунке ниже:

Рисунок 3. Информационная модель программы

2.2. Характеристика нормативно-справочной, входной и оперативной информации

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

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

Рисунок 4. Ввод данных о работнике

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

Рисунок 5. Макет формы «Справка»

2.3. Характеристика результатной информации.

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

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

Рисунок 6. Пример отчетности в виде диаграммы

2.4. Общие положения (дерево функций и сценарий диалога).

Программа создается для одного пользователя – работника бухгалтерии.

Дерево функций данной программы показано на рисунке 7.

Рисунок 7. Дерево функций программы

Меню программы представлено на рисунке 8.

Рисунок 8. Сценарий функций программы

2.5. Характеристика базы данных.

Созданная база данных состоит и одной таблицы, которая должна хранится в рабочей директории программы.

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

Файл базы данных это файл comp.db – хранит информацию о сотрудниках , отработанных часах и почасовой ставки.

2.6. Структурная схема пакета (дерево вызова программных модулей).

Проект состоит из 11 форм, которые запускаются и работают при запуске программы, так как образуют единое целое – рабочую программу по подсчету заработной платы.

В таблице 1 представлены модули программы

Таблица 1. Описание модулей

№ п/п

Название функции

Назначение функции

Unit1

Модуль главной формы

Unit2

Модуль изменение и удаления сотрудников и базы данных

Unit3

Форма «Действительно сохранить ?»

Unit4

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

Unit5

Справка о разработчике программы

Unit6

Модуль заставка

Unit7

Модуль авторизации, то есть следует ввести логин и пароль для входа в программу.

Unit8

Модуль для введения фамилии сотрудника, для организации поиска.

Unit9

Модуль вывода заработной платы сотрудников

Unit10

Модуль смены пароля

Unit11

Модуль справка об авторе

Unit12

Модуль создания диаграммы

Unit13

Подключение модуля калькулятор

2.7 Описание программных модулей.

Дерево вызова программных модулей программы представлено на рисунке 9.

Рисунок 9. Дерево вызова программных модулей приложения

​​​​​​​2.8. Контрольный пример реализации проекта и его описание.

Запустим приложение в результате откроется окно приветствия, показанное на рисунке 10.

Рисунок 10. Запуск приложения

Затем откроется окно для авторизации. В случае, если пароль не будет введен правильно, то появится соответствующее сообщение как показано на рисунке 11.

Рисунок 11. Окно авторизации при вводе неправильного пароля

В результате правильного ввода пароля откроется главное окно программы, которое представлено на рисунке 12.

Рисунок 12. Главное окно программы

Рассмотрим меню программы.

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

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

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

Пункт меню «График» позволяет создать столбчатую диаграмму на основании имеющихся данных. Пример создания графика показан выше.

Пункт меню «Справка» выводит информацию о разработке.

Добавим нового работника в программу, для того следует нажать кнопку «Добавить» в левом нижнем угле, в результате откроется форма, показанная на рисунке 7.

В результате добавления нового работника добавится запись в таблице.

Кнопка «Изменить» позволяет изменить данные сотруднике, если в результате ввода информации была допущена ошибка. Необходимо вначале выбрать нужную запись в таблице, а затем после нажатия кнопки отроется окно, в которое следует внести коррективы как показано на рисунке 13.

Рисунок 13. Изменение данных о сотруднике

Если в данном окне нажать кнопку «Удалить», то данный пользователь будет удален из базы данных.

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

Рисунок 14. Форма поиска сотрудника по фамилии

При нажатии на кнопку «Зарплата» будет выведена таблица с ФИО сотрудниками и их подсчитанной заработной плате на основе отработанных часов и стоимости почасовой ставки, как показано на рисунке 15.

Рисунок 15. Зарплата сотрудников

При нажатии на кнопку «Справка о сотруднике» откроется окно показанное выше (См. Рисунок 13). Данное окно следует заполнить в соответствии с названием полей, и затем выбрать, что необходимо сделать с данной справкой – сохранить или напечатать.

ЗАКЛЮЧЕНИЕ

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

В процессе написания курсовой работы в первой главе был составлен документооборот который имеет место на предприятии. Описаны бизнес-процессы которые имеют место.

Во второй главе, обоснован выбор СУБД и среда для разработки программы. А именно была выбрана СУБД Access и среда программирования Delphi. Основая причина выбор – это то, что Delphi предназначен не только для программистов-профессионалов, но и для студентов, которые обучаются основам программирования.

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

Готовая программа способна облегчить работу пользователя за счёт экономии времени и усилий, однако приложение не совершенно. Гибкость выбранной визуальной среды позволяет вносить в приложения необходимые коррективы. Удобный интерфейс позволяет создать необходимые условия для комфортной работы с приложением.

Разработана программа, состоящая из процедур и функций, позволяет:

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

СПИСОК ЛИТЕРАТУРЫ

      1. Проект по автоматизации управления средним предприятием. Информационное обеспечение. [онлайн]- URL: http://kit-project.narod.ru/4.6.htm (дата обращения 27.02.2017)
      2. Реляционная модель данных. [онлайн]- URL: http://hire.hzmk.com.ua/courses/BD/02/content/content6.html (дата обращения 07.03.2017)

Реляционная модель данных. Получение реляционной схемы из ER-диаграммы. [онлайн]- URL: http://e-educ.ru/bd23.html(дата обращения 27.02.2017)

ПРИЛОЖЕНИЯ

Листинг программы

unit Unit1;

interface

uses

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

Dialogs, ToolWin, ActnMan, ActnCtrls, ActnMenus, ImgList, Menus, StdCtrls,

Grids, ComObj, TeEngine, Series, ExtCtrls, TeeProcs, Chart, TeeFunci,

OleCtrls, VCFI, ComCtrls, jpeg;

type

TMainForm = class(TForm)

MainMenu1: TMainMenu;

FileMenu: TMenuItem;

CreateFile: TMenuItem;

ImageList1: TImageList;

Open: TMenuItem;

Save: TMenuItem;

CloseFilesss: TMenuItem;

ExitProg: TMenuItem;

VidMenu: TMenuItem;

IzmColor: TMenuItem;

WorkFileMenu: TMenuItem;

Add: TMenuItem;

Edit: TMenuItem;

Find: TMenuItem;

Report: TMenuItem;

ZP: TMenuItem;

Vedom: TMenuItem;

Sprav: TMenuItem;

Help: TMenuItem;

HelpHelp: TMenuItem;

About: TMenuItem;

OpenDialog1: TOpenDialog;

SaveDialog1: TSaveDialog;

PopupMenu1: TPopupMenu;

Memo1: TMemo;

StringGrid1: TStringGrid;

Sohranit: TMenuItem;

addPOP: TMenuItem;

EditPOP: TMenuItem;

FindPOP: TMenuItem;

DeletePOP: TMenuItem;

ToolBar1: TToolBar;

ToolButton1: TToolButton;

ToolButton3: TToolButton;

ToolButton2: TToolButton;

ToolButton4: TToolButton;

ToolButton5: TToolButton;

ToolButton7: TToolButton;

ToolButton8: TToolButton;

ToolButton9: TToolButton;

ToolButton10: TToolButton;

ToolButton12: TToolButton;

ToolButton13: TToolButton;

ToolButton6: TToolButton;

ToolButton14: TToolButton;

ToolButton15: TToolButton;

ToolButton16: TToolButton;

Image1: TImage;

FontDialog1: TFontDialog;

procedure CreateFileClick(Sender: TObject);

procedure OpenClick(Sender: TObject);

procedure SohranitClick(Sender: TObject);

procedure EditClick(Sender: TObject);

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

Rect: TRect; State: TGridDrawState);

procedure FindClick(Sender: TObject);

procedure AddClick(Sender: TObject);

procedure addPOPClick(Sender: TObject);

procedure EditPOPClick(Sender: TObject);

procedure FindPOPClick(Sender: TObject);

procedure DeletePOPClick(Sender: TObject);

procedure ZPClick(Sender: TObject);

procedure SpravClick(Sender: TObject);

procedure VedomClick(Sender: TObject);

procedure SaveClick(Sender: TObject);

procedure AboutClick(Sender: TObject);

procedure CloseFilesssClick(Sender: TObject);

procedure ExitProgClick(Sender: TObject);

procedure ToolButton1Click(Sender: TObject);

procedure ToolButton3Click(Sender: TObject);

procedure ToolButton4Click(Sender: TObject);

procedure ToolButton2Click(Sender: TObject);

procedure ToolButton5Click(Sender: TObject);

procedure ToolButton8Click(Sender: TObject);

procedure ToolButton9Click(Sender: TObject);

procedure ToolButton10Click(Sender: TObject);

procedure ToolButton13Click(Sender: TObject);

procedure ToolButton6Click(Sender: TObject);

procedure IzmColorClick(Sender: TObject);

procedure FontDialog1Apply(Sender: TObject; Wnd: HWND);

procedure FontDialog1Close(Sender: TObject);

procedure HelpHelpClick(Sender: TObject);

procedure ToolButton12Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

MainForm: TMainForm;

a : integer;

FName1: string;

implementation

uses Unit2, Unit3, Unit4, Unit5, Unit6;

{$R *.dfm}

procedure AutoSizeGridColumn(Grid : TStringGrid; column : integer); var

i : integer;

temp : integer;

max : integer;

begin

max := 0;

for i := 0 to (Grid.RowCount - 1) do begin

temp := Grid.Canvas.TextWidth(grid.cells[column, i]);

if temp > max then max := temp;

end;

Grid.ColWidths[column] := Max + Grid.GridLineWidth + 3;

end;

procedure GridDeleteRow(RowNumber: Integer; Grid: TstringGrid);

var

i : Integer;

begin

Grid.Row := RowNumber;

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

Grid.RowCount := Grid.RowCount - 1

else

begin

for i := RowNumber to Grid.RowCount - 1 do

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

Grid.RowCount := Grid.RowCount - 1;

for i := 1 to Grid.RowCount - 1 do Grid.Cells[0,i]:=IntToStr(i);

end;

end;

procedure TMainForm.CreateFileClick(Sender: TObject);

{Процедура создания файла}

Var I : Byte;

F : TextFile;

S : String;

begin

If SaveDialog1.Execute then

begin

FName1 := SaveDialog1.FileName;

Memo1.Lines.SaveToFile(FName1);

FName1 := SaveDialog1.FileName;

AssignFile(F, FName1);

Reset(F);

with TStringList.Create do

try LoadFromFile(SaveDialog1.FileName);

stringgrid1.RowCount:=Count;

with stringgrid1 do

begin

cells[0,0]:='№';

cells[1,0]:='Фамилия';

cells[2,0]:='Имя';

cells[3,0]:='Отчество';

cells[4,0]:='Кол-во часов';

cells[5,0]:='Ставка';

end;

For i := 0 to Count - 1 do begin

stringgrid1.Rows[i+1].CommaText:=Strings[i];

end;

finally

end;

CloseFile(F);

EditForm.Edit1.Text:=MainForm.StringGrid1.Cells[0,1];

EditForm.Edit2.Text:=MainForm.StringGrid1.Cells[1,1];

EditForm.Edit3.Text:=MainForm.StringGrid1.Cells[2,1];

EditForm.Edit4.Text:=MainForm.StringGrid1.Cells[3,1];

EditForm.Edit5.Text:=MainForm.StringGrid1.Cells[4,1];

EditForm.Edit6.Text:=MainForm.StringGrid1.Cells[5,1];

Save.Enabled:=True;

Sohranit.Enabled:=True;

Add.Enabled:=True;

Edit.Enabled:=True;

Find.Enabled:=True;

ZP.Enabled:=True;

Vedom.Enabled:=True;

Sprav.Enabled:=True;

addPOP.Enabled:=True;

EditPOP.Enabled:=True;

FindPOP.Enabled:=True;

DeletePOP.Enabled:=True;

CloseFilesss.Enabled:=True;

ToolButton2.Enabled:=True;

ToolButton4.Enabled:=True;

ToolButton5.Enabled:=True;

ToolButton8.Enabled:=True;

ToolButton9.Enabled:=True;

ToolButton10.Enabled:=True;

ToolButton6.Enabled:=True;

end

else

ShowMessage('Вы не выбрали файл!');

end;

procedure TMainForm.OpenClick(Sender: TObject);

var

i : Integer;

F : TextFile;

FName: string;

begin

//Вызов Диалога

if OpenDialog1.Execute then

begin

FName := OpenDialog1.FileName;

AssignFile(F, FName); //Описание файла

Reset(F);

with TStringList.Create do

try LoadFromFile(OpenDialog1.FileName);

stringgrid1.RowCount:=Count;

with stringgrid1 do

begin

cells[0,0]:='№'; //Заполение Шапки

cells[1,0]:='Фамилия';

cells[2,0]:='Имя';

cells[3,0]:='Отчество';

cells[4,0]:='Кол-во часов';

cells[5,0]:='Ставка';

end;

For i := 0 to Count - 1 do begin //Заполнение Таблицы

stringgrid1.Rows[i+1].CommaText:=Strings[i];

end;

finally

end;

CloseFile(F);

AutoSizeGridColumn(MainForm.StringGrid1, 1);

AutoSizeGridColumn(MainForm.StringGrid1, 2);

AutoSizeGridColumn(MainForm.StringGrid1, 3);

AutoSizeGridColumn(MainForm.StringGrid1, 4);

AutoSizeGridColumn(MainForm.StringGrid1, 5);

EditForm.Edit1.Text:=MainForm.StringGrid1.Cells[0,1];

EditForm.Edit2.Text:=MainForm.StringGrid1.Cells[1,1];

EditForm.Edit3.Text:=MainForm.StringGrid1.Cells[2,1];

EditForm.Edit4.Text:=MainForm.StringGrid1.Cells[3,1];

EditForm.Edit5.Text:=MainForm.StringGrid1.Cells[4,1];

EditForm.Edit6.Text:=MainForm.StringGrid1.Cells[5,1];

Save.Enabled:=True;

Sohranit.Enabled:=True;

Add.Enabled:=True;

Edit.Enabled:=True;

Find.Enabled:=True;

ZP.Enabled:=True;

Vedom.Enabled:=True;

Sprav.Enabled:=True;

addPOP.Enabled:=True;

EditPOP.Enabled:=True;

FindPOP.Enabled:=True;

DeletePOP.Enabled:=True;

CloseFilesss.Enabled:=True;

ToolButton2.Enabled:=True;

ToolButton4.Enabled:=True;

ToolButton5.Enabled:=True;

ToolButton8.Enabled:=True;

ToolButton9.Enabled:=True;

ToolButton10.Enabled:=True;

ToolButton6.Enabled:=True;

end

else

ShowMessage('Вы не выбрали файл!');

end;

procedure TMainForm.SohranitClick(Sender: TObject);

Var I : Byte;

F : TextFile;

S : String;

FName: string;

begin

if SaveDialog1.Execute then

begin

FName := SaveDialog1.FileName;

AssignFile(F, FName);

Rewrite(F);

For I := 1 to StringGrid1.RowCount - 1 do

begin

S := StringGrid1.Cells[0,I] +' '+StringGrid1.Cells[1,I] +' '+StringGrid1.Cells[2,I] +' '+StringGrid1.Cells[3,I] +' '+StringGrid1.Cells[4,I] +' '+StringGrid1.Cells[5,I];

Writeln(F,S);

end;

Writeln(F,''); //корректировка записи

CloseFile(F);

FName := SaveDialog1.FileName;//и сразу открываем для чтения

AssignFile(F, FName);

Reset(F);

with TStringList.Create do

try LoadFromFile(SaveDialog1.FileName);

stringgrid1.RowCount:=Count;

a:=Count;

with stringgrid1 do

begin

cells[0,0]:='№';

cells[1,0]:='Фамилия';

cells[2,0]:='Имя';

cells[3,0]:='Отчество';

cells[4,0]:='Кол-во часов';

cells[5,0]:='Ставка';

end;

For i := 0 to Count - 1 do begin

stringgrid1.Rows[i+1].CommaText:=Strings[i];

end;

finally

end;

CloseFile(F);

AutoSizeGridColumn(MainForm.StringGrid1, 1);

AutoSizeGridColumn(MainForm.StringGrid1, 2);

AutoSizeGridColumn(MainForm.StringGrid1, 3);

AutoSizeGridColumn(MainForm.StringGrid1, 4);

AutoSizeGridColumn(MainForm.StringGrid1, 5);

EditForm.Edit1.Text:=MainForm.StringGrid1.Cells[0,1];

EditForm.Edit2.Text:=MainForm.StringGrid1.Cells[1,1];

EditForm.Edit3.Text:=MainForm.StringGrid1.Cells[2,1];

EditForm.Edit4.Text:=MainForm.StringGrid1.Cells[3,1];

EditForm.Edit5.Text:=MainForm.StringGrid1.Cells[4,1];

EditForm.Edit6.Text:=MainForm.StringGrid1.Cells[5,1];

end

else

ShowMessage('Вы не выбрали файл!');

end;

procedure TMainForm.EditClick(Sender: TObject);

begin

EditForm.ShowModal;

end;

procedure TMainForm.StringGrid1DrawCell(Sender: TObject; ACol,

ARow: Integer; Rect: TRect; State: TGridDrawState);

const //здесь определяем цвет

clPaleGreen = TColor($CCFFCC);

clPaleRed = TColor($CCCCFF);

var

f : integer;

begin

if (gdFocused in State) then

begin

StringGrid1.Canvas.Brush.Color := clBlack;

StringGrid1.Canvas.Font.Color := clWhite;

end;

if (ACol > 0) and (ARow > 0) then

begin

StringGrid1.Canvas.FillRect(Rect);

StringGrid1.Canvas.TextOut(Rect.Left, Rect.Top, StringGrid1.Cells[ACol, ARow]);

end; end;

procedure TMainForm.FindClick(Sender: TObject);

begin

FindForm.Show;

end;

procedure TMainForm.AddClick(Sender: TObject);

{Вызов ДОБАВИТЬ ЗАПИСЬ из МЕНЮ}

var

v : integer;

begin

Unit2.Zapis:=1;

V:=MainForm.stringgrid1.RowCount;

EditForm.Edit1.Text:=IntToStr(V);

EditForm.Edit2.Text:='';

EditForm.Edit3.Text:='';

EditForm.Edit4.Text:='';

EditForm.Edit5.Text:='';

EditForm.Edit6.Text:='';

MainForm.stringgrid1.RowCount:=MainForm.stringgrid1.RowCount+1;

EditForm.ShowModal;

end;

procedure TMainForm.addPOPClick(Sender: TObject);

var

v : integer;

begin

Unit2.Zapis:=1;

V:=MainForm.stringgrid1.RowCount;

EditForm.Edit1.Text:=IntToStr(V);

EditForm.Edit2.Text:='';

EditForm.Edit3.Text:='';

EditForm.Edit4.Text:='';

EditForm.Edit5.Text:='';

EditForm.Edit6.Text:='';

MainForm.stringgrid1.RowCount:=MainForm.stringgrid1.RowCount+1;

EditForm.ShowModal;

end;

procedure TMainForm.EditPOPClick(Sender: TObject);

var

j : integer;

begin

j:=StringGrid1.Row;

EditForm.Edit1.Text:=MainForm.StringGrid1.Cells[0,j];

EditForm.Edit2.Text:=MainForm.StringGrid1.Cells[1,j];

EditForm.Edit3.Text:=MainForm.StringGrid1.Cells[2,j];

EditForm.Edit4.Text:=MainForm.StringGrid1.Cells[3,j];

EditForm.Edit5.Text:=MainForm.StringGrid1.Cells[4,j];

EditForm.Edit6.Text:=MainForm.StringGrid1.Cells[5,j];

EditForm.ShowModal;

end;

procedure TMainForm.FindPOPClick(Sender: TObject);

begin

FindForm.Show;

end;

procedure TMainForm.DeletePOPClick(Sender: TObject);

var

d : integer;

F : Integer;

begin

F:=MessageDlg('Вы действительно хотите удалить эту запись?', mtConfirmation, [mbYes,mbNo] , 0);

if F=mrYes then

begin

d:= StringGrid1.Row;

GridDeleteRow(d, MainForm.stringGrid1);

end;

end;

procedure TMainForm.ZPClick(Sender: TObject);

var

i : integer;

j : integer;

k : integer;

begin

ZPForm.Show;

with ZPForm.stringgrid1 do

begin

cells[0,0]:='№';

cells[1,0]:='Фамилия';

cells[2,0]:='Имя';

cells[3,0]:='Отчество';

cells[4,0]:='Недельная зар.плата';

end;

ZPForm.stringgrid1.RowCount:=MainForm.StringGrid1.RowCount;

For i := 1 to 3 do //Заполнение Таблицы

begin

For j := 1 to ZPForm.StringGrid1.RowCount-1 do

begin

ZPForm.StringGrid1.Cells[i,j]:=MainForm.StringGrid1.Cells[i,j];

end;

end;

for i := 1 to ZPForm.StringGrid1.RowCount - 1 do ZPForm.StringGrid1.Cells[0,i]:=IntToStr(i);

for j := 1 to ZPForm.StringGrid1.RowCount - 1 do //подсчитываем ЗП

begin

k:=StrToInt(MainForm.StringGrid1.Cells[4,j])*StrToInt(MainForm.StringGrid1.Cells[5,j]);

ZPForm.StringGrid1.Cells[4,j]:=IntToStr(k);

end;

AutoSizeGridColumn(ZPForm.StringGrid1, 1); //вызов процедуры автоподгонки столбов

AutoSizeGridColumn(ZPForm.StringGrid1, 2);

AutoSizeGridColumn(ZPForm.StringGrid1, 3);

AutoSizeGridColumn(ZPForm.StringGrid1, 4);

end;

procedure TMainForm.SpravClick(Sender: TObject);

var

i : integer;

j : integer;

k : integer;

begin

SpravForm.Show;

with SpravForm.stringgrid1 do

begin

cells[0,0]:='№';

cells[1,0]:='Фамилия';

cells[2,0]:='Имя';

cells[3,0]:='Отчество';

cells[4,0]:='Кол-во часов';

cells[5,0]:='Ставка';

end;

SpravForm.stringgrid1.ColCount:=MainForm.StringGrid1.ColCount;

SpravForm.stringgrid1.RowCount:=MainForm.StringGrid1.RowCount;

For i := 1 to SpravForm.StringGrid1.ColCount-1 do

begin //Заполнение Таблицы

For j := 1 to SpravForm.StringGrid1.RowCount-1 do

begin

SpravForm.StringGrid1.Cells[i,j]:=MainForm.StringGrid1.Cells[i,j];

end;

end;

for i := 1 to SpravForm.StringGrid1.RowCount - 1 do

SpravForm.StringGrid1.Cells[0,i]:=IntToStr(i);

AutoSizeGridColumn(SpravForm.StringGrid1, 1);

AutoSizeGridColumn(SpravForm.StringGrid1, 2);

AutoSizeGridColumn(SpravForm.StringGrid1, 3);

AutoSizeGridColumn(SpravForm.StringGrid1, 4);

AutoSizeGridColumn(SpravForm.StringGrid1, 5);

end;

procedure TMainForm.VedomClick(Sender: TObject);

var

Workbook, Range, Cell1, Cell2, ArrayData : Variant;

TemplateFile : String;

BeginCol, BeginRow, i, j, n, chas, zap : integer;

RowCount, ColCount : integer;

begin

BeginCol := 1;

BeginRow := 2;

RowCount := 100;

ColCount := 50;

ExcelApp := CreateOleObject('Excel.Application');

ExcelApp.Application.EnableEvents := false;

ArrayData := VarArrayCreate([0, RowCount, 0, ColCount], varVariant);

for i := 0 to MainForm.StringGrid1.ColCount do

begin

for j := 0 to MainForm.StringGrid1.RowCount do

begin

ArrayData[j,i] := MainForm.StringGrid1.Cells[i,j];

end;

end;

Cell1 := WorkBook.WorkSheets[1].Cells[BeginRow, BeginCol];

Cell2 := WorkBook.WorkSheets[1].Cells[BeginRow + RowCount, BeginCol +ColCount];

Range := WorkBook.WorkSheets[1].Range[Cell1, Cell2];

Range.Value := ArrayData;

Range.Font.Size:=14;

Range.Font.Color:=clBlack;

n:=MainForm.StringGrid1.RowCount+1;

chas:=0;

for j := 1 to MainForm.StringGrid1.RowCount-1 do

chas:= chas + StrToInt(MainForm.StringGrid1.Cells[4,j]);

zap:=0;

for j := 1 to MainForm.StringGrid1.RowCount-1 do

zap:= zap + StrToInt(MainForm.StringGrid1.Cells[5,j]);

ExcelApp.Range[ExcelApp.Cells[2, 1], ExcelApp.Cells[n, 6]].Select;

ExcelApp.Selection.Borders[2].LineStyle:=12;

ExcelApp.Selection.Borders[7].LineStyle:=12;

ExcelApp.Selection.Borders[8].LineStyle:=12;

ExcelApp.Selection.Borders[9].LineStyle:=12;

ExcelApp.Selection.Borders[3].LineStyle:=1;

ExcelApp.Range[ExcelApp.Cells[2, 1], ExcelApp.Cells[2, 6]].Select;

ExcelApp.Selection.Borders[9].LineStyle:=12;

ExcelApp.Selection.Borders[8].LineStyle:=12;

ExcelApp.Selection.Font.Bold:=1;

ExcelApp.Range[ExcelApp.Cells[1, 1], ExcelApp.Cells[1, 6]].Select;

ExcelApp.Selection.Font.Italic:=1;

ExcelApp.Selection.Font.Bold:=1;

ExcelApp.Selection.Font.Size:=14;

ExcelApp.Selection.MergeCells:=True;

ExcelApp.Selection.HorizontalAlignment:=3;

ExcelApp.Selection:='Ведомость по сотрудникам';

ExcelApp.Range[ExcelApp.Cells[n+1, 4], ExcelApp.Cells[n+1, 4]].Select;

ExcelApp.Selection:='Итого:';

ExcelApp.Selection.HorizontalAlignment:=4;

ExcelApp.Range[ExcelApp.Cells[n+1, 5], ExcelApp.Cells[n+1, 5]].Select;

ExcelApp.Selection:=chas;

ExcelApp.Range[ExcelApp.Cells[n+1, 6], ExcelApp.Cells[n+1, 6]].Select;

ExcelApp.Selection:=zap;

ExcelApp.Range[ExcelApp.Cells[n+1, 4], ExcelApp.Cells[n+1, 6]].Select;

ExcelApp.Selection.Font.Italic:=1;

ExcelApp.Selection.Font.Bold:=1;

ExcelApp.Selection.Borders[2].LineStyle:=12;

ExcelApp.Selection.Borders[7].LineStyle:=12;

ExcelApp.Selection.Borders[9].LineStyle:=12;

WorkBook.WorkSheets[1].Columns.Item[1].Autofit;

WorkBook.WorkSheets[1].Columns.Item[2].Autofit;

WorkBook.WorkSheets[1].Columns.Item[3].Autofit;

WorkBook.WorkSheets[1].Columns.Item[4].Autofit;

WorkBook.WorkSheets[1].Columns.Item[5].Autofit;

WorkBook.WorkSheets[1].Columns.Item[6].Autofit;

end;

procedure TMainForm.SaveClick(Sender: TObject);

Var I : Byte;

F : TextFile;

S : String;

begin

FName1 := SaveDialog1.FileName;

AssignFile(F, FName1);

Rewrite(F);

For I := 1 to StringGrid1.RowCount - 1 do

Begin S := StringGrid1.Cells[0,I] +' '+StringGrid1.Cells[1,I] +' '+StringGrid1.Cells[2,I] +' '+StringGrid1.Cells[3,I] +' '+StringGrid1.Cells[4,I] +' '+StringGrid1.Cells[5,I];

Writeln(F,S);

end;

Writeln(F,''); //корректировка записи

CloseFile(F);

FName1 := SaveDialog1.FileName;//и сразу открываем для чтения

AssignFile(F, FName1);

Reset(F);

with TStringList.Create do

try LoadFromFile(SaveDialog1.FileName);

stringgrid1.RowCount:=Count;

a:=Count;

with stringgrid1 do begin

cells[0,0]:='№';

cells[1,0]:='Фамилия';

cells[2,0]:='Имя';

cells[3,0]:='Отчество';

cells[4,0]:='Кол-во часов';

cells[5,0]:='Ставка';

end;

For i := 0 to Count - 1 do begin

stringgrid1.Rows[i+1].CommaText:=Strings[i];

end;

finally

end;

CloseFile(F);

AutoSizeGridColumn(MainForm.StringGrid1, 1);

AutoSizeGridColumn(MainForm.StringGrid1, 2);

AutoSizeGridColumn(MainForm.StringGrid1, 3);

AutoSizeGridColumn(MainForm.StringGrid1, 4);

AutoSizeGridColumn(MainForm.StringGrid1, 5);

EditForm.Edit1.Text:=MainForm.StringGrid1.Cells[0,1];

EditForm.Edit2.Text:=MainForm.StringGrid1.Cells[1,1];

EditForm.Edit3.Text:=MainForm.StringGrid1.Cells[2,1];

EditForm.Edit4.Text:=MainForm.StringGrid1.Cells[3,1];

EditForm.Edit5.Text:=MainForm.StringGrid1.Cells[4,1];

EditForm.Edit6.Text:=MainForm.StringGrid1.Cells[5,1];

end;

procedure TMainForm.AboutClick(Sender: TObject);

begin

Application.CreateForm(TObForm, ObForm);

ObForm.Show

end;

procedure TMainForm.CloseFilesssClick(Sender: TObject);

var

i : integer;

begin

For i:=1 to StringGrid1.RowCount-1 do

StringGrid1.Rows[i].Clear;

Save.Enabled:=False;

Sohranit.Enabled:=False;

Add.Enabled:=False;

Edit.Enabled:=False;

Find.Enabled:=False;

ZP.Enabled:=False;

Vedom.Enabled:=False;

Sprav.Enabled:=False;

addPOP.Enabled:=False;

EditPOP.Enabled:=False;

FindPOP.Enabled:=False;

DeletePOP.Enabled:=False;

CloseFilesss.Enabled:=False;

ToolButton2.Enabled:=False;

ToolButton4.Enabled:=False;

ToolButton5.Enabled:=False;

ToolButton8.Enabled:=False;

ToolButton9.Enabled:=False;

ToolButton10.Enabled:=False;

ToolButton6.Enabled:=False;

end;

procedure TMainForm.ExitProgClick(Sender: TObject);

var

F : Integer;

Begin

F:=MessageDlg('Вы действительно хотите выйти', mtError, [mbYes,mbNo] , 0);

if F=mrYes then

begin

Close;

end; end;

procedure TMainForm.ToolButton1Click(Sender: TObject);

Var I : Byte;

F : TextFile;

S : String;

begin

If SaveDialog1.Execute then

begin

FName1 := SaveDialog1.FileName;

Memo1.Lines.SaveToFile(FName1);

FName1 := SaveDialog1.FileName;

AssignFile(F, FName1);

Reset(F);

with TStringList.Create do

try LoadFromFile(SaveDialog1.FileName);

stringgrid1.RowCount:=Count;

with stringgrid1 do

begin

cells[0,0]:='№';

cells[1,0]:='Фамилия';

cells[2,0]:='Имя';

cells[3,0]:='Отчество';

cells[4,0]:='Кол-во часов';

cells[5,0]:='Ставка';

end;

For i := 0 to Count - 1 do begin

stringgrid1.Rows[i+1].CommaText:=Strings[i];

end;

finally

end;

CloseFile(F);

EditForm.Edit1.Text:=MainForm.StringGrid1.Cells[0,1];

EditForm.Edit2.Text:=MainForm.StringGrid1.Cells[1,1];

EditForm.Edit3.Text:=MainForm.StringGrid1.Cells[2,1];

EditForm.Edit4.Text:=MainForm.StringGrid1.Cells[3,1];

EditForm.Edit5.Text:=MainForm.StringGrid1.Cells[4,1];

EditForm.Edit6.Text:=MainForm.StringGrid1.Cells[5,1];

Save.Enabled:=True;

Sohranit.Enabled:=True;

Add.Enabled:=True;

Edit.Enabled:=True;

Find.Enabled:=True;

ZP.Enabled:=True;

Vedom.Enabled:=True;

Sprav.Enabled:=True;

addPOP.Enabled:=True;

EditPOP.Enabled:=True;

FindPOP.Enabled:=True;

DeletePOP.Enabled:=True;

CloseFilesss.Enabled:=True;

ToolButton2.Enabled:=True;

ToolButton4.Enabled:=True;

ToolButton5.Enabled:=True;

ToolButton8.Enabled:=True;

ToolButton9.Enabled:=True;

ToolButton10.Enabled:=True;

ToolButton6.Enabled:=True;

end

else

ShowMessage('Вы не выбрали файл!');

end;

procedure TMainForm.ToolButton3Click(Sender: TObject);

var

i : Integer;

F : TextFile;

FName: string;

begin

if OpenDialog1.Execute then

begin

FName := OpenDialog1.FileName;

AssignFile(F, FName); //Описание файла

Reset(F);

with TStringList.Create do

try LoadFromFile(OpenDialog1.FileName);

stringgrid1.RowCount:=Count;

with stringgrid1 do

begin

cells[0,0]:='№'; //Заполение Шапки

cells[1,0]:='Фамилия';

cells[2,0]:='Имя';

cells[3,0]:='Отчество';

cells[4,0]:='Кол-во часов';

cells[5,0]:='Ставка';

end;

For i := 0 to Count - 1 do begin //Заполнение Таблицы

stringgrid1.Rows[i+1].CommaText:=Strings[i];

end;

finally

end;

CloseFile(F);

AutoSizeGridColumn(MainForm.StringGrid1, 1);

AutoSizeGridColumn(MainForm.StringGrid1, 2);

AutoSizeGridColumn(MainForm.StringGrid1, 3);

AutoSizeGridColumn(MainForm.StringGrid1, 4);

AutoSizeGridColumn(MainForm.StringGrid1, 5);

EditForm.Edit1.Text:=MainForm.StringGrid1.Cells[0,1]; //Передача переменных на другую форму

EditForm.Edit2.Text:=MainForm.StringGrid1.Cells[1,1];

EditForm.Edit3.Text:=MainForm.StringGrid1.Cells[2,1];

EditForm.Edit4.Text:=MainForm.StringGrid1.Cells[3,1];

EditForm.Edit5.Text:=MainForm.StringGrid1.Cells[4,1];

EditForm.Edit6.Text:=MainForm.StringGrid1.Cells[5,1];

Save.Enabled:=True;

Sohranit.Enabled:=True;

Add.Enabled:=True;

Edit.Enabled:=True;

Find.Enabled:=True;

ZP.Enabled:=True;

Vedom.Enabled:=True;

Sprav.Enabled:=True;

addPOP.Enabled:=True;

EditPOP.Enabled:=True;

FindPOP.Enabled:=True;

DeletePOP.Enabled:=True;

CloseFilesss.Enabled:=True;

ToolButton2.Enabled:=True;

ToolButton4.Enabled:=True;

ToolButton5.Enabled:=True;

ToolButton8.Enabled:=True;

ToolButton9.Enabled:=True;

ToolButton10.Enabled:=True;

ToolButton6.Enabled:=True;

end

else

ShowMessage('Вы не выбрали файл!');

end;

procedure TMainForm.ToolButton4Click(Sender: TObject);

{процедура Сохранить как в файл}

Var I : Byte;

F : TextFile;

S : String;

FName: string;

begin

if SaveDialog1.Execute then

begin

FName := SaveDialog1.FileName;

AssignFile(F, FName);

Rewrite(F);

For I := 1 to StringGrid1.RowCount - 1 do

begin S := StringGrid1.Cells[0,I] +' '+StringGrid1.Cells[1,I] +' '+StringGrid1.Cells[2,I] +' '+StringGrid1.Cells[3,I] +' '+StringGrid1.Cells[4,I] +' '+StringGrid1.Cells[5,I];

Writeln(F,S);

end;

Writeln(F,''); //корректировка записи

CloseFile(F);

FName := SaveDialog1.FileName;//и сразу открываем для чтения

AssignFile(F, FName);

Reset(F);

with TStringList.Create do

try LoadFromFile(SaveDialog1.FileName);

stringgrid1.RowCount:=Count;

a:=Count;

with stringgrid1 do

begin

cells[0,0]:='№';

cells[1,0]:='Фамилия';

cells[2,0]:='Имя';

cells[3,0]:='Отчество';

cells[4,0]:='Кол-во часов';

cells[5,0]:='Ставка';

end;

For i := 0 to Count - 1 do begin

stringgrid1.Rows[i+1].CommaText:=Strings[i];

end;

finally

end;

CloseFile(F);

AutoSizeGridColumn(MainForm.StringGrid1, 1);

AutoSizeGridColumn(MainForm.StringGrid1, 2);

AutoSizeGridColumn(MainForm.StringGrid1, 3);

AutoSizeGridColumn(MainForm.StringGrid1, 4);

AutoSizeGridColumn(MainForm.StringGrid1, 5);

EditForm.Edit1.Text:=MainForm.StringGrid1.Cells[0,1];

EditForm.Edit2.Text:=MainForm.StringGrid1.Cells[1,1];

EditForm.Edit3.Text:=MainForm.StringGrid1.Cells[2,1];

EditForm.Edit4.Text:=MainForm.StringGrid1.Cells[3,1];

EditForm.Edit5.Text:=MainForm.StringGrid1.Cells[4,1];

EditForm.Edit6.Text:=MainForm.StringGrid1.Cells[5,1];

end

else

ShowMessage('Вы не выбрали файл!');

end;

procedure TMainForm.ToolButton2Click(Sender: TObject);

Var I : Byte;

F : TextFile;

S : String;

begin

FName1 := SaveDialog1.FileName;

AssignFile(F, FName1);

Rewrite(F);

For I := 1 to StringGrid1.RowCount - 1 do

begin

S := StringGrid1.Cells[0,I] +' '+StringGrid1.Cells[1,I] +' '+StringGrid1.Cells[2,I] +' '+StringGrid1.Cells[3,I] +' '+StringGrid1.Cells[4,I] +' '+StringGrid1.Cells[5,I];

Writeln(F,S);

end;

Writeln(F,''); //корректировка записи

CloseFile(F);

FName1 := SaveDialog1.FileName;//и сразу открываем для чтения

AssignFile(F, FName1);

Reset(F);

with TStringList.Create do

try LoadFromFile(SaveDialog1.FileName);

stringgrid1.RowCount:=Count;

a:=Count;

with stringgrid1 do begin

cells[0,0]:='№';

cells[1,0]:='Фамилия';

cells[2,0]:='Имя';

cells[3,0]:='Отчество';

cells[4,0]:='Кол-во часов';

cells[5,0]:='Ставка';

end;

For i := 0 to Count - 1 do begin

stringgrid1.Rows[i+1].CommaText:=Strings[i];

end;

finally

end;

CloseFile(F);

AutoSizeGridColumn(MainForm.StringGrid1, 1);

AutoSizeGridColumn(MainForm.StringGrid1, 2);

AutoSizeGridColumn(MainForm.StringGrid1, 3);

AutoSizeGridColumn(MainForm.StringGrid1, 4);

AutoSizeGridColumn(MainForm.StringGrid1, 5);

EditForm.Edit1.Text:=MainForm.StringGrid1.Cells[0,1];

EditForm.Edit2.Text:=MainForm.StringGrid1.Cells[1,1];

EditForm.Edit3.Text:=MainForm.StringGrid1.Cells[2,1];

EditForm.Edit4.Text:=MainForm.StringGrid1.Cells[3,1];

EditForm.Edit5.Text:=MainForm.StringGrid1.Cells[4,1];

EditForm.Edit6.Text:=MainForm.StringGrid1.Cells[5,1];

end;

procedure TMainForm.ToolButton5Click(Sender: TObject);

var

i : integer;

begin

For i:=1 to StringGrid1.RowCount-1 do

StringGrid1.Rows[i].Clear;

Save.Enabled:=False;

Sohranit.Enabled:=False;

Add.Enabled:=False;

Edit.Enabled:=False;

Find.Enabled:=False;

ZP.Enabled:=False;

Vedom.Enabled:=False;

Sprav.Enabled:=False;

addPOP.Enabled:=False;

EditPOP.Enabled:=False;

FindPOP.Enabled:=False;

DeletePOP.Enabled:=False;

CloseFilesss.Enabled:=False;

ToolButton2.Enabled:=False;

ToolButton4.Enabled:=False;

ToolButton5.Enabled:=False;

ToolButton8.Enabled:=False;

ToolButton9.Enabled:=False;

ToolButton10.Enabled:=False;

ToolButton6.Enabled:=False;

end;

procedure TMainForm.ToolButton8Click(Sender: TObject);

var

v : integer;

begin

Unit2.Zapis:=1;

V:=MainForm.stringgrid1.RowCount;

EditForm.Edit1.Text:=IntToStr(V);

EditForm.Edit2.Text:='';

EditForm.Edit3.Text:='';

EditForm.Edit4.Text:='';

EditForm.Edit5.Text:='';

EditForm.Edit6.Text:='';

MainForm.stringgrid1.RowCount:=MainForm.stringgrid1.RowCount+1;

EditForm.ShowModal;

end;

procedure TMainForm.ToolButton9Click(Sender: TObject);

begin

EditForm.ShowModal;

end;

procedure TMainForm.ToolButton10Click(Sender: TObject);

begin

FindForm.Show;

end;

procedure TMainForm.ToolButton13Click(Sender: TObject);

begin

Application.CreateForm(TObForm, ObForm);

ObForm.Show

end;

procedure TMainForm.ToolButton6Click(Sender: TObject);

var

d : integer;

F : Integer;

begin

F:=MessageDlg('Вы действительно хотите удалить эту запись?', mtConfirmation, [mbYes,mbNo] , 0);

if F=mrYes then

begin

d:= StringGrid1.Row;

GridDeleteRow(d, MainForm.stringGrid1);

end;

end;

procedure TMainForm.IzmColorClick(Sender: TObject);

begin

if FontDialog1.Execute then

begin

MainForm.Font.Assign(FontDialog1.Font);

EditForm.Font.Assign(FontDialog1.Font);

EditForm.Edit1.Font.Assign(FontDialog1.Font);

EditForm.Edit2.Font.Assign(FontDialog1.Font);

EditForm.Edit3.Font.Assign(FontDialog1.Font);

EditForm.Edit4.Font.Assign(FontDialog1.Font);

EditForm.Edit5.Font.Assign(FontDialog1.Font);

EditForm.Edit6.Font.Assign(FontDialog1.Font);

EditForm.Label1.Font.Assign(FontDialog1.Font);

EditForm.Label2.Font.Assign(FontDialog1.Font);

EditForm.Label3.Font.Assign(FontDialog1.Font);

EditForm.Label4.Font.Assign(FontDialog1.Font);

EditForm.Label5.Font.Assign(FontDialog1.Font);

EditForm.Label6.Font.Assign(FontDialog1.Font);

ZPForm.Font.Assign(FontDialog1.Font);

ZPForm.stringgrid1.Font.Assign(FontDialog1.Font);

FindForm.Font.Assign(FontDialog1.Font);

FindForm.label1.Font.Assign(FontDialog1.Font);

FindForm.Edit1.Font.Assign(FontDialog1.Font);

SpravForm.Font.Assign(FontDialog1.Font);

SpravForm.Stringgrid1.Font.Assign(FontDialog1.Font);

SpravForm.label1.Font.Assign(FontDialog1.Font);

AutoSizeGridColumn(MainForm.StringGrid1, 1);

AutoSizeGridColumn(MainForm.StringGrid1, 2);

AutoSizeGridColumn(MainForm.StringGrid1, 3);

AutoSizeGridColumn(MainForm.StringGrid1, 4);

AutoSizeGridColumn(MainForm.StringGrid1, 5);

end;

end;

procedure TMainForm.FontDialog1Apply(Sender: TObject; Wnd: HWND);

begin

Font.Assign(FontDialog1.Font);

AutoSizeGridColumn(MainForm.StringGrid1, 1);

AutoSizeGridColumn(MainForm.StringGrid1, 2);

AutoSizeGridColumn(MainForm.StringGrid1, 3);

AutoSizeGridColumn(MainForm.StringGrid1, 4);

AutoSizeGridColumn(MainForm.StringGrid1, 5);

end;

procedure TMainForm.FontDialog1Close(Sender: TObject);

begin

AutoSizeGridColumn(MainForm.StringGrid1, 1);

AutoSizeGridColumn(MainForm.StringGrid1, 2);

AutoSizeGridColumn(MainForm.StringGrid1, 3);

AutoSizeGridColumn(MainForm.StringGrid1, 4);

AutoSizeGridColumn(MainForm.StringGrid1, 5);

end;

procedure TMainForm.HelpHelpClick(Sender: TObject);

begin

winhelp(MainForm.Handle,'help.hlp',HELP_CONTEXT,1);

end;

procedure TMainForm.ToolButton12Click(Sender: TObject);

begin

winhelp(MainForm.Handle,'help.hlp',HELP_CONTEXT,1);

end;

end.

  1. Проект по автоматизации управления средним предприятием. Информационное обеспечение. [онлайн]- URL: http://kit-project.narod.ru/4.6.htm (дата обращения 27.02.2017)

  2. Реляционная модель данных. Получение реляционной схемы из ER-диаграммы. [онлайн]- URL: http://e-educ.ru/bd23.html(дата обращения 27.02.2017)

  3. Реляционная модель данных. [онлайн]- URL: http://hire.hzmk.com.ua/courses/BD/02/content/content6.html (дата обращения 07.03.2017)