diff options
| author | Syndamia <kamen.d.mladenov@protonmail.com> | 2021-02-26 15:51:49 +0200 |
|---|---|---|
| committer | Syndamia <kamen.d.mladenov@protonmail.com> | 2021-02-26 15:51:49 +0200 |
| commit | 011d8e18831511b2831b2f6c171c42b7620801ab (patch) | |
| tree | b4b6c4e0f358db45b27671077deaabec06dd0078 | |
| parent | e4124f6a37e7208b591cc84e9cdcb36485291ac4 (diff) | |
| download | School-Projects-011d8e18831511b2831b2f6c171c42b7620801ab.tar School-Projects-011d8e18831511b2831b2f6c171c42b7620801ab.tar.gz School-Projects-011d8e18831511b2831b2f6c171c42b7620801ab.zip | |
Major rework over the code in Karoteka VB.Net projects, moved Person class in it's own file
| -rw-r--r-- | VB.Net Projects/Kartoteka/Kartoteka/Form1.Designer.vb | 21 | ||||
| -rw-r--r-- | VB.Net Projects/Kartoteka/Kartoteka/Form1.vb | 102 | ||||
| -rw-r--r-- | VB.Net Projects/Kartoteka/Kartoteka/Person.vb | 17 |
3 files changed, 62 insertions, 78 deletions
diff --git a/VB.Net Projects/Kartoteka/Kartoteka/Form1.Designer.vb b/VB.Net Projects/Kartoteka/Kartoteka/Form1.Designer.vb index f93855b..aa81cfb 100644 --- a/VB.Net Projects/Kartoteka/Kartoteka/Form1.Designer.vb +++ b/VB.Net Projects/Kartoteka/Kartoteka/Form1.Designer.vb @@ -42,6 +42,7 @@ Partial Class Form1 Me.Label2 = New System.Windows.Forms.Label()
Me.Label1 = New System.Windows.Forms.Label()
Me.TabPage2 = New System.Windows.Forms.TabPage()
+ Me.btnGetReport = New System.Windows.Forms.Button()
Me.lblPersonData = New System.Windows.Forms.Label()
Me.cbNames = New System.Windows.Forms.ComboBox()
Me.Label7 = New System.Windows.Forms.Label()
@@ -89,6 +90,7 @@ Partial Class Form1 '
'lblStatus
'
+ Me.lblStatus.ForeColor = System.Drawing.Color.Green
Me.lblStatus.Location = New System.Drawing.Point(100, 206)
Me.lblStatus.Name = "lblStatus"
Me.lblStatus.Size = New System.Drawing.Size(250, 47)
@@ -230,6 +232,7 @@ Partial Class Form1 '
'TabPage2
'
+ Me.TabPage2.Controls.Add(Me.btnGetReport)
Me.TabPage2.Controls.Add(Me.lblPersonData)
Me.TabPage2.Controls.Add(Me.cbNames)
Me.TabPage2.Controls.Add(Me.Label7)
@@ -241,28 +244,37 @@ Partial Class Form1 Me.TabPage2.Text = "Справки"
Me.TabPage2.UseVisualStyleBackColor = True
'
+ 'btnGetReport
+ '
+ Me.btnGetReport.Location = New System.Drawing.Point(363, 11)
+ Me.btnGetReport.Name = "btnGetReport"
+ Me.btnGetReport.Size = New System.Drawing.Size(71, 23)
+ Me.btnGetReport.TabIndex = 20
+ Me.btnGetReport.Text = "Изведи"
+ Me.btnGetReport.UseVisualStyleBackColor = True
+ '
'lblPersonData
'
Me.lblPersonData.AutoSize = True
Me.lblPersonData.Font = New System.Drawing.Font("Segoe UI", 12.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point)
Me.lblPersonData.Location = New System.Drawing.Point(12, 77)
Me.lblPersonData.Name = "lblPersonData"
- Me.lblPersonData.Size = New System.Drawing.Size(128, 21)
+ Me.lblPersonData.Size = New System.Drawing.Size(169, 21)
Me.lblPersonData.TabIndex = 19
- Me.lblPersonData.Text = "Информация за:"
+ Me.lblPersonData.Text = "Изведете потребител!"
'
'cbNames
'
Me.cbNames.FormattingEnabled = True
Me.cbNames.Location = New System.Drawing.Point(52, 11)
Me.cbNames.Name = "cbNames"
- Me.cbNames.Size = New System.Drawing.Size(375, 23)
+ Me.cbNames.Size = New System.Drawing.Size(305, 23)
Me.cbNames.TabIndex = 1
'
'Label7
'
Me.Label7.AutoSize = True
- Me.Label7.Location = New System.Drawing.Point(12, 14)
+ Me.Label7.Location = New System.Drawing.Point(12, 15)
Me.Label7.Name = "Label7"
Me.Label7.Size = New System.Drawing.Size(34, 15)
Me.Label7.TabIndex = 0
@@ -308,4 +320,5 @@ Partial Class Form1 Friend WithEvents Label7 As Label
Friend WithEvents lblStatus As Label
Friend WithEvents lblPersonData As Label
+ Friend WithEvents btnGetReport As Button
End Class
diff --git a/VB.Net Projects/Kartoteka/Kartoteka/Form1.vb b/VB.Net Projects/Kartoteka/Kartoteka/Form1.vb index be6fc4a..c15ee25 100644 --- a/VB.Net Projects/Kartoteka/Kartoteka/Form1.vb +++ b/VB.Net Projects/Kartoteka/Kartoteka/Form1.vb @@ -1,95 +1,49 @@ -Imports Newtonsoft.Json
+Imports System.ComponentModel ' Required for BindingList
+Imports System.IO ' Required for File
+Imports Newtonsoft.Json ' Required for JsonConvert
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)
+ ' Only administrators can write to "C:\", so instead we 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)
+ ' Normal lists don't give out a "signal" when a value is added, which we need so cbNames updates when we update people
+ ReadOnly people As BindingList(Of Person) = New BindingList(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("Въведено!")
+ Private Sub initDataSource(sender As Object, e As EventArgs) Handles MyBase.Load
+ cbNames.DataSource = people
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)
+ Private Sub resetInputTab(sender As Object, e As EventArgs) Handles btnClear.Click, MyBase.Load
+ For Each control As Control In {txtFirstName, txtMiddleName, txtLastName, txtPhoneNumber, txtEmail, lblStatus, dtBirth}
+ control.ResetText()
+ Next
End Sub
- Private Sub resetReportTab(sender As Object, e As EventArgs) Handles MyBase.Load
- cbNames.Items.Clear()
- cbNames.ResetText()
- lblPersonData.Text = "Изберете потребител!"
+ Private Sub btnInput_Click(sender As Object, e As EventArgs) Handles btnInput.Click
+ people.Add(New Person(txtFirstName.Text, txtMiddleName.Text, txtLastName.Text, txtPhoneNumber.Text, txtEmail.Text, dtBirth.Value))
+ lblStatus.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("Данните са запазени във файла успешно!")
+ ' Json Serialization is easier, more universal and more flexible than having a custom serialization
+ File.WriteAllText(filePath, JsonConvert.SerializeObject(people))
+ lblStatus.Text = "Данните са запазени във файла успешно!"
End Sub
Private Sub btnLoad_Click(sender As Object, e As EventArgs) Handles btnLoad.Click
- FileOpen(1, filePath, OpenMode.Input)
-
+ Dim deserializedPeople = JsonConvert.DeserializeObject(Of List(Of Person))(File.ReadAllText(filePath))
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())
+ deserializedPeople.ForEach(Sub(p) people.Add(p))
- FileClose(1)
- changeStatus("Данните са заредени от файла успешно!")
+ lblStatus.Text = "Данните от файла са заредени успешно!"
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()
+ Private Sub btnGetReport_Click(sender As Object, e As EventArgs) Handles btnGetReport.Click
+ Dim selectedPerson As Person = people(cbNames.SelectedIndex)
+ lblPersonData.Text = $"Информация за:{vbCrLf}{vbCrLf}" &
+ $"Имена: {selectedPerson}{vbCrLf}" &
+ $"Телефон: {selectedPerson.PhoneNumber}{vbCrLf}" &
+ $"E-mail: {selectedPerson.Email}{vbCrLf}" &
+ $"Рожденна дата: {selectedPerson.BirthDay}{vbCrLf}"
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
\ No newline at end of file diff --git a/VB.Net Projects/Kartoteka/Kartoteka/Person.vb b/VB.Net Projects/Kartoteka/Kartoteka/Person.vb new file mode 100644 index 0000000..962d237 --- /dev/null +++ b/VB.Net Projects/Kartoteka/Kartoteka/Person.vb @@ -0,0 +1,17 @@ +Public Class Person
+ Public FirstName, MiddleName, LastName, PhoneNumber, 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 Overrides Function ToString() As String
+ Return $"{Me.FirstName} {Me.MiddleName} {Me.LastName}"
+ End Function
+End Class
\ No newline at end of file |
