기능 요구사항
본 시스템은 사용자 프론트엔드와 관리자 백엔드 모듈로 구성됩니다.
사용자 프론트엔드 기능
- 메인 페이지: 최신 공지사항 및 기부 프로젝트 목록 표시
- 계정 관리: 회원 가입 및 로그인 기능
- 공지사항: 목록 조회 및 상세 내용 확인
- 기부 프로젝트: 프로젝트 탐색 및 인증 후 기부 가능
- 커뮤니티 게시판: 게시글 조회 및 작성 기능
- 개인 대시보드: 기부 내역 조회, 개인 정보 수정, 비밀번호 변경
관리자 백엔드 기능
- 사용자 관리: 회원 정보 CRUD 작업
- 공지 관리: 공지사항 게시 및 수정
- 프로젝트 관리: 기부 프로젝트 운영
- 기부 기록: 기부 내역 모니터링
- 게시판 관리: 게시글 확인 및 답변 처리
- 시스템 관리: 관리자 권한 제어(최고관리자 전용)
데이터베이스 구조
SQL Server 기반 데이터 모델 구성:
| 테이블명 | 주요 필드 |
|---|---|
| 회원 정보 | 회원ID, 계정명, 암호, 이메일, 연락처, 가입일시 |
| 공지사항 | 공지ID, 제목, 내용, 게시일자 |
| 기부 프로젝트 | 프로젝트ID, 명칭, 설명, 목표금액, 참여인원, 진행상태 |
| 기부 기록 | 기록ID, 회원ID, 프로젝트ID, 금액, 일시 |
| 게시판 | 게시글ID, 회원ID, 내용, 작성시간 |
| 관리자 | 관리자ID, 이름, 암호, 권한등급 |
인터페이스 구현 예제
회원 가입 처리 로직
protected void BtnRegister_Click(object sender, EventArgs e)
{
if (DBHelper.RecordExists("SELECT COUNT(*) FROM Users WHERE UserLogin=@id",
new SqlParameter("@id", TxtLoginId.Text)))
{
ShowAlert("이미 사용중인 계정입니다");
return;
}
var query = @"INSERT INTO Users (UserLogin, PassKey, UserName, Gender, Contact, JoinDate)
VALUES (@login, @pwd, @name, @gender, @contact, @date)";
SqlParameter[] parameters = {
new SqlParameter("@login", TxtLoginId.Text),
new SqlParameter("@pwd", EncryptPassword(TxtPass.Text)),
new SqlParameter("@name", TxtUserName.Text),
new SqlParameter("@gender", GenderSelect.Value),
new SqlParameter("@contact", TxtContact.Text),
new SqlParameter("@date", DateTime.Now)
};
DBHelper.ExecuteCommand(query, parameters);
Session["CurrentUser"] = TxtLoginId.Text;
RedirectWithAlert("가입 완료", "main.aspx");
}
게시판 기능 구현
void LoadBoardData()
{
int totalRecords;
int pageSize = BoardPager.PageSize;
int currentPage = BoardPager.CurrentPage;
RepeaterBoard.DataSource = PagingManager.GetPage(
pageSize, currentPage, "CommunityBoard",
"PostID, Title, Author, PostDate",
"PostID", "", "PostID DESC", out totalRecords);
RepeaterBoard.DataBind();
BoardPager.TotalRecords = totalRecords;
}
protected void BtnPost_Click(object sender, EventArgs e)
{
if (Session["CurrentUser"] == null)
{
ShowAlert("로그인이 필요합니다");
return;
}
string sql = @"INSERT INTO CommunityBoard
(Author, PostTitle, Content, PostDate)
VALUES (@writer, @title, @content, @date)";
SqlParameter[] params = {
new SqlParameter("@writer", Session["CurrentUser"].ToString()),
new SqlParameter("@title", TxtPostTitle.Text),
new SqlParameter("@content", TxtContent.Text),
new SqlParameter("@date", DateTime.Now)
};
DBHelper.ExecuteCommand(sql, params);
RedirectWithAlert("게시 완료", Request.Url.ToString());
}
성능 최적화 기법
- 데이터베이스 쿼리 효율화: 인덱스 적용 및 최적화된 쿼리 작성
- 콘텐츠 압축: 웹 리소스 압축을 통한 전송 효율 개선
- 캐싱 전략: 자주 접근하는 데이터 메모리 캐싱 처리
향후 발전 방향
- 모바일 환경 최적화 구현
- 사용자 선호도 기반 콘텐츠 추천 시스템
- 기부 패턴 분석을 위한 데이터 마이닝 도구 적용
- HTTPS 프로토콜 강화 등 보안 체계 고도화
- 사회복지기관과의 협력 체계 구축