본문 바로가기
Development(개발)/JAVA

[개발/JAVA] 지하철 실시간 모니터링 프로그램 개발 프로젝트

by wonkidoki 2023. 10. 8.
반응형

- 지하철 3호선을 기준으로 총 44개의 노선에 11대의 지하철이 배치되어있다는 가정하에 진행하고 지하철이 움직이는 상황을 볼 수 있는 화면을 구현하는 것이 목표이다.(Thread 공부용으로 만듬)

- 지하철은 랜덤한 시간에 따라 출발과 대기를 한다.
- 대기 상황시, 초록색/이동중일시,노랑색/사고시, 빨강색으로 보여준다.
- 10%의 확률로 사고가 발생한다.(시간지연)
- 지하철의 상황을 텍스트창으로도 보여준다.
- 마지막 정거장으로 도착하면 다시 첫번째로 이동한다.
- 방향은 하행선만 보여준다.

 

- Java Swing, Thread 활용, mairaDB연동 지하철 3호선 실시간 관리 프로젝트
- TextArea에서 색깔을 바꿔주고 싶었는데 잘 안됨.
- 간혹 No Buffer space available err가 나오는데 바로 다시 됨.
- 지하철 수가 너무 많아 정신 없어서 5개로 바꿈 .

 

- 소스 코드는 첨부파일 참고

SubwayLineNo3_Project.zip
0.53MB


1. DB 설계

subway > 지하철 정보 테이블, 지하철번호와 지하철상태만 입력
using_station > 지하철역에 지하철이 있을 때 사용
station > 지하철역 테이블, 역번호와 역이름만 입력

 


2. UI 설계

-위에서부터 아래로 하행선.
-초록색은 대기중, 노랑색은 이동중, 빨강색은 사고 표시
-오른쪽에 지하철 상황 표기
-0.5초 마다 정보 확인
-지하철의 출발,대기,사고후 대기 시간은 임의로 정해줌
(대기 6~8초, 이동중 8~12초, 사고 10초)


3. DB 쿼리 추가

-- 역
CREATE TABLE station (
staNo   VARCHAR(10) NOT NULL, -- 역번호
staName VARCHAR(10) NOT NULL  -- 역이름
);

-- 역 기본키
CREATE UNIQUE INDEX PK_station
ON station ( -- 역
staNo ASC -- 역번호
);

-- 역
ALTER TABLE station
ADD
CONSTRAINT PK_station -- 역 기본키
PRIMARY KEY (
staNo -- 역번호
);

-- 지하철
CREATE TABLE subway (
subNo    VARCHAR(10) NOT NULL, -- 지하철번호
subState VARCHAR(10) NOT NULL  -- 상태
);

-- 지하철 기본키
CREATE UNIQUE INDEX PK_subway
ON subway ( -- 지하철
subNo ASC -- 지하철번호
);

-- 지하철
ALTER TABLE subway
ADD
CONSTRAINT PK_subway -- 지하철 기본키
PRIMARY KEY (
subNo -- 지하철번호
);

-- 정거중인 역
CREATE TABLE using_station (
subNo VARCHAR(10) NOT NULL, -- 지하철번호
staNo VARCHAR(10) NOT NULL  -- 역번호
);

-- 정거중인 역
ALTER TABLE using_station
ADD
CONSTRAINT FK_subway_TO_using_station -- 지하철 -> 정거중인 역
FOREIGN KEY (
subNo -- 지하철번호
)
REFERENCES subway ( -- 지하철
subNo -- 지하철번호
);

-- 정거중인 역
ALTER TABLE using_station
ADD
CONSTRAINT FK_station_TO_using_station -- 역 -> 정거중인 역
FOREIGN KEY (
staNo -- 역번호
)
REFERENCES station ( -- 역
staNo -- 역번호
);