Exercise
Books database
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