nein_yards

CarPark Revised

Jan 8th, 2020
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.19 KB | None | 0 0
  1. Module Module1
  2. Function Modulus11(FrequentNumber As String) As Boolean
  3. Dim WeightingFactor As Integer
  4. Dim Checksum As Integer
  5. For i = 2 To 5
  6. WeightingFactor = i * Convert.ToInt32(Convert.ToString(FrequentNumber(5 - i)))
  7. Checksum += WeightingFactor
  8. Next
  9. Checksum = 11 - (Checksum Mod 11)
  10. If Checksum = Convert.ToInt32(Right(FrequentNumber, 1)) Then
  11. Return True
  12. Else
  13. Return False
  14. End If
  15. End Function
  16. Sub Main()
  17. Dim DayEnd As Boolean
  18. Dim Day As String
  19. Dim ArrivalHour As Integer
  20. Dim NumberHours As Integer
  21. Dim InvalidHours As Boolean
  22. Dim HourlyRate As Integer
  23.  
  24. Dim ParkingPrice As Double
  25. Dim ParkingPayment As Double
  26. Dim FrequentDiscount As Integer
  27. Dim FrequentNumber As String
  28. Dim DayTotal As Double
  29. Dim DayNames As New List(Of String)(New String() {"sunday",
  30. "monday",
  31. "tuesday",
  32. "wednesday",
  33. "thursday",
  34. "friday",
  35. "saturday"})
  36.  
  37. Do
  38. Console.Clear()
  39. Do
  40. Console.Write("Enter the day: ") : Day = Console.ReadLine.ToLower
  41. Loop Until DayNames.Contains(Day)
  42. Do
  43. Console.Write("Enter the hour of arrival (8 to 23): ") : ArrivalHour = Console.ReadLine()
  44. Loop Until ArrivalHour > 7 And ArrivalHour < 24
  45. If ArrivalHour < 16 Then
  46. Console.WriteLine("Price per hour:" & Environment.NewLine & "Sunday : £2; Saturday : £3; Rest £10")
  47. Console.WriteLine("Max parking hours:" & Environment.NewLine & "Sunday : 8 hours; Saturday : 4 hours; Rest 2 hours")
  48. Else
  49. Console.WriteLine("Parking upto midnight, £2/hour")
  50. End If
  51. Do
  52. Console.Write("Enter the number of hours you would like to park your car: ") : NumberHours = Console.ReadLine()
  53. InvalidHours = True
  54. If ArrivalHour < 16 Then
  55. Select Case Day
  56. Case "sunday"
  57. If NumberHours <= 8 Then
  58. InvalidHours = False
  59. HourlyRate = 2
  60. End If
  61. Case "saturday"
  62. If NumberHours <= 4 Then
  63. InvalidHours = False
  64. HourlyRate = 3
  65. End If
  66. Case Else
  67. If NumberHours <= 2 Then
  68. InvalidHours = False
  69. HourlyRate = 10
  70. End If
  71. End Select
  72. If NumberHours < 0 Then
  73. InvalidHours = True
  74. End If
  75. Else
  76. If NumberHours <= 24 - ArrivalHour And NumberHours > 0 Then
  77. InvalidHours = False
  78. HourlyRate = 2
  79. End If
  80. End If
  81. ParkingPrice = HourlyRate * NumberHours
  82. Loop While InvalidHours
  83. If ArrivalHour < 16 And ArrivalHour + NumberHours > 16 Then
  84. ParkingPrice = (16 - ArrivalHour) * HourlyRate + 2
  85. End If
  86. FrequentDiscount = 0
  87. Console.WriteLine("Enter 'True' if you have a valid frequent parking number to avail a discount")
  88. Console.WriteLine("If not applicable, Enter False")
  89. Console.Write(">")
  90. If Console.ReadLine() Then
  91. Console.Write("Enter your frequent parking number (XXXXX): ") : FrequentNumber = Console.ReadLine()
  92. If Modulus11(FrequentNumber) Then
  93. Console.WriteLine("Discount Valid!")
  94. If ArrivalHour < 16 Then
  95. FrequentDiscount = 10
  96. Else
  97. FrequentDiscount = 50
  98. End If
  99. Else
  100. Console.WriteLine("Your frequent parking number is invalid.")
  101. End If
  102. End If
  103. ParkingPrice = ParkingPrice * (100 - FrequentDiscount) / 100
  104. Console.WriteLine("Your bill is £" & ParkingPrice & " after a discount of " & FrequentDiscount & "%")
  105. Do
  106. Console.Write("Enter the amount paid(more than or equal to bill): ")
  107. ParkingPayment = Console.ReadLine
  108. Loop Until ParkingPayment >= ParkingPrice
  109. DayTotal += ParkingPayment
  110. Console.Write("Enter -1 to end the day: ")
  111. If Console.ReadLine() = -1 Then
  112. DayEnd = True
  113. End If
  114. Loop Until DayEnd
  115. Console.WriteLine("The daily total of payments: " & DayTotal)
  116. Console.ReadLine()
  117. End Sub
  118.  
  119. End Module
Add Comment
Please, Sign In to add comment