АННОТАЦИЯ
Данная курсовая работаразработана в рамках курса «Проектирование информационных систем» и написана наязыке программирования Visual Basic for Application (VBA).Проект предназначен для проведения анализа успеваемости студентов.
Для упрощения и ускорениярешения задач, связанных с анализом успеваемости студентов и предназначенаданная программа.
СОДЕРЖАНИЕ
Введение 5
Глава 1. Теоретическая часть 6
Глава 2. Практическая часть 11
Заключение 15
Список используемой литературы 16
Приложение 1. Руководствопользователя 17
Приложение 2. Листинг программы 23
Введение
В XXI веке в развитиичеловеческой цивилизации происходят глобальные изменения, ведущие к её новомуэтапу — постиндустриальному обществу, все шире использующемукомпьютеризированные орудия труда и информационные технологии.
Стремительное развитиеиндустрии, влечет за собой все больший и больший интерес начинающихпрограммистов создавать то, что актуально в наше время. Поэтому, для выполнениякурсовой работы мы выбрали анализ успеваемости студентов. Этот процессдостаточно трудоемкий и может занимать много времени. Мы в своей курсовойработе предлагаем упрощенный и автоматизированный вариант данного анализа.
Данная программа, написанная наязыке программирования Visual Basic for Application, представляет собойанализ успеваемости студентов.
Проектвыполнен в рамках курса «Проектирование информационных систем» с использованиемсоответствующего средства выполнения Microsoft Visual Basic for Application.
Цельнаписания данной курсовой работы — автоматизация расчетов успеваемостистудентов, а также обучение проектированию ИС.
Курсоваяработа проста, удобна и практична в использовании.
Курсоваяработа содержит: введение, теоретическую часть, практическую реализацию,заключение, литературу, которая использовалась при написании курсовой работы иприложения.
Глава 1.Теоретическая часть1.1 Постановка задачи
Задача данного курсового проекта- разработка информационной системы анализ успеваемости студентов, являющейся Windows-приложением и обладающей простым и удобным интерфейсом, а также ознакомление с работойв среде Visual Basic for Applications и принципами объектно-ориентированногопрограммирования.1.2 Анализ задачи
В данной курсовой работеразработана информационная система анализа успеваемости студентов. Эта темаявляется актуальной в настоящее время, так как многие учебные заведенияпроводят анализ успеваемости учащихся для отслеживания уровня подготовки ивыявления возможных недостатков в образовательном процессе.
Система анализа успеваемостистудентов должна обеспечивать:
1. Поиск и сортировку информации:
— по каждому студенту;
— по группам;
— по факультетам;
— по каждой дисциплине.
2. Добавление данных остудентах.
3. Удаление данных.
4. Редактирование имеющихсяданных.
5. Формирование карточек исписков.
6. Построение диаграмм.
На практике это означаетвыполнение автоматизированной обработки анализа успеваемости студентов;освобождение сотрудников от ряда рутинных работ по подготовке отчетнойдокументации; создание базы данных о студентах; осуществление операций посозданию архивов успеваемости студентов. Благодаря автоматизации можновыполнять поиск информации по запросам преподавателей.
Для реализации данной программыв рамках изучаемого курса «Информационные системы» мы выбрали методкомпьютерного проектирования. Данный проект имеет оригинальную структуру икомпоновку. 1.3. Обоснование и выбор инструментальных средств
Практическая реализациякурсового проекта осуществлялась в операционной системе Windows,с использованием электронной таблицы Excel из пакета Microsoft Offiсe.
Табличный процессор Excel 5.0является одним из наиболее популярных пакетов программ, предназначенных длясоздания табличных документов. Предлагаемые им средства позволяют решатьразнообразные задачи от расчета величины подоходного налога до составленияфинансового отчета крупной компании. Система обладает мощными вычислительными возможностями,великолепными средствами составления деловой графики, обработки текстов,введения баз данных. Работа с табличным процессором Excel позволяет:
— использовать для хранениявзаимосвязанных таблиц рабочую книгу, состоящую из отдельных листов, которыеможно в процессе работы удалять, переименовывать, переставлять местами,копировать и скрывать;
— применять удобные средствакорректировки данных в таблице, использовать широкий спектр возможностей работыс фрагментами;
— осуществлять должное оформлениетаблиц — применять разнообразные шрифты, способы выравнивания текста и чисел,изменения ширины столбцов и высоты строк, затемнения и обрамления ячеек;
— применять разнообразныеформаты отображения числовых данных;
— для графического представленияданных рабочего листа применять широкий набор диаграмм, должным образомоформлять их и печатать;
— выполнять свод данных изнескольких таблиц путем их консолидации.
Пользовательский интерфейсприложения разрабатывался на базе языка Visual Basic for Application.
В процессе создания собственныхприкладных программ на языке VBA возникаетнеобходимость реализации собственных диалоговых окон. Для этого в VBA есть мощное инструментальное средство – конструктордиалогов.
Большинство программ в системе Windows используют выпадающее меню, облегчающее доступ кдирективам приложения и управляющее работой этого приложения. Более современныйподход — использование пиктографического меню, обеспечивающего более простойдоступ к основным директивам программы. Visual Basic позволяет создаватьсобственные пользовательские и пиктографические меню. VBAдает возможность записывать макросы с помощью макрорекордера, а такжепросматривать листинг записанного макроса.
VBAтакже содержит средства отладки программы – Debug, чтозначительно упрощает корректировку и отладку модулей на этапе проектированияприложения.
Режим просмотра объектов спомощью редактора VBA позволяет:
— раскрыть список доступныхобъектов;
— определить принадлежность тогоили иного объекта к библиотеке объектов;
— осуществить просмотр свойств иметодов для выбранного объекта;
— получить справку поконкретному объекту, его свойству или методу.
Язык программирования Visual Basic for Application дает возможность проектировать приложения спростым и надежным пользовательским интерфейсом.1.4. Виды диалоговых окон и основных элементов управления
Для создания диалоговых окониспользуется конструктор диалогов, позволяющих создавать диалоговые окнапользователя. Для того чтобы загрузить конструктор диалогов, необходимовыполнить команду Вставка/UserForm редактора VBA. После этого на экране появится окно диалога ипиктографическое меню Панель элементов.
Каждая пиктограмма меню Панельэлементов дает возможность изобразить на диалоге различные элементы управления,позволяющие скомпоновать диалоговое окно пользователя. Каждый элементуправления является объектом, поэтому обладает рядом свойств и методов.
Все элементы управлениядиалогового окна пользователя объединяются набором Controls.Используя данный набор, можно получить доступ к любому элементу управления наформе, к его свойствам и методам. Применение данного набора удобно в техслучаях, когда последовательно в цикле перебираются элементы формы,определяется их количество, задаются значения тех или иных общих свойств.Список свойств выбранного элемента управления, отображается в окне свойствредактора VBA. Таким образом, свойства элементауправления можно менять как вручную, так и программным путём.
Элементы управления делятся настандартные и дополнительные. Рассмотрим стандартные элементы управления.
К стандартным элементамуправления относятся кнопки, списки, окна редактирования, линейки прокрутки ит.п.
В моей курсовой работеиспользовались следующие элементы управления:
● Окно редактирования(имя, фамилия, отчество, группа, список предметов) позволяют вводить, изменятьи просматривать данные.
● Линейка прокруткипозволяет просматривать оценки студентов за семестр по конкретному предмету.
● Кнопки для просмотраимеющихся записей, перехода от одной записи к другой, добавления и удалениязаписей и кнопка для выхода из программы.
Глава 2. Практическая часть
После анализа структуры входящихпотоков информации, для данного проекта был выбран интерфейс, соответствующийосновным требованиям и обеспечивающий легкость работы с ним. Интерфейс – этосовокупность средств, обеспечивающих физическое или логическое взаимодействиеустройств и программ вычислительной системы. Для данного проекта интерфейс –изобретение и создание такого способа ввода и вывода информации, который был бымаксимально прост, удобен и приятен пользователю. 2.1 Описание интерфейсаОкно 1 «курсовая работа»
Стартовое окно программы. Этоокно инициализируется при открытии документа. В форму добавлены фоновый рисуноки пять элементов управления:
· Элемент «Редактирование базы данных» (CommandButton1) – ссобытием Click была связана процедура Private Sub Edit_Click(), при выполнениикоторой осуществляется открытие соответствующего окна.
· Элемент «Создание отчета» (CommandButton2) — с событием Clickбыла связана процедура Private Sub Report_Click(), при выполнении которойпоявляется окно «Отчеты».
· Элемент «Диаграмма успеваемости группы» (CommandButton3) — ссобытием Click была связана процедура Private Sub DiaGroup_Click(). При еевыполнении осуществляется открытие окна с аналогичным названием.
· Элемент «Диаграмма успеваемости студента» (CommandButton4) — ссобытием Click была связана процедура Private Sub DiaStudent_Click(). При выполненииоткрывается окно с аналогичным названием.
· Элемент «Выход» (CommandButton5) — с событием Click была связанапроцедура Private Sub Quit_Click() – выход из программы.
Окно 2 «Отчет»
Данное окно используется длясоздания отчета по успеваемости студента или группы студентов. Форма содержит 3элемента Label, 2 элемента ComboBox,7 элементов CommandButton и 1 элемент ListBox.
● Кнопка «Создать» (CommandButton1) – с событием Clickсвязана процедура Private Sub Create_Click(), при выполнении которой создаетсяотчет в соответствии с заданными параметрами.
● Кнопка «Закрыть» (CommandButton2) – с событием Clickсвязана процедура Private Sub Cancel_Click() – выход из формы создания отчетов.
● Кнопка «Очистить» (CommandButton3) – с событием Clickсвязана процедура Private Sub Clear_Click(), при выполнении которой происходиточищение элемента ListBox.
● Кнопка «Вверх» (CommandButton4) – с событием Clickсвязана процедура Private Sub Up_Click(). С помощью этой кнопки можно менятьместами студентов при создании отчетов.
● Кнопка «Вниз» (CommandButton5) – с событием Clickсвязана процедура Private Sub Down_Click(). С помощью этой кнопки можно менятьместами студентов при создании отчетов.
● Кнопка «>>» (CommandButton6) – с событием Clickсвязана процедура Private Sub Add_Click(). С помощью этой кнопки можнодобавлять выбранных студентов в ListBox для созданияотчетов их успеваемости.
● Кнопка «
Окно 3 «Редактирование базыданных»
С помощью этого окна можноизменять список студентов, их успеваемость по конкретному предмету, добавлятьновые записи, удалять, а также просматривать уже имеющуюся информацию. Формасодержит следующие элементы управления: 8 элементов Label,6 элементов TextBox, 1 элемент ListBox,2 элемента SpinButton, 7 элементов CommandButton.
● Кнопка «Добавить» (CommandButton1) с событием Clickсвязана процедура Private Sub Update_Click(), при выполнении которой добавляется новая запись.
● Кнопка «Удалить» (CommandButton2) с событием Click связанапроцедура Private Sub Delete_Click(), при выполнении которой запись удаляется.
● Кнопка «Закрыть» (CommandButton3) с событием Clickсвязана процедура Private Sub Cancel_Click(), при выполнении которойзакрывается окно.
● Кнопка «
● Кнопка «>>» (CommandButton5) с событием Clickсвязана процедура Private Sub NewItem_Click(), которая очищает поля длясоздания новой записи.
● Кнопка «
Окно 4 «Диаграммауспеваемости группы»
С помощью этого окна мы можемпостроить диаграммы успеваемости группы по любому конкретному предмету. Формасодержит следующие элементы управления: 4 элемента Label,2 элемента ComboBox, 2 элемента CommandButton,2 элемента OptionButton.
● Кнопка «Создать» (CommandButton1) с событием Clickсвязана процедура Private Sub Create_Click(), которая создает диаграмму по заданным параметрам.
● Кнопка «Закрыть» (CommandButton2) с событием Clickсвязана процедура Private Sub Cancel_Click(), при выполнении которойзакрывается окно.
Окно 5 «Диаграммауспеваемости студента»
С помощью этого окна мы можемпостроить диаграммы успеваемости студента. Форма содержит следующие элементыуправления: 4 элемента Label, 2 элемента ComboBox, 2 элемента CommandButton, 2элемента OptionButton.
● Кнопка «Создать» (CommandButton1) с событием Clickсвязана процедура Private Sub Create_Click(), которая создает диаграмму по заданным параметрам.
● Кнопка «Закрыть» (CommandButton2) с событием Clickсвязана процедура Private Sub Cancel_Click(), при выполнении которойзакрывается окно.
Модули:
● Sub QDialog1() –показывает форму «Курсовая работа».
● Sub Macro1() – устанавливаетширину трех столбцов A, B, C.
● Sub Macro2() — Оформлениесписка отчета (с помощью записи макроса).
Заключение
В данной курсовой работе была разработана программаанализ успеваемости студентов.
Программа была разработана спомощью языка программирования Visual Basic for Application (VBA).
Язык программирования Visual Basic for Application – быстрое, простое решение многих задач,связанных с программированием офисных приложений.
На примере данной курсовойработы можно убедиться, как просто создаются диалоговые окна, для наиболееудобного ввода информации в таблицы как прост и удобен интерфейс даннойсистемы. Также просто создаются собственные функции рабочего листа, функцииобработки информации в таблицах, создавать кнопки управляющие действиямипрограммы по желанию пользователя.
Visual Basic for Applicationобладает достаточно широкими возможностями базового языка Visual Basic, и позволяет обращатьсяпрактически ко всем возможностям Microsoft Excel по созданию, обработке ихранению информации.
Язык программирования Visual Basic for Application наиболее удобен в работе и прост в обращении дляширокого круга пользователей, желающих самостоятельно научиться создаватьпрограммы.
Таким образом, данная программапо анализу успеваемости студентов делает наиболее простой работу пользователя вданной области и сокращает время на выполнение соответствующих операций.
Список используемой литературы
1. Лекционный материал по курсу «Проектирование ИС», Федоренко Г.А.
2. Потапкин А.В., Основы VISUAL BASIC, «ЭКОМ», М., 1996.
3. Рахманина Г. Excel 2000. Руководствопользователя с примерами. М., 2001.
4. У. Орвис «Visual Basicfor Application», БИНОМ, М.,1995.
5. Э. Бунин «Excel Visual Basicдля приложений», БИНОМ, М., 1996.
6. Visual Basic Help Reference File, MicrosoftCorporation, 1996-97.
Приложения
ПРИЛОЖЕНИЕ 1
РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ
При открытии файла появляетсяследующее диалоговое окно:
Окно 1 «Курсовая работа»/>
Рис.1
На нем расположены несколькокнопок: редактирование базы данных, создание отчета, диаграмма успеваемостигруппы, диаграмма успеваемости студента, выход. А также сведения об авторах.
При нажатии кнопки«Редактирование базы данных» появляется диалоговое окно:
Окно 2 «Редактирование базыданных»
/>
Рис.2
С помощью этого окна можноизменять список студентов, их успеваемость по конкретному предмету, добавлятьновые записи, удалять, а также просматривать уже имеющуюся информацию.
При нажатии на кнопку«
При нажатии на кнопку «
При нажатии на кнопку «>», мыпереходим к следующему элементу списка.
При нажатии на кнопку«>>», мы очищаем поля для создания новой записи.
При нажатии на кнопку«Добавить», происходит добавление новой записи.
При нажатии на кнопку «Удалить»,происходит удаление выделенной записи.
При нажатии на кнопку «Закрыть»,происходит закрытие данного окна.
Из списка предметов с помощьюмышки, мы выбираем предмет, с помощью линейки прокрутки можно изменять оценкистудентов.
При нажатии кнопки «Созданиеотчета», появляется следующее диалоговое окно:
Окно 3 «Отчет»
/>
Рис.3
Данное окно используется длясоздания отчета по успеваемости студента или группы студентов.
Кнопки «>>» и «
/>
Рис.4
Кнопка «Очистить» — очищает полесписка студентов.
Кнопки «Вверх» и «Вниз» — позволяютперемещать студентов по списку.
При нажатии на кнопку «Создать»- появляется отчет по введенным параметрам:
/>
Рис.5
При нажатии кнопки «Закрыть» — данноеокно закрывается.
При нажатии на кнопку «Диаграммауспеваемости группы» появляется диалоговое окно:
Окно 4 «Диаграммауспеваемости группы»:
/>
Рис.6
В поле «Группа» выбираем нужнуюиз списка, в поле «Предмет» выбираем предмет и выбираем курсором 1-ый или 2-ойсеместр. Нажимаем на кнопку «Создать». Появляется окно:
/>
Рис.7
Кнопка «Закрыть» — для выхода.
При нажатии на кнопку «Диаграммауспеваемости студента» появляется окно:
Окно 5 «Диаграммауспеваемости студента»:
/>
Рис.8
Выбираем группу, студента исеместр и создаем диаграмму по заданным параметрам:
/>
Рис.9
Кнопка «Закрыть» — для выхода изокна.
При нажатии кнопки «Выход» вокне «Курсовая работа» осуществляется выход из программы.
ПРИЛОЖЕНИЕ 2
ИСХОДНЫЙ КОД ПРОГРАММЫ
Форма «MainForm»:
Private SubDiaGroup_Click()
DiaGroupForm.Show
End Sub
Private SubDiaStudent_Click()
DiaStudentForm.Show
End Sub
Private SubEdit_Click()
DataForm.Show
End Sub
Private SubLabel2_Click()
End Sub
Private SubQuit_Click()
Unload Me
End Sub
Private SubReport_Click()
ReportForm.Show
End Sub
Форма«ReportForm»:
Dim Cursor AsInteger
Private SubAdd_Click()
For i = 0 ToQueue.ListCount — 1
IfQueue.List(i) = Group.Value + " — " + Student.Value Then
MsgBox «Такой элемент ужеесть в очереди!»
Exit Sub
End If
Next i
Queue.AddItemGroup.Value + " — " + Student.Value
End Sub
Private Sub Cancel_Click()
Me.Hide
End Sub
Private SubClear_Click()
Queue.Clear
End Sub
Private SubCreate_Click()
Dim StudentValAs String
Dim GroupVal AsString
Dim i AsInteger
Dim j AsInteger
Dim Value AsString
Dim Row AsInteger
Row = 2
ActiveWorkbook.Worksheets.AddAfter:=Worksheets(Worksheets.Count)
WithActiveSheet
.Cells.Clear
.Columns(1).ColumnWidth= 26
.Columns(2).ColumnWidth= 20
.Columns(3).ColumnWidth= 20
For i = 0 ToQueue.ListCount — 1
GroupVal =Split(Queue.List(i), " — ")(0)
StudentVal =Split(Queue.List(i), " — ")(1)
j = 2
Do
Value =Worksheets(«Storage»).Cells(j, 1).Value
If Len(Value)> 0 Then
IfWorksheets(«Storage»).Cells(j, 1) = GroupVal AndWorksheets(«Storage»).Cells(j, 2) + " " +Worksheets(«Storage»).Cells(j, 3) + " " +Worksheets(«Storage»).Cells(j, 4) = StudentVal Then
.Cells(Row,1).Value = «Группа»
.Cells(Row,2).Value = GroupVal
Range(.Cells(Row,2), .Cells(Row, 3)).MergeCells = True
.Cells(Row + 1,1).Value = «Студент»
.Cells(Row + 1,2).Value = StudentVal
Range(.Cells(Row+ 1, 2), .Cells(Row + 1, 3)).MergeCells = True
Range(.Cells(Row,2), .Cells(Row + 1, 2)).Select
WithSelection.Interior
.ColorIndex =36
.Pattern =xlSolid
End With
.Cells(Row + 2,1).Value = «Оценки по предметам»
.Cells(Row + 2,2).Value = «1-ый семестр»
.Cells(Row + 2,3).Value = «2-ой семестр»
Range(.Cells(Row+ 2, 2), .Cells(Row + 2, 3)).Select
With Selection
.HorizontalAlignment= xlCenter
.Interior.ColorIndex= 37
.Interior.Pattern= xlSolid
End With
For k = 0 To 8
.Cells(Row + 3+ k, 1).Value = Worksheets(«Storage»).Cells(1, k + 5).Value
.Cells(Row + 3+ k, 2).Value = Split(Worksheets(«Storage»).Cells(j, k + 5).Value,":")(0)
.Cells(Row + 3+ k, 3).Value = Split(Worksheets(«Storage»).Cells(j, k + 5).Value,":")(1)
Next k
Range(.Cells(Row+ 3, 2), .Cells(Row + 2 + k, 3)).Select
With Selection
.HorizontalAlignment= xlCenter
.Interior.ColorIndex= 35
.Interior.Pattern= xlSolid
End With
Range(.Cells(Row,1), .Cells(Row + 2 + k, 1)).Select
WithSelection.Interior
.ColorIndex =40
.Pattern =xlSolid
End With
Range(.Cells(Row,1), .Cells(Row + 2 + k, 3)).Select
Selection.Borders(xlDiagonalDown).LineStyle= xlNone
Selection.Borders(xlDiagonalUp).LineStyle= xlNone
WithSelection.Borders(xlEdgeLeft)
.LineStyle =xlContinuous
.Weight =xlThin
.ColorIndex =xlAutomatic
End With
WithSelection.Borders(xlEdgeTop)
.LineStyle =xlContinuous
.Weight =xlThin
.ColorIndex =xlAutomatic
End With
WithSelection.Borders(xlEdgeBottom)
.LineStyle =xlContinuous
.Weight =xlThin
.ColorIndex =xlAutomatic
End With
WithSelection.Borders(xlEdgeRight)
.LineStyle =xlContinuous
.Weight =xlThin
.ColorIndex =xlAutomatic
End With
WithSelection.Borders(xlInsideVertical)
.LineStyle =xlContinuous
.Weight =xlThin
.ColorIndex =xlAutomatic
End With
WithSelection.Borders(xlInsideHorizontal)
.LineStyle =xlContinuous
.Weight =xlThin
.ColorIndex =xlAutomatic
End With
Row = Row + k +5
End If
End If
j = j + 1
Loop UntilLen(Value) = 0
Next i
End With
End Sub
Private SubDown_Click()
Dim Index AsInteger
Dim Value AsString
Index =Queue.ListIndex
If Index Queue.ListCount — 1 And Index — 1 Then
Value =Queue.Value
Queue.RemoveItem(Index)
Queue.AddItemValue, Index + 1
Queue.ListIndex= Index + 1
End If
End Sub
Private SubGroup_Change()
Dim i AsInteger
Dim Value AsString
i = 2
Student.Clear
WithActiveWorkbook.Sheets(1)
Do
Value =.Cells(i, 1).Value
If Value =Group.Value Then
Student.AddItem.Cells(i, 2).Value + " " + .Cells(i, 3).Value + " " +.Cells(i, 4).Value
End If
i = i + 1
Loop UntilLen(Value) = 0
End With
Student.ListIndex= 0
End Sub
Private SubRemove_Click()
If Not(Queue.ListCount = 0 Or Queue.ListIndex = — 1) Then
Queue.RemoveItemQueue.ListIndex
End If
End Sub
Private SubUp_Click()
Dim Index AsInteger
Dim Value AsString
Index =Queue.ListIndex
If Index > 0Then
Value =Queue.Value
Queue.RemoveItemIndex
Queue.AddItemValue, Index — 1
Queue.ListIndex= Index — 1
End If
End Sub
Private SubUserForm_Initialize()
Dim i AsInteger
Dim Value AsString
i = 2
WithActiveWorkbook.Sheets(1)
Do
Value =.Cells(i, 1).Value
If Len(Value)> 0 Then
For j = 0 ToGroup.ListCount — 1
IfGroup.List(j) = Value Then Exit For
Next j
If j =Group.ListCount Then Group.AddItem Value
i = i + 1
End If
Loop UntilLen(Value) = 0
End With
Group.ListIndex= 0
End Sub
Форма«DataForm»:
Dim Cursor AsInteger
Dim Count AsInteger
DimObjectList() As Integer
Private SubAutumnCtrl_Change()
Autumn.Value =AutumnCtrl.Value
ObjectList(Objects.ListIndex,0) = Autumn.Value
End Sub
Private SubBackward_Click()
If Cursor — 1>= 0 Then
Cursor = Cursor- 1
LoadObject(Cursor)
End If
End Sub
Private SubBegin_Click()
Cursor = 0
LoadObject(Cursor)
End Sub
Private SubCancel_Click()
Me.Hide
End Sub
Private SubDelete_Click()
If Cursor Count Then
ActiveWorkbook.Sheets(«Storage»).Rows(Cursor+ 2).Delete Shift:=xlUp
If Cursor =Count — 1 Then Cursor = Cursor — 1
Count = Count — 1
LoadObject(Cursor)
End If
End Sub
Private SubForward_Click()
If Cursor + 1
If Cursor + 1 =Count Then
NewItem_Click
Exit Sub
End If
Cursor = Cursor+ 1
LoadObject(Cursor)
End If
End Sub
Private SubNewItem_Click()
Cursor = Count
ClearObject
ItemCount.Caption= «Новый элемент»
End Sub
Private SubObjects_Change()
Autumn.Value =ObjectList(Objects.ListIndex, 0)
Spring.Value =ObjectList(Objects.ListIndex, 1)
AutumnCtrl.Value= Autumn.Value
SpringCtrl.Value= Spring.Value
End Sub
Private SubSpringCtrl_Change()
Spring.Value =SpringCtrl.Value
ObjectList(Objects.ListIndex,1) = Spring.Value
End Sub
Private SubUpdate_Click()
WithActiveWorkbook.Sheets(«Storage»)
If(Len(Group.Value) = 0) Then
MsgBox «Необходимо ввестиномер группы!»
Exit Sub
End If
If(Len(Last.Value) = 0) Then
MsgBox «Необходимо ввестифамилию студента!»
Exit Sub
End If
If(Len(First.Value) = 0) Then
MsgBox «Необходимо ввестиимя студента!»
Exit Sub
End If
If(Len(Middle.Value) = 0) Then
MsgBox «Необходимо ввестиотчество студента!»
Exit Sub
End If
.Cells(Cursor +2, 1) = Group.Value
.Cells(Cursor +2, 2) = Last.Value
.Cells(Cursor +2, 3) = First.Value
.Cells(Cursor +2, 4) = Middle.Value
For i = 0 ToObjects.ListCount — 1
.Cells(Cursor +2, i + 5) = Trim(Str(ObjectList(i, 0))) + ":" +Trim(Str(ObjectList(i, 1)))
Next i
End With
If Cursor =Count Then
Count = Count +1
ItemCount.Caption= «Элемент » + Str(Cursor + 1) + " из " + Str(Count)
End If
End Sub
Private SubUserForm_Initialize()
Dim i AsInteger
Dim Value AsString
Cursor = 0
i = 5
Count =GetListCount()
WithActiveWorkbook.Sheets(«Storage»)
Do
Value =.Cells(1, i).Value
If Len(Value)> 0 Then
For j = 0 ToObjects.ListCount — 1
IfObjects.List(j) = Value Then Exit For
Next j
If j =Objects.ListCount Then Objects.AddItem Value
i = i + 1
End If
Loop UntilLen(Value) = 0
End With
ReDimObjectList(Objects.ListCount — 1, 1)
LoadObject(Cursor)
End Sub
Private SubLoadObject(Index As Integer)
WithActiveWorkbook.Sheets(«Storage»)
Group.Value =.Cells(Cursor + 2, 1)
Last.Value =.Cells(Cursor + 2, 2)
First.Value =.Cells(Cursor + 2, 3)
Middle.Value =.Cells(Cursor + 2, 4)
For i = 0 ToObjects.ListCount — 1
ObjectList(i,0) = Split(.Cells(Cursor + 2, i + 5), ":")(0)
ObjectList(i,1) = Split(.Cells(Cursor + 2, i + 5), ":")(1)
Next i
IfObjects.ListIndex = 0 Then Call Objects_Change
Objects.ListIndex= 0
ItemCount.Caption= «Элемент » + Str(Cursor + 1) + " из " + Str(Count)
End With
End Sub
PrivateFunction GetListCount() As Integer
Dim i AsInteger
GetListCount =0
WhileLen(ThisWorkbook.Sheets(«Storage»).Cells(GetListCount + 2, 1).Value) 0
GetListCount =GetListCount + 1
Wend
End Function
Private SubClearObject()
Group.Value =""
First.Value =""
Last.Value =""
Middle.Value =""
For i = 0 ToObjects.ListCount — 1
ObjectList(i,0) = 2
ObjectList(i,1) = 2
Next i
Autumn.Value =""
Spring.Value =""
CallObjects_Change
End Sub
Форма«DiaGroupForm»:
Private SubAutumn_Click()
Autumn.Value =True
Spring.Value =False
End Sub
Private SubCancel_Click()
Me.Hide
End Sub
Private SubCreate_Click()
Dim j AsInteger
Dim Stat(3) AsInteger
Dim Index AsInteger
Dim Count AsInteger
Dim ChartObj AsChartObject
j = 2
Index = 0
For i = 0 To 3
Stat(i) = 0
Next i
If Autumn.Value= True Then Index = 0 Else Index = 1
ActiveWorkbook.Worksheets.AddAfter:=Worksheets(Worksheets.Count)
WithActiveSheet
.Cells.Clear
Do
Value =Worksheets(«Storage»).Cells(j, 1).Value
If Len(Value)> 0 Then
IfWorksheets(«Storage»).Cells(j, 1).Value = Group.Value Then
IfSplit(Worksheets(«Storage»).Cells(j, Object.ListIndex + 5).Value,":")(Index) = «5» Then Stat(0) = Stat(0) + 1
IfSplit(Worksheets(«Storage»).Cells(j, Object.ListIndex + 5).Value,":")(Index) = «4» Then Stat(1) = Stat(1) + 1
IfSplit(Worksheets(«Storage»).Cells(j, Object.ListIndex + 5).Value,":")(Index) = «3» Then Stat(2) = Stat(2) + 1
IfSplit(Worksheets(«Storage»).Cells(j, Object.ListIndex + 5).Value,":")(Index) = «2» Then Stat(3) = Stat(3) + 1
End If
End If
j = j + 1
Loop UntilLen(Value) = 0
.Cells(1,1).Value = «Диаграмма успеваемости группы » +Group.Value
.Cells(2,1).Value = «по предмету » + Object.Value
.Cells(3,1).Value = «за » + Str(Index + 1) + "-йсеместр"
For i = 0 To 3
.Cells(i + 4,1).Value = «Оценка » + Str(5 — i)
.Cells(i + 4,2).Value = Str(Stat(i))
Next i
Set ChartObj =.ChartObjects.Add(0, 0, 400, 400)
ChartObj.Chart.ChartType= xlPie
ChartObj.Chart.SeriesCollection.AddSource:=Range(.Cells(4, 2), .Cells(7, 2))
ChartObj.Chart.SeriesCollection.Item(1).XValues= Range(.Cells(4, 1), .Cells(7, 1))
ChartObj.Chart.HasLegend= True
ChartObj.Chart.Legend.Position= xlBottom
ChartObj.Chart.HasTitle= True
ChartObj.Chart.ChartTitle.Text= «Диаграмма успеваемости группы » +Group.Value + Chr(10) + «по предмету » +Object.Value + Chr(10) + «за » + Str(Index +1) + "-й семестр"
End With
End Sub
Private SubSpring_Click()
Spring.Value =True
Autumn.Value =False
End Sub
Private SubUserForm_Initialize()
Dim i AsInteger
Dim Value AsString
i = 2
WithActiveWorkbook.Sheets(1)
Do
Value =.Cells(i, 1).Value
If Len(Value)> 0 Then
For j = 0 ToGroup.ListCount — 1
IfGroup.List(j) = Value Then Exit For
Next j
If j =Group.ListCount Then Group.AddItem Value
i = i + 1
End If
Loop UntilLen(Value) = 0
End With
Group.ListIndex= 0
For j = 0 To 8
Object.AddItemActiveWorkbook.Sheets(«Storage»).Cells(1, j + 5).Value
Next j
Object.ListIndex= 0
Autumn.Value =True
End Sub
Форма«DiaStudentForm»:
Private SubAutumn_Click()
Autumn.Value =True
Spring.Value =False
End Sub
Private SubCancel_Click()
Me.Hide
End Sub
Private SubCreate_Click()
Dim j AsInteger
Dim Stat(3) AsInteger
Dim Index AsInteger
Dim Count As Integer
Dim ChartObj AsChartObject
j = 2
Index = 0
For i = 0 To 3
Stat(i) = 0
Next i
If Autumn.Value= True Then Index = 0 Else Index = 1
ActiveWorkbook.Worksheets.AddAfter:=Worksheets(Worksheets.Count)
WithActiveSheet
.Cells.Clear
Do
Value =Worksheets(«Storage»).Cells(j, 1).Value
If Len(Value)> 0 Then
IfWorksheets(«Storage»).Cells(j, 2).Value + " " +Worksheets(«Storage»).Cells(j, 3).Value + " " +Worksheets(«Storage»).Cells(j, 4).Value = Student.Value Then Exit Do
End If
j = j + 1
Loop UntilLen(Value) = 0
For i = 0 To 8
IfSplit(Worksheets(«Storage»).Cells(j, i + 5).Value,":")(Index) = «5» Then Stat(0) = Stat(0) + 1
IfSplit(Worksheets(«Storage»).Cells(j, i + 5).Value,":")(Index) = «4» Then Stat(1) = Stat(1) + 1
IfSplit(Worksheets(«Storage»).Cells(j, i + 5).Value,":")(Index) = «3» Then Stat(2) = Stat(2) + 1
IfSplit(Worksheets(«Storage»).Cells(j, i + 5).Value,":")(Index) = «2» Then Stat(3) = Stat(3) + 1
Next i
.Cells(1, 1).Value =«Диаграмма успеваемости студента: „
.Cells(2,1).Value = Student.Value
.Cells(3,1).Value = Str(Index + 1) + “-й семестр»
For i = 0 To 3
.Cells(i + 4,1).Value = «Оценка » + Str(5 — i)
.Cells(i + 4,2).Value = Str(Stat(i))
Next i
Set ChartObj =.ChartObjects.Add(0, 0, 400, 400)
ChartObj.Chart.ChartType= xlPie
ChartObj.Chart.SeriesCollection.AddSource:=Range(.Cells(4, 2), .Cells(7, 2))
ChartObj.Chart.SeriesCollection.Item(1).XValues= Range(.Cells(4, 1), .Cells(7, 1))
ChartObj.Chart.HasLegend= True
ChartObj.Chart.Legend.Position= xlBottom
ChartObj.Chart.HasTitle= True
ChartObj.Chart.ChartTitle.Text= «Диаграмма успеваемости студента» + Chr(10)+ Student.Value + Chr(10) + Str(Index + 1) + "-й семестр"
End With
End Sub
Private SubGroup_Change()
Dim i AsInteger
Dim Value AsString
i = 2
Student.Clear
WithActiveWorkbook.Sheets(«Storage»)
Do
Value =.Cells(i, 1).Value
If Value =Group.Value Then
Student.AddItem.Cells(i, 2).Value + " " + .Cells(i, 3).Value + " " +.Cells(i, 4).Value
End If
i = i + 1
Loop UntilLen(Value) = 0
End With
Student.ListIndex= 0
End Sub
Private SubSpring_Click()
Spring.Value =True
Autumn.Value =False
End Sub
Private SubUserForm_Initialize()
Dim i AsInteger
Dim Value AsString
i = 2
WithActiveWorkbook.Sheets(«Storage»)
Do
Value =.Cells(i, 1).Value
If Len(Value)> 0 Then
For j = 0 ToGroup.ListCount — 1
IfGroup.List(j) = Value Then Exit For
Next j
If j =Group.ListCount Then Group.AddItem Value
i = i + 1
End If
Loop UntilLen(Value) = 0
End With
Group.ListIndex= 0
Autumn.Value =True
End Sub
Модули:
МодульMain:
Public SubQDialog1()
MainForm.Show
End Sub
Модуль Module1:
Sub Macro1()
'' Macro1 Macro
' Macrorecorded 25.12.2006 by Zeon
'Columns(«A:A»).ColumnWidth= 33.29
Columns(«B:B»).ColumnWidth= 17.14
Columns(«C:C»).ColumnWidth= 16.57
End Sub
МодульModule 2:
Sub Macro2()
'' Macro2 Macro
' Macrorecorded 25.12.2006 by Zeon
'Range(«C17:D17»).Select
With Selection
.HorizontalAlignment= xlCenter
.VerticalAlignment= xlBottom
.WrapText =False
.Orientation =0
.AddIndent =False
.IndentLevel =0
.ShrinkToFit =False
.ReadingOrder =xlContext
.MergeCells =False
End With
Selection.Merge
Range(«C16:D16»).Select
With Selection
.HorizontalAlignment= xlCenter
.VerticalAlignment= xlBottom
.WrapText =False
.Orientation =0
.AddIndent =False
.IndentLevel =0
.ShrinkToFit =False
.ReadingOrder =xlContext
.MergeCells =False
End With
Selection.Merge
Range(«C19:D27»).Select
With Selection
.HorizontalAlignment= xlCenter
.VerticalAlignment= xlBottom
.WrapText =False
.Orientation =0
.AddIndent =False
.IndentLevel =0
.ShrinkToFit =False
.ReadingOrder =xlContext
.MergeCells =False
End With
Range(«B16:D27»).Select
Selection.Borders(xlDiagonalDown).LineStyle= xlNone
Selection.Borders(xlDiagonalUp).LineStyle= xlNone
WithSelection.Borders(xlEdgeLeft)
.LineStyle =xlContinuous
.Weight =xlThin
.ColorIndex =xlAutomatic
End With
WithSelection.Borders(xlEdgeTop)
.LineStyle =xlContinuous
.Weight =xlThin
.ColorIndex =xlAutomatic
End With
WithSelection.Borders(xlEdgeBottom)
.LineStyle =xlContinuous
.Weight =xlThin
.ColorIndex =xlAutomatic
End With
WithSelection.Borders(xlEdgeRight)
.LineStyle =xlContinuous
.Weight =xlThin
.ColorIndex =xlAutomatic
End With
WithSelection.Borders(xlInsideVertical)
.LineStyle =xlContinuous
.Weight =xlThin
.ColorIndex =xlAutomatic
End With
WithSelection.Borders(xlInsideHorizontal)
.LineStyle =xlContinuous
.Weight =xlThin
.ColorIndex =xlAutomatic
End With
Range(«C16:D17»).Select
With Selection
.HorizontalAlignment= xlLeft
.VerticalAlignment= xlBottom
.WrapText =False
.Orientation =0
.AddIndent =False
.IndentLevel =0
.ShrinkToFit =False
.ReadingOrder =xlContext
End With
Range(«B16:B27»).Select
WithSelection.Interior
.ColorIndex =36
.Pattern =xlSolid
End With
Range(«C16:D17»).Select
WithSelection.Interior
.ColorIndex =35
.Pattern =xlSolid
End With
Range(«C18:D18»).Select
WithSelection.Interior
.ColorIndex =37
.Pattern =xlSolid
End With
Range(«C19:D27»).Select
WithSelection.Interior
.ColorIndex =40
.Pattern =xlSolid
End With
End Sub