Books database Learn programming Visual Basic (VB.net)

Lesson:

Arrays, Structures and Strings


Exercise:

Books database 15


Objetive:

Create a small database, which will be used to store data about books. For a certain book, we want to keep the following information:

Title
Author
The program must be able to store 1000 books, and the user will be allowed to:

Add data for one book
Display all the entered books (just title and author, in the same line)
Search for the book(s) with a certain title
Delete a book at a known position (for example, book number 6)
Exit the program

Hint: to delete an item in an array, you must move backwards every item which was placed after it, and the decrease the counter.


Code:

Imports System
Public Class exercise82
    Structure book
        Public title As String
        Public author As String
    End Structure

    Public Shared Sub Main()
        Dim capacity As Integer = 1000
        Dim books As book() = New book(capacity - 1) {}
        Dim repeat As Boolean = True
        Dim [option] As String
        Dim amount As Integer = 0
        Dim search As String
        Dim found As Boolean

        Do
            Console.WriteLine()
            Console.WriteLine("Books database")
            Console.WriteLine()
            Console.WriteLine("1- Add a new book")
            Console.WriteLine("2- Display all books")
            Console.WriteLine("3- Exact search for any book")
            Console.WriteLine("4- Partial search")
            Console.WriteLine("5- Delete a book")
            Console.WriteLine("0- Exit")
            Console.Write("Enter an option: ")
            [option] = Console.ReadLine()

            Select Case [option]
                Case "1"

                    If amount < capacity Then
                        Console.WriteLine("Enter data for book {0}", amount + 1)
                        Console.Write("Enter the name of the book: ")
                        books(amount).title = Console.ReadLine()
                        Console.Write("Enter the author: ")
                        books(amount).author = Console.ReadLine()
                        amount += 1
                        Console.WriteLine()
                    Else
                        Console.WriteLine("Database full")
                    End If

                Case "2"

                    If amount = 0 Then
                        _
                    Else

                        For i As Integer = 0 To amount - 1
                            Console.WriteLine("{0}: Title = {1},  Author = {2}", i + 1, books(i).title, books(i).author)
                        Next

                        Console.WriteLine()
                    End If

                Case "3"
                    Console.WriteLine("Enter the name of the book")
                    search = Console.ReadLine()
                    found = False

                    For i As Integer = 0 To amount - 1

                        If books(i).title = search Then
                            Console.WriteLine("Book {0} found", books(i).title)
                            found = True
                        End If
                    Next

                    If Not found Then Console.WriteLine("Not found!")
                    Console.WriteLine()
                Case "4"
                    Console.WriteLine("Enter the search string")
                    search = Console.ReadLine()
                    found = False

                    For i As Integer = 0 To amount - 1
                        If books(i).title.ToUpper().Contains(search.ToUpper()) Then books(i).author.ToUpper().Contains(search.ToUpper())
                    Next

                    Console.WriteLine("{0} found in {1}", search, books(i).title)
                    found = True
                    Console.WriteLine()
                    If Not found Then Console.WriteLine("Not found!")
                Case "5"

                    If amount = 0 Then
                        Console.WriteLine("No data to delete")
                    Else
                        Console.WriteLine("Enter the number of book to delete (1 to {0})", amount)
                        Dim posToDelete As Integer = Convert.ToInt32(Console.ReadLine()) - 1

                        For i As Integer = posToDelete To amount - 1 - 1
                            books(i) = books(i + 1)
                        Next

                        amount -= 1
                    End If

                Case "0"
                    repeat = False
                Case Else
                    Console.WriteLine()
                    Console.WriteLine("Wrong option. Please re-enter" & vbLf)
            End Select
        Loop While repeat
    End Sub
End Class