Автор работы: Пользователь скрыл имя, 29 Декабря 2010 в 04:20, курсовая работа
Функциональный подход реализует принцип движения «от задач» и применяется, когда определен комплекс задач, для обслуживания которых создается информационная система. В этом случае можно выделить минимальный необходимый набор объектов предметной области, которые должны быть описаны.
В предметном подходе объекты предметной области определяются с таким расчетом, чтобы их можно было использовать при решении множества разнообразных, заранее не определенных задач.
Ind(i) = i
Next i
' сортировка данных
Call Sort(KeyG, N, Ind)
Call Sort(KeyK, N, Ind)
' вывод заголовка таблицы отчета
PrintLine(F4, "Курс" + vbTab + "Группа" + vbTab + _
"Кол-во студ." + vbTab + "Сред-ний балл")
' чтение первой записи в отсортированном списке
i = 1
S.ReadFromFile(F3, Ind(i))
Do While i <= N
' фиксирование номера текущего курса
NK = S.Kurs
Do While NK = S.Kurs And i <= N
' фиксирование номера текущей группы
NG = S.Group
' начальные количество и сумма равны нулю
k = 0
Sum = 0
' вычисление количества студентов и суммы их
' средних баллов
Do While NK = S.Kurs And NG = S.Group
k = k + 1
Sum = Sum + S.Sb
i = i + 1
If i <= N Then
S.ReadFromFile(F3, Ind(i))
Else
Exit Do
End If
Loop
' вывод в файл номера курса, номера группы,
' количества студентов и среднего балла группы
PrintLine(F4, CStr(NK) + vbTab + CStr(NG) + vbTab _
+ vbTab + vbTab + CStr(k) + vbTab + vbTab _
+ vbTab + CStr(Format(Sum / k, "#0.00")))
Loop
Loop
' вспомогательные файлы закрываются
F3.Close()
FileClose(F4)
' загрузка только что созданного файла в RichTextBox1
RichTextBox1.LoadFile(Path2, _
richName = Path2
' показ элемента RichTextBox1 и кнопки «Сохранить отчет»
RichTextBox1.Visible = True
cmdSaveOtch.Visible = True
End Sub
13.3. Вычисление среднего балла для каждого студента
Вычисление среднего балла для каждого студента реализовано в процедуре обработки события выбора команды меню «Отчеты à Вычисление среднего балла».
Собственно вычисление среднего балла алгоритмически не является трудной задачей, и она уже решена в пользовательской процедуре. В процедуре для данной команды меню будет использована эта процедура. Для вывода результата будем использовать таблицу (элемент DataGridView) , для этого добавим в проект еще одну форму, на которую поместим элемент DataGridView и кнопку, для того чтобы дать возможность пользователю не только просмотреть таблицу на экране, но и сохранить результаты в текстовом файле для дальнейшего использования.
Добавим в проект форму, дадим форме имя frmTableRez и поместим на нее элемент для отображения данных в виде таблицы (DataGridView), переименуем этот элемент, задав его имя, GridView1.
Также поместим на форму кнопку с системным именем cmdSaveOtch для сохранения отчета в виде текстового файла.
Процедура обработки события нажатия на кнопку «Сохранить отчет» имеет вид:
Private Sub cmdSaveOtch_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles cmdSaveOtch.Click
Dim i As Integer
Dim j As Integer
' запрос имени файла для сохранения отчета
With frmMenu.SaveFileDialog1
.FileName = ""
.Filter = "Все файлы (*.*)|*.*|" + _
"Текстовые файлы. (*.txt)|*.txt|" + _
"Файлы исходных данных (*.dan)|*.dan|" + _
"Файлы результатов (*.rez)|*.
.FilterIndex = 2
.ShowDialog()
End With
' если имя файла не пусто,
If frmMenu.SaveFileDialog1.
' то файл открывается
F4 = FreeFile()
FileOpen(f4, frmMenu.SaveFileDialog1.
Op
' и в него выводятся все ячейки таблицы
With GridView1
For i = 0 To .ColumnCount - 1
Print(F4, .Columns(i).Name + vbTab)
Next i
PrintLine(F4, "")
For j = 0 To .RowCount - 1
For i = 0 To .ColumnCount - 1
Print(F4, CStr(.Rows(j).Cells(i).Value) + vbTab)
Next i
PrintLine(F4, "")
Next j
End With
' файл отчета закрывается
FileClose(F4)
' сообщение об успешном
MsgBox("Отчет сохранен", vbOKOnly + vbInformation, _
"Сохранение")
End If
End Sub
А теперь приведем код процедуры обработки события, соответствующего выбору пункта меню «Отчеты à Вычисление среднего балла». В этой процедуре предусмотрены две возможности вывода результатов: в виде, упорядоченном по курсу, группе и фамилиям студентов; или в виде, упорядоченном по курсу, группе и убыванию среднего балла. Код процедуры снабжен подробными комментариями.
Private Sub mnuQueryBallItem_Click(ByVal sender As _
System.Object, ByVal e As System.EventArgs) _
Handles mnuQueryKolItem.Click
Dim i As Integer
Dim Ind(Nmax) As Integer
Dim KeyK(Nmax) As Single
Dim KeyG(Nmax) As Single
Dim KeyFIO(Nmax) As String
Dim KeyB(Nmax) As Single
Dim S As TBall = New TBall()
Dim Button As Integer
' вызов процедуры создания
' содержащего информацию о
AverageBallCreate()
' открывается созданный
F3 = New FileStream(Path1, FileMode.Open)
' подготовка данных для сортировок
For i = 1 To N
S.ReadFromFile(F3, i)
KeyK(i) = S.Kurs
KeyG(i) = S.Group
KeyFIO(i) = S.FIO
KeyB(i) = -S.Sb ' для сортировки по убыванию
Ind(i) = i
Next i
' запрос о порядке вывода отчета
Button = MsgBox("Вывод по убыванию среднего балла?", _
vbQuestion + vbYesNo, "Вывод результата")
' сортировка данных
' ФИО, либо по среднему баллу, в зависимости ответа
' пользователя на запрос
If Button = vbYes Then
Call Sort(KeyB, N, Ind)
Call Sort(KeyG, N, Ind)
Call Sort(KeyK, N, Ind)
Else
Call SortStr(KeyFIO, N, Ind)
Call Sort(KeyG, N, Ind)
Call Sort(KeyK, N, Ind)
End If
' заполнение заголовка формы frmTableRez
frmTableRez.Text = "Просмотр файла: " + Path1
With frmTableRez.GridView1
.ColumnCount = 5
' запись названий столбцов в таблицу
.Columns(0).Name = "№"
.Columns(1).Name = "Курс"
.Columns(2).Name = "Группа"
.Columns(3).Name = "Фамилия И.О."
.Columns(4).Name = "Средний балл"
' чтение очередной записи и загрузка ее полей
' в таблицу
For i = 1 To N
S.ReadFromFile(F3, Ind(i))
' загрузка новой строки в таблицу
Dim row As String() = New String() _
{CStr(i), S.Kurs, S.Group, S.FIO, _
CStr(Format(S.
.Rows.Add(row)
Next i
End With
' вспомогательный файл закрывается
F3.Close()
' загрузка формы frmTableRez
frmTableRez.Show()
End Sub
Таким образом, нами были предусмотрены все средства, запланированные в техническом задании проекта, а значит, информационная система «Студенты» после прохождения комплекса разнообразных тестов на работоспособность и корректность обработки информации может быть внедрена на рабочем месте заказчика.