본문 바로가기

VEDA 복습

VEDA 21일차 ~ 23일차 - Qt 프로젝트(일정 관리 어플리케이션)

반응형

 

프로젝트 평가 기준

실습 주제 : 다음 중 택 1

  • 고객 관리 프로그램
  • 미니게임
  • 간편주소록
  • 일정관리
  • 간편 계좌 관리

평가 기준 : 데이터 입력, 수정, 삭제, 검색 기능 필수 포함

  • 완성도(80) : UI(20), 기능구현(30), 코드(30)
  • 부가기능(10) - 외부 리소스 활용도(10)
  • 문서(10) - 기획서(양식 자유)

팀원 1 명과 함께 일정관리 어플리케이션을 제작하였다.

Git에 대해서 특히나 많은 것을 배울 수 있었다.

 

git branch : 현재 로컬의 branch를 반환

git branch name : name인 branch를 로컬에 추가한다.

git branch -a : 모든 branch를 보여준다.

git checkout : 특정 commit으로 이동하거나 branch로 이동하는 데 사용한다. 자동으로 로컬 내용이 갱신된다.(중요!!)

git fetch : 로컬에 원격 저장소의 최신 메타데이터 정보를 확인, 단 변경 사항이 있더라도 변경된 데이터를 가지고 오지 않는다(확인용)

git pull : git fetch 기능을 수행하면서도 최신 데이터를 복사하여 로컬에 가져온다.

git add : 변경된 내용을 반영한다.

git commit : 변경 사항과 커밋 메시지를 작성한다.

git push : 저장소에 변경 사항을 반영한다. 이 때 branch를 잘 확인해야 하고, 여러명이 수행하는 경우 바로 반영되는 것이 아닌 pull request가 수락되어야 반영된다.

git merge : 두 개의 branch를 합친다. 이 때 branch는 main이 되는 부분이여야 한다. conflict를 해결해야 할 수 있다.

 

vscode, visual studio 등 에디터들이 자체적으로 버전 관리 기능을 제공하는 것 같다. 굳이 커맨드 기반이 아니더라도 버전 관리를 가능하게 한다.

 

ChatGPT 같은 AI 툴을 사용하였는데 개발에 큰 도움이 되었다. 다만 완전히 원하는 코드를 작성하는 것이 아니어서 분석하고, 프로젝트에 맞게 수정하는 과정에서 꽤 많은 시간이 소요되었다.

팀원이 Figma를 기획 단계에서 사용했는데 유용해 보았다. 시일 내에 한 번 해볼 것이다.

 

프로그램은 다음과 같은 기능을 포함한다.

 

  1. 일정 관리 기능(메인 윈도우)
  1. 사용자는 상단의 입력창을 이용하여 일정을 적는 것으로 일정을 추가할 수 있다.
  2. 전체 일정 리스트는 “할 일 일정 리스트”와 “한 일 일정리스트”로 구성되며 체크 모양 아이콘을 클릭하여 양 리스트 간의 이동이 가능하다. 완료한 일정에 대해서는 취소선으로 표기한다.
  3. 휴지통 아이콘을 클릭하여 일정을 삭제할 수 있다. 이 때 일정에 붙어있는 하위 일정들도 자동으로 삭제된다.
  4. 더보기 아이콘을 이용하여 일정에 대한 보다 상세한 관리가 가능하다.

 

  1. 상세 일정 관리 기능(서브 윈도우)
  1. 메인 페이지에서 더보기 아이콘을 클릭하여 상세 일정 관리 기능을 사용할 수 있다.
  2. 일정 제목, 날짜, 알람 시간, 일정 세부 내용, 하위 일정들을 추가, 수정, 삭제할 수 있다.
  3. 서브 페이지가 열린 중에는 메인 페이지를 사용할 수 없다.
  4. 저장 버튼을 누르면 내용을 갱신하고 메인 페이지로 돌아간다.
  5. 취소 버튼을 누르면 내용을 갱신하지 않고 메인 페이지로 돌아간다.

 

  1. 알람 기능
  1. 디폴트로 알람 시간은 일정을 추가한 시간의 1 시간 전으로 세팅된다.
  2. 상세 일정 페이지에서 리마인더 시간을 설정할 수 있다.
  3. 윈도우가 닫혀도 백그라운드에서 프로그램이 실행될 수 있도록 구성된다.
  4. 작업창의 아이콘을 이용하여 백그라운드에서 실행되는 프로그램의 윈도우를 띄우거나 완전히 종료할 수 있다.

전체 클래스 구조

 

실제 구현한 모습

메인 페이지
서브페이지
구현한 알림 기능

 

원래는 커맨드 기능을 이용하여 일정을 추가하거나 검색하는 기능을 넣을려고 했는데 시간 부족으로 생략했다. 실습을 통해서 Qt 프레임워크를 사용하는 법, C++을 사용하여 개발하는 법 등 많은 것을 배웠다. 

 

https://github.com/cty0613/todoapp.git

 

GitHub - cty0613/todoapp

Contribute to cty0613/todoapp development by creating an account on GitHub.

github.com

 

반응형