1. 개발 계획서
|
프로젝트 개발 계획서
|
||||
|
팀원
|
나윤성(팀장), 이재은, 임혜린, 양승준, 이명진
|
|||
|
활동일시
|
7월 14일 ~ 7월 21일
|
장소
|
공학 1관 드론융합실
|
|
|
프로젝트명
|
C 언어와 TCP/IP 프로토콜, DB(MySQL)를 사용한 채팅 프로그램 구현
|
|||
|
개발 환경
|
Language : C / gcc
OS : Ubuntu linux
|
|||
|
구현예정기능
|
회원가입, 로그인, 사용자 정보 변경, 나가기
로그인 시 전체 채팅방 이동
로그아웃 및 서버 나가기
귓속말 기능을 이용하여 전체 클라이언트 중 특정 클라이언트에 메시지 전달
채팅방 개설 및 채팅방에 입장한 클라이언트끼리 채팅
개설된 채팅방 입장 및 나가기
회원가입, 로그인, 채팅로그(전체 채팅, 그룹 채팅 구분) DB에 저장
|
|||
|
예상문제점
|
각 파트별 기능이 구현 되어도 DB연동 및 기능 적용, 중복체크에 많은 로직이 예상되므로 꼼꼼한 확인이 필요함
|
|||
|
개발파트
|
나윤성
|
개발 채팅방 개설, 입장, /Q 명령어 구현(참가자 확인, 채팅방 확인, 나가기)
|
||
|
이재은
|
회원가입(ID(중복체크), PW, 닉네임), 사용자 정보 변경, 로그아웃
|
|||
|
임혜린
|
채팅기능(ID(닉네임):message 시간), 귓속말(/w ID : message)
|
|||
|
양승준
|
전체 채팅방 입장, /Q 명령어 구현(접속자 확인, 채팅방 확인, 생성, 나가기)
|
|||
|
이명진
|
전체 DB 테이블 설계, 전체 연동 테스트 지원
|
|||
2. 유스케이스

3. 요구사항 명세서
|
유형
|
요구분석 내용
|
|||
|
분류
|
세부내용
|
USECASE
|
||
|
시작화면
|
화면
|
회원가입, 로그인, 사용자 정보 변경, 나가기 선택지 제시
|
uc1
|
|
|
회원가입
|
ID, PW, 닉네임 (중복체크)
|
uc2
|
||
|
로그인
|
ID, PW 입력 기능 구현
|
uc3
|
||
|
전체 채팅방
|
채팅 기능
|
로그인 후 처음 들어온 모든 사용자가 채팅할 수 있는 기능 구현
|
uc6
|
|
|
개별 채팅방
|
채팅 기능
|
생성된 채팅방에 채팅방 목록을 통해 들어온 사용자만 채팅이 가능한 기능 구현
|
uc7, uc8
|
|
|
채팅
|
채팅 기능
|
멀티 채팅 구현(채팅 텍스트마다 user의 ID 표시)
|
uc6
|
|
|
귓속말 기능 구현(채팅 명령어 사용 →” /w userID 텍스트”)
|
uc10
|
|||
|
채팅 시간 구현(메시지를 보낼 때마다 해당 메시지의 보낸 시간 표시)
|
uc6
|
|||
|
채팅 외의 기능
|
기능 선택
|
/Q를 누르면, 1, 2, 3, 4번이 제시
각각의 1, 2, 3, 4 중에서 원하는 기능의 번호를 입력
|
|
|
|
기능 상세
|
접속자 확인 기능 구현
|
uc4
|
||
|
채팅방 리스트 검색하는 기능 구현
|
uc5
|
|||
|
채팅방 생성 기능 구현(생성된 채팅방은 채팅방 목록에 추가)
|
uc8, uc9
|
|||
|
뒤로가기
|
uc7
|
|||
|
나가기(로그인 환경으로 돌아가기)
|
|
|||
|
데이터베이스 테이블
|
User
|
로그인 및 회원관리, 가입 일시(ID, PW, 회원가입한 시간 저장)
|
uc12, uc13
|
|
|
chat_message
|
채팅 로그 저장 및 누가, 언제, 어떤 메시지를 어디서 보냈는지 기록
(메시지 고유번호, 메시지 보낸 사용자의 ID, 메시지가 속한 채팅방 이름, 채팅 내용, 메시지 보낸 시간, user의 ID)
|
uc14
|
||
|
chatroom
|
오픈 채팅방과 그룹(전체)채팅방을 구분하여 저장,
오픈 채팅방은 서버 시작 시 미리 만들어 둘 수 있고 채팅 외의 기능을 통해 번호 입력 후 생성 가능
(채팅방 ID, 채팅방 이름, 전체 채팅방과 그룹 채팅방 구분, 채팅방 생성자 ID, 시간)
|
uc8, uc9
|
||
|
chatroom_user
|
참가자 관리
(채팅방 ID, 사용자 ID, 채팅방 참여한 시간)
|
uc15
|
||
4. 순서도



6. 일정표

7. 테이블 명세서
|
회원 정보
|
|||
|
Table
|
user
|
||
|
컬럼명
|
데이터 타입
|
제약 조건
|
설명
|
|
id
|
VARCHAR(20)
|
NOT NULL / UQ
|
로그인 ID
|
|
password
|
VARCHAR(64)
|
NOT NULL
|
비밀번호
|
|
nickname
|
VARCHAR(50)
|
NOT NULL
|
표시용 닉네임
|
|
created_at
|
INT
|
NOT NULL
|
가입일시
|
|
pk_id
|
INT
|
PRIMARY KEY / NOT NULL / AI
|
식별용 ID
|
|
|
|
|
|
|
채팅방 정보
|
|||
|
Table
|
chatroom
|
||
|
컬럼명
|
데이터 타입
|
제약 조건
|
설명
|
|
room_id
|
INT
|
PRIMARY KEY / AUTO_INCREMENT
|
채팅방 고유번호
|
|
room_name
|
VARCHAR(50)
|
NOT NULL
|
채팅방 이름
|
|
room_type
|
ENUM('open','group')
|
NOT NULL
|
채팅방 유형(오픈/그룹)
|
|
creator_id
|
INT
|
FOREIGN KEY REFERENCES user(pk_id)
|
생성자 ID
|
|
created_at
|
INT
|
NOT NULL
|
생성일시
|
|
|
|
|
|
|
방 참가자
|
|||
|
Table
|
chatroom_user
|
||
|
컬럼명
|
데이터 타입
|
제약 조건
|
설명
|
|
room_id
|
INT
|
NOT NULL, FK REFERENCES chatroom(room_id)
|
참여한 채팅방 ID
|
|
user_id
|
INT
|
NOT NULL, FK REFERENCES user(pk_id)
|
참여한 사용자 ID
|
|
joined_at
|
INT
|
NOT NULL
|
입장 시각
|
|
|
|
|
|
|
채팅 메시지
|
|||
|
Table
|
chat_message
|
||
|
컬럼명
|
데이터 타입
|
제약 조건
|
설명
|
|
message_id
|
INT
|
PRIMARY KEY / AUTO_INCREMENT
|
메시지 고유번호
|
|
room_id
|
INT
|
NOT NULL, FK REFERENCES chatroom(room_id)
|
방 ID
|
|
sender_id
|
INT
|
NOT NULL, FK REFERENCES user(pk_id)
|
보낸 사용자 ID
|
|
message
|
TEXT
|
NOT NULL
|
메시지 내용
|
|
send_at
|
INT
|
NOT NULL
|
전송 시각
|
8. ERD

'C > Project' 카테고리의 다른 글
| [LMS7 10/28주차] 0714 C언어와 MySQL을 활용한, 채팅 구현 프로젝트, 5팀 + 완료 보고서 (0) | 2025.08.24 |
|---|---|
| [LMS7 07/28주차] 0628 C언어 콘솔 게임 프로젝트, 3팀 + 완료 보고서 (7) | 2025.08.11 |
| [LMS7 07/28주차] 0623 C언어 콘솔 게임 프로젝트, 3팀 + 개발 계획서 (1) | 2025.08.11 |