Программа на VBA

Автор работы: Пользователь скрыл имя, 18 Апреля 2012 в 17:55, курсовая работа

Краткое описание

Написать программу на VBA, которая вводит данные, выполняет расчеты и выводит на экран:
 Исходные данные в виде таблицы, где перечислены фамилии и инициалы студентов, оценки по всем предметам
 Средний балл для каждого студента;
 Средний балл по каждому предмету всей группы;
 Средний балл по всем предметам всей группы;
 Фамилию студента с наименьшим средним баллом.

Содержание

Задание на курсовую работу 3
Описание переменных 4
Блок схемы 5
Описание алгоритма 17
Листинг программы 18
Результат работы программы 23
Список литературы 26

Прикрепленные файлы: 1 файл

курсовая по информатике.doc

— 1.46 Мб (Скачать документ)

                                             Содержание  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 

                         Задание на курсовую работу

Имеется группа из 10 студентов, которые обучаются по 6 предметам.

Написать программу  на VBA, которая вводит данные, выполняет расчеты и выводит на экран:

  • Исходные данные в виде таблицы, где перечислены фамилии и инициалы студентов, оценки по всем предметам
  • Средний балл для каждого студента;
  • Средний балл по каждому предмету всей группы;
  • Средний балл по всем предметам всей группы;
  • Фамилию студента с наименьшим средним баллом.

 

                                Описание переменных

Переменные i, j, k – являются счетчиками цикла и имеют целочисленный тип.

ocenki(m,n) – массив данных, служит для хранения всех числовых данных – оценок по предметам. Имеет целый тип.

zad1(10), zad2(6) – одномерные массивы для хранения результатов вычисления среднего балла. Имеют дробный тип.

naz(n) – массив данных, служащий для хранения всех фамилий студентов. Имеет строковый тип.

x1, x2 – переменные служащие для вычислений среднего балла по предметам. Имеют дробный тип.

min – переменная для вычисления минимального значения среднего балла. Имеет дробный тип.

Tmp – переменная для временного хранения данных (чисел) при упорядочивании массива. Имеет дробный тип.

Tmp2 - переменная для временного хранения данных (названий) при упорядочивании массива. Имеет строковый тип. 
 
 
 
 
 
 
 
 
 
 
 
 
 

                              Блок схемы

 
 

 
 
 
 

 
 

 

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 

 
 
 

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Описание  алгоритма

 

     Начало  программы.

     Очищение  листа «Результат». Ввод начальных (нулевых) значений для расчета величин (средние баллы для студентов, средние баллы по предметам, средний балл по всем предметам, минимальный средний балл студента, счетчик вывода минимального балла).

     Заполнение  массива оценок из листа «Начало», а так же ввод этих значений в таблицу листа «Результат».

     Нахождение  среднего балла для каждого студента. Для этого организуется два вложенных  цикла. Во внутреннем цикле суммируются  все баллы студента. После этого  находится среднее значение, и  оно записывается в массив. Также, осуществляется ввод этих данных в таблицу листа «Результат».

     Нахождение  среднего балла по предметам. Для  этого организуется два вложенных  цикла. Во внутреннем цикле суммируются  все баллы по предмету. После этого  находится среднее значение, и оно записывается в массив. Также, осуществляется ввод этих данных в таблицу листа «Результат».

     Нахождение  среднего балла по всем предметом. Для  этого организуется цикл, в котором  суммируются все средние значения по предметам. Затем находится среднее.

     Нахождение  минимального среднего балла у студентов. Для этого, переменной присваивается  среднее значение первого студента. После этого в цикле сравниваются средние значения всех студентов. Минимальное  среднее заносится в переменную.

     В таблицу листа «Результат» вводятся фамилии и инициалы студентов, названия предметов, некоторые заголовки столбцов.

     В таблицу листа «Результат» вводится средний балл по всем предметам.

     Вводятся  фамилии студента и минимальный  средний балл. Для этого организован  цикл. В цикле присутствует оператор выбора, который необходим в том случае, если студентов с минимальным баллом несколько. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

                                    Листинг программы

Public ocenki(10, 6) As Double 'создание  двумерного массива

Public naz(10) As String, zad1(10) As Double, zad2(6) As Double 'создание одномерного массива

Public i As Integer, j As Integer, k As Integer, z As String 'описание переменных

Public x1 As Double, x2 As Double, min As Double, tmp As Double, tmp1 As String 'описание переменных 

Sub zap_mass() 'функция записи  данных в массивы

    i = 1 ' присваиваем  переменной начальное значение

    j = 1 ' присваиваем  переменной начальное значение

    Do While i <= 10 'создаем цикл по переменной i

        j = 1 ' присваиваем переменной значение

        Do  'создаем цикл

            ocenki(i, j) = CDbl(Cells(i + 2, j + 1)) ' записываем  данные в массив

            j = j + 1 'изменяем значение переменной

        Loop While j <= 6 'завершаем цикл

        naz(i) = Cells(i + 2, 1) ' записываем данные в массив

        i = i + 1 'изменяем значение переменной

    Loop 'завершаем  цикл

End Sub      'завершение функции' 
 

Sub zad_1() ' создаем функцию  для вычисления первого задания  (средний бал для каждого студента)

    For i = 1 To 10 'создаем цикл  по переменной i

        zad1(i) = 0 ' обнуляем значение переменных

        For j = 1 To 6 'создаем цикл  по переменной j

            zad1(i) = zad1(i) + ocenki(i, j) ' присваиваем переменной  значение

        Next j 'завершаем цикл

        Cells(i + 2, 8) = zad1(i) / 6 ' выводим значение в ячейку

    Next i 'завершаем  цикл

End Sub      'завершение функции'

  

Sub zad_2() ' создаем функцию  для вычисления второго задания  (средний бал по предметам)

    For i = 1 To 6 'создаем  цикл  по переменной i (столбцам таблицы)

        zad2(i) = 0 ' обнуляем значение переменных (по строкам таблицы данных)

        For j = 1 To 10 'создаем цикл  по переменной j

            zad2(i) = zad2(i) + ocenki(j, i) ' присваиваем переменной  значение

        Next j 'завершаем цикл

        Cells(13, i + 1) = zad2(i) / 10 ' выводим значение  в ячейку

    Next i 'завершаем  цикл

End Sub      'завершение функции' 
 

Sub zad_3() ' создаем функцию  для вычисления третьего задания  (средний бал по всем предметам)

    x1 = 0 ' обнуляем значение переменных

    For i = 1 To 10 'создаем  цикл  по переменной i по строкам

        For j = 1 To 6 'создаем цикл  по переменной j по столбцам

            x1 = x1 + ocenki(i, j) ' присваиваем переменной  значение

        Next j 'завершаем цикл

    Next i 'завершаем цикл

    Cells(14, 2) = x1 / 60 ' выводим значение в ячейку  данных

End Sub      'завершение функции' 
 

Sub zad_4() ' создаем функцию  для вычисления четвертого задания  (студента, с наихудшим средним  баллом)

    min = 2 ^ 31 ' обнуляем  значение переменных

    k = 1 ' присваиваем  значение переменной

    For i = 1 To 10 'создаем  цикл  по переменной i (по строкам)

        x1 = 0 ' обнуляем значение переменных

        For j = 1 To 6 'создаем цикл  по переменной j

            x1 = x1 + ocenki(i, j) 'вычисляем сумму всех оценок для студента

        Next j 'завершаем цикл

        If x1 < min Then 'если текущая оценка  меньше минимальной по студентам

            min = x1 ' присваиваем переменной значение

            k = i ' присваиваем переменной значение

        End If 'завершаем оператор if

    Next i 'завершаем  цикл

    Cells(15, 2) = naz(k) ' выводим значение в ячейку

End Sub      'завершение функции' 

Private Sub sort_Click() 'создаем  функцию выполняющуюся при нажатии  на кнопку sort - Упорядочивание данных

    Call zap_mass 'вызываем  функцию заполнения массива данными

    Call ochistka 'вызываем  функцию очистки результатов

    MsgBox ("Упорядочивание  производим по наибольшему среднему  баллу") 'выводим на экран сообщение

    For i = 1 To 9 'создаем  цикл  по переменной i

        For j = i + 1 To 10 'создаем цикл  по переменной j

            x1 = 0 ' обнуляем значение переменных

            x2 = 0 ' обнуляем значение переменных

            For k = 1 To 6 'создаем цикл  по переменной k

                x1 = x1 + ocenki(i, k) ' присваиваем переменной значение

                x2 = x2 + ocenki(j, k) ' присваиваем переменной  значение

            Next k 'завершаем цикл

            If x1 > x2 Then ' если выполняется условие

                For k = 1 To 6 'создаем цикл  по переменной k

                    'тут меняем местами содержимое  ячеек массива

                    tmp = ocenki(i, k)

                    ocenki(i, k) = ocenki(j, k)

                    ocenki(j, k) = tmp

                Next k 'завершаем цикл

                tmp2 = naz(i)

                naz(i) = naz(j)

                naz(j) = tmp2

            End If 'завершаем оператор if

        Next j 'завершаем цикл по столбцам

    Next i 'завершаем  цикл по строкам

    For i = 1 To 10 'создаем цикл  по переменной i

        For j = 1 To 6 'создаем цикл  по переменной j

            Cells(i + 2, j + 1) = ocenki(i, j) ' выводим значение  в ячейку

        Next j 'завершаем цикл

        Cells(i + 2, 1) = naz(i) ' выводим значение в ячейку

    Next i 'завершаем  цикл

    Call rasschet_Click ' выполнить процедуру рассчета

End Sub 'завершение функции' 
 

Private Sub rasschet_Click() 'создаем  функцию выполняющуюся при нажатии  на кнопку Рассчет

    Call zap_mass 'вызываем  функцию

    Call zad_1 'вызываем функцию

    Call zad_2 'вызываем  функцию

    Call zad_3 'вызываем  функцию

    Call zad_4 'вызываем  функцию

End Sub 'завершение функции' 
 

Private Sub diagramma_Click() 'создаем  функцию построения диаграммы  с подпесями

    Charts.Add 'добавлЯем диаграмму

    ActiveChart.ChartType = xlColumnClustered

    ActiveChart.SetSourceData Source:=Sheets("Данные").Range("B2:G2,B13:G13"), _

        PlotBy:=xlRows 'определяем выделенный диапазон ячеек

    ActiveChart.Location Where:=xlLocationAsObject, Name:="Данные" 'выводим диаграмму в лист с именем "Данные"

    With ActiveChart

        .HasTitle = True ' делаем название диаграммы  видимым

Информация о работе Программа на VBA