1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
Imports Newtonsoft.Json
Public Class Form1
' The "C:\" directory is protected, only administrator priviledges can write to it,
' so instead I save the file to the desktop (of the current user)
ReadOnly filePath As String = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) + "\Desktop\data.json"
ReadOnly people As List(Of Person) = New List(Of Person)
Private Sub btnInput_Click(sender As Object, e As EventArgs) Handles btnInput.Click
Dim newPerson = New Person(txtFirstName.Text, txtMiddleName.Text, txtLastName.Text, txtPhoneNumber.Text, txtEmail.Text, dtBirth.Value)
people.Add(newPerson)
cbNames.Items.Add($"{people.Count() - 1} || {newPerson.GetFullName()}")
changeStatus("Въведено!")
End Sub
Private Sub btnClear_Click(sender As Object, e As EventArgs) Handles btnClear.Click, MyBase.Load
txtFirstName.ResetText()
txtMiddleName.ResetText()
txtLastName.ResetText()
txtPhoneNumber.ResetText()
txtEmail.ResetText()
dtBirth.Value = Date.Now
changeStatus(String.Empty)
End Sub
Private Sub resetReportTab(sender As Object, e As EventArgs) Handles MyBase.Load
cbNames.Items.Clear()
cbNames.ResetText()
lblPersonData.Text = "Изберете потребител!"
End Sub
Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click
FileOpen(1, filePath, OpenMode.Output)
' Json Serialization, as it's an easier and a more universal way to serialize data
Print(1, JsonConvert.SerializeObject(people))
FileClose(1)
changeStatus("Данните са запазени във файла успешно!")
End Sub
Private Sub btnLoad_Click(sender As Object, e As EventArgs) Handles btnLoad.Click
FileOpen(1, filePath, OpenMode.Input)
people.Clear()
people.AddRange(JsonConvert.DeserializeObject(LineInput(1), GetType(List(Of Person))))
resetReportTab(sender, e)
cbNames.Items.AddRange(people.Select(Function(p, i) $"{i} || {p.GetFullName()}").ToArray())
FileClose(1)
changeStatus("Данните са заредени от файла успешно!")
End Sub
Private Sub cbNames_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cbNames.SelectedIndexChanged
lblPersonData.Text = $"Информация за:{Environment.NewLine}{Environment.NewLine}" + people(cbNames.SelectedIndex).ToString()
End Sub
Private Sub changeStatus(message As String)
lblStatus.ForeColor = Color.Green
lblStatus.Text = message
End Sub
End Class
Public Class Person
Public FirstName As String
Public MiddleName As String
Public LastName As String
Public PhoneNumber As String
Public Email As String
Public BirthDay As Date
Public Sub New(firstName As String, middleName As String, lastName As String, phoneNumber As String, email As String, birthDay As Date)
Me.FirstName = firstName
Me.MiddleName = middleName
Me.LastName = lastName
Me.PhoneNumber = phoneNumber
Me.Email = email
Me.BirthDay = birthDay
End Sub
Public Function GetFullName()
Return $"{Me.FirstName} {Me.MiddleName} {Me.LastName}"
End Function
Public Overrides Function ToString() As String
Return $"Имена: {Me.FirstName} {Me.MiddleName} {Me.LastName}{Environment.NewLine}" +
$"Телефон: {Me.PhoneNumber}{Environment.NewLine}" +
$"E-mail: {Me.Email}{Environment.NewLine}" +
$"Рожденна дата: {Me.BirthDay}{Environment.NewLine}"
End Function
End Class
|