Разработка электронного теста контроля знаний для соискателей работы в 1С-франчайзинг
Разработка программы с использованием сред Delphi 2009 и Microsoft SQL Server. Структура базы данных, состоящая из таблиц, описание форм и отчетов, необходимых пользователю. Требования к программному обеспечению. Аномалии, реакции на них и способ защиты.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 21.02.2016 |
Размер файла | 1,4 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
ДИПЛОМНЫЙ ПРОЕКТ НА ТЕМУ:
Разработка электронного теста контроля знаний для соискателей работы в "1С-Франчайзинг”
Содержание
Введение
1. Постановка задачи
2. Формализация
3. Описание среды программирования
4. Методика разработки проекта
4.1 Алгоритмизация задачи
4.1.1 Описание алгоритма
4.1.2 Структурная схема
4.2 Программирование
4.3 Аномалии и защитное программирование
4.4 Тестирование и отладка
5. Анализ результатов решения
6. Инструкция пользователю
7. Экономическая часть
Заключение
Литература
Приложение
Введение
Тестирование при приеме на работу - общепризнанная практика. Во время тестирования также можно получить много косвенной информации о человеке:
-как быстро он осваивается в новой ситуации;
- насколько он склонен принимать правила игры, навязанные ему извне;
- с какой скоростью он работает;
- как часто обращается за помощью;
- пытается ли узнать что-то новое для себя;
- быстро ли обучается и т.д.
Для каждой вакансии составляется свой набор тестов, соответствующий основным компетенциям сотрудника. Тестирование помогает работодателю выбрать из всех соискателей нужного кандидата на вакантную должность
1. Постановка задачи
Цель дипломного проекта - создать систему электронного тестирования которое упростит процедуру принятия сотрудников на работу в фирму "1С-Франчайзинг” и позволит за минимальный промежуток рабочего времени - принять и обработать анкеты (тесты)сотрудников, а так же сократит время, которое может быть потрачено на собеседование для выявления уровня знаний.
В программном приложении должны так же быть предусмотрены функции: вывода на экран информации о результатах тестирования, печать необходимых отчетов (ф.и.о тестируемого, количество проходивших тест за данный период времени), а так же хранение информации на жестком диске.
Приложение будет разработано в среде Delphi 2009, с использованием Microsoft SQL Server
2. Формализация
Для построения необходимо провести формализацию задачи, являющуюся необходимым этапом разработки задачи и заключающуюся в построении структуры таблиц для хранения информации, схемы их взаимосвязей и описания алгоритмов обработки.
Взаимосвязь показана в схеме данных:
Рис. 1
Как правило, разработка проекта реализации задачи выполняется в несколько этапов и начинается с анализа той информации, которая является выходной (формы и отчеты для Microsoft SQL Server), итоговая (конечная) форма для Delphi. Только после выяснения структуры и состава этой информации, можно сделать вывод о структуре и составе таблиц данных. Необходимым этапом формализации задачи является нормализация базы данных, которая, по сути, представляет собой процесс оптимизации хранения и использования информации в таблицах.
3. Описание среды программирования
Для написания программы было использовано две рабочих среды программирования Microsoft SQL Server и Delphi 2009 Основу программы составляет база , написанная в Microsoft SQL Server. На Delphi создана программа тестирования и административная часть, позволяющая вносить изменения и поправки в базу. Также выводить различного рода отчёты.
Microsoft SQL Server
Большинство приложений баз данных со временем разрастаются, становятся более сложными и число их пользователей также растет. На некотором этапе существования приложения базы данных Microsoft Access преобразовать в формат Microsoft SQL Server с целью оптимизации производительности, масштабируемости, безопасности, надежности, способности к восстановлению и доступности базы данных и приложения.
Во многих случаях Microsoft SQL Server обеспечивает более высокую производительность, чем база данных Access. SQL Server также обеспечивает поддержку очень крупных баз данных, размером до одного терабайта, что значительно превышает существующий в настоящее время для баз, данных Access предел в два Гбайт. К тому же, SQL Server весьма эффективно работает в среде Microsoft Windows NT, обрабатывая запросы параллельно (с использованием естественных потоков команд в пределах одного процесса для обработки запросов пользователя) и снижая до минимума требования к памяти при добавлении пользователей.
Приложение Microsoft SQL Server с самого начала разрабатывалось как база данных в архитектуре клиент/сервер. Данные и индексы располагаются на одном сервере, доступ к которому часто осуществляется через сеть с нескольких клиентских компьютеров. SQL Server снижает загруженность сети, выполняя обработку запросов базы данных на сервере перед отправкой результатов на клиентский компьютер. Таким образом, создаваемые приложения в архитектуре клиент/сервер могут выполнять обработку там, где она выполняется лучше всего-- на сервере.
В приложении также могут использоваться сохранение процедуры и триггеры для централизации и разделения логики приложения, сложных запросов, а также для выполнения программ проверки условий на значение и целостности данных на сервере, а не на клиентском компьютере.
Microsoft SQL Server поддерживает огромные транзакции с ведением журнала транзакций, что гарантирует передачу или откат всех изменений, выполняемых в рамках транзакции.
Согласованность и возможность восстановления транзакций базы данных гарантируется даже в случае сбоя системы и при сложных обновлениях, выполняемых несколькими пользователями. SQL Server рассматривает все базы данных в пределах транзакции как одну обрабатываемую единицу. По определению, транзакция либо безопасно выполняется полностью с отражением всех результирующих изменений в базе данных, либо откатывается с отменой всех изменений в базе данных.
С помощью протокола двухуровневого завершения транзакций SQL Server может даже поддерживать синхронизированные транзакции, охватывающие несколько серверов, обеспечивая поддержание всех серверов сети в согласованном состоянии.
С помощью Microsoft SQL Server можно выполнять динамическое резервное копирование (добавочное или полное) базы данных во время ее использования. Таким образом, пользователи избавлены от необходимости выходить из базы данных для резервного копирования данных. Это позволяет использовать базу данных 24 часа в сутки, семь дней в неделю.
На случай сбоя системы (например, при аварийном завершении работы оперативной системы или отключении питания) в Microsoft SQL Server имеется механизм автоматического восстановления базы данных до последнего состояния согласованности всего за несколько минут, причем вмешательство администратора базы данных не требуется. Важные приложения могут быть восстановлены и повторно запущены сразу же.
Delphi 2009.
Delphi-- результат развития языка Турбо Паскаль, который, в свою очередь, развился из языка Паскаль. Паскаль был полностью процедурным языком, Турбо Паскаль, начиная с версии 5.5, добавил в Паскаль объектно-ориентированные свойства, а в Object Pascal-- динамическую идентификацию типа данных с возможностью доступа к метаданным классов (то есть к описанию классов и их членов) в компилируемом коде, также называемом интроспекцией-- данная технология получила обозначение RTTI. Так как все классы наследуют функции базового класса TObject, то любой указатель на объект можно преобразовать к нему, после чего воспользоваться методом ClassType и функцией TypeInfo, которые и обеспечат интроспекцию.
Также отличительным свойством Object Pascal от С++ является то, что объекты по умолчанию располагаются в динамической памяти. Однако можно переопределить виртуальные методы NewInstance и FreeInstance класса TObject. Таким образом, абсолютно любой класс может осуществить «желание» «где хочу-- там и буду лежать». Соответственно организуется и «многокучность».
Object Pascal (Delphi) являются результатом функционального расширения Turbo PascalDelphi оказал огромное влияние на создание концепции языка C# для платформы .NET. Многие его элементы и концептуальные решения вошли в состав С#. Одной из причин называют переход Андерса Хейлсберга, одного из ведущих разработчиков Дельфи, из компании Borland Ltd. в Microsoft Corp.
Требования к программному обеспечению
Для работы клиентской базы необходимо, чтобы на компьютере были установлены:
Ш Операционная система WINDOWS 2000, WINDOWS XP, WINDOWS Vista, WINDOWS 7.
Ш Microsoft Office XP.
Для работы сервера необходимо, чтобы на компьютере были установлены:
§ Установленный и работающий Microsoft SQL Server.
§ Аппаратное ускорение Direct X 9.0c
программа пользователь delphi аномалия
4. Методика разработки программы
Далее полностью приведена структура данной базы данных состоящая из таблиц, её описание, описание форм и отчетов, необходимых пользователю, а также работы с ними приведены в инструкции пользователю.
4.1 Алгоритмизация задачи
4.1.1 Описание алгоритма
С целью повышения надёжности и эффективности программного приложения , применялся метод нисходящего проектирования, и проходила следующие этапы:
Ш Определение входных и выходных данных;
Ш Выбор языка программирования;
Ш Поиск по различным критериям.
В ходе разработки программного продукта были созданы следующие таблицы:
Таблица №1 «Generals»
Имя поля |
Тип данных |
Формат/размер поля |
|
ID (ключевое поле) |
int |
5 |
|
Bilets |
int |
15 |
|
Vopros |
int |
255 |
|
Caption |
nvarchar |
255 |
|
Otvet_1 |
nvarchar |
255 |
|
Otvet_2 |
nvarchar |
255 |
|
Otvet_3 |
nvarchar |
255 |
|
Otvet_4 |
nvarchar |
255 |
|
Otvet_5 |
nvarchar |
255 |
|
Otvet_t |
nvarchar |
255 |
Таблица №2 «Results»
Имя поля |
Тип данных |
Формат/размер поля |
|
ID (ключевое поле) |
int |
5 |
|
FIO |
nvarchar |
50 |
|
Bilet |
int |
255 |
|
ErrCounts |
int |
50 |
|
ErrVopros |
nvarchar |
20 |
|
Result |
nvarchar |
30 |
|
Date1 |
nvarchar |
30 |
4.1.2 Структурная схема
Рис.1 Структурная схема
4.2 Программирование
В соответствии с структурной схемой приведенной выше, в представленной программе разработаны программные модули на Borland Delphi, а также запросы на языке SQL .
Тексты программных модулей и запросов приведены в пункте: V. «Приложение».
4.3 Аномалии и защитное программирование
Таблица №3
Описание аномалии |
Реакции на аномалию |
Способ защиты |
|
Попытка перехода к следующему вопросу после ответа. |
Вывод текстового сообщения без изменения структуры и с запросом подтверждения. |
Предусмотрено в Delphi специализированными командами. |
|
Ввод в текстовые поля числовые значения |
Выводит ошибку в виде текстового сообщения, структура при этом не меняется |
Предусмотрено в Delphi специализированными командами. |
|
Попытка выйти из программы тестирования во время теста |
Выводит текстовое уведомление с запросом и подтверждением на выход |
Предусмотрено в Delphi специализированными командами. |
4.4 Тестирование и отладка
Тестирование - это процесс выполнения программы с целью обнаружения в ней ошибок. Отладка - исправление ошибок, найденных с помощью тестирования.
Необходимой частью каждого теста должно являться описание ожидаемых результатов работы программы, чтобы можно было быстро выяснить наличие или отсутствие ошибки в ней. В любой организаций, занимающийся разработкой программных продуктов имеются специальные люди (Тестеры), занимающиеся тестированием программ которые выявляют ошибки и недоработки в программе и сообщают о них программистам, которые в свою очередь их исправляют.
Но наиболее эффективно тестирование проводится при эксплуатации программы в реальных условиях и реальными пользователями, которые сообщают обо всех найденных ошибках разработчику, который в последствии занимается их исправлением.
Так как в данном случае разработкой занимается не организация, а один человек то и тестирование и исправление тоже осуществляется одним человеком, что менее эффективно и является очень длительным процессом.
Данный проект разрабатывался и тестировался одновременно, то есть каждый раз при разработки какой либо новой части программы, написанная ранее программа проверялась на работоспособность и корректировалась с учётом найденных ошибок.
5. Анализ результатов решения
В соответствии с пунктом 4.4 тестирование и отладка производились непосредственно во время разработки проекта. После завершения работы над программой было еще раз произведено полное тестирование.
Все найденные ошибки были успешно устранены.
Получившийся в результате программный продукт удовлетворяет всем предъявленным требованиям, полностью работоспособен, не требует принципиальных доработок, и готов к эксплуатации.
6. Инструкция пользователя
Общие сведения о программе « Разработка электронного теста контроля знаний для соискателей работы в “1С-Франчайзинг”»
Это программное приложение разработано для проведения теста в фирме "1С-Франчайзинг”. Так же оно позволяет производить хранение данных. Программа значительно сокращает время и эффективность работы сотрудников данной фирмы, и других специализированных фирм, при простых операциях, значительно упрощается процедура проведения тестирования, просмотр отчета о результатах тестирования.
Внедрение программы поможет снизить нагрузку при обработке информации и оформлении необходимой документации.
Запуск программы «Разработка электронного теста контроля знаний для соискателей работы в "1С-Франчайзинг»
Запуск программы осуществляется двойным нажатием левой клавиши мышки на ярлыке программы.
Рис. 2 Главная форма.
После запуска программы на экране высвечивается форма «Тестирование 1С» (рис. 2). Для того чтобы начать тестирование нужно выбрать в меню пункт: « Тестирование » затем: « Начать тест » Пользователь сам вводит свои данные. После того как вы заполнили все поля данной формы, Необходимо нажать на кнопку: « Ok » (рис. 3).
Рис. 3 Начало тестирования.
Необходимо заполнить все поля, а именно, в поле, где написано: « Введите ФИО » Пользователь введёт свои данные.
После нажатия кнопки « Ok » перед вами откроется окно тестирования. (Рис. 4).
Рис. 4 Тестирование.
Окно любого тестового задания состоит из вопроса и вариантов ответов (до 5 вариантов ответа на каждый вопрос). После того как вы выбрали на ваш взгляд правильный вариант ответа, появляется окно с запросом: «Уверены ли вы в своём ответе?» в случае нажатия кнопки: «Нет» вы останетесь на этом вопросе и можете выбрать другой вариант, в случае нажатия «Да» будут следующие вопросы. Также можно пропустить вопрос, для этого необходимо воспользоваться этим навигатором:
Также нужно заметить, что в программе предусмотрено время, по истечению которого, а это двадцать минут, будет показано сообщение: « Время вышло! » после программа завершит роботу.
Если во время тестирования нажать кнопку: « Выход » то появится запрос виде текстового сообщения: (рис. 5).
Рис. 5 Уведомление.
В случае нажатия по кнопке «Да» программа закроется в случае «Нет» продолжит своё выполнение.
По остальным техническим вопросам можно обратиться в: «Помощь»
Завершение тестирования
После того как вы ответили на все вопросы, тестирование будет завершено, результат автоматически записывается в таблицу: «Results» связь с таблицей проходит через запрос.
Появится окно с протоколом тестирования.
В этом окне вы увидите, на сколько вопросов вы ответили не правильно, какой билет решали, и самое главное узнаете свой результат, в этом случае вы приняты на работу, так как было допущена одна ошибка. Три и более ошибок считается что вы не полностью владеете навыками пользования программой 1С в полной мере и на работу вы приняты не будете, если будит меньше трёх ошибок, то ваша кандидатура будет рассмотрена работодателем.
Рис. 6 Результат.
После нажатия кнопки «В начало», окно протокола будет закрыто и откроется первая форма.
Если необходимо вывести отчёт о прохождении теста необходимо нажать кнопку: «Отчёт»,
Запуск программы « Admin SQL »
Этот программный продукт служит для эффективной и быстрой работы сотрудников с информацией обо всех пользователях, прошедших тестирование, получения необходимых отчетов, а также для редактирования базы с вопросами, а также выполнять поиск по различным критериям.
Запуск программы осуществляется двойным нажатием левой клавиши мыши на ярлыке программы. После запуска программного продукта на экране появится «Управление SQL базой».
Главная форма содержит две вкладки: Редактирование SQL базы и Выборка по дате.
Работа с редактированием
При нажатии по вкладки: «Редактирование SQL базы» появится страница редактирования базы:
Рис. 7 Редактирование SQL базы.
На этой странице представлены следующие кнопки для различных операций с данными:
1. Поиск
2. Удалить
3. Добавить
4. Таблица результаты
5. Таблица клиенты
Операция «Поиск» позволит искать данные по критерию билет, если искомого билета будит не найдено то программа подаст запрос на его добавление.
Операция «Удалить» позволит удалять выделенные записи, в операции предусмотрен запрос на подтверждения удаление записи. В этом случае случайного удаления не будит.
Операция «Добавить» позволяет добавлять записи в базу, также предусмотрен запрос на добавление.
Пункты 4. и 5. Открывают указанные таблицы, интерфейс у них схожий, разность в некоторых параметрах их мы сейчас и рассмотрим.
Таблица « результаты »
На эту форму попадает информация о пользователях, которые проходят тестирование:
Рис. 8 Таблица результаты
1. Отчёт средствами: Office Excel
2. Возвращение на предыдущую форму
Это форма, на которой можно отслеживать результаты потенциальных сотрудников, выводить отчёт, пункт (1.) и удалять записи при необходимости.
Также можно вернутся на предыдущую форму пункт (2.)
Таблица клиенты имеет туже структуру и операции что и в этой таблицы, разница в табличном виде: (рис. 9).
Рис. 9 Таблица клиенты
Вкладка: « Выборка по дате »
Рис. 10 Выборка по дате
Данная форма позволяет вывести на экран и распечатать список потенциальных сотрудников сдавших тестирование за определенный период времени.
7. Экономическая часть
Для того чтобы данный проект был реализован на ООО ''Центр Автоматизации'' необходимо подсчитать годовой экономический эффект от внедрения программного продукта «Разработка электронного теста контроля знаний для соискателей работы в "1С-Франчайзинг”».
Экономический эффект - это, прежде всего, экономия денежных средств. В связи с тем, что реальной экономии добиться сложно, экономическим эффектом данного программного проекта будет экономия рабочего времени. Так как сотрудников мало, а заказчиков и работ, которые должен выполнить сотрудник, очень много, это программное обеспечение поможет сотруднику потратить меньшее количество времени.
Таблица 4. График затрат времени на разработку и внедрение проекта.
Этап разработки |
Характеристика |
Трудоёмкость ч. |
|
Постановка задачи |
Предпроектное обследование. Разработка, утверждение, технико-экономическое обследование. |
10 |
|
Составление технического проекта |
Уточнение структуры и формы представления входных и выходных данных (алгоритм и структура), Разработка плана мероприятий по проекту. Согласование утверждение технического проекта. |
40 |
|
Составление рабочего проекта |
Написание программы на языке программирования. Первоначальная отладка, тестирование. Разработка согласование и утверждения порядка и методики испытания. Корректировка программы. |
85 |
|
Документирование и внедрение |
Разработка программной документации. Сдача программы и программной документации. |
25 |
|
ИТОГО: |
160 ч. |
Затраты на внедрение проекта.
Коэффициент сложности задачи C характеризует сложность данной программы по отношению к типовой задаче, сложность которой принята за 1 (величина C лежит в пределах от 0,5 до 1). Для данной программы C равно 0,7 , так как в данной программе разработаны формы, имеющие в себе наиболее удобный поиск информации, всевозможные отчёты.
C = 0, 7 - коэффициент сложности программы
Коэффициент P увеличения объёма работ за счёт внесения изменений в алгоритм или программу по результатам уточнения установок. Коэффициент меняется от 0,1 до 0,5. Заказчик четко описал конечный результат, который должен выдаваться данным программным обеспечением, однако некоторые изменения и доработки все же придётся внести. Необходимо принять во внимание, что в данном случае заказчик не имел глубоких компьютерных знаний и не мог изначально объяснить задачу в целом. Это приводило к неоднократным доработкам, модернизациям и корректировке. Лучше всего взять среднее значение коэффициента.
Р = 0,3 - коэффициент увеличения работ
Коэффициент В - коэффициент увеличения затрат труда вследствие недостаточного описания задач. Коэффициент меняется от 1 до 1,5. В данном случае коэффициент В будет равен 1 , так как задача имеет достаточное описание для работы с ней.
В =1 - коэффициент увеличения затрат труда
Коэффициент К коэффициент квалификации разработчика, который зависит от стажа. Коэффициент К равен: для работающих до двух лет - 0,8; от трех до пяти - 1; от пяти до восьми - 1,2; более восьми лет - 1,5. Поскольку опыта у разработчика не достаточно, то коэффициент К мы берем равным 0,8.
К = 0,8 - коэффициент квалификации разработчика
ЗПосн = ЗП*С*(1+Р)*В*К
С учетом всех коэффициентов заработная плата в месяц составит: ЗПосн = 9000 * 0,7 * (1 + 0,3) * 1 * 0,8 = 6552 рублей/ месяц.
Дополнительная заработная плата высчитывается по формуле:
ЗПдоп = ЗПосн * К
К - размер премии в процентах. Премия работнику за это время не выплачивалась.
Общие затраты предприятия на заработную плату за период разработки ПО вычисляется по формуле:
ЗПсум = (ЗПосн + ЗПдоп)
Количество временных затрат на создание равно 160 часов.
Страховые отчисления берутся в размере 34% от ЗПсум. СО = 5956* 34% = 2025 рублей.
Суммарная затрата на оплату труда
ЗПобщ = ЗПсум + СО = (5956 + 2025) * 160 / (22*8) = 7182,9 рублей.
Содержание и эксплуатация вычислительной техники.
Время, затраченное на отладку программы (2 + 3 + 4 этапы из таблицы 1) равно 150 ч. Необходимо посчитать стоимость одного машинного часа по формуле:
(стоимость электроэнергии + амортизация + затраты на ремонт)/Фвт
Фвт - действительный фонд времени работы вычислительного комплекса.
Стоимость электроэнергии - 4 рубля за кВт/ч., потребление энергии - 300 Вт/ч.
8ч. * 22дня * 12 мес. * 0,3 кВт/ч * 4 рубля = 2534,4 рубля стоимость за год.
Амортизация зависит от срока эксплуатации компьютера, а т.к. срок эксплуатации компьютера на котором производилась разработка данного программного продукта - 3 года, то амортизация еще начисляется и учитывается в дальнейших подсчетах.
Амортизация = общая сумма / количество лет.
Стоимость ПК составила 21000 рублей, а количество лет полезного использования - 4 года. Амортизация = 21000 / 4 = 5250 руб./год.
На ремонт уходит 5 % от стоимости ПК. В данном случае на ремонт будет уходить 21000 * 5 % = 1050 рублей.
Действительный фонд времени работы вычислительного комплекса рассчитываем так:
Фвт = Фном - Фпроф
Фном - номинальный фонд времени работы вычислительного комплекса.
Фпроф - годовые затраты времени на профилактические работы (5% = 0,05).
Фвт=Фном -Фпроф= (8ч. * 22 дн. * 12 мес.) - (8ч.* 22 дн.* 12 мес.* 0,05)=2112-106=2006 ч.
Стоимость 1 машинного часа работы = (2534.4 + 5250+ 1050) / 2006 = 4.4 рубля.
Стоимость затрат всего равна 150 * 4.4 рубля = 660 рублей.
Работа с данным программным продуктом не требует приобретения нового компьютера, т.к. имеющийся ПК полностью соответствует системным требованиям. Наем нового работника не обязателен, т.к. данный продукт прост в использовании и имеет удобный пользовательский интерфейс, поэтому любой из имеющихся в штате служащих может легко научиться использовать данный программный продукт для экономии своих временных ресурсов.
Таблица 5 График затрат на разработку и внедрение проекта.
№ |
Наименование статьи расходов |
Затраты |
|
1 |
Зарплата суммарная исполнителя |
7182,9 руб. |
|
2 |
Страховые отчисления |
2025руб. |
|
3 |
Затраты на эксплуатацию ПК, используемого для написания программы |
660 руб. |
|
Итого: |
9867,9 руб. |
Экономический эффект.
Рассчитаем экономический эффект получаемый за счет сокращения времени на выполнение необходимых операций. Для этого нам потребуются следующие данные:
Т1 - время, которое занимала одна операция.
До внедрения программного обеспечения сотрудник выполнял примерно 10 операций по поиску и вводу данных в день. На одну операцию он тратил приблизительно 10 минут, т.к. определенную информацию приходилось искать в бумажных архивах. Т1 = 10 мин. = 0.16 часа.
Тестирование показало, что время выполнения операции после внедрения программного обеспечения стало занимать 5 минут вместо 8. Так как вся информация уже находится в базе и надо всего лишь открыть необходимую форму, которая выведет нам нужные данные; нет никакой необходимости отвлекать другого сотрудника от работы либо производить ручной поиск в архиве. Т2 = 5 мин. = 0.08 часа.
Мы сократили время на Т = Т1 - Т2 = 10 мин. - 5 мин. = 5 мин. = 0.08 часа.
Теперь рассчитаем стоимость работы сотрудника.
В месяц количество рабочих часов равно: 8 * 22 = 176.
Стоимость одного часа работы высчитывается по формуле: Pч = ЗП / 176. Заработная плата сотрудника составляет 12000 руб. / месяц. Тогда стоимость одного часа работы будет стоить 12000 / 176 = 68,2 руб.
Стоимость экономии страховых отчислений рассчитывается по формуле: Pсо = (ЗП * 0,26) / 176 = (12000 * 0,26) / 176 = 17,7 руб.
В итоге получается Pсум = Pч + Pсо = 68,2 + 17,7 = 85,9 руб.
Годовая экономия времени рассчитывается по формуле: Тгод = Т * Q * кол-во рабочих дней в месяц * кол-во месяцев = 0.08 * 10 * 22 * 12 = 211.2 часа.
Годовая экономия составит Тгод * Pсум = 211.2 * 85,9 = 18142 руб.
Вычтем затраты и определим экономический эффект:
18142 - 9867,9 = 8274 руб. в год
Теперь посчитаем, за какое количество времени окупится приложение: Т = затраты / ЭФ = 9867,9 / 18142 = 0,5 года.
Таким образом, если ООО «Центр Автоматизации» захочет реализовать у себя данный программный продукт, то он окупится за 6 месяцев.
Заключение
В данном дипломном проекте была разработана система электронного тестирования “ контроль знаний для соискателей работы в "1С-Франчайзинг”, а также создана административная часть которая нужна для редактирования билетов.
С помощью программного приложения технический секретарь может проводить в день большее количество предварительных испытаний; осуществлять поиск данных по различным критериям, а так же выводить на печать отчеты, необходимые для сверки результатов.
Созданная система электронного тестирования полностью соответствует п. 1. «Постановка задачи».
Была произведена оценка экономической эффективности от внедрения программного приложения, срок окупаемости 6 месяцев.
Литература
1. С.И. Бобровский «Borland Delphi». Издательство Питер, - 2011
2. Фленов М.Е. «Программирование в Delphi глазами Xakepa» Издательство «БХВ - Петербург», Санкт-Петербург, - 2014
3. М.П. Малыхина «Базы данных: основы, проектирование, использование» БХВ-Петербург, 2010 г
4. А.Б. Григорьев «О чем не пишут в книгах по Delphi» БХВ-Петербург, 2009 г
5. О.В. Чеснокова «Delphi. Алгоритмы и программы»
Приложение
Код программы для тестирования:
unit MainFRM;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls, ExtCtrls, DB, ADODB, jpeg, Grids, DBGrids,
DBCtrls, XPMan, sSkinManager, sEdit, sButton, sPageControl, sRadioButton,
sMemo, ToolWin, acCoolBar, Mask, sDBEdit, sComboBox, sTrackBar, sLabel, GIFImg,
acPNG, sBevel, sGauge, sToolBar, sTabControl, ImgList, acAlphaImageList,
ActnList, XPStyleActnCtrls, ActnMan, ActnCtrls, ActnMenus, sPanel, sGroupBox,
Menus, sDBText, Buttons, sBitBtn, OleCtrls, ShockwaveFlashObjects_TLB,
ShockwaveEx, ShockwaveList, sStatusBar, sDBNavigator, sSkinProvider,
RibbonLunaStyleActnCtrls, Ribbon, sHintManager;
type
TForm1 = class(TForm)
PageControl1: TsPageControl;
sTabSheet1: TsTabSheet;
sTabSheet2: TsTabSheet;
Image1: TImage;
Memo1: TsMemo;
RadioButton1: TsRadioButton;
RadioButton2: TsRadioButton;
RadioButton3: TsRadioButton;
RadioButton4: TsRadioButton;
RadioButton5: TsRadioButton;
sTabSheet3: TsTabSheet;
DataSource1: TDataSource;
ADOQuery1: TADOQuery;
sSkinManager1: TsSkinManager;
DataSource2: TDataSource;
sGroupBox1: TsGroupBox;
sDBEdit5: TsDBEdit;
sLabelFX3: TsLabelFX;
sLabelFX4: TsLabelFX;
sDBEdit4: TsDBEdit;
sDBEdit3: TsDBEdit;
sLabelFX2: TsLabelFX;
sDBEdit2: TsDBEdit;
sDBEdit1: TsDBEdit;
sLabelFX5: TsLabelFX;
sLabelFX1: TsLabelFX;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
sPanel1: TsPanel;
sDBText2: TsDBText;
sDBText4: TsDBText;
sBitBtn1: TsBitBtn;
sLabelFX6: TsLabelFX;
sEdit1: TsEdit;
sEdit2: TsEdit;
Timer1: TTimer;
ShockwaveFlashList1: TShockwaveFlashList;
Ed_FIO: TsEdit;
sButton1: TsButton;
sComboBox1: TsComboBox;
sButton5: TsButton;
sButton4: TsButton;
sButton6: TsButton;
sButton3: TsButton;
sButton2: TsButton;
sStatusBar1: TsStatusBar;
sLabelFX7: TsLabelFX;
sLabel1: TsLabel;
sLabel2: TsLabel;
sLabelFX8: TsLabelFX;
ADOTable1: TADOTable;
ADOTable2: TADOTable;
N11: TMenuItem;
sDBNavigator1: TsDBNavigator;
sHintManager1: TsHintManager;
procedure Next();
procedure FormCreate(Sender: TObject);
procedure RadioButton1Click(Sender: TObject);
procedure sButton1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure sComboBox1Change(Sender: TObject);
procedure actExecExecute(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N9Click(Sender: TObject);
procedure sButton3Click(Sender: TObject);
procedure sButton5Click(Sender: TObject);
procedure sButton4Click(Sender: TObject);
procedure sButton2Click(Sender: TObject);
procedure N8Click(Sender: TObject);
procedure N10Click(Sender: TObject);
procedure sButton6Click(Sender: TObject);
procedure sBitBtn1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Ed_FIOClick(Sender: TObject);
procedure N7Click(Sender: TObject);
procedure N11Click(Sender: TObject);
procedure sDBNavigator1Click(Sender: TObject; Button: TNavigateBtn);
procedure sBitBtn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
bilet, errcount : Integer;
errvopros, r : string;
implementation
uses About, ComObj;
{$R *.dfm}
var
min: integer;
sec: integer;
procedure ShowTime;
var
buf: string[20];
begin
if min < 10 then
buf := '0' + IntToStr(min) + ':'
else
buf := IntToStr(min) + ':';
if sec < 10 then
buf := buf + '0' + IntToStr(sec)
else
buf := buf + IntToStr(sec);
Form1.sLabelFX6.Caption := buf;
end;
procedure TForm1.actExecExecute(Sender: TObject);
begin
close();
end;
procedure TForm1.Ed_FIOClick(Sender: TObject);
begin
Ed_FIO.Clear;
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
sDBEdit6.Text:=DateTimeToStr(date);
ADOTable1.Active:=true;
ADOTable2.Active:=true;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var i, cavb : 0..255; begin if AlphaBlend=False then begin AlphaBlendValue:=255; AlphaBlend:=True; end; cavb:=AlphaBlendValue; for i := cavb downto 0 do begin AlphaBlendValue := i; Application.ProcessMessages; end end;
//////////////////////////////////////////////
procedure TForm1.FormCreate(Sender: TObject);
begin
PageControl1.TabIndex := 0;
sSkinManager1.GetSkinNames(sComboBox1.Items);
end;
procedure TForm1.N10Click(Sender: TObject);
begin
N10.Visible:=false;
N2.Visible:=true;
Ed_FIO.Visible:=false;
sButton1.Visible:=false;
end;
procedure TForm1.N11Click(Sender: TObject);
begin
Close();
end;
procedure TForm1.N2Click(Sender: TObject);
begin
Ed_FIO.Visible:=true;
sButton1.Visible:=true;
N10.Visible:=true;
N2.Visible:=false;
end;
procedure TForm1.N4Click(Sender: TObject);
begin
close();
end;
procedure TForm1.N7Click(Sender: TObject);
begin
Form2.showmodal;
end;
procedure TForm1.N8Click(Sender: TObject);
begin
sComboBox1.Visible:=true;
sButton5.Visible:=true;
sButton5.Visible:=false;
sButton4.Visible:=true;
sButton4.Visible:=false;
sButton2.Visible:=true;
sButton3.Visible:=true;
sButton6.Visible:=true;
end;
procedure TForm1.N9Click(Sender: TObject);
begin
if MessageDlg('Тестирование не завершено, вы уверены, что хотите закрыть программу?', mtConfirmation, mbOKCancel, 0) = mrOk
then Close();
end;
procedure TForm1.Next();
begin
if FileExists('Img\' + IntToStr(bilet) + '_' + IntToStr(ADOTable1.RecNo) + '.jpg') then
begin
Image1.Picture.LoadFromFile('Img\' + IntToStr(bilet) + '_' + IntToStr(ADOTable1.RecNo) + '.jpg');
end else begin
Null;
end;
Memo1.Text := ADOTable1.FieldByName('Caption').AsString;
RadioButton1.Caption := ADOTable1.FieldByName('Otvet_1').AsString;
RadioButton2.Caption := ADOTable1.FieldByName('Otvet_2').AsString;
if ADOTable1.FieldByName('Otvet_3').AsString <> '' then
begin
RadioButton3.Caption := ADOTable1.FieldByName('Otvet_3').AsString;
RadioButton3.Visible := True;
end;
if ADOTable1.FieldByName('Otvet_4').AsString <> '' then
begin
RadioButton4.Caption := ADOTable1.FieldByName('Otvet_4').AsString;
RadioButton4.Visible := True;
end;
if ADOTable1.FieldByName('Otvet_5').AsString <> '' then
begin
RadioButton5.Caption := ADOTable1.FieldByName('Otvet_5').AsString;
RadioButton5.Visible := True;
end;
end;
procedure TForm1.RadioButton1Click(Sender: TObject);
begin
if MessageDlg('Вы уверены в своём ответе?', mtConfirmation, mbOKCancel, 0) = mrCancel
then abort;
if (Sender as TRadioButton).Caption <> ADOTable1.FieldByName('Otvet_t').AsString then
begin
errcount := errcount + 1;
if errvopros = '' then
begin
errvopros := IntToStr(ADOTable1.RecNo);
end else begin
errvopros := errvopros + ', ' + IntToStr(ADOTable1.RecNo);
end;
end;
if ADOTable1.RecNo = 20 then // Количество вопросов в билете
begin
if errcount < 3 then
begin
r := 'Сдали';
end else begin
r := 'Не сдали';
end;
ADOQuery1.SQL.Text := 'INSERT INTO Results' +
'([FIO],[Bilet],[ErrCounts],[ErrVopros],[Result]) VALUES' +
'(N'''+ Ed_FIO.Text +''','+ IntToStr(bilet) +','+ IntToStr(errcount) +',N'''+ errvopros +''','+ 'N'''+ r +''')';
ADOQuery1.ExecSQL;
ADOTable2.Active:=false;
ADOTable2.Active:=true;
ADOTable2.Last;
PageControl1.TabIndex := 2;
N11.Visible:=true;
N9.Visible:=false;
Abort;
end;
ADOTable1.RecNo := ADOTable1.RecNo + 1;
RadioButton3.Visible := false;
RadioButton4.Visible := false;
RadioButton5.Visible := false;
Next;
(Sender as TRadioButton).Checked := false;
end;
procedure TForm1.sBitBtn1Click(Sender: TObject);
begin
PageControl1.TabIndex := 0;
Ed_FIO.Clear;
Ed_FIO.Text:= 'Введите ФИО';
ADOTable1.Active:=false;
ADOTable1.Active:=true;
ADOTable2.Active:=false;
ADOTable2.Active:=true;
N1.Visible:=true;
N2.Visible:=true;
N10.Visible:=false;
N8.Visible:=true;
N9.Visible:=false;
N11.Visible:=false;
Timer1.Enabled := false;
end;
procedure TForm1.sButton1Click(Sender: TObject);
begin
Ed_FIO.Visible:=false;
sButton1.Visible:=false;
N1.Visible:=false;
N9.Visible:=true;
N8.Visible:=false;
Randomize;
bilet := 1 + Random(5); // Количество выпадение случайного билета
ADOTable1.Filter := 'Bilets = ' + IntToStr(bilet);
ADOTable1.Filtered := True;
ADOTable1.RecNo := 1;
Next;
PageControl1.TabIndex := 1;
if Form1.Timer1.Enabled then
begin
Timer1.Enabled := False;
end
else
begin
min := StrToInt(sEdit1.Text);
sec := StrToInt(sEdit2.Text);
if (sec = 0) and (min = 0) then
begin
ShowMessage('Надо задать интервал!');
exit;
end;
Timer1.Enabled := True;
sLabelFX6.Visible := True;
ShowTime;
end;
end;
procedure TForm1.sButton2Click(Sender: TObject);
begin
sButton2.Visible:=false;
sButton5.Visible:=true;
sSkinManager1.ExtendedBorders:=false;
AlphaBlend:=false;
end;
procedure TForm1.sButton3Click(Sender: TObject);
begin
sButton4.Visible:=true;
sButton3.Visible:=false;
sSkinManager1.Active:=false;
sComboBox1.Enabled:=false;
sButton2.Enabled:=false;
sButton5.Enabled:=false;
end;
procedure TForm1.sButton4Click(Sender: TObject);
begin
sButton4.Visible:=false;
sButton3.Visible:=true;
sSkinManager1.Active:=true;
sComboBox1.Enabled:=true;
sButton2.Enabled:=true;
sButton5.Enabled:=true;
end;
procedure TForm1.sButton5Click(Sender: TObject);
begin
sButton2.Visible:=true;
sButton5.Visible:=false;
sSkinManager1.ExtendedBorders:=true;
AlphaBlend:=true;
end;
procedure TForm1.sButton6Click(Sender: TObject);
begin
sComboBox1.Visible:=false;
sButton5.Visible:=false;
sButton5.Visible:=false;
sButton4.Visible:=false;
sButton4.Visible:=false;
sButton2.Visible:=false;
sButton3.Visible:=false;
sButton6.Visible:=false;
end;
procedure TForm1.sComboBox1Change(Sender: TObject);
begin
sSkinManager1.SkinName:=sComboBox1.Items[sComboBox1.ItemIndex];
end;
procedure TForm1.sDBNavigator1Click(Sender: TObject; Button: TNavigateBtn);
begin
RadioButton3.Visible := false;
RadioButton4.Visible := false;
RadioButton5.Visible := false;
Next;
if FileExists('Img\' + IntToStr(bilet) + '_' + IntToStr(ADOTable1.RecNo) + '.jpg') then
begin
Image1.Picture.LoadFromFile('Img\' + IntToStr(bilet) + '_' + IntToStr(ADOTable1.RecNo) + '.jpg');
end else begin
Null;
end;
Memo1.Text := ADOTable1.FieldByName('Caption').AsString;
RadioButton1.Caption := ADOTable1.FieldByName('Otvet_1').AsString;
RadioButton2.Caption := ADOTable1.FieldByName('Otvet_2').AsString;
if ADOTable1.FieldByName('Otvet_3').AsString <> '' then
begin
RadioButton3.Caption := ADOTable1.FieldByName('Otvet_3').AsString;
RadioButton3.Visible := True;
end;
if ADOTable1.FieldByName('Otvet_4').AsString <> '' then
begin
RadioButton4.Caption := ADOTable1.FieldByName('Otvet_4').AsString;
RadioButton4.Visible := True;
end;
if ADOTable1.FieldByName('Otvet_5').AsString <> '' then
begin
RadioButton5.Caption := ADOTable1.FieldByName('Otvet_5').AsString;
RadioButton5.Visible := True;
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
sec := sec - 1;
ShowTime; // показать, скока времени осталось
if (min = 0) and (sec = 0) then
begin
Timer1.Enabled := False;
ShowMessage('Время вышло!');
sLabelFX6.Visible := False;
form1.Close;
exit;
end;
if (sec = 0) and (min > 0) then
begin
sec := 60;
min := min - 1;
end;
end;
end.
Код программы для Административной части (Admin SQL):
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, sLabel, ComCtrls, sStatusBar, sSkinManager, sPageControl,
OleCtrls, ShockwaveFlashObjects_TLB, ShockwaveEx, ShockwaveList, ExtCtrls,
sPanel, sDBNavigator, DB, ADODB, Mask, DBCtrls, sDBEdit, sGroupBox, ToolWin,
sToolBar, ImgList, acAlphaImageList, sHintManager, acAlphaHints, sEdit,
sButton, Grids, DBGrids, acDBGrid;
type
TForm1 = class(TForm)
sPageControl1: TsPageControl;
sTabSheet1: TsTabSheet;
sTabSheet2: TsTabSheet;
sSkinManager1: TsSkinManager;
sStatusBar1: TsStatusBar;
sLabelFX1: TsLabelFX;
ShockwaveFlashList1: TShockwaveFlashList;
sGroupBox1: TsGroupBox;
sDBEdit1: TsDBEdit;
sDBEdit2: TsDBEdit;
sDBEdit3: TsDBEdit;
sDBEdit4: TsDBEdit;
sDBEdit5: TsDBEdit;
sDBEdit6: TsDBEdit;
DataSource1: TDataSource;
ADOTable1: TADOTable;
sDBEdit7: TsDBEdit;
sDBEdit8: TsDBEdit;
sDBEdit9: TsDBEdit;
sDBEdit10: TsDBEdit;
sDBNavigator1: TsDBNavigator;
sLabelFX2: TsLabelFX;
sLabelFX3: TsLabelFX;
sLabelFX4: TsLabelFX;
sLabelFX5: TsLabelFX;
sLabelFX6: TsLabelFX;
sLabelFX7: TsLabelFX;
sLabelFX8: TsLabelFX;
sLabelFX9: TsLabelFX;
sLabelFX10: TsLabelFX;
sLabelFX11: TsLabelFX;
sToolBar1: TsToolBar;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
sAlphaImageList1: TsAlphaImageList;
sHintManager1: TsHintManager;
sEdit1: TsEdit;
sButton1: TsButton;
ToolButton4: TToolButton;
sButton2: TsButton;
ToolButton8: TToolButton;
ADOTable2: TADOTable;
DataSource2: TDataSource;
sGroupBox2: TsGroupBox;
sLabelFX12: TsLabelFX;
sLabelFX13: TsLabelFX;
sLabelFX14: TsLabelFX;
sLabelFX15: TsLabelFX;
sLabelFX16: TsLabelFX;
sDBEdit11: TsDBEdit;
sDBEdit12: TsDBEdit;
sDBEdit13: TsDBEdit;
sDBEdit14: TsDBEdit;
sDBEdit15: TsDBEdit;
sDBNavigator2: TsDBNavigator;
sToolBar2: TsToolBar;
ToolButton5: TToolButton;
ToolButton6: TToolButton;
ToolButton7: TToolButton;
sButton3: TsButton;
sDBEdit16: TsDBEdit;
sLabelFX17: TsLabelFX;
sGroupBox3: TsGroupBox;
sLabelFX18: TsLabelFX;
sLabelFX19: TsLabelFX;
sDBEdit17: TsDBEdit;
sDBNavigator3: TsDBNavigator;
sToolBar3: TsToolBar;
ToolButton9: TToolButton;
ToolButton10: TToolButton;
ToolButton11: TToolButton;
sButton4: TsButton;
sDBEdit18: TsDBEdit;
sDBGrid1: TsDBGrid;
sButton5: TsButton;
sButton6: TsButton;
ToolButton12: TToolButton;
procedure sEdit1Click(Sender: TObject);
procedure ToolButton1Click(Sender: TObject);
procedure ToolButton2Click(Sender: TObject);
procedure sButton1Click(Sender: TObject);
procedure ToolButton3Click(Sender: TObject);
procedure ToolButton4Click(Sender: TObject);
procedure ToolButton8Click(Sender: TObject);
procedure ToolButton7Click(Sender: TObject);
procedure ToolButton5Click(Sender: TObject);
procedure ToolButton6Click(Sender: TObject);
procedure ToolButton9Click(Sender: TObject);
procedure sButton5Click(Sender: TObject);
procedure sButton6Click(Sender: TObject);
procedure ToolButton10Click(Sender: TObject);
procedure ToolButton12Click(Sender: TObject);
procedure ToolButton11Click(Sender: TObject);
procedure sButton2Click(Sender: TObject);
procedure sButton3Click(Sender: TObject);
procedure sButton4Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses ComObj;
{$R *.dfm}
procedure TForm1.FormActivate(Sender: TObject);
begin
ADOTable1.Active:=true;
ADOTable2.Active:=true;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
end;
procedure TForm1.sButton1Click(Sender: TObject);
begin
if not Adotable1.Locate('bilets',sedit1.Text, []) then
if MessageDlg('Такого билета в базе нет, добавить?', mtConfirmation, mbOKCancel, 0) = mrOk
then Adotable1.Insert;
end;
procedure TForm1.sButton2Click(Sender: TObject);
begin
WinExec('hh.exe Help.chm',SW_NORMAL);
end;
procedure TForm1.sButton3Click(Sender: TObject);
begin
WinExec('hh.exe Help2.chm',SW_NORMAL);
end;
procedure TForm1.sButton4Click(Sender: TObject);
begin
WinExec('hh.exe Help3.chm',SW_NORMAL);
end;
procedure TForm1.sButton5Click(Sender: TObject);
begin
sGroupBox3.Height:=326;
sGroupBox3.Width:=502;
sDBGrid1.Visible:=true;
sButton5.Visible:=false;
sButton6.Visible:=true;
end;
procedure TForm1.sButton6Click(Sender: TObject);
begin
sGroupBox3.Height:=103;
sGroupBox3.Width:=502;
sDBGrid1.Visible:=false;
sButton5.Visible:=true;
sButton6.Visible:=false;
end;
procedure TForm1.sEdit1Click(Sender: TObject);
begin
sEdit1.Clear;
end;
procedure TForm1.ToolButton10Click(Sender: TObject);
var app,book,sheet:Variant;
i:integer;
CurDir:string;
begin
app:=CreateOleObject('Excel.Application');
book:=app.WorkBooks.Add;
book.Worksheets[3].Delete;
book.Worksheets[2].Delete;
book.Worksheets[1].Name:='Отчёт по клиентам';
sheet:=book.Worksheets[1];
Form1.ADOTable2.First;
sheet.Range['B1']:='ФИО';
sheet.Range['C1']:='Результат:';
sheet.Range['b1:c1'].Borders[7].LineStyle:=1;
sheet.Range['B1:c1'].Borders[7].Weight:=-4138;
sheet.Range['B1:c1'].Borders[7].ColorIndex:=-4105;
sheet.Range['B1:c1'].Borders[8].LineStyle:=1;
sheet.Range['B1:c1'].Borders[8].Weight:=-4138;
sheet.Range['B1:c1'].Borders[8].ColorIndex:=-4105;
sheet.Range['B1:c1'].Borders[9].LineStyle:=1;
sheet.Range['B1:c1'].Borders[9].Weight:=-4138;
sheet.Range['B1:c1'].Borders[9].ColorIndex:=-4105;
sheet.Range['B1:c1'].Borders[10].LineStyle:=1;
sheet.Range['B1:c1'].Borders[10].Weight:=-4138;
sheet.Range['B1:c1'].Borders[10].ColorIndex:=-4105;
Sheet.Columns['B:B'].columnWidth:=21;
Sheet.Columns['C:C'].columnWidth:=10;
for i:=1 to Form1.ADOTable2.RecordCount do
begin
sheet.Cells[i+1,2].Borders[7].LineStyle:=1;
sheet.Cells[i+1,2].Borders[7].Weight:=-4138;
sheet.Cells[i+1,2].Borders[7].ColorIndex:=-4105;
sheet.Cells[i+1,6].Borders[10].LineStyle:=1;
sheet.Cells[i+1,6].Borders[10].Weight:=-4138;
sheet.Cells[i+1,6].Borders[10].ColorIndex:=-4105;
sheet.Cells[i+1,2]:=Form1.ADOTable2.FieldByName('FIO').AsString;
sheet.Cells[i+1,3]:=Form1.ADOTable2.FieldByName('Result').AsString;
Form1.ADOTable2.Next;
end;
for i:=2 to 6 do
begin
sheet.Cells[Form1.ADOTable2.RecordCount+1,i].Borders[9].LineStyle:=1;
sheet.Cells[Form1.ADOTable2.RecordCount+1,i].Borders[9].Weight:=-4138;
sheet.Cells[Form1.ADOTable2.RecordCount+1,i].Borders[9].ColorIndex:=-4105;
end;
CurDir:=GetCurrentDir;
app.DisplayAlerts:=false;
book.SaveAs(CurDir+'\Отчёт по клиентам.xls');
app.Visible:=true;
end;
procedure TForm1.ToolButton11Click(Sender: TObject);
begin
sGroupBox1.Visible:=true;
sGroupBox3.Visible:=false;
end;
procedure TForm1.ToolButton12Click(Sender: TObject);
begin
sGroupBox1.Visible:=false;
sGroupBox3.Visible:=true;
end;
procedure TForm1.ToolButton1Click(Sender: TObject);
begin
sGroupBox1.Height:=326;
sGroupBox1.Width:=606;
ToolButton1.Visible:=false;
ToolButton2.Visible:=true;
sEdit1.Visible:=true;
sButton1.Visible:=true;
end;
procedure TForm1.ToolButton2Click(Sender: TObject);
begin
sGroupBox1.Height:=326;
sGroupBox1.Width:=502;
ToolButton1.Visible:=true;
ToolButton2.Visible:=false;
sEdit1.Visible:=false;
sButton1.Visible:=false;
end;
procedure TForm1.ToolButton3Click(Sender: TObject);
begin
if MessageDlg('Вы уверены, что хотите удолить эту запись?', mtConfirmation, mbOKCancel, 0) = mrOk
then Adotable1.Delete;
end;
procedure TForm1.ToolButton4Click(Sender: TObject);
begin
adotable1.Insert;
end;
procedure TForm1.ToolButton5Click(Sender: TObject);
begin
if MessageDlg('Вы уверены, что хотите удолить эту запись?', mtConfirmation, mbOKCancel, 0) = mrOk
then Adotable2.Delete;
end;
procedure TForm1.ToolButton6Click(Sender: TObject);
var app,book,sheet:Variant;
i:integer;
CurDir:string;
begin
app:=CreateOleObject('Excel.Application');
book:=app.WorkBooks.Add;
book.Worksheets[3].Delete;
book.Worksheets[2].Delete;
book.Worksheets[1].Name:='Отчёт';
sheet:=book.Worksheets[1];
Form1.ADOTable2.First;
sheet.Range['B1']:='ФИО';
sheet.Range['C1']:='Билет №:';
sheet.Range['d1']:='Количество ошибок';
sheet.Range['e1']:='Ошибка в билете:';
sheet.Range['f1']:='Результат';
sheet.Range['b1:F1'].Borders[7].LineStyle:=1;
sheet.Range['B1:F1'].Borders[7].Weight:=-4138;
sheet.Range['B1:F1'].Borders[7].ColorIndex:=-4105;
sheet.Range['B1:F1'].Borders[8].LineStyle:=1;
sheet.Range['B1:F1'].Borders[8].Weight:=-4138;
sheet.Range['B1:F1'].Borders[8].ColorIndex:=-4105;
sheet.Range['B1:F1'].Borders[9].LineStyle:=1;
sheet.Range['B1:F1'].Borders[9].Weight:=-4138;
sheet.Range['B1:F1'].Borders[9].ColorIndex:=-4105;
sheet.Range['B1:F1'].Borders[10].LineStyle:=1;
sheet.Range['B1:F1'].Borders[10].Weight:=-4138;
sheet.Range['B1:F1'].Borders[10].ColorIndex:=-4105;
Sheet.Columns['B:B'].columnWidth:=21;
Sheet.Columns['C:C'].columnWidth:=10;
Sheet.Columns['D:D'].columnWidth:=18;
Sheet.Columns['E:E'].columnWidth:=53;
Sheet.Columns['F:F'].columnWidth:=12;
for i:=1 to Form1.ADOTable2.RecordCount do
begin
sheet.Cells[i+1,2].Borders[7].LineStyle:=1;
sheet.Cells[i+1,2].Borders[7].Weight:=-4138;
sheet.Cells[i+1,2].Borders[7].ColorIndex:=-4105;
sheet.Cells[i+1,6].Borders[10].LineStyle:=1;
sheet.Cells[i+1,6].Borders[10].Weight:=-4138;
sheet.Cells[i+1,6].Borders[10].ColorIndex:=-4105;
sheet.Cells[i+1,2]:=Form1.ADOTable2.FieldByName('FIO').AsString;
sheet.Cells[i+1,3]:=Form1.ADOTable2.FieldByName('BILET').AsString;
sheet.Cells[i+1,4]:=Form1.ADOTable2.FieldByName('errcounts').AsInteger;
sheet.Cells[i+1,5]:=Form1.ADOTable2.FieldByName('ErrVopros').AsString;
sheet.Cells[i+1,6]:=Form1.ADOTable2.FieldByName('Result').AsString;
Form1.ADOTable2.Next;
end;
for i:=2 to 6 do
begin
sheet.Cells[Form1.ADOTable2.RecordCount+1,i].Borders[9].LineStyle:=1;
sheet.Cells[Form1.ADOTable2.RecordCount+1,i].Borders[9].Weight:=-4138;
sheet.Cells[Form1.ADOTable2.RecordCount+1,i].Borders[9].ColorIndex:=-4105;
end;
CurDir:=GetCurrentDir;
app.DisplayAlerts:=false;
book.SaveAs(CurDir+'\Отчёт.xls');
app.Visible:=true;
end;
procedure TForm1.ToolButton7Click(Sender: TObject);
begin
sGroupBox2.Visible:=false;
sGroupBox1.Visible:=true;
end;
procedure TForm1.ToolButton8Click(Sender: TObject);
begin
sGroupBox2.Visible:=true;
sGroupBox1.Visible:=false;
end;
procedure TForm1.ToolButton9Click(Sender: TObject);
begin
if MessageDlg('Вы уверены, что хотите удолить эту запись?', mtConfirmation, mbOKCancel, 0) = mrOk
then Adotable2.Delete;
end;
end.
Размещено на Allbest.ru
...Подобные документы
Построение концептуальной модели базы данных. Физическое проектирование программы для автоматизации работы пользователя в Microsoft Access. Разработка системы запросов информации на основе таблиц и получения необходимых отчетов в требуемых формах.
курсовая работа [2,9 M], добавлен 08.05.2015Установка "Microsoft SQL SERVER 2012". Создание файла данных, журнала транзакций, таблиц, запросов и фильтров, диаграмм и триггеров, табличных форм и отчетов. Подключение файла данных к проекту. Создание простых и сложных ленточных форм для работы с ними.
курсовая работа [1,9 M], добавлен 13.12.2013Программные продукты, используемые при проектировании базы данных. Разработка базы данных "Библиотека" с использование программного проекта Microsoft SQL Server. Создание таблиц, триггеров, пользователей, репликации, запросов, функций, процедур.
курсовая работа [897,6 K], добавлен 21.11.2011Основные черты концепции базы данных, общие сведения об архитектуре. Виды аппаратных сбоев. Основные подходы к программному обеспечению. Руководство разработчиков базы данных "Прокат CD-DVD дисков". Создание таблиц и связей, запросов, форм, отчетов.
курсовая работа [821,3 K], добавлен 30.09.2012Минимальные системные требования к техническому и программному обеспечению для применения базы данных. Структура базы данных, создание таблиц (сотрудники, контакты, контракты, клиенты), запросов и форм. Описание действий при работе с базой данных.
практическая работа [1,0 M], добавлен 13.02.2011Таблицы и логические структуры базы данных аптеки готовых лекарственных форм. Проектирование таблиц, детальное описание полей подсистем, заполнение таблиц информацией. Разработка запросов, создание форм. Формирование отчетов, инструкция пользователю.
курсовая работа [3,4 M], добавлен 29.04.2010Программа перенесения данных из таблицы Word в таблицу базы данных. Алгоритм решения задачи в виде текстового описания. Описание базы данных (структура таблиц, схема). Копии с экрана форм для работы с базой данных при разработке их в конструкторе.
контрольная работа [914,3 K], добавлен 26.03.2011Концептуальное проектирование базы данных: разработка схемы и структуры таблиц, описание атрибутов. Реализация базы данных в среде СУБД MS SQL Server 2000. Основные принципы создания таблиц. Доступ и обработка данных с помощью утилиты Enterprise Manager.
курсовая работа [3,8 M], добавлен 22.01.2013Написание программы для работы со списком документов, разработка функционала. Требования к аппаратному и программному обеспечению. Описание интерфейса пользователя. Структура программы и описание данных. Процедура тестирования и его результаты.
курсовая работа [1,5 M], добавлен 26.08.2012Характеристика, классификация и структура баз данных. Модель базы данных в Delphi. Разработка базы данных для вуза с целью облегчения процесса поиска нужной информации о студенте. Требования к техническому, методическому и программному обеспечению.
курсовая работа [1,0 M], добавлен 18.08.2009Формирование входных и выходных данных, SQL–скрипт генерации таблиц базы данных. Создание интерфейса программного приложения и проектирование форм базы данных. Требования к аппаратно–программному обеспечению. Инструкции по установке и эксплуатации.
курсовая работа [1,6 M], добавлен 08.02.2013Разработка модуля автоматизации продажи автозапчастей. Проектирование информационной системы на основе базы данных в среде Microsoft SQL Server 2008. Структуры диалога и программного обеспечения. Описание запросов и отчетов к БД. Создание средств защиты.
курсовая работа [1,1 M], добавлен 10.12.2014Характеристика Microsoft Access. Создание структуры базы данных. Определение основных тем таблиц базы данных и информации, которую будут содержать поля таблиц. Создание таблиц, запросов, форм и отчетов. Страницы доступа к данным. Макросы и модули.
курсовая работа [1,1 M], добавлен 09.12.2012Разработка простейшей базы данных с использованием приемов работы с Microsoft Access в среде программирования Delphi. Назначение базы данных, условия эксплуатации, выполнения и запуска программы "База данных районного отдела налоговой инспекции".
курсовая работа [1,3 M], добавлен 14.12.2012Разработка программы обработки типизированных файлов с кодом на языке Object Pascal, с использованием компонентов Delphi для ввода и вывода данных. Разработка экранных форм и алгоритма программы. Описание программных модулей и инструкция оператору.
курсовая работа [1,5 M], добавлен 08.02.2011Структура простейшей базы данных и свойства полей. Характеристика типов данных. Описание процесса создания базы данных, таблиц и связей между ними, простых и составных форм, запросов в Microsoft Access. Пример составления подчинённых отчетов и макросов.
курсовая работа [2,9 M], добавлен 14.11.2016Построение концептуальной модели. Создание таблиц, входящих в состав базы данных. Разработка основных запросов, отчетов о количестве учеников в данном классе и работе школы; форм для просмотра и редактирования данных в программе Microsoft Access.
курсовая работа [2,7 M], добавлен 08.05.2015Разработка программного приложения по учёту клиентов ОВО при ОВД по Боровскому району. Требования к техническому и программному обеспечению. Аномалии и защитное программирование. Структура таблиц для хранения информации и описание алгоритмов ее обработки.
курсовая работа [3,9 M], добавлен 17.07.2014Создание базы данных "Компьютерные игры": разработка и дизайн интерфейса, наполнение таблиц информацией, формирование идентификаторов. Использование системы управления базами данных Microsoft Access для составления стандартных запросов, форм и отчетов.
курсовая работа [715,7 K], добавлен 29.01.2011Описание предметной области. Концептуальное проектирование базы данных. Разработка базы данных оптового склада. Требования, предъявляемые к аппаратному и программному обеспечению Borland Delphi 7.0 и MySQL. Работа с базой данных оптового склада.
курсовая работа [705,8 K], добавлен 18.06.2015