Информационно-аналитическая система для оформления командировочных документов
Курсовая
работа
по дисциплине
«Информатика»
на тему:
«Информационно-аналитическая система для оформления командировочных документов»
Оглавление
Введение
. ПРОЕКТИРОВАНИЕ ДАННЫХ
.1 ИСХОДНЫЕ ДАННЫЕ
.2 СТРУКТУРА БАЗЫ ДАННЫХ
.3 СВЯЗЬ МЕЖДУ ТАБЛИЦАМИ
. ПРОЕКТИРОВАНИЕ И РАЗРАБОТКА АЛГОРИТМОВ
.1 ФОРМА «Список преподавателей»
.2 ФОРМА «Список командировок»
. РАЗРАБОТКА ИНТЕРФЕЙСА
.1 Основная форма
.2 Форма «Преподаватели»
.3 Форма «КомандироВки»
. СПРАВОЧНАЯ СИСТЕМА
ЗАКЛЮЧЕНИЕ
СПИСОК ИСПОЛЬЗОВАННОЙ
ЛИТЕРАТУРЫ
Введение
Темой данной курсовой работы является разработка
информационно-аналитической системы для оформления командировочных документов.
Такая программа будет иметь широкий круг организация. Основными
информационно-аналитической системы является возможность ведения учета
сотрудников фирмы, всех командировок, вывод на печать готовых для командировки
документов.
Данная информационно-аналитическая система была создана с помощью
редактора Visual Basic в среде пакета Microsoft Excel 2007. Данный пакет выбран для среды разработки за
свои качества , такие как :
. Доступность самого пакета MS Office 2007
. Благодаря встроенным функциям находить простые решения
. Программа сама находит ошибки кода и выделяет их.
1. ПРОЕКТИРОВАНИЕ ДАННЫХ
.1 ИСХОДНЫЕ ДАННЫЕ
Для разработки информационно-аналитической системы была создана рабочая
книга Microsoft Excel, содержащая 6 рабочих листов: Преподаватели, Места
командировок , Командировки , Лист1, Лист2, Лист3.
Исходная информация находится в таблицах «Преподаватели» (ФИО, Паспорт,
Ученая степень, Кафедра, Должность)
«Командировки» (ФИО, паспорт, город, организация, дата начала, дата
конца, кафедра, должность, цель)
Таблица «Города» содержит в себе все города России .
1.2 СТРУКТУРА БАЗЫ ДАННЫХ
Первая таблица содержит в себе список всех преподавателей, их паспортные
данные, кафедру, учёную степень, занимаемую должность. Имеет поля:
Название поля
|
Формат
|
Допустимые значения
|
ФИО
|
Текстовый
|
Текст
|
Паспорт
|
Числовой
|
Число
|
Уч. степень
|
Текстовый
|
Текст
|
Кафедра
|
Текстовый
|
Текст
|
Должность
|
Текстовый
|
текст
|
Вторая таблица содержит список возможных городов отправки.
Название
|
Формат
|
Допустимые значения
|
Города
|
Текстовый
|
Текст
|
Третья таблица содержит в себе историю командировок всех преподавателей
формирующуюся в порядке отправки преподавателя в командировку.
Название
|
Формат
|
Допустимые значения
|
ФИО
|
Текстовый
|
Текст
|
Паспорт
|
Числовой
|
Числа
|
Город
|
Текстовый
|
Текст
|
Текстовый
|
Текст
|
Дата начала
|
Дата
|
Числа
|
Дата конца
|
Дата
|
Числа
|
Кафедра
|
Текстовый
|
Текст
|
Должность
|
Текстовый
|
Текст
|
Цель
|
Текстовый
|
Текст
|
1.3 СВЯЗЬ МЕЖДУ ТАБЛИЦАМИ
Связь между таблицами организуется через форму отправки в командировку
2. ПРОЕКТИРОВАНИЕ И РАЗРАБОТКА АЛГОРИТМОВ
В этой главе будет рассматриваться разработка алгоритмов и программных
кодов для различных элементов пользовательских форм информационно-аналитической
системы.
Главная форма этой системы открывается автоматически с открытием книги Excel. Так же во время открытия книги
автоматически проверяется наличие папки "Командировочные листы для
печати", если же её нет происходит её создание .Это происходит с помощью
макроса:
Private Sub Workbook_Open()
If Dir("C:\Командировочные листы для печати", vbDirectory) = ""
Then
MkDir "C:\Командировочные листы для печати"
End If.ShowSub
«Командировочные листы для печати» эта папка является хранилищем готовых
к печати документов.
Так же главная форма содержит три кнопки. Кнопка «Начать работу»
открывает вторую форму и имеет следующий код :
Private Sub CommandButton1_Click()UserForm12.Show
End Sub
Кнопка «О программе» выводит форму содержащую информацию о программе и её
создателе, имей такой код:
Private Sub CommandButton3_Click().Show
End Sub
Кнопка «Выход» закрывает данную форму :
Private Sub CommandButton2_Click()Sub
Как было сказано ранее, нажатием на
кнопку «Начать работу» осуществляется вызов второй пользовательской формы Эта
форма позволяет непосредственно вызывать формы «Список преподавателей», «Список
командировок » и «Назад», нажимая на одноименные кнопки. Кнопка «Назад» служит
для закрытия второй формы и возврата на главную , используя код:
Private Sub CommandButton2_Click()UserForm21.Show
End Sub
2.1 ФОРМА «Список преподавателей»
Эта форма содержит в себе ListBox
в который выводится список преподавателей с одноименного листа рабочей книги.
Позволяет добавлять, удалять, изменять список. А так же перейти к отправке в
командировку или вернуться на прошлую форму. Все эти действия выполняются
одноименными кнопками «Добавить работника», «Удалить», «Отправить в
командировку», «Закрыть».
Информация о преподавателях содержащаяся на первом листе рабочей книги
выводится в Listbox, находящийся на форме. Его
заполнение и сортировка списка по фамилии происходят автоматически.
Используется следующий код:
Код формы: Private Sub UserForm_Initialize()
‘происходит задание ширины столбцов в порядке очереди и заполнение
ListBox1.ColumnWidths =
"200;90;80;60;60;80;60;60;200"= Sheets("Преподаватели").UsedRange.Rows.Count.RowSource
= "A2:H" + Trim(Str(i))
‘автоматическая сортировка списка по первому столбцу, со второй строки
Range("A:E").Sort _:=Range("A2"),
Order1:=xlAscending, _:=xlGuess, OrderCustom:=1, MatchCase:=False,
Orientation:= _, DataOption1:=xlSortNormalSub
Рассмотрим коды следующий кнопок и действий.
Код кнопки добавить и последующий форме.
Этот код выводит одноименную форму содержащую TextBox для добавления в таблицу записи. Подобная система
вывода форма выбрана мной для того чтобы основные окна формы не были
переполнены различными элементами.
‘выводится форма добавления
Sub CommandButton4_Click()UserForm3.ShowSub
Данная форма имеет 5 TextBox
и 2 CommandButton.
Код кнопки «Добавить»:
Private Sub
CommandButton1_Click()("Преподаватели").Activate
Dim i As Integer=
Sheets("Преподаватели").UsedRange.Rows.Count + 1("Преподаватели").Cells(i,
1) = TextBox1.Value("Преподаватели").Cells(i, 2) =
TextBox2.Value("Преподаватели").Cells(i, 3) =
TextBox3.Value("Преподаватели").Cells(i, 4) =
TextBox4.Value("Преподаватели").Cells(i, 5) = TextBox5.Value
MsgBox ("Работник добавлен").Value = ""
TextBox2.Value = "".Value = "".Value =
"".Value = ""Sub
Используя присваивание, после нажатия на кнопку «Добавить», введенный
текст помещается в первую пустую строчку листа «Преподаватели».
Код кнопки «Выход».
Private Sub CommandButton2_Click()UserForm5.ShowSub
Закрывает форму добавления и возвращает нас на форму «Список
преподавателей».
Далее на форме «Список преподавателей» есть кнопка «Удалить».
Её код:
Private Sub CommandButton2_Click()(1).Activaten As Integer n
= 0
n = MsgBox("Данные будут удалены" & Chr(10) &
"Хотите продолжить?", vbOKCancel, "Удаление")
If n = 1 Then= ListBox1.ListIndex.Rows(i + 2).Delete("Данные удалены")("Удаление отменено")If= Sheets("Преподаватели").UsedRange.Rows.Count.RowSource = "A2:H" +
Trim(Str(i))UserForm3.ShowSub
При нажатии на эту кнопку для безопасности данных выводится окно с
вопросом о точности ваших намерений. При согласии данные выбранной строки
удалятся и список ниже выделенной строки поднимется на строку выше. После чего
произойдет обновление списка.
Кнопка «Изменить»
Изменяет выделенную строку в Listbox
Её код:
‘показываем что необходимо изменить выделенную строку
a = ListBox1.List: i = ListBox1.ListIndex
‘количество столбцов в выделенной строке и количество запросов, конечное
число ставится на 1 меньше реального количества.
For j = 0 To 4
s = InputBox("Столбец " & j + 1, "Введите новые
данные", a(i, j))
Sheets("Преподаватели").Cells(i + 2, j + 1)
= s
Next= Sheets("Преподаватели").UsedRange.Rows.Count.RowSource = "A2:H" +
Trim(Str(i))
End Sub
Поочередно на экран выводятся запросы с изменением записи в таблице в
порядке заполнения. Обновление происходит после закрытия последнего окна.
Кнопка «Отправить в командировку»
Кнопка выводит на экран форму для заполнения:
Private Sub CommandButton5_Click()UserForm3
‘следующая строка добавляет имя выделенной строки в форму отправки, в
следствии чего форма данных на данного человека заполняется автоматически
UserForm3.TextBox1.Text = UserForm4.ComboBox1.Text.Show
End Sub
В данной форме мы заполняем данные для составления документа об отправке
человека в командировку.
Код формы:
Заполнение двух открывающихся списков происходит с помощью кода:
Private Sub UserForm_Initialize()
‘заполнение ComboBox1= 2Until
Sheets("Преподаватели").Cells(i, 1) =
Empty.AddItem Sheets("Преподаватели").Cells(i, 1)= i + 1
‘заполнение ComboBox2= 2Until
Sheets("Места командировок").Cells(i, 1) = Empty.AddItem Sheets("Места командировок").Cells(i, 1)
i = i + 1Sub
Для ускорения процесса заполнения при выборе преподавателя его данные
автоматически заполняют соответствующие текстовые поля.
Для этого используется следующий код:
Private Sub ComboBox1_Click()Combo Box1.Text = Sheets("Преподаватели"). Cells(ComboBox1.ListIndex +
2, 1) Then= Sheets ("Преподаватели"). Cells(ComboBox1.ListIndex + 2, 4)IfCombo Box1.Text =
Sheets("Преподаватели"). Cells (ComboBox1.ListIndex + 2, 1) Then=
Sheets ("Преподаватели"). Cells
(ComboBox1.ListIndex + 2, 3)IfCombo Box1.Text = Sheets("Преподаватели"). Cells (ComboBox1.ListIndex + 2, 1) Then=
Sheets ("Преподаватели").
Cells(ComboBox1.ListIndex + 2, 2)IfComboBox1.Text = Sheets("Преподаватели"). Cells(ComboBox1.ListIndex +
2, 1) Then= Sheets ("Преподаватели"). Cells(ComboBox1.ListIndex + 2, 5)
End IfSub
Текстовые поля с выбором даты связаны с формами на которых находится
календари. При нажатии на них пользователю будет выводится удобный календарь.
После выбора даты она автоматически будет помещена в текстовое поле с указанном
формате.
Для вывода календаря этим текстовым полям присвоен следующий код
Private Sub TextBox6_Enter().ShowSubSub TextBox7_Enter()9.ShowSub
А каждому календарю присвоен такой код
‘следующий код позволяет добавить в текстовое поле дату при двойном
щелчке и закрыть форму
Private Sub Calendar1_DblClick().TextBox6.Value =
Format(Calendar1.Value, "dd.mm.yyyy")UserForm8SubSub
Calendar2_DblClick().TextBox7.Value = Format(Calendar2.Value,
"dd.mm.yyyy")UserForm9Sub
То есть если выбрана первая ячейка какой-то строки , то в каждое из
текстовых полей заполняется соответствующими данными этой же строки.
Выбирая город пользователю откроется список всех городов России. Это поле
можно изменять.
Код кнопки «Отправить»
Private Sub CommandButton3_Click()
Sheets("Командировки").Selecti As Integer= Sheets("Командировки ").UsedRange.Rows.Count + 1
‘данные из текстовых полей переносятся в соответствующие ячейки первой
пустой строки рабочего листа
Sheets("Командировки ").Cells(i, 1) = ComboBox1.Value("Командировки ").Cells(i, 2) =
TextBox11.Value("Командировки ").Cells(i, 3) =
ComboBox2.Value("Командировки ").Cells(i, 4) =
TextBox12.Value("Командировки ").Cells(i, 5) =
TextBox7.Value("Командировки ").Cells(i, 6) =
TextBox6.Value("Командировки ").Cells(i, 7) =
TextBox2.Value("Командировки ").Cells(i, 8) =
TextBox11.Value("Командировки ").Cells(i, 9) = TextBox9.Value ("Командировка добавлена")
‘текстовые поля очищаются
ComboBox1.Value = ""
TextBox11.Value = "".Value = "".Value =
"".Value = "".Value = "".Value =
"".Value = "".Value = "".Value = ""10.Value = ""
End Sub
На рабочем листе ищется первая пустая строка в которую заносятся данные.
Для удобства сделано две кнопки выхода. Первая позволяет вернуться снова
на форму «Преподаватели»
Её код:
Sub CommandButton4_Click()("Преподаватели").SelectUserForm4.Show Sub
Вторая позволяет сразу перейти или же вернуться на форму «Список
командировок». В зависимости от формы с который была вызвана данная форма.
Её код:
Sub CommandButton5_Click()("Командировки").SelectUserForm4.Show Sub
2.2 ФОРМА «Список командировок»
Эта форма содержит в себе ListBox
в который выводится список преподавателей с одноименного листа рабочей книги.
Позволяет добавлять , изменять, удалять , а также выводить на печать . Для
этого используются соответствующие кнопки «Отправить в командировку»,
«Изменить» , «Удалить», «Печать». Кнопки «Отправить в командировку» и «Удалить» описаны ранее. Поэтому поговорим о кнопках
«Изменить» и «Печать».
Код кнопки изменить
Код:
Sub CommandButton5_Click()i As Integer, j As Integer, s As
String, a()= ListBox1.List: i = ListBox1.ListIndex j = 0 To 8
s = InputBox("Столбец " & j + 1, "Введите новые
данные", a(i, j))
Sheets("Командировки").Cells(i + 2, j + 1) = s= Sheets("Командировки").UsedRange.Rows.Count.RowSource
= "A2:J" + Trim(Str(i))
End Sub
Кнопка «Печать» копирует три бланка для заполнения, то есть Лист1,
Лист2,Лист3. Заполняет их, перемещает в новую книгу , а затем сохраняет в
рабочую папку с текущей датой и временем. После чего книга закрывается.
Код кнопки «Печать»:
Private Sub CommandButton6_Click()
Sheets("Лист1").Select("Лист1").Copy After:=Sheets(4)("Лист1
(2)").Range("C14:I14") = TextBox1.Value("Лист1
(2)").Range("B16:K16") = TextBox7.Value("Лист1
(2)").Range("B18:K18") = TextBox8.Value("Лист1
(2)").Range("D20:K20") = TextBox3.Value("Лист1
(2)").Range("C24:k24") = TextBox9.Value("Лист1
(2)").Range("C30:E30") = TextBox5.Value("Лист1
(2)").Range("G30:I30") = TextBox6.Value("Лист1
(2)").Range("J32:K32") = TextBox2.Value("Лист2").Select("Лист2").Copy After:=Sheets(5)("Лист2 (2)").Range("A12:L12")
= TextBox1.Value("Лист2
(2)").Range("A20:B20") = TextBox7.Value("Лист2
(2)").Range("C20:D20") = TextBox8.Value("Лист2 (2)").Range("E20") =
TextBox3.Value("Лист2
(2)").Range("F20") = TextBox4.Value("Лист2 (2)").Range("G20") =
TextBox5.Value("Лист2 (2)").Range("H20")
= TextBox6.Value
‘выделяем Лист3, копируем и заполняем его данными.
Sheets("Лист3").Select("Лист3").Copy After:=Sheets(6)("Лист3
(2)").Range("A18:H18") = TextBox1.Value
Sheets("Лист3
(2)").Range("A20:J20") = TextBox7.Value
Sheets("Лист3 (2)").Range("A22:J22")
= TextBox8.Value
Sheets("Лист3
(2)").Range("B32:D32") = TextBox5.Value
Sheets("Лист3
(2)").Range("F32:H32") = TextBox6.Value
Sheets("Лист3
(2)").Range("B34:J34") = TextBox9.Value("Лист4").Select
Sheets("Лист4").Copy
After:=Sheets(7)("Лист4
(2)").Range("G5") = TextBox3.Value("Лист4 (2)").Range("A9") =
TextBox3.Value
‘выделяем заполненные листы и перемещаем их в новую рабочую книгу
Sheets(Array("Лист1 (2)", "Лист2 (2)", "Лист3 (2)", "Лист4 (2)")).Select
Sheets(Array("Лист1 (2)", "Лист2 (2)", "Лист3
(2)", "Лист4 (2)")).Move
‘выключаем вывод сообщений пользователю, сохраняем книгу с именем текущей
даты, выводим сообщение о месте сохранения.
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:="C:\Командировочные листы для печати\" & Format(Now, "dd_mm_yyyy_hh_nn_ss") & ".xls", FileFormat:=xlExcel8 _
, Password:="", WriteResPassword:="",
ReadOnlyRecommended:=False, _
CreateBackup:=False
Application.DisplayAlerts = True
ActiveWorkbook.Close (savechanges = False)
MsgBox ("Бланки для печати сохранены в C:\Командировочные листы для
печати\")Sub
Кнопка «Назад» возвращает нас на форму выбора списка.
Код:
Private Sub CommandButton3_Click()UserForm6.ShowSub
3. РАЗРАБОТКА ИНТЕРФЕЙСА
Важную роль в работе любой программы является интерфейс. Графический
интерфейса программы позволяет оградить пользователя от ненужного ему
программного кода, то есть графический интерфейс позволяет вести диалог
пользователя с системой.
Графический интерфейс состоит из набора управляющих элементов который нам
предоставляет Visual Basic for Applications входящий в пакет MS Office 2007. В данной курсовой работе будут использоваться ListBox, ComboBox, CommandButton и TextBox.
Графический интерфейс любой информационно-аналитической системы должен
быть простым и понятным любому его пользователю. Лёгок в осваивании и приятным
внешним видом.
Информационно-аналитическая система состоит из десяти пользовательских
форм. Главная форма (начало работы с программой) автоматически запускается при
открытии рабочей книги Excel. На форме отображается
название приложения и присутствуют 3 кнопки: «Начать», «Выход» и «О программе».
При нажатии на кнопку «О программе» появляется форма, содержащая
информацию о том, кто разработал данную информационно-аналитическую систему.
Нажатие кнопки «Начать» вызывает вторую пользовательскую форму, на
которой имеется 3 кнопки: «Список преподавателей», «Список командировки» и
«Выход». При нажатии на какую-либо из этих трех кнопок выводится форма с
соответствующим кнопке названием, содержащая данные из одноименных листов
рабочей книги Excel.
Формы «Список преподавателей», «Список командировки» содержат элементы ListBox, CommandButton. Формы добавить для добавления
командировки и преподавателя в базу данных содержат ComboBox, TextBox, CommandButton и «Календарь 11.0».
Формы «Справка», «Изменить» содержит элемент Label с текстовым описанием программы и ее разработчика.
Все формы информационно-аналитической системы оформлены изображением
указателя на развилке дорог.
3.1 Основная форма
При нажатии на кнопку «Начать работу» вы перейдет на форму выбора рабочей
таблицы(«Преподаватели» или «Командировки»)
При нажатии кнопки «О программе» выводится окно справки. Для закрытия
которого необходимо нажать кнопку «Закрыть».
Для выхода из программы необходимо нажать кнопку «Выход»
Для запуска программы на листе Преподаватели находится кнопка Старт.
3.2 Форма «Преподаватели»
Форма содержит пять кнопок. Для добавления нового работника необходимо
нажать кнопку «Добавить работника» после чего перед вами появится окно для
заполнения данных о новом сотруднике :
Лэйблы находящиеся над текстовыми полями являются подсказками , указываю
какие данные необходимо занести в какое поле. После ввода данных необходимо
нажать кнопку добавить сотрудника, в подтверждение о успешном добавление
появится сообщение «Работник добавлен» после чего поля очистятся. Для выхода из
этой формы необходимо нажать «Выход»
Для удаления сотрудника необходимо выбрать его в списке и нажать кнопку
«Удалить» после чего для безопасности данных выйдет запрос с подтверждением
уверенности ваших действий.
Для изменения данных сотрудника необходимо выделить нужного человека в
списке и нажать кнопку «Изменить». После чего поочередно на экран будут
выводится запросы для введения новых данных(если значение необходимо оставить
прежне просто нажмите ОК)
Если вы хотите отправить в командировку преподавателя из списка выделите его
и нажмите «Отправить в командировку», данные о нем автоматически заполнят форму
с известными о нем данными. Пустые поля необходимо заполнить. Город можно
выбрать из списка либо заполнить самому. Для выбора дат необходимо дважды
кликнуть по нужной дате в появившемся календаре. После чего нажать на кнопку
«Отправить», в подтверждение о успешном выполнение операции выйдет текстовое
сообщение после чего поля очистятся.
Для закрытия и перехода на нужную форму нажмите одну из двух кнопок:
«Вернуться к списку командировок» или же «Вернуться к списку преподавателей».
3.3 Форма «КомандироВки»
Для отправки человека в командировку нажмите кнопку «Отправить в
командировку». Выберете преподавателя и заполните оставшиеся поля после чего
нажмите кнопку добавить а затем выберите форму возврата.
Для изменения данных сотрудника необходимо выделить нужного человека в
списке и нажать кнопку «Изменить». После чего поочередно на экран будут
выводится запросы для введения новых данных(если значение необходимо оставить
прежне просто нажмите ОК) Для удаления сотрудника необходимо выбрать его в
списке и нажать кнопку «Удалить» после чего для безопасности данных выйдет
запрос с подтверждением уверенности ваших действий.
Для возвращение в меню выбора таблицы нажмите кнопку «Назад»
программный
аналитический интерфейс справочный
4. СПРАВОЧНАЯ СИСТЕМА
Справочные данные о информационно-аналитической системе можно получить,
нажав кнопку «О программе» на главной форме. Окно «О программе» содержит информацию
о том, кто разработал данную систему
ЗАКЛЮЧЕНИЕ
Итогом курсовой работы стала информационно-аналитическая система с
широким кругом применения. Данная программа может использоваться любой
организацией благодаря своим возможностям.
К основным возможностям этой системы можно смело отнести возможность
ведения базы данных преподавателей, при этом легко её редактировать добавляя
новых, удаляя и редактируя старых преподавателей. Вести учет всем командировкам
так же имея возможность изменять и добавлять их.
Главной же особенностью этой системы является её простота. Интерфейс
понятен и удобен любому пользователю.
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
1. А. Гарнаев «Самоучитель VBA»
. Билл
Джелен «VBA и макросы в Microsoft Office Excel 2007»
. Джон Уокенбах «Microsoft Office Excel 2007. Профессиональное программирование на VBA»
. П.
Эйткен «Интенсивный курс программирования в Excel за выходные»
. С.
Роман «Использование макросов в Excel»
. С.
Н. Белоусова, И. А. Бессонова «Основные принципы и концепции программирования
на языке VBA в Excel»
. Сергей
Кашаев «Офисные решения с использованием Microsoft Excel 2007 и VBA»