2010-07-08 9 views
0

메모리 데이터 구조에서 가장 효과가있는 것이 무엇인지 궁금해하고 싶었던 것은 극장 좌석 배치를위한 것이고 화면의 그래픽 형태로 사용자를위한 것입니다.극장 좌석 예약 및 데이터 구조?

우리는 예약 시스템을 보면서 직장에서 컨버전스를 시작했으며, 우리가해야하는 예약 유형은 나머지 유형의 예약이 필요하지 않습니다.

데이터가 데이터베이스이고 당연한 저장소라는 것을 당연한 것으로 생각하십시오. 토론은 응집력 좌석 배치도로서 화면에 효율적으로 표시하고 조직 내에서 그 자리를 지불 한 후 좌석 상태를 기록해야 할 필요성에 기반합니다.

300+ (회사 자체 환경의 경우) 개인 예약을위한 공개 웹 사이트가 필요합니다.

예약이 계속되지 않거나 결제에 실패하면 현재 상태 및 시간 초과를 확인하는 것과 같은 동시성이 웹 사이트 측에서 처리됩니다.

시나리오는 따라서 고객은 에이전트가 좌석 계획을로드 호출합니다. 이 페이지는 데이터베이스에서 정보를 가져온 다음 화면의 계획에 따라 각 좌석의 상태를 그립니다. 고객이 무엇을 사용할 수 있는지에 대해 토론 한 후 고객이 j56, j57, j58을 예약하고 결제하도록 요청합니다.

매회 그릴 때 어떤 형태의 배열로 보이는 Bytes로 보입니다. ? 이것이 효율적일까요?

다른 대안은이 좌석 계획이 이미 있고 데이터에서 채우는 정적 WPF 앱입니다.

그러나 여기 내가 정신을 요구한다고 생각했다.

규칙.

  • 각 행은 알파벳 메인 계획 100 석 26 행되어
  • 각 세트의 시트
    • 빈 다음 상태가
    • 100 1에서 순차적
    • 예약 됨 지불하지 않음
    • 예약 회원 부담하지 않음
    • 다만 각 셀 자리를 나타내는 배열을 가지고
    • 유료 부재 평가하기
+0

숙제? 그렇다면 숙제 태그를 추가하는 것이 좋습니다. – corsiKa

+0

Nope은 실제로 정직한 일이며 이것이 진정한 질문입니다. – jpg

+0

gridView를 사용해 보셨나요? – Sharique

답변

3

당신은 2600 석만 상대하고 계십니까?

너무 적은 바이트를 메모리에 저장하는 것에 대해 걱정하는 것처럼 보입니다. 경기장을 100k 좌석으로 대표하는 것과는 다릅니다.

모든 좌석을 클래스로 대표하고 일을 끝내야하는 이유는 무엇입니까?

public class Seat 
{ 
    public char SeatRow { get; set; } 
    public byte SeatNum { get; set; } 
    public SeatState State { get; set; } 

    public Seat(char row, byte seat, SeatState state) 
    { 
     this.SeatRow = row; 
     this.SeatNum = seat; 
     this.State = state; 
    } 
} 
public enum SeatState 
{ 
    Empty, 
    ReservedNotPaid, 
    ReservedNotPaidMember, 
    Paid, 
    PaidMemberRate 
} 
+1

실제 행렬의 표현을 그릴 수 있도록 위치 정보를 추가합니다 (실제 행에서 좌석 행과 num이 합리적인 좌표계로 작동 할 가능성이 거의 없기 때문에 좌석이 완벽한 그리드에 정렬되는 경우는 드뭅니다. 종종 어떤 행은 다른 수의 좌석을 가짐). 실제 물리적 측정 일 필요는 없습니다 (예 :인치 정밀도까지) - 정밀도만으로도이를 보여줄 수 있습니다. 좌석 A3은 좌석 B3의 왼쪽에 절반 앞 자리에 있습니다 (A와 B가 줄이고 3이 줄의 세 번째 자리를 의미하는 경우). – andrew

+0

@ andrew 당신은 솔루션을 가지고 있습니까? –

1

유료.

예를 들어, 26x100 어레이를 가질 수 있습니다.

배열의 각 셀 값을 시트의 상태로 설정하면 자신의 유형에 '숨겨진'시트 (IE는 예약 할 수 없으므로 지그재그 모양을 가질 수 있습니다. 좌석 배열).

간단한 예 :

0 = hidden 
1 = empty 
2 = reserved 
3 = paid 

빈 레이아웃 :

FRONT 
0 0 1 1 1 0 0 
0 1 1 1 1 1 0 
1 1 1 1 1 1 1 
1 1 1 1 1 1 1 
    BACK 

부분적으로 전체 레이아웃 :

당신이 데이터베이스에이를 저장하고자하는 경우
FRONT 
0 0 1 1 1 0 0 
0 1 2 2 2 3 0 
3 3 1 2 2 3 3 
1 1 3 3 1 2 2 
    BACK 

, 너 너 뭐야? 세 개의 테이블을 가지고 있습니다 :

tbl_Theatre 
tbl_Shows 
tbl_TheatreShowSeats 
1

Tom의 대답을 듣고 약간 확장했습니다. 어쩌면 우리가 여기서 두 가지 일을하고있는 것처럼 두 개의 배열 일 수도 있습니다.

사용 가능한 비트 배열과 지불을위한 소수 배열을 사용하십시오. 비트 배열은 지불 배열 및 표준 레이아웃에서 즉석에서 계산할 수 있습니다.

지불 배열을 합하여 총계를 얻을 수도 있습니다.

bool?

  • 을 IsAvailable : 사용할 수없는
  • 사실을 위해 : (여기가 아닌 좌석)
  • 거짓 숨겨진 사용할 수

별도의 배열에 대한 지불을 위해

  • : 더 지불/예약
  • 0 : 예약 만 지불하지
  • 29.99 : £/$ (표준 비율) 지급 금액
  • 9.99 : £ 지급 금액/$ (회원 등급)