Московский Технический Университет Связи и Информатики
МТУСИ
ЛЕ ВАН КУЕН
БИК 1201
ТЕМА 5.2:Лабораторная Работа
« Теоретические основы объектно-ориентированного программирования »
Вариант 10
1.Тема и название работы:
Теоретические основы объектно-ориентированного программирования
2.Задание на разработку проекта и вариант задания:
В отделе кадров предприятия имеется список сведений о n сотрудниках. О каждом сотруднике известно: фамилия (в списке фамилии расположены по алфавиту), номер отдела, должность, оклад и стаж работы. Составить алгоритм и программу, которые выводят списки фамилий сотрудников по отделам с указанием занимаемой должности, оклада и стажа..
3.Формализация задания:
Ввод:
File:исходная данная
ot():массив номеров отдела
s(): массив стажа работы
ok():массив оклада
fa():массив фамилии
dol():массив должности
Вывод
список фамилий сотрудников по отделам с указанием занимаемой должности, оклада и стажа
ot(), s(), ok(), fa(), dol()
Действие
читать данный
выводить результат
4.Разработка проекта:
Базовый класс: class1
Поле:
Otdel(): одномерный массив номеров отдела
staz(): одномерный массив стажа работы
oklad(): одномерный массив оклада
famili(): одномерный массив фамилии
dolznot(): одномерный массив должности
indek(): одномерный массив положения
Свойства для чтения и записи полей класса:
ot():массив сахранения номеров отдела
s(): массив сахранения стажа работы
ok():массив сахранения оклада
fa():массив сахранения фамилии
dol():массив сахранения должности
ind():массив сахранения положения
метод:
с начало нам надо получить дана из файла через процедуру koli() и readfile()
в обработке мы будем размещать положения сотрудников по отделе с процедурой sort()
потом выносить результат через процедур cozdat() и vivod()
Разработка графического интерфейса пользователя:
Установка свойств объектов
Объект | Имя объекта | Свойство | Значение свойства |
форма | Form1 | Text | Form1 |
метка | Label1 | Text | В отделе кадров предприятия имеется список сведений о n сотрудниках. О каждом сотруднике известно: фамилия (в списке фамилии расположены по алфавиту), номер отдела, должность, оклад и стаж работы. Составить алгоритм и программу, которые выводят списки фамилий сотрудников по отделам с указанием занимаемой должности, оклада и стажа.. |
метка | Label2 | Text | файл |
метка | Label3 | Text | инфо |
Текстовое поле | Textbox1 | Name | Textbox1 |
Текстовое поле | Textbox2 | Name | Textbox2 |
кнопка | Buton1 | Name | Buton1 |
Text | Читать файл | ||
кнопка | Button2 | Name | Buton2 |
text | решать |
Объект | Имя объекта | Свойство | Значение свойства |
форма | Form2 | Text | Form1 |
метка | Label1 | Text | Список фамилий сотрудников по отлелам |
Текстовое поле | Textbox1 | Name | Textbox1 |
кнопка | Buton1 | Name | Buton1 |
Text | решение | ||
кнопка | Button2 | Name | Buton2 |
text | конец |
Разработка схемы алгоритма, решаемой задачи
Написание программного кода
Option Strict On
Option Explicit On
Imports System.IO
Module Module1
Public cl As Class1
Function koli(ByVal filename As String, ByRef p As String) As Integer
Dim k As Integer
Dim f = New StreamReader(filename)
Dim line As String
k = 0
p = ""
Try
Do While Not f.EndOfStream
line = f.ReadLine()
k = k + 1
p = p & line & vbNewLine
Loop
Catch ex As Exception
MsgBox("can't read text in file")
End Try
Return k
End Function
End Module
Option Strict On
Option Explicit On
Imports System.IO
Public Class Class1
Private ot(), s(), ok(), ind() As Integer
Private fa(), dol() As String
Private n As Integer
Public Sub New(ByVal kol As Integer)
ReDim ok(kol - 1), fa(kol - 1), dol(kol - 1), ot(kol - 1), s(kol - 1), ind(kol - 1)
End Sub
Public Property famili() As String()
Get
Return fa
End Get
Set(ByVal value As String())
fa = value
End Set
End Property
Public Property oklad() As Integer()
Get
Return ok
End Get
Set(ByVal value As Integer())
ok = value
End Set
End Property
Public Property dolznot() As String()
Get
Return dol
End Get
Set(ByVal value As String())
dol = value
End Set
End Property
Public Property otdel() As Integer()
Get
Return ot
End Get
Set(ByVal value As Integer())
ot = value
End Set
End Property
Public Property staz() As Integer()
Get
Return s
End Get
Set(ByVal value As Integer())
s = value
End Set
End Property
Public Property indek() As Integer()
Get
Return ind
End Get
Set(ByVal value As Integer())
ind = value
End Set
End Property
Public Property num() As Integer
Get
Return n
End Get
Set(ByVal value As Integer)
n = value
End Set
End Property
Public Sub readfile(ByVal filename As String)
Dim f = New StreamReader(filename)
Dim line, st As String
Dim i, j As Integer
Try
i = 0
Do While Not f.EndOfStream
line = f.ReadLine()
j = line.IndexOf(Space(1))
famili(i) = line.Substring(0, j)
line = line.Remove(0, j + 1)
j = line.IndexOf(Space(1))
st = line.Substring(0, j)
otdel(i) = CInt(st)
line = line.Remove(0, j + 1)
j = line.IndexOf(Space(1))
dolznot(i) = line.Substring(0, j)
line = line.Remove(0, j + 1)
j = line.IndexOf(Space(1))
st = line.Substring(0, j)
oklad(i) = CInt(st)
line = line.Remove(0, j + 1)
st = line
staz(i) = CInt(st)
i = i + 1
Loop
f.Close()
Catch ex As Exception
MsgBox("no data")
End Try
End Sub
Public Sub vivod(ByVal t As TextBox, ByVal st As String)
t.Text = st
End Sub
Public Sub sort()
Dim i, j, swap As Integer
For i = 0 To num - 1
indek(i) = i
Next
For i = 0 To num - 2
For j = i + 1 To num - 1
If otdel(indek(i)) > otdel(indek(j)) Then
swap = indek(i)
indek(i) = indek(j)
indek(j) = swap
End If
Next
Next
End Sub
Public Sub sozdat(ByRef p As String)
Dim i As Integer
p = ""
For i = 0 To num - 1
p = p & CStr(otdel(indek(i))) & Space(1) & famili(indek(i)) & Space(1) & dolznot(indek(i)) & Space(1)
p = p & CStr(oklad(indek(i))) & Space(1) & CStr(staz(indek(i))) & vbNewLine
Next
End Sub
End Class
Public Class Form1
Public n As Integer
Public p As String
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim fl As String
fl = TextBox1.Text
n = koli(fl, p)
cl = New Class1(n)
cl.num = n
cl.readfile(fl)
cl.vivod(TextBox2, p)
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Form2.Show()
End Sub
End Class
Public Class Form2
Public p As String
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
cl.sort()
cl.sozdat(p)
cl.vivod(TextBox1, p)
End Sub
End Class
5. Результаты выполнения проекта: