설문조사 앱 만들기
다양한 입력 폼과 실시간 결과 집계
📋 세션 개요
부서 내 의견 수렴, 행사 선호도 조사, 직원 만족도 조사 등 다양한 용도로 활용할 수 있는설문조사 시스템을 만들어봅니다. 객관식, 주관식, 체크박스 등 다양한 입력 타입과 실시간 결과 집계 기능을 구현합니다.
🎯 학습 목표
🛠️ 사용 기술
HTML Forms
다양한 input 타입과 폼 요소
JavaScript
폼 처리 및 데이터 집계
Chart.js
결과 시각화 (차트/그래프)
📝 설문 예시
직원 만족도 조사
🔐데이터베이스 계정 정보
실습 서버에 MariaDB가 이미 설치되어 있으며, 신청하신 계정별로 데이터베이스 접속 정보가 제공됩니다.
제공되는 정보:
- • 데이터베이스 호스트 (Host)
- • 데이터베이스명 (Database)
- • 사용자명 (Username)
- • 비밀번호 (Password)
- • 포트 (Port)
👨💻 실습: 단계별 진행
1설문 폼 구조 만들기 (10분)
📝 Cursor에게 요청:
설문조사 웹 앱을 만들어주세요. 질문 구성: 1. "현재 업무 환경에 만족하십니까?" (라디오 버튼: 매우 만족/만족/보통/불만족) 2. "개선이 필요한 부분은?" (체크박스: 업무 프로세스/소통 체계/시설 환경/복지 제도) 3. "부서명을 입력해주세요" (텍스트 입력) 4. "추가 의견" (텍스트영역) 기능: - 제출 버튼 클릭 시 응답 저장 - 결과 보기 버튼으로 집계 결과 표시 - 깔끔한 카드 레이아웃 HTML + vanilla JS로 만들어주세요.
2서버 연동 (10분)
📝 Cursor에게 요청:
Node.js + Express 백엔드를 추가해주세요.
API:
- POST /api/survey - 응답 저장
- GET /api/survey/results - 집계 결과 조회
응답 데이터를 MariaDB에 저장하고,
결과는 각 선택지별 응답 수를 반환해주세요.
MariaDB 연결 정보:
- Host: [제공받은 호스트]
- Database: [제공받은 DB명]
- User: [제공받은 사용자명]
- Password: [제공받은 비밀번호]
- Port: [제공받은 포트]
테이블 생성:
CREATE TABLE IF NOT EXISTS survey_responses (
id INT AUTO_INCREMENT PRIMARY KEY,
satisfaction VARCHAR(50),
improvements TEXT,
department VARCHAR(100),
comment TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
프로젝트 구조:
/survey-app
/public
index.html
results.html
server.js
package.json💡 데이터 구조 예시:
{
"satisfaction": "만족",
"improvements": ["업무 프로세스", "소통 체계"],
"department": "기획처",
"comment": "전반적으로 만족합니다",
"timestamp": "2025-10-24T10:30:00Z"
}3결과 시각화 (15분)
📝 Cursor에게 요청:
results.html 페이지를 만들어주세요. 기능: 1. 만족도 결과를 파이 차트로 표시 (Chart.js 사용) 2. 개선 필요 부분을 막대 그래프로 표시 3. 총 응답 수 표시 4. 최근 의견 목록 (최대 10개) 깔끔하고 보기 좋은 레이아웃으로 만들어주세요. Chart.js CDN을 사용해주세요.
💡 차트 예시:
만족도 분포 (파이 차트)
4유효성 검사 추가 (5분)
📝 Cursor에게 요청:
유효성 검사를 추가해주세요: 1. 필수 항목 체크 (만족도, 부서명) 2. 체크박스 최소 1개 선택 3. 빈 값 제출 방지 4. 제출 완료 메시지 표시 오류 메시지는 빨간색으로 표시해주세요.
✅ 완성 체크리스트
💡 핵심 포인트
📋폼 디자인: 질문은 명확하게, 선택지는 적절한 수로, 레이아웃은 깔끔하게
✅유효성 검사: 사용자 실수를 방지하고 데이터 품질을 보장합니다
📊시각화: 숫자보다 그래프가 한눈에 이해하기 쉽습니다
⚡실시간 집계: 응답이 제출되면 즉시 결과에 반영됩니다
💼 업무 활용
📋 직원 만족도 조사
분기별 직원 만족도 및 개선 의견 수렴
🎉 행사 선호도 조사
직원 행사 일정/장소/프로그램 선호도 파악
📚 교육 수요 조사
직원 교육 프로그램 수요 및 선호 시간 파악
💡 아이디어 수집
부서 운영 개선 아이디어 및 건의사항 수집
❗ 자주 발생하는 문제와 해결법
🔸 체크박스 값이 제대로 저장되지 않습니다
해결: "체크된 체크박스들을 배열로 수집하는 코드를 추가해줘"
🔸 차트가 표시되지 않습니다
해결: "Chart.js CDN이 올바르게 로드되는지 확인하고, 캔버스 요소 ID를 체크해줘"
🔸 집계가 정확하지 않습니다
해결: "데이터베이스에 중복 응답이 저장되는지 확인하고, 집계 로직을 검토해줘"
🚀 도전 과제
⭐ Level 1: 별점(1~5점) 평가 항목 추가하기
⭐⭐ Level 2: 응답 데이터를 CSV 파일로 내보내기
⭐⭐⭐ Level 3: 설문 마감 기능 및 카운트다운 타이머 추가
⭐⭐⭐⭐ Level 4: 관리자 페이지에서 질문을 동적으로 추가/수정
📢 다음 실습 예고
Session 8: 이벤트 신청 앱 만들기
행사 참가 신청, 참가자 관리, 자동 확인 메시지 발송까지 실무에서 바로 사용할 수 있는 이벤트 관리 시스템을 만들어봅니다.
💡 미리 생각해보기: 우리 부서에서 관리하는 행사나 모임이 있나요?
👨🏫 강사 노트
⏰ 시간 배분: 폼 구조 10분, 서버 연동 10분, 시각화 15분, 유효성 검사 5분
🎯 핵심 개념: HTML 폼 요소, 데이터 집계, Chart.js 시각화
💬 참여 유도: "우리 부서에서 어떤 설문이 필요할까요?" 질문
⚠️ 주의사항: Chart.js CDN 로딩 확인, 체크박스 배열 처리 설명
🎨 선택적 개선: 시간이 남으면 별점 평가, 진행률 바 추가