2010-07-19 5 views
0

문제는 먼저 2 색을 1 색으로 변환 한 다음 선택한 인덱스를 찾고 다시 변환 한 다음 새 인덱스를 저장해야한다는 것입니다. 그 후에 올바른 문자열을 표시하려면 올바른 string.format을 사용해야합니다. 그냥 혼란 스러워요 = (2 차원 배열을 1 차원으로 변환하려면 어떻게해야합니까?

"행"과 "열"크기를 묻는 두 개의 텍스트 상자가 있습니다

이 내 프로젝트 폴더입니까? 당신은 버튼과 목록 상자가

............................................................................................................................... 
Row...Col....................................................................................................................................... 
1------1----Vacant ........................................................................ 
1......2.......Vacant................................................................................................... 
1......3.......Vacant.................................................................................................................................... 
2------1----Vacant......................................................................................................................... 
2......2.......Vacant.................................................................................................................................... 
2......3.......Vacant.......................................................................................................................................................... 
3------1----Vacant.................................................................................................................................... 
etc............................................................................................................................................................. 

보여줍니다 누르고 내가 한 줄을 두 번 클릭 할 때이 사람이 제발 무엇을 도와 줄 수 "예약"말할 수있다 여기까지 볼 수 있습니다 내 failed codethis is my assignment

이 프로그램은 http://i29.tinypic.com/risq6r.jpg

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

Public Class MainFrame 
'''<summary> 
''' Enum used for choices of showing results 
''' </summary> 
'''<remarks></remarks> 
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 

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

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

    ' My initialization 
    InitializeControlvalues() 
    UpdateResults() 
End Sub 

'''<summary> 
''' Organize initiations 
''' Fill comboboxes with options (strings), set default values, etc 
''' </summary> 
'''<remarks></remarks> 
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 

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

End Sub 

'''<summary> 
''' 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 
''' </summary> 
''' <param name="row">Input</param> 
''' <param name="col">Input</param> 
''' <returns>A formatted string as explained above</returns> 
'''<remarks></remarks> 
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 


''' <summary> 
''' 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. 
''' </summary> 
''' <param name="sender">sender-object from the caller</param> 
''' <param name="e">EventArgs object from the caller</param> 
''' <remarks></remarks> 
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 

''' <summary> 
''' Event-handler method for change in the radiobutton 
''' </summary> 
''' <param name="sender"></param> 
''' <param name="e"></param> 
''' <remarks></remarks> 
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 

후 결국 같은 SeatBook 클래스 다워야 방법입니다

'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 

'''<summary> 
''' Create (or recreate) the matrix with the given size 
''' </summary> 
'''<param name="rowSize">Number of rows</param> 
''' <param name="colSize">Number of columns</param> 
'''<remarks></remarks> 
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 
'''<summary> 
''' Calculate the total number of elements(row*col) 
''' </summary> 
'''<returns>The total number of elements</returns> 
'''<remarks></remarks> 
Public Function GetMaxCount() As Integer 

End Function 

'''<summary> 
''' Check if a seat in a specific row and column is reserved. 
''' </summary> 
'''<param name="row">given row</param> 
'''<param name="col">given col</param> 
'''<returns>True if the seat is reserved and false otherwise</returns> 
'''<remarks></remarks> 
Public Function IsReserved(ByVal row As Integer, ByVal col As Integer) 

End Function 

'''<summary> 
''' 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) 
''' </summary> 
'''<param name="row">given row</param> 
'''<param name="col">given col</param> 
'''<remarks></remarks> 
Public Sub Reserve(ByVal row As Integer, ByVal col As Integer) 

End Sub 


'''<summary> 
''' Thenumber of rows in the Matrix 
''' </summary> 
''' <returns>The number of rows</returns> 
''' <remarks></remarks> 
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 

'''<summary> 
''' Thenumber of columns in the Matrix 
''' </summary> 
''' <returns>The number of columns</returns> 
''' <remarks></remarks> 
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 

'''<summary> 
''' 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. 
''' </summary> 
'''<returns>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</returns> 
'''<remarks></remarks> 
Public Function GetFirstVacantPosition() As Integer 

End Function 

''' <summary> 
''' 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) 
''' </summary> 
''' <param name="row"></param> 
''' <param name="col"></param> 
''' <returns>The new index as explained above</returns> 
''' <remarks></remarks> 
Public Function MatrixIndexToVectorIndex(ByVal row As Integer, ByVal col As Integer) 

End Function 

''' <summary> 
''' 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. 
''' </summary> 
''' <param name="row">Input and output parameter</param> 
''' <param name="col">Output parameter</param> 
''' <remarks></remarks> 
Public Sub VectorIndexToMatrixIndex(ByRef row As Integer, ByRef col As Integer) 

End Sub 

''' <summary> 
''' 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). 
''' </summary> 
''' <param name="oneDimListIndex"></param> 
''' <remarks></remarks> 
Public Sub SetRowAndColumnValue(ByVal oneDimListIndex As Integer) 

End Sub 

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

End Function 

''' <summary> 
''' Calculate the total number of the vacant seats, i.e the total 
''' number of the False values in the matrix.   
''' </summary> 
''' <returns>number of vacant seats</returns> 
''' <remarks></remarks> 
Public Function GetNumOfVacantSeats() As Integer 

End Function 

''' <summary> 
''' Relation between the reserved seats and the total number of seats in percent. 
''' </summary> 
''' <returns>Percent of Reservation</returns> 
''' <remarks></remarks> 
Public Function PercentOfReservation() As Double 

End Function 
End Class 
+0

몇 가지 코드 예제를 게시하시기 바랍니다. 이 vb.net인가, 만약 내가 당신에게 vb.net 태그를 추가하는 것이 좋습니다 –

+0

당신도 포맷을 수정하시기 바랍니다 수 있습니까? 다른 사람에 대해서는 잘 모릅니다. 그러나 1280 * 800 화면에서 그림을 그리는 시도가 전혀 작동하지 않습니다. 나는 여러분이 의미하는 것을 보여주기 위해 응용 프로그램의 스크린 샷을 찍거나 페인트 (또는 김프!)로 그림을 그리거나 다른 방법으로 StackOverflow의 서식 도구를 사용하는 것을 제안합니다. 다시 질문 할 수 있습니까? 변환, 찾기 및 변환이 필요한 이유는 무엇입니까? Ben이 말한 것처럼 코드를 게시하는 것이 좋은 첫 걸음이 될 것입니다. – Stephen

+0

하지만 내 코드가 실패 롤? 좋아, 내 코드를 올리려고 노력할 것이지만, 그럴거야 =/ – HansEJC

답변

1

가 개인적으로 나는 오히려이 작업에 해시 테이블을 사용을 [개인 취향 속도를 위해서] 그러나 당신이 2 차원 배열이나 행렬을 프로젝트 사양에 따라 사용해야 할 때, 2 차원 배열 타입을 사용하여 더 쉽게 수행 할 수 있습니다. 부울

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

이 값은 그 자리가 비어 나타내는 false로 기본 설정됩니다와 내가 공부 한 코스 한참 기본적으로 같은 프로젝트를 수행 한 당신이 모두에 해당

이 값을 변경할 수있는 좌석을 예약하기 시간에 당신은 코딩을 통해보고

당신은 (비주얼 스튜디오 2008 프로젝트) 아래 링크에서 내 프로젝트를 다운로드 할 수는

우리의 프로젝트 사이의 큰 차이는 당신의 요구에 정장으로 수정할 환영합니다 목록 상자 대신 datagridview 사용 :이 작업을 단순화하는 방법을 살펴보십시오

Reservation_Project.zip

+0

P. 제 프로젝트는 여러분이 만들어야 할 정확한 프로그램입니다 만, 원하는대로 수정하지 않고 참조로 사용하십시오 :) 프로젝트를 직접 코딩하는 경우 더 배우고 이해할 수 있습니다. 일부 '도움' –

+0

대단히 =) – HansEJC

+0

즐거움은 그것이 당신을 돕기를 희망합니다 - 나는 내 코딩 내에서 의견이 없다는 것을 인정할 것입니다. 그러나 그것을 어떻게 조합했는지 읽는 것이 어렵지 않을 것이라고 확신합니다. –

0

어떻게 내가 모든 새 행은 "------"추가 포함 할 경우 의미 프로젝트의 모든 새 행에 대한 출력을 변경합니까? 플러스 옵션이있는 경우 코드에서 정수로 CharIconInt로 Char.ConvertToUtf32 (dgvwResults.Rows (e.RowIndex) .Cells ("Column") .Value, 0) - 65 은 실패합니까? Havent는 그것을 해결할 수있었습니다.

친절 감사

Geera

관련 문제