Introduction
Hello, and welcome to my article. In this short article, you will learn how to make a simple diary in Visual Basic.NET.
Practical
Create a new Visual Basic.NET Console Application. After the application has loaded, add a Class named clsEntry and add the following Properties and methods into it.
Class clsEntry Public Property dtDateOfentry As DateTime Public Property strContent As String Public Sub New(ByVal dtDate As DateTime, _ ByVal strText As String) dtDateOfentry = dtDate strContent = strText End Sub Public Overrides Function ToString() As String Return dtDateOfentry & " " & strContent End Function End Class
clsEntry contains two properties: DateOfEntry and strContent. The plan is to be able to enter a date and then supply the Diary entry. The plan further is to be able to search for entries as well as Delete entries based on the Date the entries were made. Add a Class named clsDatabase to the project.
Add the following Namespace to clsDatabase:
Imports System.Collections.Generic
We need this Namespace because we will be working with generic types. Add a List object to store the diary entries.
Private lstEntries As List(Of clsEntry)
Add the Constructor:
Public Sub New() lstEntries = New List(Of clsEntry)() End Sub
This instantiates the lstEntries object, and it is now ready to be used. Add the following two sub procedures to Add items or to Delete items:
Public Sub Add(ByVal dtDate As DateTime, ByVal strText _ As String) lstEntries.Add(New clsEntry(dtDate, strText)) End Sub Public Sub Delete(ByVal dtDate As DateTime) Dim lstResults As List(Of clsEntry) = Find(dtDate, True) For Each Entry As clsEntry In lstResults lstEntries.Remove(Entry) Next End Sub
Add adds an entry based on the entered text and date. Delete deletes the entry or entries which were entered on a certain date. Add the Find method.
Public Function Find(ByVal dtDate As DateTime, ByVal blnTime _ As Boolean) As List(Of clsEntry) Dim lstResults As List(Of clsEntry) = New List(Of clsEntry)() For Each Entry As clsEntry In lstEntries If ((blnTime) AndAlso (Entry.dtDateOfentry = _ dtDate)) OrElse ((Not blnTime) AndAlso _ (Entry.dtDateOfentry.Date = dtDate.Date)) Then lstResults.Add(Entry) Next Return lstResults End Function
This searches for Entries. Add the clsDiary class and add the following:
Class clsDiary Private dbData As clsDatabase Public Sub New() dbData = New clsDatabase() End Sub Private Function GetDate() As DateTime Console.WriteLine("Enter Date and Time") Dim dtDate As DateTime While Not DateTime.TryParse(Console.ReadLine(), dtDate) Console.WriteLine("Error. Try again:") End While Return dtDate End Function Public Sub Print(ByVal dtDay As DateTime) Dim lstResults As List(Of clsEntry) = dbData.Find(dtDay, _ False) For Each Entry As clsEntry In lstResults Console.WriteLine(Entry) Next End Sub Public Sub Add() Dim dtDate As DateTime = GetDate() Console.WriteLine("Enter the entry text:") Dim strText As String = Console.ReadLine() dbData.Add(dtDate, strText) End Sub Public Sub Search() Dim dtDate As DateTime = GetDate() Dim lstResults As List(Of clsEntry) = dbData.Find(dtDate, _ False) If lstResults.Count() > 0 Then Console.WriteLine("Found:") For Each Entry As clsEntry In lstResults Console.WriteLine(Entry) Next Else Console.WriteLine("Nothing found.") End If End Sub Public Sub Delete() Dim dtDate As DateTime = GetDate() dbData.Delete(dtDate) End Sub Public Sub Welcome() Console.Clear() Console.WriteLine("Welcome to your virtual diary!") Console.WriteLine("Today is: {0}", DateTime.Now) Console.WriteLine() Console.WriteLine("Diary Entries For Today:") Print(DateTime.Today) Console.WriteLine() Console.WriteLine("Diary Entries For Tomorrow:") Print(DateTime.Now.AddDays(1)) Console.WriteLine() End Sub End Class
You may see some similarities with the clsDatabase class; this is due to separation of the data from the business logic. The Database class serves as the storage manager, whereas the Diary class simply needs to invoke those methods or subs.
Make it work. Add the following code for the Module:
Module Module1 Sub Main(ByVal args As String()) Dim objDiary As clsDiary = New clsDiary() Dim cSelection As Char = "0"c While cSelection <> "4"c objDiary.Welcome() Console.WriteLine() Console.WriteLine("Choose:") Console.WriteLine("1 - Add an entry") Console.WriteLine("2 - Search for entries") Console.WriteLine("3 - Delete entries") Console.WriteLine("4 - Exit") cSelection = Console.ReadKey().KeyChar Console.WriteLine() Select Case cSelection Case "1"c objDiary.Add() Case "2"c objDiary.Search() Case "3"c objDiary.Delete() Case "4"c Console.WriteLine("Press any key to quit.") Case Else Console.WriteLine("Error.") End Select Console.ReadKey() End While End Sub End Module
This sets up a new clsDiary object, and then determines what you have entered. Based on your supplied value, it will either add entries, delete entries, or search for entries. This is shown in Figures 1-3.
Figure 1: Start
Figure 2: Entries Added
Figure 3: Entries Found
Conclusion
In this article, you have seen how quickly you can make a simple diary. Although it is not connected to a real world database, the principles are similar.