Обзор компонентов Delphi, используемых при разработке интерфейса в стиле MS WORD
TToolBar как компонент, представляющий собой специальный контейнер для создания панелей инструментов, характеристика основных свойств. Рассмотрение возможностей Delphi. Особенности программных кодов модулей. TToolButton как кнопка панели инструментов.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 06.01.2013 |
Размер файла | 2,0 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Введение
программный модуль delphi
Тема моей курсовой работы - это «Обзор компонентов Delphi, используемых при разработке интерфейса в стиле MS WORD. Разработка приложения, содержащего строку меню, панель инструментов».
Интерфейс в стиле MS WORD предполагает создание главного меню и панели инструментов. Это возможно реализовать с помощью следующих компонентов:
TToolBar - компонент, представляющий собой специальный контейнер для создания панелей инструментов. Главная отличительная черта TToolBar - его способность гибкого управления дочерними элементами, которые он может группировать, выравнивать по размерам, располагать в несколько рядов.
TToolButton - кнопка панели инструментов.
TMainMenu - определяет главное меню формы (программы).
Созданное приложение позволит автоматизировать деятельность бухгалтерии любого предприятия по начислению заработной платы сотрудникам.
В приложении будут доступны следующие операции:
Добавление записей о сотрудниках;
Формирование расчетных листов;
Поиск сведений о сотрудниках и их заработной плате;
Печать данных;
Экспорт в Excel.
Выполнение этих операций значительно сократит время и трудозатраты работников бухгалтерии, и как следствие применение этой программы принесет значительный экономический эффект.
Теоретические основы темы
Перед разработкой приложения мною были изучены следующие вопросы:
Возможности Delphi по созданию интерфейса в стиле MS WORD.
Чтобы разработать такой интерфейс были использованы следующие компоненты:
TToolBar - панель инструментов.
Компонент TToolBar располагается на вкладке Win32 и представляет собой специальный контейнер для создания панелей инструментов. Главная отличительная черта TToolBar - его способность гибкого управления дочерними элементами, которые он может группировать, выравнивать по размерам, располагать в несколько рядов.
Таблица 1. Основные свойства компонента TToolBar
Свойство |
Описание |
|
Property autosize:Boolean; |
Если содержит значение True, высота компонента автоматически согласовывается с высотой кнопок |
|
Property ButtonCount:integer; |
Содержит количество вставляемых в панель инструментов дочерних компонентов |
|
Property flat:Boolean; |
Если содержит значение True, панель и кнопки на ней прозрачны для фона и вокруг кнопки появляется граница, только когда на ней располагается указатель мыши |
|
Property Indent:Integer; |
Определяет отступ в пикселах от левого края компонента для первого дочернего элемента |
|
Property rowcount:integer; |
Содержит количество рядов кнопок |
|
Property showcaptions:Boolean; |
Разрешает/запрещает показ на кнопках текста. |
Для компонента определено событие OnResize, возникающее при изменении размеров компонента.
TToolButton - кнопка панели инструментов.
Этот компонент специально разработан для компонента TToolBar.
Вставить его в панель инструментов можно после щелчка правой кнопкой мыши на компоненте TToolbar и выборе в контекстном меню команды New Button (новая кнопка) или New Separator (новый разделитель) - разделители предназначены для функционального выделения на панели инструментов групп элементов и представляют собой разновидности кнопок TToolButton. Компонент TToolButton не имеет свойство, предназначенного для хранения изображения, однако компонент TToolBar позволяет извлечь нужное изображение из контейнера TImageList и поместить это изображение на кнопку.
TMainMenu - главное меню формы
Находится на вкладке Standard. Компонент класса TMainMenu определяет главное меню формы (программы). На форму можно поместить сколько угодно объектов этого класса, но отображаться в строке меню в верхней части формы будет только тот из них, который указан в свойстве Menu формы. Данный компонент является не визуальным. Присутствие его на форме носит информационный характер.
После установки компонента на форму необходимо создать пункты меню. Для этого надо дважды щёлкнуть на компоненте левой кнопкой мыши, либо щёлкнуть на нём правой кнопкой мыши и выбрать в контекстном меню команду Menu Designer, либо щёлкнуть в правой половине строки Items в окне инспектора объектов.
Для создания пунктов меню надо: перейти в окно инспектора объектов и ввести название пункта меню в строке свойства Caption, после чего нажмите клавише Enter - пункт меню готов и можно переходить к следующему. Каждый пункт меню может раскрываться в подменю или являться конечной командой. Для создания пунктов меню щёлкните мышью ниже пункта меню и введите имя первого пункта подменю. Продолжают ввод, пока не будут созданы все пункты подменю, после чего щёлкните на пустом прямоугольнике справа от первого пункта и введите имя следующего.
Для создания многоуровневых меню, то есть таких, у которых пункты подменю раскрывают новые подменю, щёлкните на пункте подменю и нажмите клавиши Ctrl+ .Такого же эффекта можно добиться щелчком правой кнопки мыши на пункте подменю и выборе в контекстном меню команды Create Submenu.
Организация взаимодействия с серверами автоматизации
В создаваемом приложении необходимо предусмотреть функцию экспорта данных в Excel. Поэтому в работе рассмотрен вопрос об использовании серверов пакета MS Office.
Практика показывает, что программы пакета MS Office (Excel,Word, PowerPoint и другие) устанавливаются на подавляющем большинстве компьютеров, работающих под управлением 32-х разрядных версий windows. Каждая из этих программ является COM - сервером, и, следовательно, любой входящий в нее объект может использоваться вашей программой как свой собственный.
Существует два способа обращения к методам и свойствам COM - объекта: путем ссылки на его библиотеку типов (ранее связывание) и по имени (позднее связывание). Для Delphi предпочтительным является ранее связывание, так как в этом случи компилятор может проконтролировать правильность обращения к свойствам и методам внешних объектов, а создаваемый им код, исполняется, в общем случаи, быстрее. С другой стороны, базовый язык обращения к серверам MS Office - Visual Basic for Application (VBA) не поддерживает работу с указателями и, следовательно, не может использовать интерфейсы. Специально для такого рода языков в технологию СОМ введены интерфейсы диспетчеризации, позволяющие обращаться к методам и свойствам по имени.
В Delphi имеются компоненты вкладки Servers, позволяющие обращаться к COM-объектам серверов с помощью библиотек типов.
Основные объекты серверов Excel и Word.
В терминологии VBA используются понятия объект и коллекция. Объект - это обычный интерфейсный объект COM, имеющий свойства, методы и события. Коллекция - это группа однотипных объектов. Например, главный объект сервера Excel - Application - определяет основные свойства и методы сервера, коллекция Worksheets - это набор табличных страниц в текущей рабочей книге и т.д.
Объекты Word
Текстовый процессор Word является популярнейшим средством создания и оформления (форматирования) текстовых документов. При работе с Word фундаментальными понятиями являются документ, абзац и стиль. Документ определяет файл данных. Абзац - это совокупность символов, обрамленная служебными символами конца строк, разрыва колонки или разрыва раздела. Наконец, стиль - это совокупность признаков оформления текста: его шрифт, положение на странице, выравнивание и т.п. Стиль - непременный атрибут каждого абзаца, то есть изменение стиля абзаца приводит к его переформатированию. Однако стиль может изменяться внутри абзаца - для выделения группы символов шрифтом, цветом символов и/или фона и т.п.
Центральный объект Application имеет такое же назначение, что и одноименный объект Excel, - он определяет свойства, методы и события на уровне всего сервера. Его свойство Documents представляет собой коллекцию открытых документов. С помощью метода Open этого объекта можно открыть ранее созданный документ, а методом Add - создать новый документ, основанный на шаблоне Normal.dot. Каждый документ имеет коллекцию абзацев Paragraphs. С помощью методов этого объекта Add, InsertParagraph, InsertParagraphAfter, InsertParagraphBefore можно вставить новый абзац в уже существующий текст или добавить абзац в конец документа. В свою очередь, каждый абзац имеет многочисленные свойства, позволяющие нужным образом отформатировать текст. Как и в Excel, важную роль в иерархии объектов Word играет объект Range, определяющий диапазон абзацев. Свойство Text этого объекта содержит текст диапазона.
Объекты Excel
Сервер Excel -это мощный табличный процессор, реализующий размещение и обработку различного рода данных (как числовых, так и текстовых), в том числе - построение на их основе графиков и диаграмм. При работе с Excel создается так называемая рабочая книга (файл данных) с одним или несколькими листами. Все листы одной рабочей книги могут быть связаны друг с другом, что позволяет организовать совместные вычисления над размещенными на них данными.
Объект Application имеет многочисленные свойства, методы и события, управляющие сервером в целом. Только с его помощью, например, можно визуализировать полнофункциональное окно табличного процессора. Его центральное свойство Workbooks открывает доступ ко всем открытым в процессоре рабочим книгам.
У каждой рабочей книги есть свойства Worksheets и Charts, представляющее собой коллекции листов и диаграмм. Первоначально коллекция Workbooks пуста. Чтобы создать хотя бы одну рабочую книгу, нужно обратиться к методу Workbook.Add, который создает рабочую книгу с количеством пустых листов, определенным значением свойства Application.SheetsInNewWorkbook. У каждого рабочего листа есть свойство Cells (I,J), определяющее содержимое ячейки, лежащей на пересечении I-й строки с J-м столбцом (нумерация строк и столбцов начинается с 1). Если при обращении к Cells номера столбца и строки опущены, считается, что речь идет о текущем диапазоне ячеек, заданным значением свойства Worksheets.Range. Если необходимо изменить умалчиваемые свойства столбца или строки, используются объекты Worksheets.Columns и Worksheets.Rows. Помимо рабочих листов с рабочей книгой связывается объект Charts, представляющий собой коллекцию диаграмм. С каждой диаграммой связывается объект SeriesCollection, хранящий данные, по которым строится диаграмма. Пример: Пусть требуется с помощью Delphi создать простейший Excel файл с записью в первую ячейку значения "Проба". Создадим новый проект и разместим на форме единственную кнопку. Далее напишем следующую процедуру, которая будет выполняться при нажатии кнопки:
uses comobj; //эта строка должна присутствовать обязательно
procedure TForm1.Button1Click(Sender: TObject);
var
exl: OleVariant;
WorkBook, Sheet: Variant;
fileName: String;
begin
try
//Получаем имя для будущего Excel-файла
fileName:= ExtractFilePath(Application.EXEName)+'Sample1.xls';
//Создаем объект интерфейса для доступа к серверу COM
exl := CreateOleObject('Excel.Application');
//Создаем книгу и обращаемся к первому листу
WorkBook := exl.Application.WorkBooks.Add;
Sheet := WorkBook.WorkSheets[1];
//Записываем в первую ячейку значение "Проба"
Sheet.Cells(1,1) := 'Проба';
//Сохраняем полученный файл
exl.Application.ActiveWorkBook.Saveas(fileName);
finally
//Выгружаем сервер из памяти компьютера
exl.Application.Quit;
end;
end;
ПРАКТИЧЕСКАЯ ЧАСТЬ
Формулировка задачи
Создать приложение «Зарплата», реализующее интерфейс в стиле MS WORD и работу с типизированным файлом следующей структуры:
Номер месяца
Табельный номер
Фамилия, имя, отчество
Подразделение
Должность
Оклад
Премия (в % до 100)
Удержано из зарплаты
Сумма премии (расчетная)
Сумма к выдаче (расчетная)
Рекомендации по конструированию формы.
На форме расположить компоненты:
TPanel, используемую в качестве контейнера для 6 однострочных полей, двух раскрывающихся списков(СоmЬоВох1. ComboBox2) для выбора подразделения и должности, 8 меток для заголовков полей редактирования и списков;
Панель (GroupBox1) с заголовком: Поиск, 3 радиокнопками с заголовками: по табельному номеру, по подразделению и по должности, однострочным полем для поиска, списком СоmbоВох3 для выбора табельного номера и кнопкой: Найти.
TMainMenu. TToolBar для размещения кнопок TToolButton, TImageList для загрузки картинок и редактор действий TActionList. 8 кнопок с заголовками: «Добавить», «Поиск», «Вывести расчетные листки», «Экспорт в Excel», «Напечатать», «Очистить», «Закрыть».
В свободное место формы поместить компонент текстовый редактор TRichEdit для отображения результатов работы.
Примечание. При проектировании пользовательского интерфейса можно по мере необходимости использовать дополнительные компоненты.
Программирование
Создать обработчики событий по созданию формы и щелчка по кнопкам, выполняющие следующие функции:
Проверить существование файла и в зависимости от его существования, открыть файл тем или иным способом. Если файл существует установить в конец, а все табельные номера переписать в список СоmbоВох3;
По кнопке «Добавить» реализовать добавление данных в файл из нолей ввода и раскрывающихся списков, расчет необходимых сумм и отображение записи в редакторе. Одновременно новый табельный номер запоминается в списке СоmbоВох3. Если такой номер уже есть в списке, то запись игнорируется, выводится сообщение о неверном табельном номере и курсор возвращается к вводу информации;
По кнопке «Вывести расчетные листки» формируются расчетные листки и выводятся в редактор;
Кнопка «Поиск» - выполнить поиск по выбору пользователя. Если пользователь выбрал варианты «По подразделению» или «По должности» осуществить поиск по образцу, взятому из поля ввода в панели «Поиск». Результаты поиска отобразить в редакторе. Если пользователь выбрал вариант «По табельному номеру», то осуществить поиск информации из файла по выбранному табельному номеру и в предварительно очищенном редакторе вывести расчетный лист с показом всех причитающихся данному лицу выплат и суммы «К выдаче»;
По кнопке «Напечатать» данные из редактора вывести на печать;
По кнопке «Экспорт в Excel» данные из файла вывести в виде книги Excel
По кнопке «Очистить» данные из редактора удаляются;
По кнопке «Закрыть» закрыть файл и осуществить корректное завершение работы.
Постановка задачи
Организационно-экономическая сущность задачи
Наименование задачи - создание приложения «Зарплата».
Цель решения данной задачи является автоматизированный расчет заработной платы сотрудников, оперативное получение информации о зарплате, формирование расчетных листов, ведомостей к оплате и др. отчетности.
Данное приложение предназначено для упрощения и снижения времени на начисление заработной платы, а также формирования отчетности.
Эта задача может решаться в бухгалтерии один раз в месяц при начислении заработной платы, а также по мере необходимости для получения сведений о заработной плате сотрудников.
Источниками входной информации является штатное расписание и список сотрудников на поощрение или взыскание.
Описание исходной (входной) информации
Исходной информацией для решения данной задачи являются данные представленные в таблице 2:
Таблица 2. Исходные данные
Наименование поля |
Идентификатор |
Тип поля |
Разрядность в знаках |
|
Номер месяца |
nommes |
числовой |
2 |
|
Табельный номер |
tabnom |
числовой |
3 |
|
Фамилия, имя, отчество |
fio |
строковый |
80 |
|
Подразделение |
podrazdelenie |
строковый |
25 |
|
Должность |
dolgnost |
строковый |
25 |
|
Оклад |
oklad |
числовой |
8 |
|
Премия (в % до 100) |
premij |
числовой |
3 |
|
Удержано из зарплаты |
udergano |
числовой |
8 |
Контроль исходных данных подразделение и должность осуществляется методом соответствия списку значений.
При добавлении новых записей табельный номер проверяется, если такой номер уже есть в списке, то запись игнорируется, выводится сообщение о неверном табельном номере и курсор возвращается к вводу информации.
Описание результатной (выходной) информации
Результатной информацией будет являться типизированный файл записей Zarplata.dat, который имеет структуру описанную в таблице 3:
Таблица 3. Результатная информация
Наименование поля |
Идентификатор |
Тип поля |
Разрядность в знаках |
|
Номер месяца |
nommes |
word |
||
Табельный номер |
tabnom |
word |
||
Фамилия, имя, отчество |
fio |
string |
80 |
|
Подразделение |
podrazdelenie |
string |
25 |
|
Должность |
dolgnost |
string |
25 |
|
Оклад |
oklad |
real |
||
Премия (в % до 100) |
premij |
word |
||
Удержано из зарплаты |
udergano |
Real |
||
Сумма премии |
sumprem |
Real |
||
Сумма к выдаче |
sumkv |
Real |
Также результатной информацией является форма «Зарплата». На эту форму будут выводиться необходимые данные о сотрудниках и их заработной плате в текстовый редактор из файла «Zarplata.dat». В этой форме поля Должность и Подразделение будут заполняться из списка значений.
Кроме того, выходной информацией будет являться форма в Excel, которая должна быть представлена в виде таблицы следующей структуры:
· Номер месяца
· Табельный номер
· Фамилия, имя, отчество
· Подразделение
· Должность
· Оклад
· Премия (в % до 100)
· Удержано из зарплаты
· Сумма премии (расчетная)
· Сумма к выдаче (расчетная)
В приложении будет реализована возможность поиска информации по табельному номеру, должности или подразделению сотрудников.
Разработка алгоритма решения задачи
С помощью данного приложения пользователь сможет решить ряд следующих действий:
1. Добавление данных в файл из нолей ввода и раскрывающихся списков, расчет необходимых сумм и отображение записи в редакторе. Одновременно новый табельный номер запоминается в списке СоmbоВох3. Если такой номер уже есть в списке, то запись игнорируется, выводится сообщение о неверном табельном номере и курсор возвращается к вводу информации;
2. По кнопке «Вывести расчетные листки» формируются расчетные листки и выводятся в редактор;
3. Кнопка «Поиск» - выполнить поиск по выбору пользователя. Если пользователь выбрал варианты «По подразделению» или «По должности» осуществить поиск по образцу, взятому из поля ввода в панели «Поиск». Результаты поиска отобразить в редакторе. Если пользователь выбрал вариант «По табельному номеру», то осуществить поиск информации из файла по выбранному табельному номеру и в предварительно очищенном редакторе вывести расчетный лист с показом всех причитающихся данному лицу выплат и суммы «К выдаче»;
4. По кнопке «Напечатать» данные из редактора вывести на печать;
5. По кнопке «Экспорт в Ехсеl» данные из файла вывести в виде книги Excel
6. По кнопке «Очистить» данные из редактора удаляются;
7. По кнопке «Закрыть» закрыть файл и осуществить корректное завершение работы.
Блок-схемы приложения
Схема.
Схема.
Схема.
Схема.
Схема.
Описание программы
Назначение и область применения программы
Данное приложение называется «Зарплата» Тема разработки - создание приложения, в стиле MS Word, содержащего строку меню и панель инструментов.
Приложение «Зарплата» предназначено для автоматизации расчета заработной платы бухгалтерией предприятия (предусмотрена возможность добавления записей, формирования расчетных листков на каждого сотрудника, вывода итоговой ведомости в Excel). Также с помощью этой программы можно осуществить поиск сведений о заработной плате сотрудников по подразделению, по должности или табельному номеру. Предусмотрена возможность вывода данных на печать.
Описание внешнего дизайна (интерфейса приложения).
Рис. 1. Вид окна будущего приложения.
1. TMainMenu - главное меню формы.
2. TToolBar - панель инструментов.
3. TToolButton - кнопка панели инструментов.
4. TRichEdit - текстовый редактор.
5. TPanel - панель.
6. TGroupBox - панель группирования.
7. TRadioButton - переключатель.
8. TCombobox - комбинированный список.
9. TLabel - метка.
10. Tedit - однострочное редактируемое текстовое поле.
11. TButton - кнопка.
В данном окне реализованы следующие пункты меню:
1. Открыть
2. Экспорт в Excel
3. Печать
4. Закрыть
5. Добавить запись
6. Вывести расчетные листки
7. Очистить текстовый редактор
8. Поиск
9. Справка
10. О программе
Рис.2. Форма «О программе», вызываемая командой меню
Рис.
Помощь/О программе.
1. TImage - изображение.
2. TLabel - метка.
3. TBitBtn - кнопка с изображением.
Описание внутренней структуры
Архитектура приложения.
Организация данных
Для работы данного приложения используются структуры данных, такие как:
1. Файл типа запись.
Запись имеет следующую структуру:
tzarplata=record
nommes:word;
tabnom:word;
fio:string[80];
podrazdelenie:string[25];
dolgnost:string[25];
oklad:real;
premij:word;
udergano:Real;
sumprem:Real;
sumkv:Real;
end;
В данной программе файл используется для постоянного хранения информации о заработной плате сотрудников за месяц. Длина любого компонента типизированного файла строго постоянна, что даёт возможность организовать прямой доступ к каждому из них. Также используется одномерный динамический массив типа запись в процедуре поиска записей для временного хранения информации. Описание алгоритмов приложения.
procedure FormCreate(Sender: TObject);
В процедуре происходит очистка текстового редактора для дальнейшей работы с приложением.
procedure Action1Execute(Sender: TObject);
f:file of tzarplata;
w:tzarplata;
Процедура открытия файла.
После открытия файла его содержимое будет отображаться в текстовом редакторе.
procedure Action2Execute(Sender: TObject);
f:file of tzarplata;
w:tzarplata;
XLApp,Sheet,Colum:Variant;
index:integer;
Процедура вывода записей в Excel
Данные из файла выводятся в таблицу. Для распечатки таблицы потребуется принтер.
procedure Action3Execute(Sender: TObject);
Процедура печати. Для распечатки необходим принтер.
procedure Action4Execute(Sender: TObject);
Выход из программы.
procedure Action5Execute(Sender: TObject);
f:file of tzarplata;
w:tzarplata;
tn,tn1,i:integer;
fl:boolean;
Процедура добавления записи
Данные из однострочных полей редактирования добавляются в файл и отображаются в текстовом редакторе. После добавления записи однострочные поля очищаются. Перед добавлением выполняется проверка - если табельный номер уже существует в файле, то выдается сообщение об ошибке.
procedure Action6Execute(Sender: TObject);
f:file of tzarplata;
w:tzarplata;
Процедура просмотра содержимого файла
Данные из файла выводятся в текстовый редактор
procedure Action7Execute(Sender: TObject);
Процедура очистки текстового редактора
procedure Action8Execute(Sender: TObject);
maska:string;
poisk:boolean;
i,k:integer;
f:file of tzarplata;
w:tzarplata;
a:array of tzarplata;
Процедура поиска записей. Предусмотрена возможность поиска записей по табельному номеру, по подразделению или по должности в зависимости от установленного переключателя. Найденные записи отображаются в редакторе.
procedure Action9Execute(Sender: TObject);
Вызов справки
procedure Action10Execute(Sender: TObject);
Вызов формы "О программе"
Программные коды модулей
unit Unit1;
interface
uses
ComObj, ShellAPI, …;
type
tzarplata=record
nommes:word;
tabnom:word;
fio:string[80];
podrazdelenie:string[25];
dolgnost:string[25];
oklad:real;
premij:word;
udergano:Real;
sumprem:Real;
sumkv:Real;
end;
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure Action1Execute(Sender: TObject);
procedure Action5Execute(Sender: TObject);
procedure Action6Execute(Sender: TObject);
procedure Action7Execute(Sender: TObject);
procedure Action4Execute(Sender: TObject);
procedure Action3Execute(Sender: TObject);
procedure Action8Execute(Sender: TObject);
procedure Action2Execute(Sender: TObject);
procedure Action10Execute(Sender: TObject);
procedure Action9Execute(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
f:file of tzarplata;
w:tzarplata;
a:array of tzarplata;
n:integer;
Form1: TForm1;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
RichEdit1.Clear;//очистка текстового редактора
end;
procedure TForm1.Action1Execute(Sender: TObject);
{процедура открытия файла}
begin
RichEdit1.Clear;
assignfile(f,'C:\Zarplata.dat'); //связываем файловую переменную с именем файла
if FileExists('C:\Zarplata.dat') //защищённый блок для открытия файла
then reset(f)
else rewrite(f);
Seek(f,0);
while not eof(f) do//цикл пока не конец файла
begin
read(f,w); {читаем данные из файла в переменную w}
//выводим содержимое переменной в текстовый редактор
RichEdit1.Lines.Add('_____________________________________');
RichEdit1.Lines.Add('Номер месяца...........'+inttostr(w.nommes));
RichEdit1.Lines.Add('Табельный номер........'+inttostr(w.tabnom));
RichEdit1.Lines.Add('Фамилия Имя Отчество...'+w.fio);
RichEdit1.Lines.Add('Подразделение..........'+w.podrazdelenie);
RichEdit1.Lines.Add('Должность..............'+w.dolgnost);
RichEdit1.Lines.Add('Оклад..................'+floattostr(w.oklad));
RichEdit1.Lines.Add('Премия (в % до 100)....'+inttostr(w.premij));
RichEdit1.Lines.Add('Удержано из зарплаты...'+floattostr(w.udergano));
RichEdit1.Lines.Add('Сумма премии...........'+floattostr(w.sumprem));
RichEdit1.Lines.Add('Сумма к выдаче.........'+floattostr(w.sumkv));
combobox3.Items.Add(inttostr(w.tabnom));
end;
seek(f,filesize(f));{устанавливаем фокус ввода в конец файла}
end;
procedure TForm1.Action5Execute(Sender: TObject);
{процедура добавления записи}
var
tn,tn1,i:integer;
fl:boolean;
begin
assignfile(f,'C:\Zarplata.dat');
reset(f);
tn:=strtoint(edit2.Text);
fl:=false;
for i:=0 to combobox3.items.count-1 do
begin
tn1:=strtoint(combobox3.Items[i]);
if tn=tn1 then fl:=true;
end;
if fl then
begin
ShowMessage ('Такой номер есть');
edit2.SetFocus;
exit;
end
else
seek(f,filesize(f));{устанавливаем фокус ввода в конец файла}
//в переменную w записываем данные из полей редактирования
w.nommes:=strtoint(Edit1.text);
w.tabnom:=strtoint(Edit2.text);
w.fio:=Edit3.Text;
w.podrazdelenie:=ComboBox1.Text;
w.dolgnost:=ComboBox2.Text;
w.oklad:=strtofloat(Edit4.text);
w.premij:= strtoint(Edit5.text);
w.udergano:= strtofloat(edit6.text);
w.sumprem:= w.oklad*w.premij/100;
w.sumkv:= w.oklad+w.sumprem-w.udergano;
RichEdit1.Clear;
//обображаем записи в текстовом редакторе
RichEdit1.Lines.Add('_____________________________________');
RichEdit1.Lines.Add('Номер месяца...........'+inttostr(w.nommes));
RichEdit1.Lines.Add('Табельный номер........'+inttostr(w.tabnom));
RichEdit1.Lines.Add('Фамилия Имя Отчество...'+w.fio);
RichEdit1.Lines.Add('Подразделение..........'+w.podrazdelenie);
RichEdit1.Lines.Add('Должность..............'+w.dolgnost);
RichEdit1.Lines.Add('Оклад..................'+floattostr(w.oklad));
RichEdit1.Lines.Add('Премия (в % до 100)....'+inttostr(w.premij));
RichEdit1.Lines.Add('Удержано из зарплаты...'+floattostr(w.udergano));
RichEdit1.Lines.Add('Сумма премии...........'+floattostr(w.sumprem));
RichEdit1.Lines.Add('Сумма к выдаче.........'+floattostr(w.sumkv));
write(f,w); {записываем данные из переменной w в файл}
//очищаем однострочные поля редактирования
edit1.Text:='';
edit2.Text:='';
edit3.Text:='';
combobox1.Text:='';
combobox2.Text:='';
edit4.Text:='';
edit1.SetFocus;
end;
procedure TForm1.Action6Execute(Sender: TObject);
{процедура просмотра содержимого файла}
begin
RichEdit1.Clear;
assignfile(f,'C:\Zarplata.dat');
reset(f);
Seek(f,0);
while not eof(f) do
begin
read(f,w); {читаем данные из файла в переменную w и отображаем их в редакторе}
RichEdit1.Lines.Add('_____________________________________');
RichEdit1.Lines.Add('Номер месяца...........'+inttostr(w.nommes));
RichEdit1.Lines.Add('Табельный номер........'+inttostr(w.tabnom));
RichEdit1.Lines.Add('Фамилия Имя Отчество...'+w.fio);
RichEdit1.Lines.Add('Подразделение..........'+w.podrazdelenie);
RichEdit1.Lines.Add('Должность..............'+w.dolgnost);
RichEdit1.Lines.Add('Оклад..................'+floattostr(w.oklad));
RichEdit1.Lines.Add('Премия (в % до 100)....'+inttostr(w.premij));
RichEdit1.Lines.Add('Удержано из зарплаты...'+floattostr(w.udergano));
RichEdit1.Lines.Add('Сумма премии...........'+floattostr(w.sumprem));
RichEdit1.Lines.Add('Сумма к выдаче.........'+floattostr(w.sumkv));
end;
end;
procedure TForm1.Action7Execute(Sender: TObject);
{процедура очистки RichEdit1}
begin
RichEdit1.Clear;
end;
procedure TForm1.Action4Execute(Sender: TObject);
//выход из программы
begin
closefile(f);
close;
end;
procedure TForm1.Action3Execute(Sender: TObject);
{процедура печати}
begin
richedit1.Print(Text);
end;
procedure TForm1.Action8Execute(Sender: TObject);
{процедура поиска записей}
var
maska:string;
poisk:boolean;
i,k:integer;
begin
RichEdit1.Clear;
assignfile(f,'C:\Zarplata.dat');
reset(f);
setlength(a,filesize(f));
if radiobutton1.Checked then
begin
maska:=combobox3.Text;
k:=0;
poisk:=false;
while not eof(f) do {пока не конец файла}
begin
read(f,w); {читаем из файла в файловую переменную}
if pos(maska,inttostr(w.tabnom))=1 then
begin
a[k]:=w; {записываем в массив данные из w}
inc(k);
poisk:=true;
end;
end;
closefile(f);
if not poisk then showmessage('Записей образца '+maska+' не обнаружено')
{если не найден не один элемент выводим соответствующее сообщение}
else
begin
for i:=0 to k-1 do {в ячейки выводим записи массива а}
begin
RichEdit1.Lines.Add('_____________________________________');
RichEdit1.Lines.Add('Номер месяца...........'+inttostr(a[i].nommes));
RichEdit1.Lines.Add('Табельный номер........'+inttostr(a[i].tabnom));
RichEdit1.Lines.Add('Фамилия Имя Отчество...'+a[i].fio);
RichEdit1.Lines.Add('Подразделение..........'+a[i].podrazdelenie);
RichEdit1.Lines.Add('Должность..............'+a[i].dolgnost);
RichEdit1.Lines.Add('Оклад..................'+floattostr(a[i].oklad));
RichEdit1.Lines.Add('Премия (в % до 100)....'+inttostr(a[i].premij));
RichEdit1.Lines.Add('Удержано из зарплаты...'+floattostr(a[i].udergano));
RichEdit1.Lines.Add('Сумма премии...........'+floattostr(a[i].sumprem));
RichEdit1.Lines.Add('Сумма к выдаче.........'+floattostr(a[i].sumkv));
end;
end;
end;
if radiobutton2.Checked then
begin
maska:=edit7.Text;
k:=0;
poisk:=false;
while not eof(f) do {пока не конец файла}
begin
read(f,w); {читаем из файла в файловую переменную}
if pos(maska,w.podrazdelenie)=1 then
begin
a[k]:=w; {записываем в массив данные из w}
inc(k);
poisk:=true;
end;
end;
closefile(f);
if not poisk then showmessage('Записей образца '+maska+' не обнаружено')
{если не найден не один элемент выводим соответствующее сообщение}
else
begin
for i:=0 to k-1 do {в ячейки выводим записи массива а}
begin
RichEdit1.Lines.Add('_____________________________________');
RichEdit1.Lines.Add('Номер месяца...........'+inttostr(a[i].nommes));
RichEdit1.Lines.Add('Табельный номер........'+inttostr(a[i].tabnom));
RichEdit1.Lines.Add('Фамилия Имя Отчество...'+a[i].fio);
RichEdit1.Lines.Add('Подразделение..........'+a[i].podrazdelenie);
RichEdit1.Lines.Add('Должность..............'+a[i].dolgnost);
RichEdit1.Lines.Add('Оклад..................'+floattostr(a[i].oklad));
RichEdit1.Lines.Add('Премия (в % до 100)....'+inttostr(a[i].premij));
RichEdit1.Lines.Add('Удержано из зарплаты...'+floattostr(a[i].udergano));
RichEdit1.Lines.Add('Сумма премии...........'+floattostr(a[i].sumprem));
RichEdit1.Lines.Add('Сумма к выдаче.........'+floattostr(a[i].sumkv));
end;
end;
end;
if radiobutton3.Checked then
begin
maska:=edit7.Text;
k:=0;
poisk:=false;
while not eof(f) do {пока не конец файла}
begin
read(f,w); {читаем из файла в файловую переменную}
if pos(maska,w.dolgnost)=1 then
begin
a[k]:=w; {записываем в массив данные из w}
inc(k);
poisk:=true;
end;
end;
closefile(f);
if not poisk then showmessage('Записей образца '+maska+' не обнаружено')
{если не найден не один элемент выводим соответствующее сообщение}
else
begin
for i:=0 to k-1 do {в ячейки выводим записи массива а}
begin
RichEdit1.Lines.Add('_____________________________________');
RichEdit1.Lines.Add('Номер месяца...........'+inttostr(a[i].nommes));
RichEdit1.Lines.Add('Табельный номер........'+inttostr(a[i].tabnom));
RichEdit1.Lines.Add('Фамилия Имя Отчество...'+a[i].fio);
RichEdit1.Lines.Add('Подразделение..........'+a[i].podrazdelenie);
RichEdit1.Lines.Add('Должность..............'+a[i].dolgnost);
RichEdit1.Lines.Add('Оклад..................'+floattostr(a[i].oklad));
RichEdit1.Lines.Add('Премия (в % до 100)....'+inttostr(a[i].premij));
RichEdit1.Lines.Add('Удержано из зарплаты...'+floattostr(a[i].udergano));
RichEdit1.Lines.Add('Сумма премии...........'+floattostr(a[i].sumprem));
RichEdit1.Lines.Add('Сумма к выдаче.........'+floattostr(a[i].sumkv));
end;
end;
end;
end;
procedure TForm1.Action2Execute(Sender: TObject);
{процедура вывода записей в Excel}
var
XLApp,Sheet,Colum:Variant;
index:integer;
begin
XLApp:=CreateOleObject('Excel.Application');
XLApp.Visible:=true;
XLApp.Workbooks.Add(-4167);
XLApp.Workbooks[1].workSheets[1].Name:='Отчёт';
Colum:= XLApp.Workbooks[1].workSheets['Отчёт'].Columns;
Colum.Columns[1].ColumnWidth:=20;
Colum.Columns[2].ColumnWidth:=20;
Colum.Columns[3].ColumnWidth:=20;
Colum.Columns[4].ColumnWidth:=20;
Colum.Columns[5].ColumnWidth:=20;
Colum.Columns[6].ColumnWidth:=20;
Colum.Columns[7].ColumnWidth:=20;
Colum.Columns[8].ColumnWidth:=20;
Colum.Columns[9].ColumnWidth:=20;
Colum.Columns[10].ColumnWidth:=20;
Colum:= XLApp.Workbooks[1].workSheets['Отчёт'].Rows;
Colum.Rows[2].Font.Bold:=true;
Colum.Rows[1].Font.Bold:=true;
Colum.Rows[1].Font.Color:=clBlue;
Colum.Rows[1].Font.Size:=14;
Sheet:=XLApp.Workbooks[1].WorkSheets['Отчёт'];
Sheet.Cells[1,2]:='Ведомость';
Sheet.Cells[2,1]:='Номер месяца';
Sheet.Cells[2,2]:='Табельный номер';
Sheet.Cells[2,3]:='Фамилия, имя, отчество';
Sheet.Cells[2,4]:='Подразделение';
Sheet.Cells[2,5]:='Должность';
Sheet.Cells[2,6]:='Оклад';
Sheet.Cells[2,7]:='Премия (в % до 100)';
Sheet.Cells[2,8]:='Удержано из зарплаты';
Sheet.Cells[2,9]:='Сумма премии';
Sheet.Cells[2,10]:='Сумма к выдаче';
assignfile(f,'C:\Zarplata.dat');
reset(f);
index:=3;
while not eof(f) do
begin
read(f,w); {читаем данные из файла в переменную w}
sheet.cells[index,1]:=inttostr(w.nommes);
sheet.cells[index,2]:=inttostr(w.tabnom);
sheet.cells[index,3]:=w.fio;
sheet.cells[index,4]:=w.podrazdelenie;
sheet.cells[index,5]:=w.dolgnost;
sheet.cells[index,6]:=floattostr(w.oklad);
sheet.cells[index,7]:=inttostr(w.premij);
sheet.cells[index,8]:=floattostr(w.udergano);
sheet.cells[index,9]:=floattostr(w.sumprem);
sheet.cells[index,10]:=floattostr(w.sumkv);
inc(index);
end;
end;
TForm1.Action10Execute(Sender: TObject);
//вызов формы "О программе"
begin
form2.showmodal;
end;
procedure TForm1.Action9Execute(Sender: TObject);
//вызов справки
begin
ShellExecute(Handle,'open','D:\знаменский курсовая\spravka.htm',nil,nil,sw_restore);
end;
end.
Инструкция по работе с программой
Общие сведения.
Данное приложение называется «Зарплата». Его функционирование возможно под управлением ОС Windows(98,2000,ME,XP). Настройку и корректировку программы можно осуществить при помощи языка программирования Delphi, версии 7.0. и выше.
Функциональное назначение.
Приложение «Зарплата» предназначено для автоматизации расчета заработной платы бухгалтерией предприятия (предусмотрена возможность добавления записей, формирования расчетных листков на каждого сотрудника, вывода итоговой ведомости в Excel). Также с помощью этой программы можно осуществить поиск сведений о заработной плате сотрудников по подразделению, по должности или табельному номеру. Предусмотрена возможность вывода данных на печать.
Описание логической структуры.
Данная программа реализует следующие алгоритмы:
· Открытие файла - проверяется существование файла и в зависимости от его существования, открывается файл тем или иным способом. Все табельные номера переписываются в раскрывающийся список;
· Добавление данных в файл из полей ввода и раскрывающихся списков, расчет необходимых сумм и отображение записи в редакторе. Одновременно новый табельный номер запоминается в списке табельных номеров. Если такой номер уже есть в списке, то запись игнорируется, выводится сообщение о неверном табельном номере и курсор возвращается к вводу информации;
· Вывод расчетных листков - формируются расчетные листки и выводятся в редактор;
· Поиск - по выбору пользователя. Если пользователь выбрал варианты «По подразделению» или «По должности» осуществляется поиск по образцу, взятому из поля ввода в панели «Поиск». Результаты поиска отображаются в редакторе. Если пользователь выбрал вариант «По табельному номеру», то осуществляется поиск информации из файла по выбранному табельному номеру и в предварительно очищенном редакторе выводится расчетный лист с показом всех причитающихся данному лицу выплат и суммы «К выдаче»;
· Печать - данные из редактора выводятся на печать;
· Экспорт в Ехсеl - данные из файла выводятся в виде книги Excel
· Очистить - данные из редактора удаляются;
· Закрыть - закрытие файла и корректное завершение работы.
· О программе - вывод на экран формы, содержащей сведения о программе и её авторе.
· Справка - вывод справки.
Для работы программы необходимы следующие технические средства:
· Процессор: класс Pentium.
· RAM: 64 Мбайт.
· Память на жёстком диске: не менее 10 Мбайт.
· Video: 800*600 при 256-цветовой палитре.
Для печати данных необходим принтер.
Вызов и загрузка.
Перед запуском программы необходимо скопировать папку «Зарплата» с лазерного диска в любое место на жёстком диске. Для вызова программы необходимо запустить файл Project1.exe. После первого запуска программы на диске «С» появится файл «Zarplata.dat», в котором и будет храниться вся информация об имеющихся книгах.
Используемая оперативная память - 3580 Кб, объём программы - 686 Кб.
Входные данные
Исходные данные могут вводиться пользователем в однострочные поля редактирования. В поля подразделение и должность выбираются значения из раскрывающихся списков. Все поля имеют числовой формат, кроме полей Фамилия, подразделение, должность (эти поля символьного типа).
Выходные данные.
Выходные данные могут быть представлены в текстовом редакторе или выведены на печать. Ведомость может быть сформирована в excel.
Описание пользовательского интерфейса.
В данном приложении реализован интерфейс MS Word. Т.е. одно и то же действие пользователь сможет выполнить, как выбрав команду меню, так и щелкнув кнопку на панели инструментов.
При запуске приложения на экран выводится форма, показанная на рисунке 3.
Рис. 3. Вид главного окна приложения
Меню программы содержит следующие пункты:
· Файл/Открыть после выбора данного пункта меню все записи из файла «С:\Zarplata.dat» будут представлены в текстовом редакторе. Пример показан на рисунке 4.
Рис. 4. Вид окна приложения после команды «Открыть»
· Файл/Экспорт в Excel - после выполнения данного пункта все записи из файла будут перенесены в ведомость Excel (рисунок 5).
Рис. 5. Ведомость формируемая в Excel
· Файл/Печать - данные представленные в текстовом редакторе будут выведены на печать.
· Файл/Выход - корректное завершение работы программы.
· Действия/Добавить запись - данные из однострочных полей будут добавлены в конец файла и отображены в текстовом редакторе. Пример представлен на рисунке 6.
Рис. 6. Добавление записи
· Действия /Вывести расчетные листки - данные о всех сотрудниках, с рассчитанными суммами выплат выводятся в текстовый редактор (рисунок 7).
Рис. 7. Вывод расчетных листов
· Действия/Очистить - по нажатии на эту кнопку текстовый редактор очищается.
· Поиск - перед выполнением этой команды пользователю необходимо указать вариант поиска (по подразделению, должности или табельному номеру) и ввести искомое значение в разделе «Поиск». Пример показан на рисунке 8.
Рис. 8. Пример поиска по табельному номеру
· Помощь/Справка - вызывается документ «D:\spravka.htm», которой содержит подробную инструкцию по работе с программой (рисунок 9).
Рис. 9. Вид окна «Справка»
· Помощь/О программе - на экран будет выведена форма, содержащая основные сведения о программе и её авторе.
Те же самые действия можно выполнить, нажав соответствующие кнопки на панели инструментов (Открыть, экспорт в Excel и др.).
Сообщения пользователю.
На экран могут быть выведены сообщения «Такой номер уже есть», если при добавлении в файл новой записи, табельный номер совпадет с уже существующем номером в файле (рисунок 10).
Рис. 10. Сообщение о совпадении номера
Также при выполнении поиска, в случае если запись отсутствует в файле, то будет выведено сообщение об ошибке (Рисунок 11).
Рис. 11. Сообщение об ошибке
Заключение
В ходе выполнения данной курсовой работы мною было создано приложение «Зарплата» предназначено для автоматизации расчета заработной платы бухгалтерией предприятия (предусмотрена возможность добавления записей, формирования расчетных листков на каждого сотрудника, вывода итоговой ведомости в Excel). Также с помощью этой программы можно осуществить поиск сведений о заработной плате сотрудников по подразделению, по должности или табельному номеру. Предусмотрена возможность вывода данных на печать.
В дальнейшем, для усовершенствования программы, может быть изменен её внешний дизайн, а также не исключены небольшие доработки для удобства работы конкретного пользователя.
Я получил и закрепил навыки работы с языком программирования Delphi 7. Мною были использованы поиск по маске и другие методы работы с данными хранящимися в динамическом массиве записей. Также я изучил новые для меня компоненты, такие как TToolBar, TToolButton, и другие, используемые для создания интерфейса в стиле MS Word. Также был изучен порядок экспорта данных в Excel.
Навыки, полученные при выполнении курсовой работы помогут в моей дальнейшей профессиональной деятельности.
Список литературы
1.Фаронов В.В. Delphi. Программирование на языке высокого уровня. - «М.:Питер», 2004.
2.Маткаримов А.В. Delphi 7. Пособие для студентов. - Саяногорск, 2006.
3.Баженова Ю.И. Delphi 7. Самоучитель программиста - «КУДИЦ-Образ», 2003
4.Онлайн Учебник по Microsoft Excel - http://www.tepka.ru/excel/
5.Онлайн Учебник по Microsoft Word - http://www.on-line-teaching.com/word/
Приложения
Приложение 1
Результаты работы с программой
Рис. 5. Ведомость формируемая в Excel
Рис. 6. Добавление записи
Рис. 8. Пример поиска по табельному номеру
Рис. 8. Пример поиска по табельному номеру
Рис. 8. Пример поиска по табельному номеру
Размещено на Allbest.ru
Подобные документы
Общая характеристика системы программирования Delphi, а также принципы создания ее компонентов. Описание значений файлов приложения, созданного с помощью Delphi. Структура и свойства библиотеки визуальных компонентов (Visual Component Library или VCL).
отчет по практике [1,1 M], добавлен 07.12.2010Обзор программных средств и алгоритм разрешения задачи, основные этапы. Описание интерфейса в C#, перечень используемых в данной программе идентификаторов и их функциональные особенности, главные тесты модулей, а также анализ полученных результатов.
курсовая работа [1,1 M], добавлен 03.10.2014Структура программы в среде Delphi в процессе проектирования приложения, ее модульный принцип. Объявление списка используемых модулей и нескольких операторов. Размещение на форме компонентов и изменение их свойств. Создание кода - обработчика события.
лабораторная работа [19,1 K], добавлен 15.07.2009Borland Delphi 7 как универсальный инструмент разработки, применяемый во многих областях программирования, функции: добавление информации об абитуриентах в базу данных, формирование отчетов. Рассмотрение и характеристика основных компонентов Delphi.
контрольная работа [3,6 M], добавлен 18.10.2012Возможности среды программирования delphi при разработке приложения с визуальным интерфейсом. Отладка программных модулей с использованием специализированных программных средств. Тестирование программного обеспечения. Оптимизация программного кода.
курсовая работа [974,0 K], добавлен 21.12.2016Разработка программы обработки типизированных файлов с кодом на языке Object Pascal, с использованием компонентов Delphi для ввода и вывода данных. Разработка экранных форм и алгоритма программы. Описание программных модулей и инструкция оператору.
курсовая работа [1,5 M], добавлен 08.02.2011Исследование особенностей разработки линейных алгоритмов и их реализации в среде Delphi. Составление тестов для проверки программы. Характеристика основных элементов интерфейса, компонентов, значения их свойств. Построение графической схемы алгоритма.
лабораторная работа [316,6 K], добавлен 08.11.2012Запуск Word. Выход Word. Настройка пользовательского интерфейса. Панели инструментов Word. Контекстное меню Word. Подсказки, которые выдает Word. Система Справки Word. Открытие и сохранение документа. Изменение имени и места хранения документа.
лабораторная работа [241,7 K], добавлен 10.03.2007Изучение интерфейса и основных инструментов программы Компас. Обзор инструментов моделирования, используемых при создании модели материнской платы. Анализ программных и технических средств, объединенных в единый технологический процесс проектирования.
курсовая работа [2,7 M], добавлен 05.04.2012Особенности среды визуального проектирования Borland Delphi 7.0. Этапы разработки программы и составления блок-схемы алгоритмов. Способы вычисления кусочно-заданной функции одной переменной. Рассмотрение компонентов среды Delphi, ее предназначение.
контрольная работа [703,8 K], добавлен 24.09.2012