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

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

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

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

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

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

Net.doc

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

          If Check1.Checked Then

            Del(Ind(Pos)) = 1

          Else

            Del(Ind(Pos)) = 0

          End If

      End Sub

 

      Private Sub cmdPack_Click(ByVal sender As System.Object, _

      ByVal e As System.EventArgs) Handles cmdPack.Click

          Dim i As Integer

          Dim j As Integer = 1

          Dim R As TStud = New TStud()

 

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

          F2 = New FileStream(PathTemp, FileMode.Create)

 

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

          ' записи, которые не нужно удалять

          For i = 1 To N

            R.ReadFromFile(f1, i)

            If Del(i) = 0 Then

              R.writeToFile(F2, j)

              j = j + 1

            End If

          Next i

 

          ' закрываются файлы, и происходит сохранение

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

          ' файла базы данных

          f1.Close()

          F2.Close()

          Kill(Decl.Path)

          Rename(PathTemp, Decl.Path)

 

          ' открывается новый основной (рабочий файл) базы

          f1 = New FileStream(Decl.Path, FileMode.Open)

          N = f1.Length \ R.len

 

          ' возвращение исходных значений массивам Ind и Del

          For i = 1 To Nmax

            Ind(i) = i

            Del(i) = 0

          Next i

 

          ' вывод первой записи данных

          Pos = 1

          If N = 0 Then

            Call ShowNewZap()

          Else

            Call ShowZap(Pos)

          End If

 

          MsgBox("Обновление выполнено успешно!")

      End Sub

 

      Таким образом, для удаления записей используется временный файл, куда переносятся  все те записи, которые не должны быть удалены (для них значение Del(i) равно нулю), затем исходный файл удаляется, а временный файл переименовывается.

 

    Новый этап тестирования проекта с целью проверки его работоспособности при добавленных возможностях.

 

11.4. Сохранение и удаление файлов

      Мы описали возможности ввода, просмотра и редактирования данных. Добавим несколько процедур, обрабатывающие события выбора следующих пунктов меню: «Файл à Сохранить как», «Файл à Закрыть» и «Файл à Удалить».

      При выборе данного пункта меню «Файл à Сохранить как» основной файл базы (файл с данными) должен быть сохранен под новым именем, а затем, должно быть открыто это новое сохранение.

      Private Sub mnuFileSaveAsItem_Click(ByVal sender As _

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

      Handles mnuFileSaveAsItem.Click

          Dim R As TStud = New TStud()

          Dim Sp As TSpec = New TSpec()

          Dim PathOld As String

          Dim PathOldSpec As String

 

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

          ' Файла-справочника

          PathOld = Decl.Path

          PathSpec = Mid(Decl.Path, 1, Len(Decl.Path) - 4) + ".spe"

          PathOldSpec = PathSpec

 

          ' запрос имени нового файла базы

          With Me.SaveFileDialog1

            .FileName = ""

            .Filter = "Все файлы (*.*)|*.*|" + _

                 "Текстовые файлы. (*.txt)|*.txt|" + _

                 "Файлы исходных данных (*.dan)|*.dan|" + _

                 "Файлы результатов (*.rez)|*.rez"

            .FilterIndex = 3

            .ShowDialog()

            Decl.Path = .FileName

            If Decl.Path <> "" Then

              PathSpec = Mid(Decl.Path, 1, Len(Decl.Path) - 4) + _

                            ".spe"

            End If

          End With

 

          ' если имя нового основного файла пусто, то рабочие файлы

          ' остаются прежними и производится выход из процедуры

          If Decl.Path = "" Then

            Decl.Path = PathOld

            PathSpec = PathOldSpec

            Exit Sub

          End If

 

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

          ' рабочих файлов

          Close()

          If Not (Dir(Decl.Path) = "") Then

            Kill(Decl.Path)

            Kill(PathSpec)

          End If

          FileCopy(PathOld, Decl.Path)

          FileCopy(PathOldSpec, PathSpec)

 

          ' после копирования открываются новые файлы

          f1 = New FileStream(Decl.Path, FileMode.Open)

          F1_sp = New FileStream(PathSpec, FileMode.Open)

 

          frmInputEdit.Text = "Файл: " + Decl.Path

      End Sub

 

      При выборе пункта меню «Файл à Закрыть» все открытые файлы должны быть закрыты и все пункты меню, недоступные в начале работы снова должны снова стать недоступными.

      Private Sub mnuFileCloseItem_Click(ByVal sender As _

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

      Handles mnuFileCloseItem.Click

          ' закрываются все файлы, открытые в процессе работы

          CloseAllFiles()

 

          ' пункты меню, которые были неактивными в начале

          ' работы программы, снова становятся неактивными

          mnuFileSaveItem.Enabled = False

          mnuFileSaveAsItem.Enabled = False

          mnuFileCloseItem.Enabled = False

          mnuFileDeleteItem.Enabled = False

          mnuView.Enabled = False

          mnuSort.Enabled = False

          mnuQuery.Enabled = False

          mnuSearch.Enabled = False

      End Sub

 

      При выборе пункта меню «Файл à Удалить» основной файл базы (файл с данными) должен быть удален, и все пункты меню, недоступные в начале работы снова должны снова стать недоступными.

 

      Private Sub mnuFileDeleteItem_Click(ByVal sender As _

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

      Handles mnuFileDeleteItem.Click

          Dim Button As Integer

 

          ' запрос подтверждения на удаление

          Button = MsgBox("Действительно удалить?", vbYesNo + _

              vbQuestion, "Удаление файла")

 

          ' в случае подтверждения вызывается процедура закрытия

          ' и удаляется основной файл базы данных

         If Button = vbYes Then

            Call mnuFileCloseItem_Click(sender, e)

            Kill(Decl.Path)

            Kill(PathSpec)

          End If

      End Sub

 

    На этом месте  снова необходимо протестировать проект на работоспособность и корректность работы. Особое внимание следует уделить взаимодействию различных компонентов приложения.

12. Сортировка данных

      Сортировка  данных в данной информационной системе  производится при помощи индексного массива Ind, описанного в модуле Declar. В этом случае результатом сортировки будет не отсортированный файл, а вспомогательный массив номеров (индексов) Ind, показывающий в каком порядке следует выбирать записи файла, чтобы они образовывали отсортированную последовательность.

      Алгоритмы сортировки опишем в стандартном модуле, который необходимо добавить в проект под именем Sorting. Для сортировки данных будем использовать алгоритм сортировки обменом (метод «пузырьковой» сортировки).

      Приведем  код процедуры сортировки по числовым полям.

    Public Sub Sort(Key() As Single, N As Integer, Ind() As Integer)

         Dim i As Integer

         Dim j As Integer

         Dim k As Integer

 

         For j = 1 To N - 1

           For i = 1 To N - j

             If Key(Ind(i)) > Key(Ind(i + 1)) Then

               k = Ind(i)

               Ind(i) = Ind(i + 1)

               Ind(i + 1) = k

             End If

           Next i

         Next j

     End Sub

 

      Перед обращением к этой процедуре необходимо инициализировать массив Ind и занести элементы ключевого поля сортируемого файла во вспомогательный массив Key. Благодаря описанию массива Key как вещественного в него можно записывать числовые данные любого типа: как Single, так и Integer и Byte.

      Кроме того, эта процедура пригодна и для сортировки по убыванию ключа; для этого достаточно при инициализации массива Key умножить значения ключевых полей на минус единицу.

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

      Заголовок процедуры сортировки по строковым  полям имеет вид:

     Public Sub SortStr(Key() As String , N As Integer, _

                        Ind() As Integer)

 

      Заголовок процедуры сортировки по полям типа даты имеет вид:

     Public Sub SortDate(Key() As Date, N As Integer, _

                         Ind() As Integer)

 

      Опишем  теперь работу с указанными процедурами  сортировки. Т.е. опишем процедуры обработки  событий выбора пунктов меню «Сортировка à По курсу», «Сортировка à По группе», «Сортировка à По ФИО» и «Сортировка à Исходный порядок». При этом необходимо предусмотреть корректное выполнение вложенных сортировок.

 

     Выбор пункта меню «Сортировка à По курсу»

 

      Private Sub mnuSortKursItem_Click(ByVal sender As _

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

      Handles mnuSortKursItem.Click

          Dim i As Integer

          Dim KeyK(Nmax) As Single

          Dim R As TStud = New TStud()

 

          ' подготовка к сортировке

          For i = 1 To N

            R.ReadFromFile(f1, i)

            KeyK(i) = R.Kurs

          Next i

 

          ' вызов процедуры сортировки

          Sort(KeyK, N, Ind)

      End Sub

 

     Выбор пункта меню «Сортировка à По группе»

 

      Private Sub mnuSortGroupItem_Click(ByVal sender As _

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

      Handles mnuSortGroupItem.Click

          Dim i As Integer

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