Проектирование информационной системы

Автор работы: Пользователь скрыл имя, 29 Декабря 2010 в 04:20, курсовая работа

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

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

В предметном подходе объекты предметной области определяются с таким расчетом, чтобы их можно было использовать при решении множества разнообразных, заранее не определенных задач.

Вложенные файлы: 1 файл

Net.doc

— 623.50 Кб (Скачать файл)
 

                ' запись в файл ФИО студента

                PrintLine(F4, vbTab + vbTab + CStr(NPP) + "." + _

                                  vbTab + R.FIO)

                NPP = NPP + 1

                i = i + 1

 

                ' если еще есть записи, то считываем

                ' следующую, иначе выходим из цикла

                If i <= N Then

                  R.ReadFromFile(f1, Ind(i))

                Else

                  Exit Do

                End If

              Loop

 

              ' пропуск строки между списками различных групп

              PrintLine(F4, "")

            Loop

 

          Loop

 

          ' файла отчета закрывается

          FileClose(F4)

 

          ' загрузка только что созданного файла в RichTextBox1

          RichTextBox1.LoadFile(Path2, _

                                     RichTextBoxStreamType.PlainText)

          richName = Path2

 

          ' показ элемента RichTextBox1 и кнопки «Сохранить отчет»

          RichTextBox1.Visible = True

          cmdSaveOtch.Visible = True

      End Sub

 

      Вывод списка одной группы реализован в  процедуре обработки события  выбора пункта меню «Отчеты à Списки групп à Одна группа»

      В этой задаче у пользователя сначала запрашиваются значения для курса и группы, и проверяется корректность введенных значений. Затем файл исходных данных упорядочивается по полю «Фамилия» в алфавитном порядке; после чего он просматривается, из него выбираются и выводятся в текстовый файл записи, в которых значения курса и группы совпадают со значениями, введенными пользователем.

      Private Sub mnuQueryListOneItem_Click(ByVal sender As _

      System.Object, ByVal e As System.EventArgs) _

      Handles mnuQueryListOneItem.Click

          Dim i As Integer

          Dim Ind(Nmax) As Integer

          Dim NK As Byte

          Dim NG As Byte

          Dim NPP As Integer

          Dim TempStr As String

          Dim KeyFIO(Nmax) As String

          Dim R As TStud = New TStud()

 

          ' открывается файл otch.ist, находящийся в той же папке,

          ' что и работающий проект

          Path2 = CurDir() + "\otch.ist"

          F4 = FreeFile()

          FileOpen(F4, Path2, OpenMode.Output)

 

          ' запрос у пользователя интересующего его курса

          TempStr = InputBox("Введите курс", "Ввод курса")

          Do While Not IsNumeric(TempStr)

 

            'если введенный курс не является числом,

            ' но является пустым значением

            If (TempStr = "") Then

              ' то файл закрывается и осуществляется выход

              ' из процедуры

              FileClose(F4)

              Exit Sub

            End If

           ' если введенный курс не является числом,

            ' то еще раз производится запрос номера курса

            MsgBox("Курс - число", vbOKOnly + vbExclamation, _

                                        "Ошибка")

            TempStr = InputBox("Введите курс", "Ввод курса")

          Loop

 

          ' перевод введенного курса в числовое значение

          NK = CByte(TempStr)

 

          ' запрос у пользователя интересующей его группы

          TempStr = InputBox("Введите группу", "Ввод группы")

          Do While Not IsNumeric(TempStr)

 

            'если введенная группа не является числом,

            ' но является пустым значением

            If (TempStr = "") Then

              ' то файл закрывается и осуществляется выход

              ' из процедуры

              FileClose(F4)

              Exit Sub

            End If

            ' если введенная группа не является числом,

            ' то еще раз производится запрос номера группы

            MsgBox("Группа-число", vbOKOnly + vbExclamation, _

                                        "Ошибка")

            TempStr = InputBox("Введите группу", "Ввод группы")

          Loop

 

          ' перевод введенной группы в числовое значение

          NG = CByte(TempStr)

 

          ' подготовка данных для сортировки по полю ФИО

          For i = 1 To N

            R.ReadFromFile(f1, i)

            KeyFIO(i) = R.FIO

            Ind(i) = i

          Next i

 

          ' сортировка данных

          Call SortStr(KeyFIO, N, Ind)

 

          ' запись в файл информации о курсе и группы

          PrintLine(F4, "Курс " + CStr(NK) + ", Группа " + CStr(NG))

 

          ' порядковый номер студентов в группе

          ' начинается с единицы

          NPP = 1

          For i = 1 To N

            ' считывание следующей записи и если курс и группа

            ' соответствуют, то производится вывод в файл отчета

            R.ReadFromFile(f1, Ind(i))

            If R.Kurs = NK And R.Group = NG Then

              PrintLine(F4, vbTab + CStr(NPP) + "." + vbTab + R.FIO)

              NPP = NPP + 1

            End If

          Next i

 

          ' файл отчета закрывается

          FileClose(F4)

 

          ' загрузка только что созданного файла в RichTextBox1

          RichTextBox1.LoadFile(Path2, _

                                           RichTextBoxStreamType.PlainText)

          richName = Path2

 

          ' показ элемента RichTextBox1 и кнопки «Сохранить отчет»

          RichTextBox1.Visible = True

          cmdSaveOtch.Visible = True

      End Sub

 

13.2. Количество студентов  и средний балл  в группах

      Во второй и третьей задаче из числа запланированных задач необходимо для каждого студента вычислить средний балл. Вынесем вычисление среднего балла каждого студента в отдельную пользовательскую процедуру, которая будет принадлежать форме frmMenu. В этой процедуре создается вспомогательный файл прямого доступа с записями пользовательского типа Tball, содержащий столько же записей, сколько находится в файле исходных данных. Пользовательский тип Tball содержит поле для вычисления среднего балла. Код процедуры приведен ниже.

      Private Sub AverageBallCreate()

          Dim i As Integer

          Dim j As Integer

          Dim KeyK(Nmax) As Single

          Dim KeyG(Nmax) As Single

          Dim KeyFIO(Nmax) As String

          Dim KeyB(Nmax) As Single

          Dim R As TStud = New TStud()

          Dim S As TBall = New TBall()

 

          ' открывается вспомогательный файл Ball.avg, находящийся в

          ' той же папке, что и работающий проект

          Path1 = CurDir + "\Ball.avg"

          F3 = New FileStream(Path1, FileMode.Create)

 

          ' читается следующая запись из основного файла базы данных

          ' вычисляется средний балл и созданная запись о среднем

          ' балле выводится во вспомогательный файл

          For i = 1 To N

            R.ReadFromFile(f1, i)

            S.Sb = 0

 

            For j = 1 To R.Kol

              S.Sb = S.Sb + R.M(j - 1)

            Next j

 

            S.Sb = S.Sb / R.Kol

            S.Kurs = R.Kurs

            S.Group = R.Group

            S.FIO = R.FIO

 

            S.writeToFile(F3, i)

          Next i

 

          ' вспомогательный файл закрывается

          F3.Close()

      End Sub

 

      Вычисление  количества студентов и среднего балла для каждой учебной группы реализовано в процедуре обработки события выбора команды меню «Отчеты à Количество и средний балл».

      В файле исходных данных содержатся только оценки, поэтому в этой процедуре, сначала формируется вспомогательный файл с данными о студентах (курс, группа, ФИО, средний балл). Затем вспомогательный файл упорядочивается по курсу и группе. После этого вычисляется количество записей в группе с одинаковыми значениями курса и группы, а также средний балл в этой же группе.

      Алгоритм  вычислений похож на алгоритм, используемый для вывода списков по группам. Во внешнем цикле перебираются курсы, во вложенном в него цикле перебираются номера групп, и в следующем по уровню вложенности цикле (для одинаковых значений курса и группы во всех записях) увеличиваются значения счетчика для количества студентов и суммы для накопления средних баллов. Значения счетчика и суммы обнуляются перед входом во внутренний цикл, после выхода из которого выводится количество студентов в группе и вычисляется и выводится средний балл в группе. Код процедуры снабжен подробными комментариями.

      Private Sub mnuQueryKolItem_Click(ByVal sender As _

      System.Object, ByVal e As System.EventArgs) _

      Handles mnuQueryBallItem.Click

          Dim Sum As Double

          Dim k As Integer

          Dim i As Integer

          Dim Ind(Nmax) As Integer

          Dim KeyK(Nmax) As Single

          Dim KeyG(Nmax) As Single

          Dim NK As Byte

          Dim NG As Byte

          Dim S As TBall = New TBall()

 

          ' вызов процедуры создания вспомогательного файла,

          ' содержащего информацию о среднем балле каждого студента

          AverageBallCreate()

 

          ' открывается созданный вспомогательный файл

          F3 = New FileStream(Path1, FileMode.Open)

 

          ' открывается вспомогательный файл kol.avg, находящийся в

          ' той же папке, что и работающий проект

          Path2 = CurDir() + "\kol.avg"

          F4 = FreeFile()

          FileOpen(F4, Path2, OpenMode.Output)

 

          ' подготовка данных для сортировки по курсу и группе

          For i = 1 To N

            S.ReadFromFile(F3, i)

            KeyK(i) = S.Kurs

            KeyG(i) = S.Group

Информация о работе Проектирование информационной системы