Function tasks database VB.Net Exercise - Visual Basic Programming Course


 Lesson

Functions

 Exercise

Function tasks database

Objetive

Create an improved version of the "tasks database", splitting it into functions.

Code

Imports System
Public Class exercise117
    Structure DateType
        Public year As UShort
        Public month As Byte
        Public day As Byte
    End Structure

    Structure TaskType
        Public date As DateType
        Public description As String
        Public level As Byte
        Public category As String
    End Structure

    Shared counter As Integer = 0
    Shared capacity As Integer = 2000
    Shared tasks As TaskType() = New TaskType(capacity - 1) {}

    Public Shared Sub Add()
        If counter < capacity Then
            Console.Write("Enter the Description of the task: ")
            tasks(counter).description = Console.ReadLine()
            Console.Write("Enter the Level of the task (1-10): ")
            tasks(counter).level = Convert.ToByte(Console.ReadLine())
            Console.Write("Enter the Category of the task: ")
            tasks(counter).category = Console.ReadLine()

            Do
                Console.Write("Enter the Day of the task (1 to 31): ")
                tasks(counter).date.day = Convert.ToByte(Console.ReadLine())
                If tasks(counter).date.day < 1 OrElse tasks(counter).date.day > 31 Then Console.WriteLine("Not a valid day!")
            Loop While tasks(counter).date.day < 1 OrElse tasks(counter).date.day > 31

            Do
                Console.Write("Enter the Month of the task (1 to 12): ")
                tasks(counter).date.month = Convert.ToByte(Console.ReadLine())
                If tasks(counter).date.month < 1 OrElse tasks(counter).date.month > 12 Then Console.WriteLine("Not a valid month!")
            Loop While tasks(counter).date.month < 1 OrElse tasks(counter).date.month > 12

            Do
                Console.Write("Enter the Year of the task: ")
                tasks(counter).date.year = Convert.ToUInt16(Console.ReadLine())
                If tasks(counter).date.year < 1000 OrElse tasks(counter).date.year > 3000 Then Console.WriteLine("Not a valid year!")
            Loop While tasks(counter).date.year < 1000 OrElse tasks(counter).date.year > 3000

            counter += 1
        Else
            Console.WriteLine("Database full.")
        End If
    End Sub

    Public Shared Sub Show()
        If counter >= 1 Then
            Dim startDay, startMonth As Byte
            Dim startYear As UShort
            Dim endDay, endMonth As Byte
            Dim endYear As UShort
            Console.WriteLine("Starting day: ")
            Dim number As String = Console.ReadLine()

            If number = "" Then
                startDay = Convert.ToByte(DateTime.Now.Day)
            Else
                startDay = Convert.ToByte(number)
            End If

            Console.WriteLine("Starting month: ")
            number = Console.ReadLine()

            If number = "" Then
                startMonth = Convert.ToByte(DateTime.Now.Month)
            Else
                startMonth = Convert.ToByte(number)
            End If

            Console.WriteLine("Starting year: ")
            number = Console.ReadLine()

            If number = "" Then
                startYear = Convert.ToUInt16(DateTime.Now.Year)
            Else
                startYear = Convert.ToUInt16(number)
            End If

            Console.WriteLine("Final day: ")
            number = Console.ReadLine()

            If number = "" Then
                endDay = Convert.ToByte(DateTime.Now.Day)
            Else
                endDay = Convert.ToByte(number)
            End If

            Console.WriteLine("Final month: ")
            number = Console.ReadLine()

            If number = "" Then
                endMonth = Convert.ToByte(DateTime.Now.Month)
            Else
                endMonth = Convert.ToByte(number)
            End If

            Console.WriteLine("Final year: ")
            number = Console.ReadLine()

            If number = "" Then
                endYear = Convert.ToUInt16(DateTime.Now.Year)
            Else
                endYear = Convert.ToUInt16(number)
            End If

            Dim startDate As String = "" & startYear & startMonth.ToString("00") & startDay.ToString("00")
            Dim endDate As String = "" & endYear & endMonth.ToString("00") & endDay.ToString("00")

            For i As Integer = 0 To counter - 1
                Dim currentDate As String = "" & tasks(i).date.year & tasks(i).date.month.ToString("00") & tasks(i).date.day.ToString("00")

                If currentDate.CompareTo(startDate) >= 0 AndAlso currentDate.CompareTo(endDate) <= 0 Then
                    Console.WriteLine("The number is {0}: {1}/{2}/" & "{3} - {4} - {5} - {6}.", i + 1, tasks(i).date.day, tasks(i).date.month, tasks(i).date.year, tasks(i).description, tasks(i).category, tasks(i).level)
                End If
            Next
        Else
            Console.WriteLine("Database empty.")
        End If
    End Sub

    Public Shared Sub Find()
        Dim search As String
        Dim found As Boolean

        If counter >= 1 Then
            Console.Write("Enter the text to search: ")
            search = Console.ReadLine()
            found = False
            Dim newValue5 As String

            For i As Integer = 0 To counter - 1

                If tasks(i).description.IndexOf(search) >= 0 OrElse tasks(i).category.IndexOf(search) >= 0 Then

                    If tasks(i).description.Length > 50 Then
                        newValue5 = tasks(i).description.Substring(0, 50)
                    Else
                        newValue5 = tasks(i).description
                    End If

                    found = True
                    Console.WriteLine("{0}: {1}/{2}/{3} - {4}", i + 1, tasks(i).date.day, tasks(i).date.month, tasks(i).date.year, newValue5)
                End If
            Next

            If Not found Then Console.WriteLine("Not found.")
        Else
            Console.WriteLine("Database empty.")
        End If
    End Sub

    Public Shared Sub Update()
        Dim newValue As String

        If counter >= 1 Then
            Console.Write("Enter the number of the task to update: ")
            Dim update As Integer = Convert.ToInt32(Console.ReadLine()) - 1

            If (update >= 0) AndAlso (update < counter) Then
                Console.Write("Description ({0}): ", tasks(update).description)
                newValue = Console.ReadLine()
                If newValue <> "" Then tasks(update).description = newValue
                Console.WriteLine("Level ({0}): ", tasks(update).level)
                newValue = Console.ReadLine()
                If newValue <> "" Then tasks(update).level = Convert.ToByte(newValue)
                Console.WriteLine("Category ({0}): ", tasks(update).category)
                newValue = Console.ReadLine()
                If newValue <> "" Then tasks(update).category = newValue
                Console.WriteLine("Year ({0}): ", tasks(update).date.year)
                newValue = Console.ReadLine()
                If newValue <> "" Then tasks(update).date.year = Convert.ToUInt16(newValue)
                Console.WriteLine("Month ({0}): ", tasks(update).date.month)
                newValue = Console.ReadLine()
                If newValue <> "" Then tasks(update).date.month = Convert.ToByte(newValue)
                Console.WriteLine("Day ({0}): ", tasks(update).date.day)
                newValue = Console.ReadLine()
                If newValue <> "" Then tasks(update - 1).date.day = Convert.ToByte(newValue)
            Else
                Console.WriteLine("Wrong number entered.")
            End If
        Else
            Console.WriteLine("Database empty.")
        End If
    End Sub

    Public Shared Sub Delete()
        If counter >= 1 Then
            Console.Write("Enter the first number of data to delete: ")
            Dim delete As Integer = Convert.ToInt32(Console.ReadLine()) - 1
            Console.Write("Enter the second number of data to delete: ")
            Dim delete2 As Integer = Convert.ToInt32(Console.ReadLine()) - 1

            For pos As Integer = delete To delete2

                For i As Integer = delete2 To counter - 1
                    tasks(i) = tasks(i + 1)
                Next

                counter -= 1
            Next
        Else
            Console.WriteLine("Database empty.")
        End If
    End Sub

    Public Shared Sub Sort()
        For i As Integer = 0 To counter - 1 - 1
            Dim firstDate As String = "" & tasks(i).date.year & tasks(i).date.month.ToString("00") & tasks(i).date.day.ToString("00") & tasks(i).description

            For j As Integer = i + 1 To counter - 1
                Dim secondDate As String = "" & tasks(j).date.year & tasks(j).date.month.ToString("00") & tasks(j).date.day.ToString("00") & tasks(j).description

                If firstDate.CompareTo(secondDate) > 0 Then
                    Dim aux As TaskType = tasks(i)
                    tasks(i) = tasks(j)
                    tasks(j) = aux
                End If
            Next
        Next
    End Sub

    Public Shared Sub FindDuplicates()
        For i As Integer = 0 To counter - 1 - 1

            For j As Integer = i + 1 To counter - 1

                If tasks(i).description = tasks(j).description Then
                    Console.WriteLine("{0} - {1}/{2}/{3}", tasks(i).description, tasks(i).date.day, tasks(i).date.month, tasks(i).date.year)
                    Console.WriteLine("{0} - {1}/{2}/{3}", tasks(j).description, tasks(j).date.day, tasks(j).date.month, tasks(j).date.year)
                End If
            Next
        Next
    End Sub

    Public Shared Sub Main()
        Dim [option] As Char

        Do
            Console.WriteLine()
            Console.WriteLine("Tasks database")
            Console.WriteLine()
            Console.WriteLine("1- Add a new task.")
            Console.WriteLine("2- Show the tasks between two certain dates.")
            Console.WriteLine("3- Find tasks that contain a certain text.")
            Console.WriteLine("4- Update a record.")
            Console.WriteLine("5- Delete some data, between two positions indicated.")
            Console.WriteLine("6- Sort the data alphabetically by date.")
            Console.WriteLine("7- Find Duplicates.")
            Console.WriteLine("Q- Quit.")
            Console.WriteLine("Enter an option:")
            [option] = Convert.ToChar(Console.ReadLine().ToUpper())

            Select Case [option]
                Case "1"c
                    Add()
                Case "2"c
                    Show()
                Case "3"c
                    Find()
                Case "4"c
                    Update()
                Case "5"c
                    Delete()
                Case "6"c
                    Sort()
                Case "7"c
                    FindDuplicates()
                Case "Q"c
                    Console.WriteLine("Quitting...")
                Case Else
                    Console.WriteLine("You entered a wrong option. Please re-enter it.")
            End Select
        Loop While [option] <> "Q"c
    End Sub
End Class

More VB.Net Exercises of Functions

 Functions: greeting + farewell
Create a program whose Main must be like this: public static void Main() { SayHello(); SayGoodbye(); } SayHello and SayGoodbye are functions...
 Function with parameters
Create a program whose Main must be like this: public static void Main() { SayHello("John"); SayGoodbye(); } SayHello and SayGoodbye are fun...
 Function returning a value
Create a program whose Main must be like this: public static void Main() { int x= 3; int y = 5; Console.WriteLine( Sum(x,y) ); } "Sum" is a...
 Function returning a value V2
Create a program whose Main must be like this: public static void Main() { __Console.WriteLine("\"Hello, how are you\" contains {0} spaces", ____...
 Function write centered
Create a function to write centered on screen the text that is indicated as a parameter (supposing a screen width of 80 characters): WriteCentered(...
 Function write underlined
Create a function able to write centered on screen the text that is indicated as a parameter (supposing a screen width of 80 characters) and then unde...
 Function sum of array
Create a Visual Basic (VB.Net) program to calculate the sum of the elements in an array. "Main" should be like this: public static void Main() { i...
 Function double
Create a function named "Double" to calculate and return an integer number doubled. For example. Double(7) should return 14....
 Function Double reference parameter
Create a function named "Double" to calculate the double of an integer number, and modify the data passed as an argument. It must be a "void" function...
 Function swap reference parameters
Create a function named "Swap" to swap the values of two integer numbers, which are passed by reference. An example of use might be: int x=5, y=...
 Function power local variables
Create a function named "Power" to calculate the result of raising an integer number to another (positive integer) number. It must return another inte...
 Function recursive power
Create a function that calculates the result of raising an integer to another integer (eg 5 raised to 3 = 53 = 5 × 5 × 5 = 125). This function must be...
 Function Fibonacci
Create a Visual Basic (VB.Net) program that uses recursion to calculate a number in the Fibonacci series (in which the first two items are 1, and for ...
 Function modify a letter in a string
Create a function named "ChangeChar" to modify a letter in a certain position (0 based) of a string, replacing it with a different letter: string s...
 Function IsPrimeTarea
Create a function named "IsPrime", which receives an integer number and retuns true if it is prime, or false if it is not: if (isPrime(127)) ......
 Parameters of Main, Sum
Create a program named "sum", which receives two integer numbers in the command line and displays their sum, as in this example: sum 5 3 8...
 Function SumDigits
Create a function SumDigits that receives a number and returns any results in the sum of its digits. For example, if the number is 123, the sum would ...
 Function Factorial
The factorial of a number is expressed as follows: n! = n · (n-1) · (n-2) · (n-3) · ... · 3 · 2 · 1 For example, 6! = 6·5·4·3·2·1 Create a r...
 Parameters of Main, Reverse
Create a program named "reverse", which receives several words in the command line and displays them in reverse order, as in this example: reverse ...
 Function GetInt
Create a function named "GetInt", which displays on screen the text received as a parameter, asks the user for an integer number, repeats if the numbe...
 Greatest value in a array
Create a function which returns the greatest value stored in an array of real numbers which is specified as parameter: float[] data={1.5f, 0.7f, 8....
 Function factorial (iterative)
Create an iterative (non-recursive) function to calculate the factorial of the number specified as parameter: Console.Write ( Factorial (6) ); w...
 Function WriteTitle
Create a function named "WriteTitle" to write a text centered on screen, uppercase, with extra spaces and with a line over it and another line under i...
 Function return value for Main
Create a Visual Basic (VB.Net) program in which you write a title (using the previous WriteTitle function) which the user will specify in command line...
 Function CountDV
Create a function that calculates the amount of numeric digits and vowels that a text string contains. It will accept three parameters: the string tha...
 Function IsAlphabetic
Create a function that tells if a character is alphabetic (A through Z) or not. It should be used like this: if (IsAlphabetic ("a")) System.Consol...
 Function IsNumber
Create a function that tells if a string is an intenger number. It should be used like this: if (IsNumber ("1234")) System.Console.WriteLine ("It ...
 Function calculator, params of Main
Create a Visual Basic (VB.Net) program to calculate a sum, subtraction, product or division, analyzing the command line parameters: calc 5 + 379 ...
 Function calculator, params and return value of Main
Create a Visual Basic (VB.Net) program to calculate a sum, subtraction, product or division, analyzing the command line parameters: calc 5 + 379 ...
 Function MinMaxArray
Create a function named MinMaxArray, to return the minimum and maximum values stored in an array, using reference parameters: float[] data={1.5f, 0...
 Reverse, recursive
Create a program that uses recursion to reverse a string of characters (for example, from "Hello" it would return "olleH")....
 Function WriteRectangle
Create a function WriteRectangle to display a (filled) rectangle on the screen, with the width and height indicated as parameters, using asterisks. Co...
 Function Palindrome, iterative
Create an iterative function to say whether a string is symmetric (a palindrome). For example, "RADAR" is a palindrome....
 Palindrome, recursive
Create a recursive function to say whether a string is symmetric (a palindrome). For example, "RADAR" is a palindrome....
 Function GetMinMax
Create a function named "GetMinMax", which will ask the user for a minimum value (a number) and a maximum value (another number). It should be called ...
 Function Multiply & MultiplyR
Create two functions, Multiply and MultiplyR, to calculate the product of two numbers using sums. T he first version must be iterative, and the second...


Juan A. Ripoll - Systems Tutorials and Programming Courses © 2024 All rights reserved.  Legal Conditions.