views:

81

answers:

2

the problem is that I first have to convert the two-dim to a one-dim, then find the selected index and then convert again and then save the new index. after that I have to use the right string.format to show the right output.. I'm just confused =(

In the program there are two text boxes that ask for "row" and "col" size and then you press the button and a list box shows............................................................................................................................... Row...Col....................................................................................................................................... 1------1----Vacant ........................................................................ 1......2.......Vacant................................................................................................... 1......3.......Vacant.................................................................................................................................... 2------1----Vacant......................................................................................................................... 2......2.......Vacant.................................................................................................................................... 2......3.......Vacant.......................................................................................................................................................... 3------1----Vacant.................................................................................................................................... etc............................................................................................................................................................. and when I double click one line it has to say "Reserved" Can someone help me what to do this please?

This is my project folder so far here you can see my fail codes http://www.mediafire.com/?o6ol8crpx7x9rno and this is my assignment ...http://www.mediafire.com/?vfr3bvfyk673bmd...

...http://i29.tinypic.com/risq6r.jpg... I'm not allowedd to post images yet so there it is, that's how the program is supposed to look like in the end

CODE: 'Created by: Hans Elias Juneby 'Started: July 10, 2010 Completed July 0, 2010

Public Class MainFrame ''' ''' Enum used for choices of showing results ''' ''' Private Enum UpdateOptions ShowAllSeats 'reserved and vacant seats ShowOnlyVacantSeats 'Only vacant seats
ShowOnlyReservedSeats 'Only reserved seats End Enum

'Instance variables Private bookingObj As SeatBooking = New SeatBooking() Private showOptions As UpdateOptions = UpdateOptions.ShowAllSeats

''' ''' Default constructor ''' Initialize components and do other preparations. ''' This method is called automatically before the form is made visible ''' ''' Public Sub New()

  ' This call is required by the Windows Form Designer.
  InitializeComponent()

  ' My initialization
  InitializeControlvalues()
  UpdateResults()

End Sub

''' ''' Organize initiations ''' Fill comboboxes with options (strings), set default values, etc ''' ''' Private Sub InitializeControlvalues() FillUnitTypeList() lstUnits.SelectedIndex = -1 cmbShowOptions.Items.AddRange([Enum].GetNames(GetType(UpdateOptions))) cmbShowOptions.SelectedIndex = 0 rbtnLetters.Checked = True ' txtNumOfSeats.Text = bookingObj.GetMaxCols.ToString() 'default values ' txtNumOfRows.Text = bookingObj.GetMaxRows.ToString() 'default values lblNumVacants.Text = String.Empty 'default values
lblTotal.Text = String.Empty 'default values lblPercent.Text = String.Empty 'default values End Sub

''' ''' Clear listbox, format new strings with the help of the bookingObj and '''fill in the box. ''' ''' Private Sub UpdateResults()

End Sub

''' ''' Helper function that returns a string containing a string "** Reserved **" or '''"Vacant" or no text according the value in showOptions. THe UpdateResults ''' calls this function in detecting which string to show in the listbox ''' ''' Input ''' Input ''' A formatted string as explained above ''' Private Function GetReservationStatusString()

  Select Case (cmbShowOptions.SelectedIndex)

     Case 0

     Case 1

     Case 2

  End Select

End Function

'Fills values in the combobox Private Sub FillUnitTypeList() Dim units As String() = {"Bus Seats", "Train Seats", "Plane Seats"} cmbUnitType.Items.AddRange(units) cmbUnitType.SelectedIndex = 0

End Sub

Private Sub cmbShowOptions_SelectedIndexChange(ByVal sender As System.Object, ByVal e As System.GC) showOptions = DirectCast(cmbShowOptions.SelectedIndex, UpdateOptions) UpdateResults() End Sub

Private Sub btnMatrix_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnMatrix.Click Dim SeatBooking As New SeatBooking

  bookingObj.GetMaxRows.ToString()
  bookingObj.GetMaxCols.ToString()

  lblTotal.Text = txtNumOfRows.Text * txtNumOfSeats.Text

End Sub

''' ''' Event-handler for the double-click event. ''' Reserve/cancel the seat chosen in the listbox (call bookingObj.SetRowAndCOlumnValue), ''' only if the showOption is Show ALL; otherwise, give an error message and do nothing. ''' ''' sender-object from the caller ''' EventArgs object from the caller ''' Private Sub lstUnits_DoubleClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lstUnits.DoubleClick

  lblNumVacants.Text = lblTotal.Text - 1
  Return

End Sub

''' ''' Event-handler method for change in the radiobutton ''' ''' ''' ''' Private Sub rbtnLetters_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rbtnLetters.CheckedChanged UpdateResults() Dim A As Integer = 65 Dim myChar As Char Dim col As Integer = 0 myChar = Convert.ToChar((A + col))

End Sub

Private Sub UpdateUnit() 'Dim strText As String = bookingObj.GetUnitName(cmbUnitType.SelectedIndex) ' lblVacantUnits.Text End Sub End Class

then the SeatBook class: 'Created by: Hans Elias Juneby 'Started: July 10, 2010 Completed July 0, 2010

Public Class SeatBooking

Private array As Double() 'Declaration of the array Private lastIndex As Integer = 0 'last filled position (lastIndex+1 = number of items

''' ''' Create (or recreate) the matrix with the given size ''' '''Number of rows ''' Number of columns ''' Public Sub CreateArray(ByVal rowSize As Integer, ByVal colSize As Integer) Debug.Assert(rowSize >= 0) 'Program execution halts here in case size is <0; array = New Double(rowSize - 1) {} Debug.Assert(colSize >= 0) 'Program execution halts here in case size is <0; array = New Double(colSize - 1) {} Dim seatMatrix As Boolean(,) seatMatrix = New Boolean(rowSize, colSize) {}

End Sub ''' ''' Calculate the total number of elements(row*col) ''' '''The total number of elements ''' Public Function GetMaxCount() As Integer

End Function

''' ''' Check if a seat in a specific row and column is reserved. ''' '''given row '''given col '''True if the seat is reserved and false otherwise ''' Public Function IsReserved(ByVal row As Integer, ByVal col As Integer)

End Function

''' ''' Make a new reservation or cancel an existing. This process is onde by ''' reversing the boolean value in the given position in the matrix, from true to ''' false (reverse the seat) or vice versa(Cancel the reservation) ''' '''given row '''given col ''' Public Sub Reserve(ByVal row As Integer, ByVal col As Integer)

End Sub

''' ''' Thenumber of rows in the Matrix ''' ''' The number of rows ''' Public Function GetMaxRows() As Integer Dim colsize As Integer = MainFrame.txtNumOfSeats.Text Dim rowsize As Integer = MainFrame.txtNumOfRows.Text

  CreateArray(colsize, rowsize)

  For i As Integer = 0 To array.Length - 1

     MainFrame.lstUnits.Items.Add("----" & i & "---" & GetMaxCols.ToString.Length)
  Next

End Function

''' ''' Thenumber of columns in the Matrix ''' ''' The number of columns ''' Public Function GetMaxCols() As Integer Dim colsize As Integer = MainFrame.txtNumOfSeats.Text Dim rowsize As Integer = MainFrame.txtNumOfRows.Text

  CreateArray(rowsize, colsize)

  For h As Integer = 0 To array.Length - 1

  Next

End Function

''' ''' The method first finds the first vacant pos in the matrix (row, col) ''' and then calls another method MatrixIndexToVectorialIndex that determines which ''' position the element has if the matrix was rolled out into a one-dimensional ''' array. In a 3x3 matrix, the element in position (1,1) has an index 4 in ''' one-dimensional array. The method is useful when updating the listbox in the ''' GUI which contains a one-dimensional array of strings. The method determines which ''' position (row,col) in the matrix corresponds to an item (row) in the listbox. ''' '''The index, considering the matrix as one long vector, to the first vacant ''' position ( the first False value). A value -1 is returned if no vacant element is ''' found ''' Public Function GetFirstVacantPosition() As Integer

End Function

''' ''' Determine a corresponding index for an element at (row,col) in a one-dimensional ''' presentation of the matrix. Think of the matrix as beeing rolled out into a one-dim ''' array. In a 3x3 matrix, the element in position (1,1) has an index 4 in ''' one-dimensional array. ''' 20 11 22 ''' 33 41 55 ''' 60 7 99 Consider value (1,1)=41 ''' The above matrix can now be represented as one dimensional array. This makes it ''' easier to update the listbox in the GUI. ''' 20 11 22 33 41 55 60 7 99 value(4)=41 ''' Index 0 1 2 3 4 5 6 7 8 '''Hence, index (1,1) in the matrix corresponds to row 4 in the listbox (one-dim array) ''' ''' ''' ''' The new index as explained above ''' Public Function MatrixIndexToVectorIndex(ByVal row As Integer, ByVal col As Integer)

End Function

''' ''' Determines the index in the matrix (row,col) that corresponds to a given ''' index in a one-dim array (listbox). This method actually is reverse process of ''' the method MatrixIndexToVectorIndex (see above). The parameter row contains ''' the input, i.e. index of the element in a one-dim array. The results (row and col) ''' are saved and sent back to the caller via the ref variables row,col. ''' ''' Input and output parameter ''' Output parameter ''' Public Sub VectorIndexToMatrixIndex(ByRef row As Integer, ByRef col As Integer)

End Sub

''' ''' This function receives an index in a one-dim array (e.g. listbox) and calls ''' the method VectorIndexToMatrixIndex to fin the same position in the matrix. ''' It then calls the function Reserve to either reserve or cancel a booking. ''' (If False value is saved in the element, it reserves the seat by changing ''' the value to True, and vice-versa). ''' ''' ''' Public Sub SetRowAndColumnValue(ByVal oneDimListIndex As Integer)

End Sub

''' ''' Calculate the total number of the reserved seats, i.e. the total ''' number of the True values in the matrix. ''' ''' Number of reserved seats ''' Public Function GetNumOfReservedSeats() As Integer

End Function

''' ''' Calculate the total number of the vacant seats, i.e the total ''' number of the False values in the matrix.
''' ''' number of vacant seats ''' Public Function GetNumOfVacantSeats() As Integer

End Function

''' ''' Relation between the reserved seats and the total number of seats in percent. ''' ''' Percent of Reservation ''' Public Function PercentOfReservation() As Double

End Function

End Class

A: 

Personally I would rather use a hash table for this task [personal preference for speed] but as you need to either use a two-dimensional array or matrix according to your project specs it may be easier to accomplish this by using a 2-dimensional array of type Boolean

Dim ReservationArray(NumRows - 1, NumColumns - 1) as Boolean

These values will default to false indicating that seat is vacant and to reserve the seat all you do is change this value to true

I've done basically the same project a while back for a course I was studying at the time you're welcome to look through the coding and modify it as suits your needs

You can download my project from the link below (Visual Studio 2008 Project)

A big difference between our projects is the use of a datagridview instead of a listbox :) have a look at how this simplifies your task

Reservation_Project.zip

Donnavan de Groot
P.S.I know my project is nearly the exact program you need to make but rather use it as a reference instead of modifying it to what you want :) You'll learn more and understand how it works if you code the project yourself - even with some 'help'
Donnavan de Groot
thank you very much =)
HansEJC
Pleasure hope it helps you - I'll admit there are no comments within my coding but I'm sure its not to difficult to read how I've put it together
Donnavan de Groot
A: 

How do you change the output for every new row in your project, meaning if I want every new row to contain the extra "------"? Plus when u have Option Strict On the code Dim ColInt As Integer = Char.ConvertToUtf32(dgvwResults.Rows(e.RowIndex).Cells("Column").Value, 0) - 65 fails? Havent been able to solve it.

Kind Regards

Geera