Лабораторно упражнение № 4
Разработка на приложение, използващо функционалните възможности на Excel
ЛАБОРАТОРНО УПРАЖНЕНИЕ № 4
РАЗРАБОТКА НА ПРИЛОЖЕНИЕ, ИЗПОЛЗВАЩО ФУНКЦИОНАЛНИТЕ ВЪЗМОЖНОСТИ НА MS EXCEL
-
Въведение.
Съществува клас задачи, които са свързани с формиране, въвеждане и поддържане на таблично представена информация. Проблемът за разработването на приложение, използващо таблични данни може да бъде решен по два начина:
-
класически, посредством проектиране на файлова система или база от данни за съхранение на табличните данни и съответно разработване на потребителски интерфейс, осигуряващ визуализация на данните и изпълнение на проектираните манипулации с тях,
-
използване на функционалните възможности на MS EXCEL за поддържане и съхранение на таблични данни. MS EXCEL e комплектована с богата библиотека от функции за обработка на данните.
Във втория случай потребителския интерфейс може да бъде проектиран с предоставените от MS EXCEL средства или като се използват възможностите на Visual Basic.Net.
-
Цел на лабораторното упражнение.
Лабораторното упражнение е ориентирано към разработване на приложение с потребителски интерфейс на Visual Basic.Net. В упражнението са демонстрирани програмни конструкции за установяване на референция към MS Excel, създаване на негови работни обекти, инициализация и обявяване на зони (граници) от клетки, въвеждане, обработка и извеждане на информация от тях, изпълняване на Excel функции, организиране на печат и обявяване на обекти за отстраняване. Тези действия се извършват значително по-лесно посредством Visual Basic.Net т.к. MS Excel разполага с VBA като програмен език за разработка на отделни обработващи процедури.
Функциите по създаване, поддържане, визуализация и обработка на данните се осигуряват от библиотеките на MS Excel.
За разработване на приложение, използващо функционалните възможности на MS Excel, е необходимо следното:
-
определяне номенклатурата на необходимите данни и тяхното таблично представяне,
-
разработване на потребителски интерфейс, осигуряващ въвеждането и верификацията на данните, както и комуникационни възможности за управление на операциите с тях,
-
осигуряване на референция към наличните класове и обекти на Excel, тяхното включване и извикване за изпълнение и не на последно място програмно унищожаване на създадените инстанции.
MS Excel предлага богата библиотека от обекти, поддържащи изключително разнообразие от методи. По-важните от тях са Application,Workbook ,Worksheet и Range. Както показват самите наименования, Application позволява управление и контрол на визуализацията, работа с обекти, изпълнение, манипулации с файлове, събития и др. Workbook организира работата с документи, стилове, страници, както с методите и свойствата на класа. Worksheet определя свойствата на обектите и тяхната защита. Range основно определя работната област от маркирани клетки, поддържа определени действия с тях и осигурява тяхната сортировка.
-
Задание за лабораторно упражнение.
Да се проектира програмна система “Учебни планове” със следната функционалност:
-
разработване на нови учебни планове по специалности и години,
-
копиране на стари учебни планове с цел създаване на нови при значително съвпадение на по-голямата част от дисциплините,
-
интерфейсни възможности за добавяне, корекция и изтриване на дисциплини от избрани учебни планове,
-
съпоставяне на учебни планове от една и съща специалност и между различни специалности за осигуряването на случаите при преминаване от една специалност в друга или при презаписване на учебна година,
-
справка и документиране на учебни планове.
Съгласно заданието и поставената цел на лабораторното упражнение, учебните планове ще се съхраняват в MS Excel таблици, като плановете на всяка специалност ще са комплектовани съвместно по години.
За изпълнението на заданието е необходимо следното:
-
Обявяване на ново приложение на VB.Net с форма за организиране на потребителския интерфейс с наименование frmMain.
-
Създаване на референция към библиотеката на MS Excel.От главното меню на средата за развитие се избира Project | Add Reference. От диалоговата форма се избира страницата COM и съответно обектната библиотека Microsoft Excel 9.0 Object Library .
-
В класа на frmMain се обявяват следните обекти и променливи:
Dim xlObj As Object
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Dim xlRange As Excel.Range
‘------------------------
Dim ParControl As Boolean ' за проверка за пълнота на въведените
данни
Dim ParSelect As Integer ' избрана позиция от главното меню
Dim FileName As String ' името на xls файла
Dim selectedMajor As String
-
На фиг.4.1 е показано първоначалното състояние на формата frmMain.
Фиг. 4.1
Първоначално състояние на формата frmMain
Във формата са проектирани главно меню с позиции СПРАВКА, КОРЕКЦИЯ с падащо подменю Добави дисциплина, Коригирай дисциплина и Изтрий дисциплина, УЧЕБЕН ПЛАН с падащо меню Избери учебен план за копиране, Копирай избрания учебен план и Нов учебен план, СРАВНИ ПЛАНОВЕ и КРАЙ
Главното меню е дублирано с графично меню. Всеки бутон съдържа подходящо избрана икона и съответно помощен текст, съхранен като стринг в параметъра ToolTipText на колекцията ToolBarButton
-
В два панела са разположени двойка RadioButton с надписи Редовно/Задочно обучение и Магистър/Бакалавър
-
В ComboBox е въведен списък на специалностите, по които се обучават студенти. Препоръчително е ComboBox да визуализира наименованието на специалността, за която най-често се изменя учебния план. Ако такава информация липсва в параметъра Text се визуализира първата от списъка специалност.
-
Следващият ComboBox определя годината, от която учебния план влиза в сила. Препоръчително е да се визуализира текущата година. Диапазонът на изменение на годините започва от целесъобразно начало и завършва пет години след текущата.
-
Формата е комплектована с StatusBar. В неговият параметър Text се визуализира стринг, съдържащ информация за предназначението на съответния обект, над който се намира курсора, диагностична информация или необходимите следващи действия.
Във формата с определените размери се избират, а не въвеждат данни, които позволяват еднозначно да се идентифицира всеки учебен план. В демонстрационното приложение е приет следния начин за формиране и кодиране името на файла, съдържащ учебните планове по години за избрана специалност.
Първата буква R/Z показва редовно или задочно обучение, втората буква B/M – съответно бакалавър или магистър, последните четири цифри от наименованието показват годината на учебния план. Между тях е разположена абревиатурата на избраната специалност.
При формирано име на файл (учебни планове по години за специалност) могат да се изпълнят всички позиции от главното меню.
-
За позициите свързани с корекция съдържанието на учебните планове е необходима допълнителна информация. При избор на съответна позиция от менюто се визуализира разширение на формата показано на фиг.4.2.
Фиг.4.2
Разширена форма frmMain
-
Допълнителните текстови полета са разположени върху Panel обект, който се визуализира само при разширяване размера на формата. Тяхното предназначение е следното:
TB1 – пълно наименование на дисциплината. Полето е с филтър, пропускащ български букви, цифри, римските главни букви I,V и Х, специалните символи “,”,”-“ и др.
TB2 – съкратеното наименование на дисциплината. Филтърът е аналогичен на предното текстово поле. Дължината е определена до 5 символа.
TB3, TB4, TB5 и TB6 – текстови полета предназначени за въвеждане на семестъра в който се провежда изпитната процедура. Допуска се само една (две) цифри в диапазона от 1 до 8 при разработката на учебен план за образователно квалификационната степен “Бакалавър” и от 1 до 11 за “Магистър”.
TB7, TB8 и TB9 – текстови полета за въвеждане учебното натоварване на дисциплината, брой часове за лекции, семинарни и лабораторни упражнения. Въвеждат се само до три разрядни числа. В полето TB10 се сумират текущите стойности на предните три полета. Сумирането се извършва при всяко въвеждане на цифра в което и да е поле.
TB11 – броят на седмиците в семестър, до две цифри. По подразбиране стойността на полето е 15.
TB12 – шифър на дисциплината. Уникален код еднозначно идентифициращ дисциплината. Една и съща дисциплина може да бъде включена в различни учебни планове на определена специалност или в плановете на различни специалности.
-
Трите бутона изпълняват следните функции:
ОТКАЗ – на всички тестови полета се присвоява празен стринг и TB11 приема стойност 15.
ЗАПИШИ – добавя нова дисциплина към идентифицирания учебен план, извършва корекция на дисциплина от плана според въведения шифър или отстранява дисциплина с посочения шифър.
ПОКАЖИ – визуализира идентифицирания учебен план за определената начална година.
-
Процедурата за формиране наименованието на учебния план има следния програмен текст:
Sub SubFileName ()
' подпрограма за формиране името на файла
'----Check Control----------------------
If Trim (CB1.Text) = "" Then
MsgBox ("Изберете СПЕЦИАЛНОСТТА !", 32, "КОРЕКЦИЯ")
CB2.Focus ()
ParControl = True
Exit Sub
End If
If Trim (CB2.Text) = "" Then
MsgBox("Изберете ГОДИНАТА на учебния план !", 32, " КОРЕКЦИЯ ")
CB1.Focus ()
ParControl = True
Exit Sub
End If
' образуване името на файла при справка
FileName = "R"
If RB2.Checked = True Then FileName = "Z"
If RB3.Checked = True Then FileName = FileName + "B" Else FileName = FileName + "M"
Select Case CB1.SelectedIndex
Case 0 : FileName = FileName + "XM"
Case 1 : FileName = FileName + "MTT"
Case 2 : FileName = FileName + "TTT"
Case 3 : FileName = FileName + "T"
Case 4 : FileName = FileName + "ET"
Case 5 : FileName = FileName + "AIYT"
Case 6 : FileName = FileName + "E"
Case 7 : FileName = FileName + "KTT"
Case 8 : FileName = FileName + "KCT"
Case 9 : FileName = FileName + "EEEO"
Case 10 : FileName = FileName + "EFP"
Case 11 : FileName = FileName + "KMT"
Case 12 : FileName = FileName + "K"
Case 13 : FileName = FileName + "KMM"
Case 14 : FileName = FileName + "ID"
Case 15 : FileName = FileName + "IM")
Case 16 : FileName = FileName + "ETOMOC"
Case 17 : FileName = FileName + "P"
Case 18 : FileName = FileName + "PA"
End Select
FileName = FileName + Trim (CB2.Text) + ".xls"
ParControl = False
End Sub
Процедурата включва: проверка за минимално необходимите данни, формиране наименованието на файла, съдържащ учебния план и поддържане на параметъра ParControl за индикация на грешка. Примерната процедура има следните недостатъци: проверката на данните не е пълна, необходимо е да се разработи отделна процедура, например SubControl(), която да проверява всички полета, да връща фокуса в полето с липсващи или грешни данни, като отчита положението на курсора, да поддържа параметър за грешка, да визуализира съобщения, съдържащи избраните действия, например добави, промени, изтрий и т.н.
Списъкът на учебните специалности е фиксиран по брой и абревиатура. Проектното решение трябва да включва въвеждане на специалностите от външен носител, например от файл или от таблица на база от данни.
-
Процедурата за визуализация на избрания учебен план (файл) съдържа следния програмен текст:
Private Sub showExcelFile ()
xlApp = New Excel.Application
xlBook = xlApp.Workbooks.Open ("C:\" + FileName)
xlApp.Visible = True
End Sub
Пътят до файла е фиксиран. Препоръчително е пътят да се определя от текущата директория където е инсталирано приложението. На Workbooks обекта се визуализира първата страница. Ако избраната специалност има няколко плана в различни години трябва да се визуализира този план, който отговаря на избраната година.
-
Ако за избраната специалност липсва учебен план, то трябва да се създаде такъв по образец валиден и утвърден за съответния университет. За целта е препоръчително да се разполага с файл образец, съдържащ постоянните надписи и съответните настройки на колони и редове. Примерна процедура
'----CheckFileControl ------------------
If File. Exists ("C:\" + FileName) Then
MsgBox ("За избраната специалност” + CB2.Text + “и " +
CB1.Text + “година” + Chr (13) + " съществува учебен план"
+ Chr(13) + " СЛЕДВА ОТКАЗ !", 16, "Нов учебен план”)
ParControl = False
Else
FileCopy ("C:\NewCopyFileName", "C:\" + FileName)
End If
xlSheet = xlBook.Worksheets (1)
xlSheet.Name = CB1.Text
Процедурата проверява наличието на файл с образуваното име. Ако файлът съществува следва отказ. В противен случай образецът NewCopyFileName се копира с име съхранено в FileName. Пътищата до файловете са фиксирани. Препоръчително те да зависят от директорията на приложението.
Определя се първата страница и се присвоява име, съответствуващо на избраната година.
-
За да се въведат данни в учебния план е необходимо следното:
-
да се определи номера на страницата, съдържаща учебния план на специалността за избраната година и да се въведат новите данни.
Dim i As Integer = 5
Dim j As Integer = 0
Dim k As Integer = 0
SheetsCount = xlBook.Worksheets.Count
For k = 1 To SheetsCount
xlSheet = xlBook.Worksheets(k)
If Val(xlSheet.Name) = Val(CB1.Text) Then
ParSheetExists = True
Do While xlSheet.Range ("B" & i).Text <> ""
i = i + 1
Loop
j=i - 5
xlSheet.Cells (i, 1) = TB12.Text
xlSheet.Cells (i, 2) = j.ToString
xlSheet.Cells (i, 3) = TB1.Text
xlSheet.Cells (i, 4) = TB3.Text
xlSheet.Cells (i, 5) = TB4.Text
xlSheet.Cells (i, 6) = TB5.Text
xlSheet.Cells (i, 7) = TB6.Text
xlSheet.Cells (i, 8) = TB10.Text
xlSheet.Cells (i, 9) = TB7.Text
xlSheet.Cells (i, 10) = TB8.Text
xlSheet.Cells (i, 11) = TB9.Text
Exit For
End If
Next
В процедурата, със SheetsCount се определят броя на страниците в книгата. В цикъл се търси съвпадение между избраната година и наименованието на страницата, което също е година. След определянето на страницата, в случая, например добави се търси първия свободен ред в таблицата (плана). Шифърът на дисциплината се записва в първа колона. Не е задължително шифъра да се визуализира. Ширината на първата колона се нулира.
Параметърът ParSheetExists индицира открита страница – учебен план с избрана година.
В процедурата липсва проверка дали дисциплината, която се добавя вече не съществува в плана.
-
по аналогичен начин се проектират възможностите промени и изтрий.
-
За добавянето на нов учебен план към съществуващите планове на зададена специалност е необходимо да се определи местоположението на новата страница спрямо останалите. За целта
If Val(xlSheet.Name) < Int32.Parse(CB1.Text) Then
xlSheet.Copy (Before:=xlBook.Sheets((k)))
xlSheet = xlBook.Worksheets (k)
xlSheet.Name = CB1.Text
Exit For
End If
Ако годината на новия план е с година по-голяма от вече съществуващ, то образецът на новия план се записва преди него, в частност и като първи. В противен случай се записва като последен.
xlSheet.Copy (After:=xlBook.Sheets((SheetsCount)))
-
Копирането на учебен план се извършва в следната технологична последователност:
-
въвеждат се данните на плана образец и се избира позиция Избери учебен план за копиране,
-
след това се въвеждат данните на новия план и се избира Копирай избрания учебен план.
При копирането на планове се извършва проверка за наличност на плана за копиране и съответно дали съществува вече план, който трябва да бъде създаден като нов
-
Технологично процедурата за сравняване на учебни планове се извършва в следната последователност:
-
въвеждат се данните на първия учебен план (специалност и година) като се проверява неговата наличност,
-
избира се позицията за сравняване на планове,
-
въвеждат се данните на втория учебен план, като се проверява неговата наличност
Резултатът представлява таблица, в която са посочени кои дисциплини от втория учебен план не са включени в първия. Студент, който е започнал обучението си по първия план, трябва допълнително да изучава тези дисциплини, които са пропуснати до неговия курс на обучение в момента.
Дисциплините се сравняват по шифър, а не по наименование. Дисциплини с еднакъв шифър, но различен хорариум също се отчитат като отделна таблица.
-
Задания за самостоятелна разработка.
-
Да се разработи програмна система за отчитане успеха на студентите по учебни групи от избран курс и специалност.
Формата, осигуряваща потребителския интерфейс, трябва да съдържа списък на специалностите, учебните планове, курсовете и групите. За всяка избрана група да се визуализира списък на студентите, техните факултетни номера и оценки от положените изпити. Посредством функциите на MS Excel автоматично да се изчислява средния успех от следването до момента, средния успех на групата по дисциплини, по всички дисциплини и съответно средния успех на курса.
Главното меню съдържа позиции за добавяне/отстраняване на нов курс и/или нова група. За всяка група – добавяне/отстраняване на студент или корекция на личните му данни.
При въведен факултетен номер на студент да се изработва справка за успеха от следването или да се въвежда/изтрива или коригира оценка по зададена дисциплина.
-
Да се разработи приложение за изчисляване на работната заплата на отделни звена от структурата на университета.
Потребителският интерфейс включва добавяне/изтриване и корекция на звена в структурата. За всяко избрано звено добавяне/изтриване и корекция на личния състав. За избран служител от звено, въвеждане на личните данни свързани с изчисляване на работната заплата. С помощта на MS Excel се изчислява заплатата на всеки служител, отделно за звеното данните се визуализират в таблица като се изчислява фонда работна заплата за звено и за университета като цяло. Примерна номенклатура на приходната и разходна части на заплатата:
Номенклатура на приходната част:
Основна заплата
Класове – 2% върху основната заплата
Научна степен
Наднормени часове брой х лв. за един час
Допълнително стимулиране
Номенклатура на разходната част (удръжки):
Данък общ доход
Данък обществено осигуряване
Здравно осигуряване
Отсъствия по болест брой раб.дни х лв за един ден
Други
Сподели с приятели: |