본문 바로가기

Projects

[개인 프로젝트] C# WinForm을 이용한 실시간 편의점 물품 가격변동에 따른 그래프 그리기 - 짱우의 코딩일기 - 티스토리

반응형

< 최종 결과 화면 >


  물론 지금도 인턴이지만 회사에서 인턴기간동안 만든 과제중 하나에 대한 글을 써보려 한다.

  우선 제목대로 프로젝트에서 사용한 데이터는 실제 편의점 물품의 가격 변동 데이터를 사용하지는 않았다. 서버에서 임의의 가격변동값을 5초에 한 번씩 DB에 업데이트 시키는데 업데이트 된 값을 클라이언트에서 가져와 5초에 한 번씩 그래프와 표를 그려주는 프로젝트다.

  현재 포스팅된 글은 프로젝트 소개 글이기 때문에 자세한 기능이나 코드부분은 추후에 작성한 글의 링크를 걸어둘 예정이다.


1. SERVER

< SERVER FORM 처음 실행 화면 >

  SERVER FORM이 처음 켜지게 되면 편의점 물품가격은 모두 1000원으로 동일하게 DB에 전송이 된다. 글을 읽다보면 나오겠지만 물품은 크게 '맥주, 과자, 라면' 이렇게 나뉘고 각각 항목당 물품이 3개씩 존재한다. 통계쿼리도 연습을 해야하기 때문에 물품 항목을 나눠놨다.

  위에서 '시작' 버튼을 누르게 되면 자동으로 DB에 변동된 가격이 전송된다. 변동된 가격은 -100원 ~ 100원 사이의 값이 입력되게 만들어놓았고 변동된 가격을 반영하는건 DB에서 적용이 된다.

< 프로젝트에 사용한 DB 정보 >
< 테이블 내용 >

 DB에는 2개의 테이블이 존재하는데 'ProdPriceTable'에는 변동된 가격이 기록되고 'LogTable'은 그동안 변동되었던 로그들이 기록된다.

< 시작 버튼 누른 후 >

  시작 버튼을 누르게 되면 5초에 한 번씩 랜덤으로 변동된 가격이 DB에 전송된다. 그리고 SERVER FORM에서도 통신이 잘 됐는지 확인하기 위해 로그를 남겨두었다.

 

  SERVER 쪽 코드에 대한 글은 다음 링크에 포스팅 해두었다.

2020/01/10 - [C# WinForm] 타이머를 이용해 실시간으로 DB에 데이터 넣기 (SERVER) - 짱우의 코딩일기 - 티스토리

 

[C# WinForm] 타이머를 이용해 실시간으로 DB에 데이터 넣기 (SERVER) - 짱우의 코딩일기 - 티스토리

우선 이 글은 제목 그대로 타이머를 이용해 실시간으로 DB에 데이터 넣기에 대한 글이다. 하지만 간단한 예제를 이용해서 타이머를 사용하는게 아니라 개인 프로젝트를 진행했던 코드를 바탕으로 사용했기 때문에..

zzangwoo.tistory.com


2. CLIENT

< CLIENT FORM 처음 실행 시 화면 >

  CLIENT FORM을 처음 실행하게 되면 현재 DB에 저장된 데이터를 가져와 위와 같이 화면을 구성시킨다. 2번 구역 (DataGridView)과 3번 구역(Chart)에는 최근 갱신 날짜로부터 한 달간의 데이터를 보여준다.

1) 자동 새로고침 버튼

  위의 '자동 새로고침' 버튼을 누르게 되면 5초에 한 번씩 실시간으로 DB에서 가격 변동 데이터들을 가져온다.

2) DataGridView

  가격 변동이 된 최근 갱신 날짜를 기준으로 한 달간의 데이터를 보여준다. 

< 새로고침되도 스크롤에 변함없는 화면 >

  원래는 새로운 데이터가 들어와서 DataGridView에 갱신되면 스크롤이 맨 위로 올라가는 현상이 있었다. 하지만 새로고침이 되도 현재 사용자가 보고 있는 데이터값이 있는 위치에 스크롤이 머물도록 수정했다.

3) Chart

< CheckBox의 클릭 여부에 따른 보여지는 데이터 변화 >

  위의 Chart는 꺾은선 그래프로 나타냈고 CheckBox를 만들어서 원하는 물품의 종류만 볼 수 있게 만들어놓았다.

5) 특정날짜에 대한 데이터만 조회

< 특정 날짜를 조회한 화면 >

  사용자가 확인하고 싶은 날짜를 입력한 후 조회를 누르게 되면 새로운 Form에 특정날짜에 대한 데이터를 확인해볼 수 있게 만들어 놓았다. 물론 새로운 Form이 나타나도 Main Form은 정상적으로 실시간으로 데이터를 받아온다. 

  사용자가 데이터 입력의 시작 날짜와 마지막 날짜를 확인할 수 있도록 시작날짜와 마지막날짜 또한 실시간으로 받아와 TextBox에 입력해놓았다. 새로운 Form에서의 기능은 Main Form에서의 기능과 동일하다. (실시간 데이터확인 기능 제외)


반응형